he2802 пре 4 година
родитељ
комит
8f20ba1f21

+ 22 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -23,7 +23,11 @@ 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.UserExamRecordQueryBo;
+import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.service.IUserExamRecordService;
+import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -57,6 +61,10 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
     private IWxPayService iWxPayService;
     @Autowired
     private IClassGradeUserService iClassGradeUserService;
+    @Autowired
+    private IUserExamRecordService iUserExamRecordService;
+    @Autowired
+    private IUserStudyRecordService iUserStudyRecordService;
 
     @Override
     public OrderGoodsRefundVo queryById(Long refundId){
@@ -134,11 +142,23 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
         Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId,bo.getGoodsId()));
         if(goods.getGoodsType()==1){
             //视频商品
-
+            UserStudyRecordQueryBo userStudyRecordQueryBo = new UserStudyRecordQueryBo();
+            userStudyRecordQueryBo.setGoodsId(goods.getGoodsId());
+            userStudyRecordQueryBo.setUserId(order.getUserId());
+            Long userSeeTime = iUserStudyRecordService.getUserSeeTime(userStudyRecordQueryBo);
+            if(userSeeTime>=(30*60)){ //超30分钟不满足退款
+                throw new CustomException("不满足退款");
+            }
         }
         if(goods.getGoodsType()==2){
             //题库商品
-
+            UserExamRecordQueryBo userExamRecordQueryBo = new UserExamRecordQueryBo();
+            userExamRecordQueryBo.setGoodsId(goods.getGoodsId());
+            userExamRecordQueryBo.setUserId(order.getUserId());
+            Long doQuestionNum = iUserExamRecordService.getUserDoQuestionNum(userExamRecordQueryBo);
+            if(doQuestionNum>=30){ //超30道题不满足退款
+                throw new CustomException("不满足退款");
+            }
         }
         OrderGoodsRefund add = getOne(new LambdaQueryWrapper<OrderGoodsRefund>().eq(OrderGoodsRefund::getGoodsId,bo.getGoodsId()).eq(OrderGoodsRefund::getOrderSn,bo.getOrderSn()));
         String out_trade_no = null;

+ 2 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -266,13 +266,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no);
                     redisCache.unlockLua(redisLockEntity);
                 }
-
+                iOrderGoodsService.updateById(orderGoods);
             }
 
             if(!canRepeatBuy&&goods.getGoodsType()!=3&&goods.getGoodsType()!=4){
                 this.checkBuyGoods(g.getGoodsId(),bo.getUserId());
             }
-            iOrderGoodsService.updateById(orderGoods);
+
         }
 
         add.setOrderSn(out_trade_no);
