package com.ks.vip.service.remote;
|
|
|
import com.ks.vip.mapper.VipCenterMapper;
|
import com.ks.vip.mapper.VipComboMapper;
|
import com.ks.vip.pojo.DO.*;
|
import com.ks.vip.pojo.Enums.VIPEnum;
|
import com.ks.vip.query.VipCenterQuery;
|
import com.ks.vip.query.VipComboQuery;
|
import com.ks.vip.service.*;
|
import org.apache.dubbo.config.annotation.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.yeshi.utils.DateUtil;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service(version = "1.0")
|
public class VipCenterServiceImpl implements VipCenterService {
|
|
@Resource
|
private VipCenterMapper vipCenterMapper;
|
|
@Resource
|
private VipCenterRecordService vipCenterRecordService;
|
|
@Resource
|
private VipGradeService vipGradeService;
|
|
@Resource
|
private VipGradePotenceService vipGradePotenceService;
|
|
|
@Override
|
public void insertSelective(VipCenter t) {
|
vipCenterMapper.insertSelective(t);
|
}
|
|
@Override
|
public void updateByPrimaryKeySelective(VipCenter t) {
|
vipCenterMapper.updateByPrimaryKeySelective(t);
|
}
|
|
@Override
|
public VipCenter getByUid(String id) {
|
return vipCenterMapper.getByUid(id);
|
}
|
|
@Override
|
public void deteleByUid(String id) {
|
vipCenterMapper.deteleByUid(id);
|
}
|
|
@Override
|
public long count(VipCenter t) {
|
VipCenterQuery query = new VipCenterQuery();
|
query.uid = t.getUid();
|
query.gradeId = t.getGradeId();
|
query.state = t.getState();
|
return vipCenterMapper.count(query);
|
}
|
|
|
@Override
|
public List<VipCenter> listByPage(int page, int pageSize, VipCenter t) {
|
VipCenterQuery query = new VipCenterQuery();
|
query.uid = t.getUid();
|
query.gradeId = t.getGradeId();
|
query.state = t.getState();
|
query.start = (page - 1) * pageSize;
|
query.count = pageSize;
|
return vipCenterMapper.listByPage(query);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void saveVipCenter(String uid, Long gradeId, Integer validDays, Long orderId) {
|
VipCenterRecord record = new VipCenterRecord();
|
|
VipCenter vipCenter = vipCenterMapper.selectForUpdate(uid);
|
if (vipCenter == null) {
|
Date startTime = new Date();
|
Date endTime = DateUtil.plusDayDate(validDays, startTime);
|
|
vipCenter.setUid(uid);
|
vipCenter.setGradeId(gradeId);
|
vipCenter.setStartTime(startTime);
|
vipCenter.setEndTime(DateUtil.plusDayDate(validDays, new Date()));
|
vipCenter.setCreateTime(new Date());
|
vipCenterMapper.insertSelective(vipCenter);
|
|
record.setStartTime(startTime);
|
record.setEndTime(endTime);
|
} else {
|
Date startTime = vipCenter.getStartTime();
|
Date endTime = vipCenter.getEndTime();
|
|
Long oldGradeId = vipCenter.getGradeId();
|
long nowTime = java.lang.System.currentTimeMillis();
|
if (gradeId.longValue() == oldGradeId.longValue() && vipCenter.getEndTime().getTime() > nowTime) {
|
// 上次会员还未已结束
|
endTime = DateUtil.plusDayDate(validDays, vipCenter.getEndTime());
|
} else {
|
startTime = new Date();
|
endTime = DateUtil.plusDayDate(validDays, startTime);
|
}
|
vipCenter.setStartTime(startTime);
|
vipCenter.setEndTime(endTime);
|
vipCenter.setGradeId(gradeId);
|
vipCenter.setUpdateTime(new Date());
|
vipCenterMapper.updateByPrimaryKeySelective(vipCenter);
|
|
record.setStartTime(new Date());
|
record.setEndTime(endTime);
|
}
|
|
record.setOrderId(orderId);
|
record.setUid(uid);
|
record.setGradeId(gradeId);
|
record.setCreateTime(new Date());
|
vipCenterRecordService.insertSelective(record);
|
}
|
|
|
@Override
|
public VipGradePotence getVipPotence(String uid) {
|
VipGradePotence potence = null;
|
VipCenter vipCenter = vipCenterMapper.getByUid(uid);
|
if (vipCenter != null || vipCenter.getGradeId() != null) {
|
long nowTime = java.lang.System.currentTimeMillis();
|
if (vipCenter.getStartTime().getTime() <= nowTime && vipCenter.getEndTime().getTime() >= nowTime) {
|
potence = vipGradePotenceService.getPotenceByGradeId(vipCenter.getGradeId());
|
}
|
}
|
if (potence == null) {
|
potence = vipGradePotenceService.getDefaultGradePotence();
|
}
|
return potence;
|
}
|
|
|
@Override
|
public VipGrade getVipGrade(String uid) {
|
VipGrade vipGrade = null;
|
VipCenter vipCenter = vipCenterMapper.getByUid(uid);
|
if (vipCenter != null && vipCenter.getGradeId() != null) {
|
long nowTime = java.lang.System.currentTimeMillis();
|
if (vipCenter.getStartTime().getTime() <= nowTime && vipCenter.getEndTime().getTime() >= nowTime) {
|
vipGrade = vipGradeService.selectByPrimaryKey(vipCenter.getGradeId());
|
}
|
}
|
if (vipGrade == null) {
|
vipGradeService.getDefaultGrade();
|
}
|
return vipGrade;
|
}
|
|
@Override
|
public VIPEnum getVIPEnumByUid(String uid) {
|
VipGrade vipGrade = getVipGrade(uid);
|
if (vipGrade != null) {
|
return vipGrade.getIdentity();
|
} else {
|
return null;
|
}
|
}
|
}
|