admin
2021-06-05 10ceb8fd7972048310188cc4d4646ab86cd69cb9
service-vip/src/main/java/com/ks/vip/service/remote/VipOrderServiceImpl.java
@@ -14,9 +14,12 @@
import com.ks.vip.service.VipOrederService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.StringUtil;
import org.yeshi.utils.TimeUtil;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
@@ -34,12 +37,12 @@
    @Override
    public void insertSelective(VipOrder t){
    public void insertSelective(VipOrder t) {
        vipOrderMapper.insertSelective(t);
    }
    @Override
    public void updateByPrimaryKeySelective(VipOrder t){
    public void updateByPrimaryKeySelective(VipOrder t) {
        vipOrderMapper.updateByPrimaryKeySelective(t);
    }
@@ -72,74 +75,57 @@
        return vipOrderMapper.listByPage(query);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void addOrderByBuy(VipOrderDTO t) throws VipOrderException {
        if(t.getComboId() == null || t.getComboId() <= 0){
            throw new VipOrderException(1, "套餐ID不能为空");
        }
        if(StringUtil.isNullOrEmpty(t.getUid())){
            throw new VipOrderException(1, "用户ID不能为空");
        }
        if(t.getPayWay() == null){
            throw new VipOrderException(1, "付款方式不能为空");
        }
        if(StringUtil.isNullOrEmpty(t.getThreeOrderId())){
            throw new VipOrderException(1, "付款订单号不能为空");
        }
        // 检查是否已记录
        VipOrder order = vipOrderMapper.getByThreeOrderId(t.getThreeOrderId());
        if (order != null) {
            throw new VipOrderException(1, "该付款订单号已存在");
        }
        VipCombo vipCombo = vipComboService.selectByPrimaryKey(t.getComboId());
        if (vipCombo == null) {
            throw new VipOrderException(1, "该套餐不存在");
        }
        // 有效天数
        Integer validDays = vipCombo.getValidDays();
        // 插入订单信息
        VipOrder newOrder = new VipOrder();
        newOrder.setComboId(t.getComboId());
        newOrder.setUid(t.getUid());
        newOrder.setThreeOrderId(t.getThreeOrderId());
        newOrder.setPayWay(t.getPayWay().name());
        newOrder.setPayAccount(t.getPayAccount());
        newOrder.setPayMoney(t.getPayMoney());
        newOrder.setPayTime(t.getPayTime());
        newOrder.setType(OrderTypeEnum.buy.name());
        newOrder.setCreateTime(new Date());
        vipOrderMapper.insertSelective(newOrder);
        // 更新等级
        vipCenterService.saveVipCenter(t.getUid(), vipCombo.getGradeId(), validDays, newOrder.getId() );
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void addOrderByWatchVideo(String uid, Long gradeId, Integer validDays) throws VipOrderException {
        if(StringUtil.isNullOrEmpty(uid)){
    public void addOrderByWatchVideo(String uid, Long gradeId, Integer hour) throws VipOrderException {
        if (StringUtil.isNullOrEmpty(uid)) {
            throw new VipOrderException(1, "用户ID不能为空");
        }
        if(gradeId == null){
        if (gradeId == null) {
            throw new VipOrderException(1, "等级ID不能为空");
        }
        if(validDays == null || validDays.longValue() <= 0){
            throw new VipOrderException(1, "有效天数不能为空");
        if (hour == null || hour.longValue() <= 0) {
            throw new VipOrderException(1, "有效小时数不能为空");
        }
        if (!canAddOrderByWatchVideo(uid)) {
            throw new VipOrderException(1, "今日次数已经用完");
        }
        // 插入订单信息  唯一性处理TODO
        VipOrder newOrder = new VipOrder();
        newOrder.setUid(uid);
        newOrder.setType(OrderTypeEnum.watchVideo.name());
        newOrder.setType(OrderTypeEnum.watchVideo);
        newOrder.setCreateTime(new Date());
        vipOrderMapper.insertSelective(newOrder);
        // 更新等级
        vipCenterService.saveVipCenter(uid, gradeId, validDays,newOrder.getId() );
        vipCenterService.saveVipCenter(uid, gradeId, hour, newOrder.getId());
    }
    @Override
    public boolean canAddOrderByWatchVideo(String uid) {
        long now = System.currentTimeMillis();
        VipOrderQuery vipOrderQuery = new VipOrderQuery();
        vipOrderQuery.uid = uid;
        vipOrderQuery.type = OrderTypeEnum.watchVideo;
        vipOrderQuery.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now, "yyyy-MM-dd"), "yyyy-MM-dd"));
        vipOrderQuery.maxCreateTime = DateUtil.plusDayDate(1, vipOrderQuery.minCreateTime);
        long count = vipOrderMapper.count(vipOrderQuery);
        //TODO 写入配置信息
        return count < 5;
    }
    @Override
    public VipOrder selectByThreeOrderId(String orderId) {
        VipOrderQuery vipOrderQuery = new VipOrderQuery();
        vipOrderQuery.threeOrderId = orderId;
        vipOrderQuery.count = 1;
        List<VipOrder> orderList = vipOrderMapper.listByPage(vipOrderQuery);
        if (orderList == null || orderList.size() == 0) {
            return null;
        }
        return orderList.get(0);
    }
}