@@ -607,7 +607,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
             //预留0空位避免超人数
             if((classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()-locakStudentNum)>0){
-                System.out.println("进入新班级"+gradeId);
                 //有空位则进入班级
                 gradeId = classGradeVo.getGradeId();
                 //班级还有剩位,直接锁定班级

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserExamRecordMapper.java

@@ -24,4 +24,5 @@ public interface UserExamRecordMapper extends BaseMapper<UserExamRecord> {
     List<UserExamRecordVo> selectExamList(UserExamRecordQueryBo bo);
     List<UserExamWrongRecordVo> getExamRecordRightList(UserExamRecordQueryBo bo);
     List<UserExamWrongRecordVo> getExamRecordWrongList(UserExamRecordQueryBo bo);
+    Long getUserDoQuestionNum(UserExamRecordQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java

@@ -30,6 +30,8 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
 
     List<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo);
 
+    Long getUserSeeTime(UserStudyRecordQueryBo bo);
+
     List<SectionStudyRecordVo> listSection(SubjectStudyRecordQueryBo bo);
 
     List<Long> sectionType(@Param("courseId") Long courseId,@Param("sectionType") Long sectionType);

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

@@ -32,6 +32,8 @@ public interface IUserExamRecordService extends IService<UserExamRecord> {
 
 	List<UserExamWrongRecordVo> getExamRecordWrongList(UserExamRecordQueryBo bo);
 
+	Long getUserDoQuestionNum(UserExamRecordQueryBo bo);
+
 	/**
 	 * 查询列表
 	 */

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

@@ -34,6 +34,8 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 
 	UserPeriodStatus selectPeriodCount(UserStudyRecordQueryBo entity);
 
+	Long getUserSeeTime(UserStudyRecordQueryBo bo);
+
 	/**
 	 * 根据新增业务对象插入用户学习记录
 	 * @param bo 用户学习记录新增业务对象

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamRecordServiceImpl.java

@@ -62,6 +62,11 @@ public class UserExamRecordServiceImpl extends ServiceImpl<UserExamRecordMapper,
         return this.baseMapper.getExamRecordWrongList(bo);
     }
 
+    @Override
+    public Long getUserDoQuestionNum(UserExamRecordQueryBo bo) {
+        return this.baseMapper.getUserDoQuestionNum(bo);
+    }
+
     @Override
     public List<UserExamRecordVo> queryList(UserExamRecordQueryBo bo) {
         LambdaQueryWrapper<UserExamRecord> lqw = Wrappers.lambdaQuery();

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -149,6 +149,11 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         return this.baseMapper.selectPeriodCount(entity);
     }
 
+    @Override
+    public Long getUserSeeTime(UserStudyRecordQueryBo bo) {
+        return this.baseMapper.getUserSeeTime(bo);
+    }
+
     /**
      * 实体类转化成视图对象
      *

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -302,7 +302,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ot.type AS template_type,
             (SELECT gs.goods_name FROM goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_name,
             (SELECT gs.code FROM goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_code,
-            (SELECT cg.grade_id FROM class_grade_user cgu LEFT JOIN class_grade_goods cgg on cgg.grade_id = cgu.grade_id LEFT JOIN class_grade cg on cg.grade_id = cgu.grade_id
+            (SELECT  DISTINCT cg.grade_id FROM class_grade_user cgu LEFT JOIN class_grade_goods cgg on cgg.grade_id = cgu.grade_id LEFT JOIN class_grade cg on cg.grade_id = cgu.grade_id
             where cgu.user_id = #{userId} and cgg.goods_id=g.goods_id and cg.`status` =1 and unix_timestamp(now()) BETWEEN cg.class_start_time and cg.class_end_time)  as grade_id
         FROM
             goods g

+ 20 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamRecordMapper.xml

@@ -196,4 +196,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	LEFT JOIN question q ON q.question_id = uewr.question_id
 
     </select>
+
+    <select id="getUserDoQuestionNum" parameterType="com.zhongzheng.modules.user.bo.UserExamRecordQueryBo" resultType="Long">
+        SELECT
+            count(*)
+        FROM
+            question q
+        WHERE
+            FIND_IN_SET(
+                    q.question_id,(
+                SELECT
+                    GROUP_CONCAT( uer.do_question_ids )
+                FROM
+                    user_exam_record uer
+                WHERE
+                    uer.user_id = #{userId}
+                  AND uer.goods_id = #{goodsId}
+                  AND uer.do_question_ids IS NOT NULL
+            ))
+
+    </select>
 </mapper>

+ 17 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -937,4 +937,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectCountPlan" parameterType="Long" resultType="Long">
         SELECT COUNT(1) FROM user_study_record usr where usr.plan_id =#{planId}
     </select>
+
+    <select id="getUserSeeTime" parameterType="com.zhongzheng.modules.user.domain.UserStudyRecord" resultType="Long">
+        SELECT
+            SUM( a.study_duration )
+        FROM
+            (
+                SELECT
+                    MAX( usr.study_duration ) study_duration
+                FROM
+                    user_study_record usr
+                WHERE
+                    usr.user_id = #{userId}
+                  AND usr.goods_id = #{goodsId}
+                GROUP BY
+                    usr.section_id
+            )a
+    </select>
 </mapper>