he2802 пре 3 година
родитељ
комит
51b5bbb8e5

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -26,10 +26,12 @@ import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsRefundVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.bo.UserExamRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserStudyRecord;
+import com.zhongzheng.modules.user.service.IUserExamGoodsService;
 import com.zhongzheng.modules.user.service.IUserExamRecordService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.wx.service.IWxPayService;
@@ -70,6 +72,8 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
     private IUserExamRecordService iUserExamRecordService;
     @Autowired
     private IUserStudyRecordService iUserStudyRecordService;
+    @Autowired
+    private IUserExamGoodsService iUserExamGoodsService;
 
     @Override
     public OrderGoodsRefundVo queryById(Long refundId){
@@ -247,6 +251,14 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
                     throw new CustomException("不满足退款");
                 }
             }
+            if(goods.getGoodsType()==3||goods.getGoodsType()==4){
+                //补考
+                UserExamGoodsQueryBo examGoodsQueryBo = new UserExamGoodsQueryBo();
+                examGoodsQueryBo.setOrderGoodsId(orderGoods.getOrderGoodsId());
+                if(!iUserExamGoodsService.canRefund(examGoodsQueryBo)){
+                    throw new CustomException("剩余次数不够,无法退款");
+                }
+            }
             OrderGoodsRefund add = BeanUtil.toBean(bo, OrderGoodsRefund.class);
             validEntityBeforeSave(add);
             add.setCreateTime(DateUtils.getNowTime());

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -549,7 +549,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         bo.setOrderStatus(status);
         List<OrderListVo> list = iOrderService.selectListApp(bo);
         for (OrderListVo orderVo : list) {
-            if(orderVo.getCreateTime().longValue()<(new Long(DateUtils.getNowTime()-(120))).longValue()){ //24*3600
+            if(orderVo.getCreateTime().longValue()<(new Long(DateUtils.getNowTime()-(24*3600))).longValue()){
                 //超过24小时
                 Order order = new Order();
                 order.setOrderId(orderVo.getOrderId());

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamGoodsQueryBo.java

@@ -55,5 +55,7 @@ public class UserExamGoodsQueryBo extends BaseEntity {
 	/** 已消耗前培次数 */
 	@ApiModelProperty("已消耗前培次数")
 	private Long expendBefore;
-
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamGoodsSupplementAddBo.java

@@ -40,4 +40,7 @@ public class UserExamGoodsSupplementAddBo {
     /** 更新时间 */
     @ApiModelProperty("更新时间")
     private Long updateTime;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamGoodsSupplementEditBo.java

@@ -47,5 +47,7 @@ public class UserExamGoodsSupplementEditBo {
     /** 更新时间 */
     @ApiModelProperty("更新时间")
     private Long updateTime;
-
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamGoodsSupplementQueryBo.java

@@ -52,5 +52,7 @@ public class UserExamGoodsSupplementQueryBo extends BaseEntity {
 	@ApiModelProperty("该商品下前培次数(增加的次数)")
 	private Long doNumber;
 
-
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamGoodsSupplement.java

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
     private Long createTime;
     /** 更新时间 */
     private Long updateTime;
+    /** 订单商品ID */
+    private Long orderGoodsId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserExamGoodsService.java

@@ -62,4 +62,6 @@ public interface IUserExamGoodsService extends IService<UserExamGoods> {
 
 	List<UserExamGoodsVo> selectSellGoods(ExamNumberQueryBo bo);
 
+	Boolean canRefund(UserExamGoodsQueryBo bo);
+
 }

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamGoodsServiceImpl.java

@@ -1,13 +1,17 @@
 package com.zhongzheng.modules.user.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.exam.bo.ExamNumberQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamNumber;
+import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.user.bo.UserSubscribeQueryBo;
+import com.zhongzheng.modules.user.domain.UserExamGoodsSupplement;
 import com.zhongzheng.modules.user.mapper.UserSubscribeMapper;
+import com.zhongzheng.modules.user.service.IUserExamGoodsSupplementService;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
 import com.zhongzheng.modules.user.vo.UserExamGoodsSupplementVo;
 import com.zhongzheng.modules.user.vo.UserSubscribeVo;
@@ -42,6 +46,9 @@ public class UserExamGoodsServiceImpl extends ServiceImpl<UserExamGoodsMapper, U
     @Autowired
     private UserSubscribeMapper userSubscribeMapper;
 
+    @Autowired
+    private IUserExamGoodsSupplementService iUserExamGoodsSupplementService;
+
     @Override
     public UserExamGoodsVo queryById(Long userExamGoodsId){
         UserExamGoods db = this.baseMapper.selectById(userExamGoodsId);
@@ -155,4 +162,29 @@ public class UserExamGoodsServiceImpl extends ServiceImpl<UserExamGoodsMapper, U
     public List<UserExamGoodsVo> selectSellGoods(ExamNumberQueryBo bo) {
         return baseMapper.selectSellGoods(bo);
     }
+
+    @Override
+    public Boolean canRefund(UserExamGoodsQueryBo bo) {
+        UserExamGoodsSupplement entity = iUserExamGoodsSupplementService.getOne(new LambdaQueryWrapper<UserExamGoodsSupplement>().eq(UserExamGoodsSupplement::getOrderGoodsId, bo.getOrderGoodsId()));
+        if(Validator.isNotEmpty(entity)){
+            UserExamGoodsVo examGoodsVo = queryById(entity.getUserExamGoodsId());
+            if(Validator.isNotEmpty(examGoodsVo)){
+                if(entity.getStatus()==1){
+                    //补考
+                    if((examGoodsVo.getExamNumber().longValue()-examGoodsVo.getExpendNumber().longValue())>entity.getExamNumber()){
+                        //剩余次数大于购买时绑定次数
+                        return true;
+                    }
+                }
+                else if(entity.getStatus()==2){
+                    //前培
+                    if((examGoodsVo.getDoNumber().longValue()-examGoodsVo.getExpendBefore().longValue())>entity.getDoNumber()){
+                        //剩余次数大于购买时绑定次数
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserExamGoodsSupplementVo.java

@@ -83,4 +83,8 @@ public class UserExamGoodsSupplementVo {
 	private String projectName;
 	@ApiModelProperty("业务名称")
 	private String businessName;
+	/** 订单商品ID */
+	@Excel(name = "订单商品ID")
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -486,6 +486,7 @@ public class WxPayServiceImpl implements IWxPayService {
                     userExamGoodsSupplementAddBo.setExamNumber(examNumber.getExamNumber());
                     userExamGoodsSupplementAddBo.setDoNumber(examNumber.getDoNumber());
                     userExamGoodsSupplementAddBo.setStatus(3);
+                    userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
                     userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
                 } else {
                     //默认生成一条,避免商品以后才配置考试次数
@@ -514,6 +515,7 @@ public class WxPayServiceImpl implements IWxPayService {
                 userExamGoodsSupplementAddBo.setUserExamGoodsId(userExamGoodsVo.getUserExamGoodsId());
                 userExamGoodsSupplementAddBo.setDoNumber(goodsVo.getStudyCount());
                 userExamGoodsSupplementAddBo.setStatus(2);
+                userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
                 userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
                 UserExamGoods userExamGoods = new UserExamGoods();
                 userExamGoods.setUserExamGoodsId(userExamGoodsVo.getUserExamGoodsId());
@@ -534,6 +536,7 @@ public class WxPayServiceImpl implements IWxPayService {
                 userExamGoodsSupplementAddBo.setUserExamGoodsId(userExamGoodsVo.getUserExamGoodsId());
                 userExamGoodsSupplementAddBo.setExamNumber(goodsVo.getStudyCount());
                 userExamGoodsSupplementAddBo.setStatus(1);
+                userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
                 userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
                 UserExamGoods userExamGoods = new UserExamGoods();
                 userExamGoods.setUserExamGoodsId(userExamGoodsVo.getUserExamGoodsId());
@@ -559,6 +562,9 @@ public class WxPayServiceImpl implements IWxPayService {
                 iClassGradeUserTempService.updateById(classGradeUserTemp);//关闭锁定状态
                 iOrderService.joinGrade(orderGoodsId, classGradeUserTemp.getGradeId(), classGradeUserTemp.getUserId());
             }
+            if (Validator.isEmpty(classGradeUserTemp)) {
+                throw new CustomException("订单已关闭");
+            }
             //记录消耗一次学习机会
             StudyCountLog studyCountLog = new StudyCountLog();
             studyCountLog.setGradeId(classGradeUserTemp.getGradeId());

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamGoodsSupplementMapper.xml

@@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status" column="status"/>
         <result property="examNumber" column="exam_number"/>
         <result property="doNumber" column="do_number"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
     </resultMap>