he2802 3 tahun lalu
induk
melakukan
0993d5c712

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamNumberQueryBo.java

@@ -66,4 +66,7 @@ public class ExamNumberQueryBo extends BaseEntity {
 	/** 项目ID */
 	@ApiModelProperty("项目ID")
 	private Long goodsId;
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long[] goodsIds;
 }

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamNumberServiceImpl.java

@@ -1,16 +1,22 @@
 package com.zhongzheng.modules.exam.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.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.MajorCategory;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.domain.ExamNumberGoods;
 import com.zhongzheng.modules.exam.mapper.ExamApplyMapper;
 import com.zhongzheng.modules.exam.service.IExamNumberGoodsService;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
+import com.zhongzheng.modules.user.domain.UserExamGoods;
+import com.zhongzheng.modules.user.service.IUserExamGoodsService;
+import com.zhongzheng.modules.user.vo.UserExamGoodsVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -41,6 +47,9 @@ public class ExamNumberServiceImpl extends ServiceImpl<ExamNumberMapper, ExamNum
     @Autowired
     private IExamNumberGoodsService examNumberGoodsService;
 
+    @Autowired
+    private IUserExamGoodsService iUserExamGoodsService;
+
     @Autowired
     private ExamApplyMapper examApplyMapper;
 
@@ -120,6 +129,24 @@ public class ExamNumberServiceImpl extends ServiceImpl<ExamNumberMapper, ExamNum
             examNumberGoodsAddBo.setUpdateTime(DateUtils.getNowTime());
             examNumberGoodsService.insertByAddBo(examNumberGoodsAddBo);
         }
+        if(Validator.isNotEmpty(bo.getGoodsId())){
+            //修改已卖出去商品次数
+            long addExamNumber = bo.getExamNumber().longValue();
+            long addDoNumber = bo.getDoNumber().longValue();
+            ExamNumberQueryBo queryBo = new ExamNumberQueryBo();
+            queryBo.setGoodsIds(bo.getGoodsId());
+            List<UserExamGoodsVo> sellList = iUserExamGoodsService.selectSellGoods(queryBo);
+            if(Validator.isNotEmpty(sellList)){
+                for (UserExamGoodsVo examGoodsVo : sellList){
+                    LambdaUpdateWrapper<UserExamGoods> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                    objectLambdaUpdateWrapper.eq(UserExamGoods::getUserExamGoodsId, examGoodsVo.getUserExamGoodsId());
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getExamNumber, examGoodsVo.getExamNumber().longValue()+addExamNumber);
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getDoNumber,examGoodsVo.getDoNumber()+addDoNumber);
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getUpdateTime,DateUtils.getNowTime());
+                    iUserExamGoodsService.update(null, objectLambdaUpdateWrapper);
+                }
+            }
+        }
         return save;
     }
 
@@ -184,6 +211,22 @@ public class ExamNumberServiceImpl extends ServiceImpl<ExamNumberMapper, ExamNum
                 examNumberGoodsAddBo.setUpdateTime(DateUtils.getNowTime());
                 examNumberGoodsService.insertByAddBo(examNumberGoodsAddBo);
             }
+            //修改已卖出去商品次数
+            long addExamNumber = bo.getExamNumber().longValue() - info.getExamNumber().longValue();
+            long addDoNumber = bo.getDoNumber().longValue() - info.getDoNumber().longValue();
+            ExamNumberQueryBo queryBo = new ExamNumberQueryBo();
+            queryBo.setGoodsIds(bo.getGoodsId());
+            List<UserExamGoodsVo> sellList = iUserExamGoodsService.selectSellGoods(queryBo);
+            if(Validator.isNotEmpty(sellList)){
+                for (UserExamGoodsVo examGoodsVo : sellList){
+                    LambdaUpdateWrapper<UserExamGoods> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                    objectLambdaUpdateWrapper.eq(UserExamGoods::getUserExamGoodsId, examGoodsVo.getUserExamGoodsId());
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getExamNumber, examGoodsVo.getExamNumber().longValue()+addExamNumber);
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getDoNumber,examGoodsVo.getDoNumber()+addDoNumber);
+                    objectLambdaUpdateWrapper.set(UserExamGoods::getUpdateTime,DateUtils.getNowTime());
+                    iUserExamGoodsService.update(null, objectLambdaUpdateWrapper);
+                }
+            }
         }
 
         LambdaQueryWrapper<ExamNumberGoods> example = Wrappers.lambdaQuery();

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

@@ -271,7 +271,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             }
         }
         //同步用户购买商品的考试次数和前培次数
-        sendGoods();
+    //    sendGoods();
         return "请求成功";
     }
 
@@ -747,7 +747,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Override
     public void UpExamNum(UserQueryBo bo) {
         //查询购买后未添加考试次数的商品,添加考试次数
-        List<ExamNumberVo> examNumbers = examNumberMapper.selectUpExamNum();
+      /*  List<ExamNumberVo> examNumbers = examNumberMapper.selectUpExamNum();
         for (ExamNumberVo examNumber : examNumbers) {
             UserExamGoods add = new UserExamGoods();
             add.setGoodsId(examNumber.getGoodsIds());
@@ -799,7 +799,7 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             userExamGoodsSupplement.setExamNumber(userExamGoodsSupplementVo.getExamNumber()+examNum);
             userExamGoodsSupplement.setDoNumber(userExamGoodsSupplementVo.getDoNumber()+doNum);
             userExamGoodsSupplementService.updateById(userExamGoodsSupplement);
-        }
+        }*/
     }
 
     //获得可用学习天数

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserExamGoodsMapper.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.user.mapper;
 
