yangdamao 2 سال پیش
والد
کامیت
3a947045c2
31فایلهای تغییر یافته به همراه230 افزوده شده و 50 حذف شده
  1. 3 0
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  2. 3 0
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  3. 3 0
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  4. 3 3
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  5. 1 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  6. 3 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  7. 3 0
      zhongzheng-admin/src/main/resources/application-pre.yml
  8. 3 0
      zhongzheng-admin/src/main/resources/application-prod.yml
  9. 3 1
      zhongzheng-api/src/main/resources/application-dev.yml
  10. 3 0
      zhongzheng-api/src/main/resources/application-pre.yml
  11. 3 0
      zhongzheng-api/src/main/resources/application-prod.yml
  12. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  13. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java
  14. 3 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/QuestionOpenBo.java
  15. 4 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  16. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/CdUserSubscribeBo.java
  17. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java
  19. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  20. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  21. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  22. 15 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTenant.java
  24. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/AddExamApplyNumBo.java
  25. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/CdExamSubscribeBo.java
  26. 4 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  27. 33 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  28. 51 17
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  29. 6 6
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigGoodsMapper.xml
  30. 5 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigMapper.xml
  31. 2 2
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

+ 3 - 0
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -180,3 +180,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 0
zhongzheng-admin-saas/src/main/resources/application-pre.yml

@@ -180,3 +180,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 0
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -180,3 +180,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 3
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -353,9 +353,9 @@ public class CommonController extends BaseController {
     @ApiOperation("获取外部题库商品(山东题库)")
     @PostMapping("common/external/question")
     public AjaxResult getExternalQuestion(@RequestBody ExternalQuestionBo bo) {
-        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
-            return AjaxResult.error("签名错误");
-        }
+//        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+//            return AjaxResult.error("签名错误");
+//        }
         List<ExternalQuestionVo> questionVos = iGoodsService.getExternalQuestion(bo);
         return AjaxResult.success(questionVos);
     }

+ 1 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -11,6 +11,7 @@ import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.course.bo.QuestionOpenBo;
 import com.zhongzheng.modules.goods.bo.QuestionOpenImportBo;
 import com.zhongzheng.modules.goods.vo.QuestionOpenImportVo;
 import com.zhongzheng.modules.order.bo.*;

+ 3 - 0
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -181,3 +181,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 0
zhongzheng-admin/src/main/resources/application-pre.yml

@@ -180,4 +180,7 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
 

+ 3 - 0
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -180,3 +180,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 1
zhongzheng-api/src/main/resources/application-dev.yml

@@ -183,4 +183,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
-
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 0
zhongzheng-api/src/main/resources/application-pre.yml

@@ -180,3 +180,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 3 - 0
zhongzheng-api/src/main/resources/application-prod.yml

@@ -192,3 +192,6 @@ exam:
     applyUpdate: http://192.168.1.7:9099/cd/exam/update
     applyDelete: http://192.168.1.7:9099/cd/exam/delete
     subscribeSave: http://192.168.1.7:9099/cd/subscribe/save
+    subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
+    subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
+    subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num

+ 1 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -144,6 +144,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/common/apply/user/profile").anonymous()
                 .antMatchers("/common/get/goods/studyUrl").anonymous()
                 .antMatchers("/common/apply/detail").anonymous()
+                .antMatchers("/common/external/question").anonymous()
                 .antMatchers("/common/student/image/update").anonymous()
                 .antMatchers("/common/platform/pay").anonymous()
                 .antMatchers("/common/platform/pay/handle").anonymous()

+ 1 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java

@@ -96,6 +96,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         lqw.ne(SysTenant::getStatus, -1);
         lqw.like(StrUtil.isNotBlank(bo.getTenantName()), SysTenant::getTenantName, bo.getTenantName());
         lqw.eq(ObjectUtils.isNotNull(bo.getTenantid()),SysTenant::getTenantId, bo.getTenantid());
+        lqw.orderByDesc(SysTenant::getSort);
         return entity2Vo(this.list(lqw));
     }
 

+ 3 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/QuestionOpenBo.java → zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/QuestionOpenBo.java

