he2802 %!s(int64=2) %!d(string=hai) anos
pai
achega
8d6201348a
Modificáronse 20 ficheiros con 244 adicións e 34 borrados
  1. 13 4
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java
  2. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java
  3. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java
  4. 21 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  5. 41 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  6. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderInputServiceImpl.java
  7. 30 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  8. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java
  9. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/SpecialQuestionVo.java
  10. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java
  11. 6 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  12. 11 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java
  13. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/SettleVo.java
  14. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserSubscribeQueryBo.java
  15. 57 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  16. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeVo.java
  17. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  18. 22 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  19. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml
  20. 6 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

+ 13 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -16,10 +16,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -90,6 +87,18 @@ public class CourseController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询用户是否拥有(山东题库)
+     */
+    @ApiOperation("查询用户是否拥有(山东题库)")
+    @GetMapping("/special/question/count")
+    public AjaxResult<Long> getSpecialQuestionCount(SpecialQuestionBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        Long num = iCourseService.getSpecialQuestionCount(bo);
+        return AjaxResult.success(num);
+    }
+
     @ApiOperation("查询用户拥有的讲义商品")
     @GetMapping("/goodsHandoutsList")
     public TableDataInfo<GoodsUserVo> goodsHandoutsList(CourseQueryBo bo) {

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java

@@ -70,4 +70,7 @@ public interface CourseMapper extends BaseMapper<Course> {
     Long getCourseByTenantTwo(@Param("courseName") String courseName,@Param("code") String code,@Param("tenantId") Long tenantId);
 
     List<SpecialQuestionVo> getSpecialQuestionList(SpecialQuestionBo bo);
+
+    Long getSpecialQuestionCount(SpecialQuestionBo bo);
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java

@@ -104,4 +104,6 @@ public interface ICourseService extends IService<Course> {
 
     List<SpecialQuestionVo> getSpecialQuestionList(SpecialQuestionBo bo);
 
+    Long getSpecialQuestionCount(SpecialQuestionBo bo);
+
 }

+ 21 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -629,7 +629,6 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                     //没有关联题库 是否购买过题库
                     int count = iGoodsQuestionRelService.count(new LambdaQueryWrapper<GoodsQuestionRel>()
                             .eq(GoodsQuestionRel::getOrderGoodsId, userSubscribeTwo.getOrderGoodsId())
-                            .eq(GoodsQuestionRel::getStatus, 1)
                             .gt(GoodsQuestionRel::getQuestionDoNum, 0));
                     if (count <= 0){
                         //考试时间往前推8天
@@ -775,7 +774,27 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
 
     @Override
     public List<SpecialQuestionVo> getSpecialQuestionList(SpecialQuestionBo bo) {
-        return baseMapper.getSpecialQuestionList(bo);
+        List<SpecialQuestionVo> specialQuestionList = baseMapper.getSpecialQuestionList(bo);
+        if (CollectionUtils.isEmpty(specialQuestionList)){
+            return new ArrayList<>();
+        }
+        specialQuestionList.forEach(item -> {
+            GoodsQuestionRel questionRel = iGoodsQuestionRelService
+                    .getOne(new LambdaQueryWrapper<GoodsQuestionRel>()
+                    .eq(GoodsQuestionRel::getQuestionGoodsId, item.getGoodsId())
+                    .eq(GoodsQuestionRel::getQsOrderGoodsId, item.getOrderGoodsId())
+                    .gt(GoodsQuestionRel::getQuestionDoNum, 0)
+                    .last("limit 1"));
+            if (ObjectUtils.isNotNull(questionRel)){
+                item.setSubscribeStatus(questionRel.getStatus());
+            }
+        });
+        return specialQuestionList;
+    }
+
+    @Override
+    public Long getSpecialQuestionCount(SpecialQuestionBo bo) {
+        return baseMapper.getSpecialQuestionCount(bo);
     }
 
     private Long liveTime(Long nowTime, Integer day) {

+ 41 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -39,9 +39,11 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsSectionListBo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsQuestionRel;
+import com.zhongzheng.modules.goods.domain.QuestionMerchant;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsQuestionRelService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.service.IQuestionMerchantService;
 import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeGoods;
@@ -166,6 +168,8 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     private IOrderInputService iOrderInputService;
     @Autowired
     private IUserProfileService iUserProfileService;
+    @Autowired
+    private IQuestionMerchantService iQuestionMerchantService;
 
     @Override
     public OrderGoodsVo queryById(Long orderGoodsId) {
@@ -675,6 +679,43 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                     examApplyGoodsVos.addAll(examApplyGoodsVos2);
                     goodsVo.setExamApplyGoodsList(examApplyGoodsVos);
                 }
+
+                //预约考试是否可以购买题库(该商品没有关联题库且预约考试的时间提前8天)
+                UserSubscribe userSubscribeTwo = iUserSubscribeService.getOne(new LambdaQueryWrapper<UserSubscribe>()
+                        .eq(UserSubscribe::getOrderGoodsId,goodsVo.getOrderGoodsId())
+                        .eq(UserSubscribe::getSubscribeStatus,1)
+                        .eq(UserSubscribe::getExamStatus,0)
+                        .last("limit 1"));
+                if (ObjectUtils.isNotNull(userSubscribeTwo)){
+                    Goods goods = iGoodsService.getById(goodsVo.getGoodsId());
+                    if (ObjectUtils.isNull(goods.getQuestionGoodsId())){
+                        //没有关联题库 是否购买过题库
+                        int count = iGoodsQuestionRelService.count(new LambdaQueryWrapper<GoodsQuestionRel>()
+                                .eq(GoodsQuestionRel::getOrderGoodsId, userSubscribeTwo.getOrderGoodsId())
+                                .gt(GoodsQuestionRel::getQuestionDoNum, 0));
+                        if (count <= 0){
+                            //考试时间往前推8天
+                            Long appointTime = DateUtils.getDayBefore(userSubscribeTwo.getApplySiteExamTime(), 8);
+                            if (DateUtils.getNowTime() < appointTime){
+                                goodsVo.setOpenQuestion(1);
+                                //获取默认题库商家商品
+                                QuestionMerchant one = iQuestionMerchantService.getOne(new LambdaQueryWrapper<QuestionMerchant>()
+                                        .eq(QuestionMerchant::getSign, 1)
+                                        .eq(QuestionMerchant::getStatus, 1)
+                                        .last("limit 1"));
+                                if (ObjectUtils.isNotNull(one)){
+                                    Goods goodsOne = iGoodsService.getOne(new LambdaQueryWrapper<Goods>()
+                                            .eq(Goods::getQuestionMerchantId, one.getMerchantId())
+                                            .eq(Goods::getStatus, 1)
+                                            .last("limit 1"));
+                                    if (ObjectUtils.isNotNull(goodsOne)){
+                                        goodsVo.setQuestionGoodsId(goodsOne.getGoodsId());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
             }
         }
         return list;

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderInputServiceImpl.java

@@ -279,6 +279,7 @@ public class OrderInputServiceImpl extends ServiceImpl<OrderInputMapper, OrderIn
                 .eq(UserSubscribe::getUserId, order.getUserId())
                 .eq(UserSubscribe::getOrderGoodsId, orderGoodsId)
                 .eq(UserSubscribe::getSubscribeStatus, 1)
+                .eq(UserSubscribe::getExamStatus,0)
                 .last("limit 1"));
         if (ObjectUtils.isNull(subscribe)){
             return add;

+ 30 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -881,6 +881,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .eq(UserSubscribe::getUserId, one.getUserId())
                 .eq(UserSubscribe::getOrderGoodsId, orderGoods.getOrderGoodsId())
                 .eq(UserSubscribe::getSubscribeStatus, 1)
+                .eq(UserSubscribe::getExamStatus,0)
                 .last("limit 1"));
         if (ObjectUtils.isNull(subscribe)){
             return add;
@@ -895,7 +896,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     }
 
 
-    private void questionOrderHandle(Long orderGoodsId,Long goodsId,Long qsOrderGoodsId) {
+    private void questionOrderHandle(Long orderGoodsId,Long goodsId,Long qsOrderGoodsId,Long userId) {
         //第三方题库商品
         Goods questionGoods = iGoodsService.getById(goodsId);
         if (ObjectUtils.isNull(questionGoods) || questionGoods.getGoodsType() != 9){
@@ -917,6 +918,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         rel.setCreateTime(DateUtils.getNowTime());
         rel.setUpdateTime(DateUtils.getNowTime());
         iGoodsQuestionRelService.save(rel);
+        //补充题库商品服务时间
+        setQuestionServiceTime(qsOrderGoodsId,userId);
+    }
+
+
+    private void setQuestionServiceTime(Long orderGoodsId,Long userId) {
+        UserSubscribe subscribe = iUserSubscribeService.getOne(new LambdaQueryWrapper<UserSubscribe>()
+                .eq(UserSubscribe::getUserId, userId)
+                .eq(UserSubscribe::getOrderGoodsId, orderGoodsId)
+                .eq(UserSubscribe::getSubscribeStatus, 1)
+                .eq(UserSubscribe::getExamStatus,0)
+                .last("limit 1"));
+        if (ObjectUtils.isNull(subscribe)){
+            return;
+        }
+        //考试日期
+        Long examTime = subscribe.getApplySiteExamTime();
+        //前推8天
+        Long dayBefore = DateUtils.getDayBefore(examTime, 8);
+        OrderGoods orderGoods = iOrderGoodsService.getById(orderGoodsId);
+        orderGoods.setServiceStartTime(dayBefore);
+        orderGoods.setServiceEndTime(examTime);
+        iOrderGoodsService.updateById(orderGoods);
     }
 
     @Override
@@ -1010,7 +1034,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             if (ObjectUtils.isNotNull(g.getRelevanceId())){
                 //购买关联题库商品
-                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId());
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId(),bo.getUserId());
             }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
@@ -1408,7 +1432,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             if (ObjectUtils.isNotNull(g.getRelevanceId())){
                 //购买关联题库商品
-                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId());
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId(),bo.getUserId());
             }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
@@ -1569,7 +1593,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             if (ObjectUtils.isNotNull(g.getRelevanceId())){
                 //购买关联题库商品
-                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId());
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId(),orderGoods.getOrderGoodsId(),bo.getUserId());
             }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
@@ -2806,13 +2830,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             //校验学员是否已经购买题库
             UserSubscribe userSubscribe = iUserSubscribeService.getById(userSubscribeId);
             User user = iUserService.getById(userSubscribe.getUserId());
-            if (ObjectUtils.isNull(userSubscribe)){
-                throw new CustomException(String.format("学员【%s】预约信息有误",user.getRealname()));
+            if (ObjectUtils.isNull(userSubscribe) || userSubscribe.getSubscribeStatus() == 0){
+                throw new CustomException(String.format("学员【%s】没有预约考试,请勿开通题库",user.getRealname()));
             }
             int count = iGoodsQuestionRelService.count(new LambdaQueryWrapper<GoodsQuestionRel>()
                     .eq(GoodsQuestionRel::getOrderGoodsId, userSubscribe.getOrderGoodsId())
                     .eq(GoodsQuestionRel::getQuestionGoodsId, bo.getGoodsId())
-                    .eq(GoodsQuestionRel::getStatus, 1)
                     .gt(GoodsQuestionRel::getQuestionDoNum, 0));
             if (count > 0) {
                 throw new CustomException(String.format("学员【%s】已购买当前题库商品,请勿重复开通!",user.getRealname()));

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java

@@ -349,4 +349,10 @@ public class OrderGoodsVo {
 
 	@ApiModelProperty("是否可以预约标识:1未参加考试 2已参加考试 3考试成绩未通过")
 	private Integer subscribeSign;
+
+	@ApiModelProperty("学员是否可以购买题库:1是 0否")
+	private Integer openQuestion;
+
+	@ApiModelProperty("关联题库商品ID")
+	private Long questionGoodsId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/SpecialQuestionVo.java

@@ -56,4 +56,7 @@ public class SpecialQuestionVo implements Serializable {
     @ApiModelProperty("服务有效期结束")
     private Long serviceEndTime;
 
+    @ApiModelProperty("预约状态")
+    private Integer subscribeStatus;
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -53,6 +53,6 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     List<TopOldOrderRefundVo> getRefundOrderByBo(RefundOrderBo refundOrderBo);
 
-    List<Long> getOrderSnByBusiness(@Param("businessName")String businessName);
+    List<String> getOrderSnByBusiness(@Param("businessName")String businessName);
 
 }

+ 6 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -393,7 +393,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         Set<TopInstSettle> settleList = new HashSet<>();
         for (String name : fullName) {
             List<TopInstSettle> settles = topInstSettleService.getSettleByBusiness(name,
-                    ObjectUtils.isNotNull(orderVo.getPayTime()) ? orderVo.getPayTime() : orderVo.getCreateTime(), orderVo.getOperationType());
+                    ObjectUtils.isNotNull(orderVo.getCheckTime()) ? orderVo.getCheckTime() : orderVo.getCreateTime(), orderVo.getOperationType());
             settleList.addAll(settles);
         }
         if (CollectionUtils.isNotEmpty(settleList)) {
@@ -464,7 +464,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
 
         // 获取企业默认成本模板
         TopCostTp costTp = topCostTpService.getOne(new LambdaQueryWrapper<TopCostTp>()
-                .eq(TopCostTp::getTenantId, bo.getTenantId()).eq(TopCostTp::getDefaultStatus, 1).last("limit 1"));
+                .eq(TopCostTp::getTenantId, bo.getTenantId())
+                .eq(TopCostTp::getDefaultStatus, 1)
+                .eq(TopCostTp::getStatus,1)
+                .last("limit 1"));
         if (ObjectUtils.isNotNull(costTp) && bo.getOrderFrom() != 4) {
             TopCostTpVo topCostTpVo = BeanUtil.toBean(costTp, TopCostTpVo.class);
             //成本项
@@ -3559,7 +3562,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     TopCourseProjectType projectType = topCourseProjectTypeService.getById(settle.getProjectId());
                     TopCourseBusiness business = topCourseBusinessService.getById(settle.getBusinessId());
                     String businessName = educationType.getEducationName() + business.getBusinessName() + projectType.getProjectName();
-                    List<Long> orderSns = baseMapper.getOrderSnByBusiness(businessName);
+                    List<String> orderSns = baseMapper.getOrderSnByBusiness(businessName);
                     if (CollectionUtils.isNotEmpty(orderSns)) {
                         List<TopOldOrder> oldOrderList = topOldOrderService
                                 .list(new LambdaQueryWrapper<TopOldOrder>()

+ 11 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java

@@ -541,6 +541,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         List<TopSysUserRole> roleListTwo = topSysUserRoleService.list(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId, bo.getLoginId()));
         //审核角色和审核时间
         settleVos.forEach(item -> {
+            item.setPaySign(0);
             if (item.getCheckStatus() == 3){
                 //审核不通过
                 TopOldOrderCheckLog refundLog = topOldOrderCheckLogService
@@ -579,10 +580,16 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
                             item.setCheckTime(checkLogTwo.getCheckTime());
                         }
                     }
-                    if (CollectionUtils.isNotEmpty(roleListTwo) && checkLog.getCheckStatus() != 2){
+                    if (CollectionUtils.isNotEmpty(roleListTwo)){
                         List<Long> collect = roleListTwo.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
                         if (CollectionUtils.isNotEmpty(collect) && collect.contains(checkLog.getRoleId())){
-                            item.setCheckStatus(7);
+                            if (checkLog.getCheckStatus() == 2){
+                                //待支付
+                                item.setPaySign(1);
+                            }else if (checkLog.getCheckStatus() == 0){
+                                //待审核
+                                item.setCheckStatus(7);
+                            }
                         }
                     }
                 }
@@ -1065,7 +1072,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
                     OrderBusinessBo bo = new OrderBusinessBo();
                     bo.setOrderSn(order.getOrderSn());
                     List<String> nameList = baseMapper.getGoodsBusinessNameList(bo);
-                    if (CollectionUtils.isEmpty(nameList)){
+                    if (CollectionUtils.isNotEmpty(nameList)){
                         orderVo.setBusinessNames(nameList);
                     }
                 } else {
@@ -1081,7 +1088,7 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
                     bo.setOrderSn(oldOrder.getOrderSn());
                     bo.setOrderGoodsId(orderGoods.getOrderGoodsId());
                     List<String> nameList = baseMapper.getGoodsBusinessNameList(bo);
-                    if (CollectionUtils.isEmpty(nameList)){
+                    if (CollectionUtils.isNotEmpty(nameList)){
                         orderVo.setBusinessNames(nameList);
                     }
                 }

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/SettleVo.java

@@ -54,7 +54,7 @@ public class SettleVo implements Serializable {
     @ApiModelProperty("结算金额")
     private BigDecimal settleMoney;
 
-    @ApiModelProperty("审核状态:1待提交 2待审核 3审核中 4未通过 5待支付 6支付失败 7已结算")
+    @ApiModelProperty("审核状态:1待提交 2审核中 3未通过 4待支付 5支付失败 6已结算,7,当前账号待审核,8支付中")
     private Integer checkStatus;
 
     @ApiModelProperty("审核角色")
@@ -77,4 +77,7 @@ public class SettleVo implements Serializable {
 
     @ApiModelProperty("创建人ID")
     private Long createUserId;
+
+    @ApiModelProperty("支付标签:1是 0否")
+    private Integer paySign;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserSubscribeQueryBo.java

@@ -183,4 +183,10 @@ public class UserSubscribeQueryBo extends BaseEntity {
 	@ApiModelProperty("题库商家名称")
 	private String questionMerchantName;
 
+	@ApiModelProperty("教育类型ID")
+	private Long educationTypeId;
+
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+
 }

+ 57 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -30,8 +30,14 @@ import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alioss.vo.FileBean;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.bo.UserProfileFit;
+import com.zhongzheng.modules.course.domain.CourseBusiness;
+import com.zhongzheng.modules.course.domain.CourseEducationType;
+import com.zhongzheng.modules.course.domain.CourseProjectType;
 import com.zhongzheng.modules.course.domain.Major;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
+import com.zhongzheng.modules.course.service.ICourseBusinessService;
+import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
+import com.zhongzheng.modules.course.service.ICourseProjectTypeService;
 import com.zhongzheng.modules.course.service.IMajorService;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.domain.ExamApply;
@@ -48,6 +54,8 @@ import com.zhongzheng.modules.exam.vo.ExamApplySiteVo;
 import com.zhongzheng.modules.exam.vo.ExamApplyVo;
 import com.zhongzheng.modules.exam.vo.ExamSessionVo;
 import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.domain.GoodsQuestionRel;
+import com.zhongzheng.modules.goods.service.IGoodsQuestionRelService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
@@ -156,6 +164,14 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
     private IClassGradeUserService iClassGradeUserService;
     @Autowired
     private IUserStudyRecordPhotoService iUserStudyRecordPhotoService;
+    @Autowired
+    private IGoodsQuestionRelService iGoodsQuestionRelService;
+    @Autowired
+    private ICourseEducationTypeService iCourseEducationTypeService;
+    @Autowired
+    private ICourseProjectTypeService iCourseProjectTypeService;
+    @Autowired
+    private ICourseBusinessService iCourseBusinessService;
 
     @Value("${aliyun.sms.cancellationReminder}")
     private String cancellationReminder;
@@ -772,6 +788,16 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                     bo.getSubscribeId()
             };
             userSubscribeEditBo.setSubscribeId(s);
+
+            //是否关联题库
+            GoodsQuestionRel questionRel = iGoodsQuestionRelService.getOne(new LambdaQueryWrapper<GoodsQuestionRel>()
+                    .eq(GoodsQuestionRel::getOrderGoodsId, bo.getOrderGoodsId())
+                    .eq(GoodsQuestionRel::getStatus, 1)
+                    .gt(GoodsQuestionRel::getQuestionDoNum, 0));
+            if (ObjectUtils.isNotNull(questionRel)){
+                questionRel.setStatus(0);
+                iGoodsQuestionRelService.updateById(questionRel);
+            }
             //发送消息
 //            sendExamcancel(userSubscribeEditBo);
         }
@@ -850,6 +876,17 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
             }
         }
         List<UserSubscribeVo> userSubscribeVos = baseMapper.listSubscribe(bo);
+        if (CollectionUtils.isNotEmpty(userSubscribeVos)){
+            userSubscribeVos.forEach(item -> {
+                Goods goods = iGoodsService.getById(item.getGoodsId());
+                CourseEducationType educationType = iCourseEducationTypeService.getById(goods.getEducationTypeId());
+                item.setEducationTypeName(educationType.getEducationName());
+                CourseProjectType projectType = iCourseProjectTypeService.getById(goods.getProjectId());
+                item.setProjectName(projectType.getProjectName());
+                CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
+                item.setBusinessName(business.getBusinessName());
+            });
+        }
         return userSubscribeVos;
     }
 
@@ -2230,17 +2267,26 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         add.setUpdateTime(DateUtils.getNowTime());
         add.setExamineeCode(ServletUtils.getEncoded("ZZ"+ ToolsUtils.autoGenericCode(String.valueOf(add.getApplyId()),4) +ToolsUtils.autoGenericCode(String.valueOf(add.getUserId()),4)));
         this.save(add);
-        //签署疫情防控书
-//        if (org.apache.commons.lang3.StringUtils.isNotBlank(bo.getSignImageStr())){
-//            UserSubscribeSignReportBo reportBo = new UserSubscribeSignReportBo();
-//            reportBo.setSubscribeId(add.getSubscribeId());
-//            User user = iUserService.getById(bo.getUserId());
-//            reportBo.setUserId(bo.getUserId());
-//            reportBo.setPhone(user.getTelphone());
-//            reportBo.setIdCard(user.getIdCard());
-//            reportBo.setSignImageStr(bo.getSignImageStr());
-//            this.signReport(reportBo);
-//        }
+
+        //预约成功刷新题库时间
+        GoodsQuestionRel questionRel = iGoodsQuestionRelService
+                .getOne(new LambdaQueryWrapper<GoodsQuestionRel>()
+                .eq(GoodsQuestionRel::getOrderGoodsId, bo.getOrderGoodsId())
+                .gt(GoodsQuestionRel::getQuestionDoNum, 0)
+                .last("limit 1"));
+        if (ObjectUtils.isNotNull(questionRel)){
+            //考试日期
+            Long examTime = add.getApplySiteExamTime();
+            Long dayBefore = DateUtils.getDayBefore(examTime, 8);
+            OrderGoods orderGoods = iOrderGoodsService.getById(questionRel.getQsOrderGoodsId());
+            if (ObjectUtils.isNotNull(orderGoods)){
+                orderGoods.setServiceStartTime(dayBefore);
+                orderGoods.setServiceEndTime(examTime);
+            }
+            //激活题库
+            questionRel.setStatus(1);
+            iGoodsQuestionRelService.updateById(questionRel);
+        }
 
         //发送预约考试消息
         sendExamSucceed(bo);

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeVo.java

@@ -304,4 +304,13 @@ public class UserSubscribeVo {
 
 	@ApiModelProperty("证件照")
 	private String oneInchPhotos;
+
+	@ApiModelProperty("教育类型")
+	private String educationTypeName;
+
+	@ApiModelProperty("业务层次")
+	private String businessName;
+
+	@ApiModelProperty("项目类型")
+	private String projectName;
 }

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

@@ -603,6 +603,7 @@ public class WxPayServiceImpl implements IWxPayService {
                 .eq(UserSubscribe::getUserId, one.getUserId())
                 .eq(UserSubscribe::getOrderGoodsId, orderGoods.getOrderGoodsId())
                 .eq(UserSubscribe::getSubscribeStatus, 1)
+                .eq(UserSubscribe::getExamStatus,0)
                 .last("limit 1"));
         if (ObjectUtils.isNull(subscribe)){
             return add;

+ 22 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -933,4 +933,26 @@
                 AND g.question_merchant_id = #{questionMerchantId}
             </if>
     </select>
+
+    <select id="getSpecialQuestionCount" parameterType="com.zhongzheng.modules.order.bo.SpecialQuestionBo" resultType="java.lang.Long">
+        SELECT
+            count(distinct g.goods_id)
+        FROM
+        `order` o
+        LEFT JOIN order_goods og ON og.order_sn = o.order_sn
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN question_merchant qm ON g.question_merchant_id = qm.merchant_id
+        WHERE
+        o.`status` = 1
+        AND og.refund_status != 2
+        AND og.pay_status IN ( 2, 3, 4 )
+        AND g.goods_type = 9
+        AND o.user_id = #{userId}
+        <if test="questionMerchantId != null and questionMerchantId != ''">
+            AND g.question_merchant_id = #{questionMerchantId}
+        </if>
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -575,7 +575,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
-    <select id="getOrderSnByBusiness" parameterType="java.lang.String" resultType="java.lang.Long">
+    <select id="getOrderSnByBusiness" parameterType="java.lang.String" resultType="java.lang.String">
         SELECT DISTINCT order_sn FROM v_top_order_business WHERE INSTR(business_full_name,#{businessName}) > 0
     </select>
 

+ 6 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

@@ -202,6 +202,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="gradeType != null and gradeType != '' ">
             and g.grade_type = #{gradeType}
         </if>
+        <if test="educationTypeId != null and educationTypeId != '' ">
+            and g.education_type_id = #{educationTypeId}
+        </if>
+        <if test="businessId != null and businessId != '' ">
+            and g.business_id = #{businessId}
+        </if>
         <if test="createUsername != null and createUsername != '' ">
             and o.create_username like concat('%', #{create_username}, '%')
         </if>