admin
2021-05-29 40d0d99fb89665e6e7702ea62e45fabe2d01e51a
service-vip/src/main/java/com/ks/vip/service/remote/VipCenterServiceImpl.java
@@ -1,7 +1,9 @@
package com.ks.vip.service.remote;
import com.ks.vip.exception.VipCenterException;
import com.ks.vip.mapper.VipCenterMapper;
import com.ks.vip.mapper.VipCenterRecordMapper;
import com.ks.vip.mapper.VipComboMapper;
import com.ks.vip.pojo.DO.*;
import com.ks.vip.pojo.Enums.VIPEnum;
@@ -11,6 +13,7 @@
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.StringUtil;
import javax.annotation.Resource;
import java.util.Date;
@@ -30,6 +33,9 @@
    @Resource
    private VipGradePotenceService vipGradePotenceService;
    @Resource
    private VipCenterRecordMapper vipCenterRecordMapper;
    @Override
@@ -75,18 +81,19 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveVipCenter(String uid, Long gradeId, Integer validDays, Long orderId) {
    public void saveVipCenter(String uid, Long gradeId, Integer validHours, Long orderId) {
        VipCenterRecord record = new VipCenterRecord();
        VipCenter vipCenter = vipCenterMapper.selectForUpdate(uid);
        if (vipCenter == null) {
            vipCenter=new VipCenter();
            Date startTime = new Date();
            Date endTime = DateUtil.plusDayDate(validDays, startTime);
            Date endTime = new Date(startTime.getTime() + 1000 * 60 * 60L * validHours);
            vipCenter.setUid(uid);
            vipCenter.setGradeId(gradeId);
            vipCenter.setStartTime(startTime);
            vipCenter.setEndTime(DateUtil.plusDayDate(validDays, new Date()));
            vipCenter.setEndTime(endTime);
            vipCenter.setCreateTime(new Date());
            vipCenterMapper.insertSelective(vipCenter);
@@ -100,10 +107,12 @@
            long nowTime = java.lang.System.currentTimeMillis();
            if (gradeId.longValue() == oldGradeId.longValue() && vipCenter.getEndTime().getTime() > nowTime) {
                // 上次会员还未已结束
                endTime = DateUtil.plusDayDate(validDays, vipCenter.getEndTime());
                record.setStartTime(endTime);
                endTime = new Date(vipCenter.getEndTime().getTime() + 1000 * 60 * 60L * validHours);
            } else {
                startTime = new Date();
                endTime = DateUtil.plusDayDate(validDays, startTime);
                record.setStartTime(startTime);
                endTime = new Date(startTime.getTime() + 1000 * 60 * 60L * validHours);
            }
            vipCenter.setStartTime(startTime);
            vipCenter.setEndTime(endTime);
@@ -111,7 +120,6 @@
            vipCenter.setUpdateTime(new Date());
            vipCenterMapper.updateByPrimaryKeySelective(vipCenter);
            record.setStartTime(new Date());
            record.setEndTime(endTime);
        }
@@ -119,6 +127,7 @@
        record.setUid(uid);
        record.setGradeId(gradeId);
        record.setCreateTime(new Date());
        record.setState(1);
        vipCenterRecordService.insertSelective(record);
    }
@@ -127,7 +136,7 @@
    public VipGradePotence getVipPotence(String uid) {
        VipGradePotence potence = null;
        VipCenter vipCenter = vipCenterMapper.getByUid(uid);
        if (vipCenter != null || vipCenter.getGradeId() != null) {
        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());
@@ -165,4 +174,59 @@
            return null;
        }
    }
    @Override
    public VIPEnum getVIPEnumByUid(String uid, Date date) {
        VipCenterRecordMapper.DaoQuery daoQuery = new VipCenterRecordMapper.DaoQuery();
        daoQuery.uid = uid;
        daoQuery.date = date;
        daoQuery.start = 0;
        daoQuery.count = 1;
        List<VipCenterRecord> list = vipCenterRecordMapper.list(daoQuery);
        if (list == null || list.size() == 0) {
            return vipGradeService.getDefaultGrade().getIdentity();
        }
        return vipGradeService.selectByPrimaryKey(list.get(0).getGradeId()).getIdentity();
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void  saveManageWeb(VipCenter t) throws VipCenterException {
        if (t== null || StringUtil.isNullOrEmpty(t.getUid())) {
            throw new VipCenterException(1, "用户ID不存在");
        }
        if (t.getGradeId() == null) {
            throw new VipCenterException(1, "请选择用户等级");
        }
        if (t.getStartTime() == null) {
            throw new VipCenterException(1, "请选择开始时间");
        }
        if (t.getEndTime() == null) {
            throw new VipCenterException(1, "请选择结束时间");
        }
        VipCenter vipCenter = vipCenterMapper.selectForUpdate(t.getUid());
        if (vipCenter == null) {
            t.setCreateTime(new Date());
            vipCenterMapper.insertSelective(t);
        } else {
            t.setUpdateTime(new Date());
            vipCenterMapper.updateByPrimaryKeySelective(t);
        }
        // 保存记录
        VipCenterRecord record = new VipCenterRecord();
        record.setStartTime(t.getStartTime());
        record.setEndTime(t.getEndTime());
        record.setUid(t.getUid());
        record.setGradeId(t.getGradeId());
        record.setCreateTime(new Date());
        vipCenterRecordService.insertSelective(record);
    }
}