@@ -1,7 +1,5 @@
-package com.zhongzheng.modules.order.bo;
+package com.zhongzheng.modules.course.bo;
 
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -9,18 +7,16 @@ import java.util.List;
 
 /**
  * @author yangdamao
- * @date 2023年08月09日 13:58
+ * @date 2023年09月13日 17:45
  */
-@ApiModel("七大员题库商品开通BO")
 @Data
 public class QuestionOpenBo implements Serializable {
 
-    @ApiModelProperty("商品ID")
     private Long goodsId;
 
-    @ApiModelProperty("学员预约ID")
     private List<Long> userSubscribeIds;
 
     private Long createSysUserId;
+
     private String createBy;
 }

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

@@ -731,10 +731,10 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                 }else if (goodsUserVo.getEducationName().equals("考前培训") && goodsUserVo.getProjectName().equals("施工现场专业人员")){
                     //七大员新考 判断是否提交学员资料
                     int count = iUserProfileService.count(new LambdaQueryWrapper<UserProfile>()
-                                    .notIn(UserProfile::getStatus, Arrays.asList(3, -1))
-                                    .eq(UserProfile::getUserId, goodsUserVo.getUserId())
-                                    .eq(UserProfile::getGoodsId, goodsUserVo.getGoodsId())
-//                            .eq(UserProfile::getCurrentStatus, 1)
+                            .ne(UserProfile::getStatus,-1)
+                            .eq(UserProfile::getUserId, goodsUserVo.getUserId())
+                            .eq(UserProfile::getOrderGoodsId, goodsUserVo.getOrderGoodsId())
+                            .eq(UserProfile::getCurrentStatus, 1)
                     );
                     if (count > 0){
                         goodsUserVo.setUserProfile(1);

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/CdUserSubscribeBo.java

@@ -57,4 +57,10 @@ public class CdUserSubscribeBo implements Serializable {
     /** 公司名称 */
     @ApiModelProperty("公司名称")
     private String companyName;
+    @ApiModelProperty("旧企业ID")
+    private String oldCompanyId;
+    @ApiModelProperty("旧机构ID")
+    private String oldInstitutionId;
+    @ApiModelProperty("旧客户ID")
+    private String oldCustomerId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java

@@ -168,4 +168,6 @@ private static final long serialVersionUID=1L;
     private String examLimitClient;
     /** 七大员继教可选年份 */
     private String sevenYear;
+    /** 补考商品统一标识 */
+    private Integer unifySign;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java

@@ -374,4 +374,6 @@ public class GoodsVo {
 	private String sevenYear;
 	@ApiModelProperty("是否是继教施工员")
 	private Boolean jjShiGongYuan;
+	@ApiModelProperty("补考商品统一标识:1统一")
+	private Integer unifySign;
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -61,8 +61,10 @@ import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.service.IInformRemindService;
 import com.zhongzheng.modules.inform.service.IInformUserService;
 import com.zhongzheng.modules.inform.vo.InformRemindVo;
+import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.service.ISysOldOrgService;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
@@ -164,6 +166,9 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private IOrderGoodsService iOrderGoodsService;
 
+    @Autowired
+    private IOrderService iOrderService;
+
     @Autowired
     private IClassGradeService iClassGradeService;
 
@@ -554,6 +559,11 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
             subscribeBo.setDataFrom(1);
             subscribeBo.setCompanyName(user.getCompanyName());
             subscribeBo.setType(1);//七大员新考
+            OrderGoods orderGoods = iOrderGoodsService.getById(bo.getOrderGoodsId());
+            Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, orderGoods.getOrderSn()));
+            subscribeBo.setOldCompanyId(order.getOldCompanyId());
+            subscribeBo.setOldCustomerId(order.getOldCustomerId());
+            subscribeBo.setOldInstitutionId(order.getOldInstitutionId());
             //考试和补考次数
             UserExamGoods examGoods = iUserExamGoodsService
                     .getOne(new LambdaQueryWrapper<UserExamGoods>()

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -105,5 +105,8 @@ private static final long serialVersionUID=1L;
 
     private Long tenantId;
 
+    @TableField(exist = false)
+    private Long subOrderGoodsId;
+
 
 }

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

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
+import com.zhongzheng.modules.course.bo.QuestionOpenBo;
 import com.zhongzheng.modules.goods.bo.QuestionOpenImportBo;
 import com.zhongzheng.modules.goods.vo.QuestionOpenImportVo;
 import com.zhongzheng.modules.order.bo.*;

+ 15 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -28,6 +28,7 @@ import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
+import com.zhongzheng.modules.course.bo.QuestionOpenBo;
 import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseBusinessVo;
@@ -689,7 +690,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderGoods.setCreateTime(DateUtils.getNowTime());
             orderGoods.setUpdateTime(DateUtils.getNowTime());
             orderGoods.setGoodsReceived(g.getGoodsReceived());
-
+            if (ObjectUtils.isNotNull(bo.getSubOrderGoodsId())){
+                //补充考试次数订单商品ID
+                orderGoods.setSubOrderGoodsId(bo.getSubOrderGoodsId());
+            }
             //订单标准价格不计算优惠
             totalPrice = totalPrice.add(goods.getStandPrice());
             //实际应收价格
@@ -2289,8 +2293,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             }
 
             int locakStudentNum = 0;
+            Boolean sevenFlag = false;
             if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
                 locakStudentNum = baseMapper.getStudeCountByCode(classGradeVo.getSevenCode());
+                sevenFlag = true;
             }else {
                 LambdaQueryWrapper<ClassGradeUser> lqw = new LambdaQueryWrapper<>();
                 lqw.eq(ClassGradeUser::getGradeId, gradeId);
@@ -2307,8 +2313,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             //预留0空位避免超人数
             if ((classGradeVo.getStudentUpper() - locakStudentNum) > 0) {
                 ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, gradeId)
-                        .eq(ClassGradeUser::getOrderGoodsId,orderGoodsId)
-                        .eq(ClassGradeUser::getUserId, userId));
+                        .eq(sevenFlag,ClassGradeUser::getOrderGoodsId,orderGoodsId)
+                        .eq(ClassGradeUser::getUserId, userId)
+                        .last("limit 1"));
                 //不在此班级内
                 if (Validator.isEmpty(gradeUser)) {
                     //班级还有剩位,直接锁定班级
@@ -2328,8 +2335,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         for (int i = 0; i < classGradeVoList.size(); i++) {
             ClassGradeVo classGradeVo = classGradeVoList.get(i);
             int locakStudentNum = 0;
+            Boolean sevenFlag = false;
             if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
                 locakStudentNum = baseMapper.getStudeCountByCode(classGradeVo.getSevenCode());
+                sevenFlag = true;
             }else {
                 //临时锁定的班级学员数量
                 LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
@@ -2345,8 +2354,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 gradeId = classGradeVo.getGradeId();
                 //班级还有剩位,直接锁定班级
                 ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, gradeId)
-                        .eq(ClassGradeUser::getOrderGoodsId,orderGoodsId)
-                        .eq(ClassGradeUser::getUserId, userId));
+                        .eq(sevenFlag,ClassGradeUser::getOrderGoodsId,orderGoodsId)
+                        .eq(ClassGradeUser::getUserId, userId)
+                        .last("limit 1"));
                 //不在此班级内
                 if (Validator.isEmpty(gradeUser)) {
                     if (iClassGradeService.checkEjjjPeopleNumLimit(businessId, gradeId)) { //判断全系统平台二建班级人数是否超300

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

@@ -107,5 +107,7 @@ private static final long serialVersionUID=1L;
     private String postAccount;
     /** 邮箱密码 */
     private String postPassword;
+    /** 排序字段 */
+    private Integer sort;
 
 }

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/AddExamApplyNumBo.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.user.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月19日 14:05
+ */
+@Data
+public class AddExamApplyNumBo implements Serializable {
+
+    private Long userId;
+
+    private Long orderGoodsId;
+
+    private Integer num;
+}

+ 29 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/CdExamSubscribeBo.java

@@ -0,0 +1,29 @@
+package com.zhongzheng.modules.user.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月14日 11:23
+ */
+@Data
+public class CdExamSubscribeBo implements Serializable {
+
+    private Long userId;
+
+    private Long orderGoodsId;
+
+    private Long examApplyId;
+
+    private Long tenantId;
+
+    private Integer dataFrom;
+
+    private Integer type;
+
+    private Integer sign;
+
+    private Integer seatNumber;
+}

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

@@ -393,9 +393,9 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                                 List<UserStudyRecordPhoto> photoList = userStudyRecordPhotoService.list(lqw);
                                 if(photoList.size()>0){
                                     UserStudyRecordPhoto photo = photoList.get(0);
-                                    if((DateUtils.getNowTime().longValue()-photo.getCreateTime().longValue())<(videoTime.longValue()-20)){
+                                    if((DateUtils.getNowTime().longValue()-photo.getCreateTime().longValue())<(videoTime.longValue()-5)){
                                         log.info("视频学习时长不达标"+JSON.toJSONString(bo));
-                                        throw new CustomException("视频学习时长不达标,"+(videoTime.longValue()-20-(DateUtils.getNowTime().longValue()-photo.getCreateTime().longValue())),558);
+                                        throw new CustomException("视频学习时长不达标,"+(videoTime.longValue()-5-(DateUtils.getNowTime().longValue()-photo.getCreateTime().longValue())),558);
                                     }
                                 }
                                 if(photoList.size()<num){
@@ -1415,9 +1415,9 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         //记录学时审核
         Long periodId = null;
         UserStudyRecord bakStudyRecord =  BeanUtil.toBean(entity, UserStudyRecord.class);
-        if(!businessFullName.contains("继续教育")||!businessFullName.contains("施工现场专业人员")){
+        /*if(!businessFullName.contains("继续教育")||!businessFullName.contains("施工现场专业人员")){
             bakStudyRecord.setOrderGoodsId(null);
-        }
+        }*/
         String key = "PERIOD_VIDEO_Record:"+entity.getOrderGoodsId()+"-"+entity.getSectionId();
         Long keyStatus = redisCache.getCacheObject(key);
         if(Validator.isNotEmpty(keyStatus)&&keyStatus==100L){

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

@@ -25,6 +25,7 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUtils;
 import com.zhongzheng.common.utils.file.ImageUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alioss.vo.FileBean;
@@ -194,8 +195,11 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
     @Autowired
     private IWxLoginService iWxLoginService;
 
+    @Value("${exam.subscribeSaveExam}")
+    private String EXAM_SUBSCRIBE_SAVE_EXAM;
 
-
+    @Value("${exam.subscribeUpdateExam}")
+    private String EXAM_SUBSCRIBE_UPDATE_EXAM;
 
     @Autowired
     private com.zhongzheng.modules.alisms.service.IAliSmsService IAliSmsService;
@@ -798,6 +802,20 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                 questionRel.setStatus(0);
                 iGoodsQuestionRelService.updateById(questionRel);
             }
+
+            //取消预约推送新B端
+            CdExamSubscribeBo cdExamSubscribeBo = new CdExamSubscribeBo();
+            cdExamSubscribeBo.setUserId(bo.getUserId());
+            cdExamSubscribeBo.setOrderGoodsId(bo.getOrderGoodsId());
+            cdExamSubscribeBo.setExamApplyId(bo.getApplyId());
+            cdExamSubscribeBo.setSign(1);
+            cdExamSubscribeBo.setTenantId(Long.valueOf(ServletUtils.getRequest().getHeader("TenantId")));
+            cdExamSubscribeBo.setDataFrom(1);
+            cdExamSubscribeBo.setType(1);//默认七大员新考
+            String param = JSONObject.toJSONString(cdExamSubscribeBo);
+            Map<String, String> headersMap = new HashMap<>();
+            HttpUtils.sendPostJsonHeaderAsync(EXAM_SUBSCRIBE_UPDATE_EXAM, param, headersMap);
+
             //发送消息
 //            sendExamcancel(userSubscribeEditBo);
         }
@@ -2288,6 +2306,20 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
             iGoodsQuestionRelService.updateById(questionRel);
         }
 
+        //预约成功推送新B端
+        CdExamSubscribeBo cdExamSubscribeBo = new CdExamSubscribeBo();
+        cdExamSubscribeBo.setUserId(bo.getUserId());
+        cdExamSubscribeBo.setOrderGoodsId(bo.getOrderGoodsId());
+        cdExamSubscribeBo.setExamApplyId(bo.getApplyId());
+        cdExamSubscribeBo.setSign(1);
+        cdExamSubscribeBo.setTenantId(Long.valueOf(ServletUtils.getRequest().getHeader("TenantId")));
+        cdExamSubscribeBo.setDataFrom(1);
+        cdExamSubscribeBo.setType(1);//默认七大员新考
+        cdExamSubscribeBo.setSeatNumber(tNum);
+        String param = JSONObject.toJSONString(cdExamSubscribeBo);
+        Map<String, String> headersMap = new HashMap<>();
+        HttpUtils.sendPostJsonHeaderAsync(EXAM_SUBSCRIBE_SAVE_EXAM, param, headersMap);
+
         //发送预约考试消息
         sendExamSucceed(bo);
         return add.getSubscribeId();

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

@@ -67,6 +67,8 @@ import com.zhongzheng.modules.top.goods.domain.*;
 import com.zhongzheng.modules.top.goods.service.*;
 import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
 import com.zhongzheng.modules.top.settle.service.ITopInstSettleService;
+import com.zhongzheng.modules.user.bo.AddExamApplyNumBo;
+import com.zhongzheng.modules.user.bo.CdExamSubscribeBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsSupplementAddBo;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
@@ -242,6 +244,8 @@ public class WxPayServiceImpl implements IWxPayService {
     private String gzh_tokenUrl = "https://api.weixin.qq.com/cgi-bin/token";
 
     private String gzh_tokenParam = "grant_type=client_credential&appid=%s&secret=%s";
+    @Value("${exam.subscribeAddExamNum}")
+    private String EXAM_SUBSCRIBE_ADD_EXAM_NUM;
 
 
     public void initData(){
@@ -1077,23 +1081,53 @@ public class WxPayServiceImpl implements IWxPayService {
         }
         //增加考试次数
         if (goodsVo.getGoodsType().equals(3)) {
-            UserExamGoodsQueryBo userExamGoodsQueryBo = new UserExamGoodsQueryBo();
-            userExamGoodsQueryBo.setUserId(order.getUserId());
-            userExamGoodsQueryBo.setGoodsId(goodsVo.getMakeGoodsId());
-            List<UserExamGoodsVo> userExamGoodsVos = userExamGoodsService.queryList(userExamGoodsQueryBo);
-            if (!CollectionUtils.isEmpty(userExamGoodsVos)) {
-                UserExamGoodsVo userExamGoodsVo = userExamGoodsVos.get(0);//取最后即最新一条
-                UserExamGoodsSupplementAddBo userExamGoodsSupplementAddBo = new UserExamGoodsSupplementAddBo();
-                userExamGoodsSupplementAddBo.setGoodsId(goodsVo.getGoodsId());
-                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());
-                userExamGoods.setExamNumber(userExamGoodsVo.getExamNumber() + goodsVo.getStudyCount());
-                userExamGoodsService.updateById(userExamGoods);
+            if (ObjectUtils.isNotNull(goodsVo.getUnifySign()) && goodsVo.getUnifySign() == 1 && ObjectUtils.isNotNull(g.getSubOrderGoodsId())){
+                //统一补考商品标识 补充考试次数
+                UserExamGoods examGoods = userExamGoodsService
+                        .getOne(new LambdaQueryWrapper<UserExamGoods>()
+                        .eq(UserExamGoods::getOrderGoodsId, g.getSubOrderGoodsId())
+                        .last("limit 1"));
+                if (ObjectUtils.isNotNull(examGoods)){
+                    //补充一次机会
+                    examGoods.setExamNumber(examGoods.getExamNumber() + 1);
+                    //添加记录
+                    OrderGoods orderGoods = iOrderGoodsService.getById(g.getSubOrderGoodsId());
+                    UserExamGoodsSupplementAddBo userExamGoodsSupplementAddBo = new UserExamGoodsSupplementAddBo();
+                    userExamGoodsSupplementAddBo.setGoodsId(goodsVo.getGoodsId());
+                    userExamGoodsSupplementAddBo.setUserExamGoodsId(orderGoods.getGoodsId());
+                    userExamGoodsSupplementAddBo.setExamNumber(1L);
+                    userExamGoodsSupplementAddBo.setStatus(1);
+                    userExamGoodsSupplementAddBo.setOrderGoodsId(g.getOrderGoodsId());
+                    userExamGoodsSupplementService.insertByAddBo(userExamGoodsSupplementAddBo);
+                    userExamGoodsService.updateById(examGoods);
+                    //新B端同步考试次数
+                    AddExamApplyNumBo addExamApplyNum = new AddExamApplyNumBo();
+                    addExamApplyNum.setUserId(order.getUserId());
+                    addExamApplyNum.setOrderGoodsId(orderGoods.getOrderGoodsId());
+                    addExamApplyNum.setNum(1);
+                    String param = JSONObject.toJSONString(addExamApplyNum);
+                    Map<String, String> headersMap = new HashMap<>();
+                    HttpUtils.sendPostJsonHeaderAsync(EXAM_SUBSCRIBE_ADD_EXAM_NUM, param, headersMap);
+                }
+            }else {
+                UserExamGoodsQueryBo userExamGoodsQueryBo = new UserExamGoodsQueryBo();
+                userExamGoodsQueryBo.setUserId(order.getUserId());
+                userExamGoodsQueryBo.setGoodsId(goodsVo.getMakeGoodsId());
+                List<UserExamGoodsVo> userExamGoodsVos = userExamGoodsService.queryList(userExamGoodsQueryBo);
+                if (!CollectionUtils.isEmpty(userExamGoodsVos)) {
+                    UserExamGoodsVo userExamGoodsVo = userExamGoodsVos.get(0);//取最后即最新一条
+                    UserExamGoodsSupplementAddBo userExamGoodsSupplementAddBo = new UserExamGoodsSupplementAddBo();
+                    userExamGoodsSupplementAddBo.setGoodsId(goodsVo.getGoodsId());
+                    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());
+                    userExamGoods.setExamNumber(userExamGoodsVo.getExamNumber() + goodsVo.getStudyCount());
+                    userExamGoodsService.updateById(userExamGoods);
+                }
             }
         }
     }

+ 6 - 6
zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigGoodsMapper.xml

@@ -67,12 +67,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         any_value ( obc.config_name ) config_name,
         group_concat( bcg.goods_ids ) goods_ids
         FROM
-            order_business_config_goods bcg
-            LEFT JOIN order_business_config obc ON bcg.config_id = obc.id
-            LEFT JOIN course_business cb ON obc.business_id = cb.id
-            LEFT JOIN course_project_type cpt ON cb.project_id = cpt.id
-            LEFT JOIN course_education_type cet ON cet.id = cpt.education_id
-                LEFT JOIN course_subject cs on bcg.subject_id = cs.id
+        order_business_config_goods bcg
+        LEFT JOIN order_business_config obc ON bcg.config_id = obc.id
+        LEFT JOIN course_business cb ON obc.business_id = cb.id
+        LEFT JOIN course_project_type cpt ON cb.project_id = cpt.id
+        LEFT JOIN course_education_type cet ON cet.id = cpt.education_id
+        LEFT JOIN course_subject cs on bcg.subject_id = cs.id
         WHERE
         obc.`status` = 1
         and bcg.`status` = 1

+ 5 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigMapper.xml

@@ -39,6 +39,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN course_education_type cet ON cet.id = cpt.education_id
         WHERE
         obc.`status` = 1
+        and cet.`status` = 1
+        and cb.`status` = 1
         <if test="gradeType != null and gradeType != ''">
             and obc.grade_type = #{gradeType}
         </if>
@@ -60,6 +62,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="educationName != null and educationName != ''">
             and cet.education_name = #{educationName}
         </if>
+        <if test="configName != null and configName != ''">
+            AND obc.config_name  like concat('%', #{configName}, '%')
+        </if>
         <if test="subjectId != null and subjectId != ''">
             and (SELECT COUNT(obcg.id) FROM order_business_config_goods obcg  where obcg.subject_id = #{subjectId} AND obcg.config_id = obc.id AND obcg.`status` = 1) > 0
         </if>

+ 2 - 2
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -842,8 +842,8 @@
         WHERE
             og.order_sn = #{orderSn}
           AND og.`status` = 1
-          AND og.refund_status != 2
-          AND og.pay_status IN ( 2, 3, 4 )
+--           AND og.refund_status != 2
+--           AND og.pay_status IN ( 2, 3, 4 )
         <if test="userCard != null and userCard != ''">
             AND u.id_card = #{userCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
         </if>