+import com.zhongzheng.modules.exam.bo.ExamNumberQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamNumber;
 import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
@@ -25,4 +26,6 @@ public interface UserExamGoodsMapper extends BaseMapper<UserExamGoods> {
     Long queryExamGoods(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
 
     ExamNumber queryExamGoodsVo(@Param("goodsId") Long goodsId);
+
+    List<UserExamGoodsVo> selectSellGoods(ExamNumberQueryBo bo);
 }

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

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.user.service;
 
+import com.zhongzheng.modules.exam.bo.ExamNumberQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamNumber;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
 import com.zhongzheng.modules.user.vo.UserExamGoodsVo;
@@ -59,4 +60,6 @@ public interface IUserExamGoodsService extends IService<UserExamGoods> {
 
 	ExamNumber queryExam(Long goodsId);
 
+	List<UserExamGoodsVo> selectSellGoods(ExamNumberQueryBo bo);
+
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 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.user.bo.UserSubscribeQueryBo;
 import com.zhongzheng.modules.user.mapper.UserSubscribeMapper;
@@ -149,4 +150,9 @@ public class UserExamGoodsServiceImpl extends ServiceImpl<UserExamGoodsMapper, U
     public ExamNumber queryExam(Long goodsId) {
         return baseMapper.queryExamGoodsVo(goodsId);
     }
+
+    @Override
+    public List<UserExamGoodsVo> selectSellGoods(ExamNumberQueryBo bo) {
+        return baseMapper.selectSellGoods(bo);
+    }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserPlanServiceImpl.java

@@ -141,7 +141,7 @@ public class UserPlanServiceImpl extends ServiceImpl<UserPlanMapper, UserPlan> i
             List<Long> cont = JSONObject.parseArray(userPlan.getStudyCount(), Long.class);
             Long[] strings = new Long[cont.size()];
             cont.toArray(strings);
-
+            userPlanVo.setStatus(userPlan.getStatus());
             userPlanVo.setCalendarStudyVo(calendarStudyVos);
             userPlanVo.setStudyCount(strings);
             userPlanVos.add(userPlanVo);

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

@@ -320,6 +320,12 @@ public class WxPayServiceImpl  implements IWxPayService {
 
     @Transactional(rollbackFor = Exception.class)
     public boolean dealOrder(String out_trade_no,String transaction_id){
+        String key = out_trade_no;
+        String ticket = redisCache.getCacheObject(key);
+        if(Validator.isNotEmpty(ticket)){
+            return false;
+        }
+        redisCache.setCacheObject(key, "dealing", 1, TimeUnit.MINUTES);//1分钟
         Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, out_trade_no));
         if(order!=null&&order.getOrderStatus()==0){
             order.setOrderStatus(Order.PAY_FULL);
@@ -369,6 +375,17 @@ public class WxPayServiceImpl  implements IWxPayService {
                     userExamGoodsSupplementAddBo.setDoNumber(examNumber.getDoNumber());
                     userExamGoodsSupplementAddBo.setStatus(3);
                     userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
+                }else{
+                    //默认生成一条,避免商品以后才配置考试次数
+                    UserExamGoods add = new UserExamGoods();
+                    add.setGoodsId(g.getGoodsId());
+                    add.setUserId(order.getUserId());
+                    add.setExamNumber(0L);
+                    add.setDoNumber(0L);
+                    add.setCreateTime(DateUtils.getNowTime());
+                    add.setUpdateTime(DateUtils.getNowTime());
+                    add.setOrderGoodsId(g.getOrderGoodsId());
+                    userExamGoodsService.save(add);
                 }
             }
         }

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamNumberMapper.xml

@@ -122,4 +122,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and og.pay_status in (2,3)
           and (SELECT COUNT(1) FROM user_exam_goods_supplement uegs LEFT JOIN user_exam_goods ueg on ueg.user_exam_goods_id = uegs.user_exam_goods_id where uegs.goods_id = eng.goods_id and ueg.user_id = od.user_id and (uegs.exam_number != en.exam_number or uegs.do_number != en.do_number)) > 0
     </select>
+
+
 </mapper>

+ 9 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserExamGoodsMapper.xml

@@ -122,6 +122,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             exam_number en
                 LEFT JOIN exam_number_goods eng on eng.exam_number_id = en.exam_number_id
         where 1=1
-          AND eng.goods_id = #{goodsId}
+          AND eng.goods_id = #{goodsId} and en.`status` = 1
+    </select>
+
+
+    <select id="selectSellGoods" parameterType="com.zhongzheng.modules.exam.bo.ExamNumberQueryBo" resultMap="UserExamGoodsVo">
+        SELECT * from user_exam_goods ueg where goods_id in
+        <foreach collection="goodsIds" item="item" index="index" open="(" close=")" separator=",">
+        #{item}
+        </foreach>
     </select>
 </mapper>