package com.yeshi.buwan.service.imp.vip;
|
|
import com.yeshi.buwan.dao.vip.UserVIPInfoDao;
|
import com.yeshi.buwan.domain.vip.UserVIPInfo;
|
import com.yeshi.buwan.service.inter.vip.VIPService;
|
import org.hibernate.Session;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class VIPServiceImpl implements VIPService {
|
|
Logger logger = LoggerFactory.getLogger(VIPServiceImpl.class);
|
|
@Resource
|
private UserVIPInfoDao userVIPInfoDao;
|
|
@Override
|
public UserVIPInfo getVIPInfo(String uid) {
|
return userVIPInfoDao.find(UserVIPInfo.class, uid);
|
}
|
|
@Transactional
|
@Override
|
public void initUserVipInfo(String loginUid) {
|
Session session = userVIPInfoDao.getSession();
|
UserVIPInfo userVIPInfo = (UserVIPInfo) session.get(UserVIPInfo.class, loginUid);
|
if (userVIPInfo == null) {
|
userVIPInfo = new UserVIPInfo();
|
userVIPInfo.setUid(loginUid);
|
userVIPInfo.setCreateTime(new Date());
|
userVIPInfoDao.save(userVIPInfo);
|
}
|
}
|
|
@Override
|
public List<UserVIPInfo> listVIPUser(Date minVIPExpireDate, Date maxVIPExpireDate, int page, int pageSize) {
|
List<Serializable> list = new ArrayList<>();
|
String hql = "from UserVIPInfo vip where 1=1";
|
if (minVIPExpireDate != null) {
|
hql += " and vip.expireDate>=?";
|
list.add(minVIPExpireDate);
|
}
|
|
if (maxVIPExpireDate != null) {
|
hql += " and vip.expireDate<?";
|
list.add(maxVIPExpireDate);
|
}
|
hql += " order by vip.createTime desc";
|
Serializable[] params = new Serializable[list.size()];
|
list.toArray(params);
|
return userVIPInfoDao.list(hql, (page - 1) * pageSize, pageSize, params);
|
|
}
|
|
@Override
|
public long countVIPUser(Date minVIPExpireDate, Date maxVIPExpireDate) {
|
List<Serializable> list = new ArrayList<>();
|
String hql = "from UserVIPInfo vip where 1=1";
|
if (minVIPExpireDate != null) {
|
hql += " and vip.expireDate>=?";
|
list.add(minVIPExpireDate);
|
}
|
|
if (maxVIPExpireDate != null) {
|
hql += " and vip.expireDate<?";
|
list.add(maxVIPExpireDate);
|
}
|
hql += " order by vip.createTime desc";
|
Serializable[] params = new Serializable[list.size()];
|
list.toArray(params);
|
return userVIPInfoDao.getCount(hql, params);
|
}
|
|
@Override
|
public boolean isVIP(String loginUid) {
|
UserVIPInfo userVIPInfo = userVIPInfoDao.find(UserVIPInfo.class, loginUid);
|
if (userVIPInfo == null)
|
return false;
|
if (userVIPInfo.getExpireDate() == null)
|
return false;
|
|
if (userVIPInfo.getExpireDate().getTime() < System.currentTimeMillis())
|
return false;
|
return true;
|
}
|
}
|