he2802 2 vuotta sitten
vanhempi
commit
20a4d64d90
44 muutettua tiedostoa jossa 426 lisäystä ja 49 poistoa
  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. 12 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  5. 9 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderBusinessConfigGoodsController.java
  6. 1 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  7. 3 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  8. 3 0
      zhongzheng-admin/src/main/resources/application-pre.yml
  9. 3 0
      zhongzheng-admin/src/main/resources/application-prod.yml
  10. 3 1
      zhongzheng-api/src/main/resources/application-dev.yml
  11. 3 0
      zhongzheng-api/src/main/resources/application-pre.yml
  12. 3 0
      zhongzheng-api/src/main/resources/application-prod.yml
  13. 2 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  14. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java
  15. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/QuestionOpenBo.java
  16. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/ReplenishExamBo.java
  17. 4 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  18. 28 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/ReplenishExamVo.java
  19. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/CdUserSubscribeBo.java
  20. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  21. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  22. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  23. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  24. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java
  25. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  26. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java
  27. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  28. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderBusinessConfigGoodsMapper.java
  29. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderBusinessConfigGoodsService.java
  30. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  31. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderBusinessConfigGoodsServiceImpl.java
  32. 21 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  33. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTenant.java
  34. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/AddExamApplyNumBo.java
  35. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/CdExamSubscribeBo.java
  36. 4 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  37. 33 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  38. 51 17
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  39. 13 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  40. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  41. 3 2
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  42. 55 7
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigGoodsMapper.xml
  43. 5 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigMapper.xml
  44. 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

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

@@ -30,7 +30,9 @@ import com.zhongzheng.modules.bank.service.IExamService;
 import com.zhongzheng.modules.bank.service.IQuestionOtherService;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
+import com.zhongzheng.modules.course.bo.ReplenishExamBo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
+import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
 import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalPayBo;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
@@ -360,6 +362,16 @@ public class CommonController extends BaseController {
         return AjaxResult.success(questionVos);
     }
 
+    @ApiOperation("获取补考商品")
+    @PostMapping("common/replenish/exam")
+    public AjaxResult getReplenishExam(@RequestBody ReplenishExamBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        List<ReplenishExamVo> questionVos = iGoodsService.getReplenishExam(bo);
+        return AjaxResult.success(questionVos);
+    }
+
 
     @ApiOperation("获取某场考试信息")
     @PostMapping("common/apply/detail")

+ 9 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderBusinessConfigGoodsController.java

@@ -54,6 +54,15 @@ public class OrderBusinessConfigGoodsController extends BaseController {
         return getDataTable(list);
     }
 
+    @ApiOperation("查询订单配置合并商品列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:list')")
+    @GetMapping("/mergeList")
+    public TableDataInfo<OrderBusinessConfigGoodsVo> mergeList(OrderBusinessConfigGoodsQueryBo bo) {
+        startPage();
+        List<OrderBusinessConfigGoodsVo> list = iOrderBusinessConfigGoodsService.selectMergeList(bo);
+        return getDataTable(list);
+    }
+
 
 
     /**

+ 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

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

@@ -144,6 +144,8 @@ 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/replenish/exam").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));
     }
 

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/QuestionOpenBo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.course.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月13日 17:45
+ */
+@Data
+public class QuestionOpenBo implements Serializable {
+
+    private Long goodsId;
+
+    private List<Long> userSubscribeIds;
+
+    private Long createSysUserId;
+
+    private String createBy;
+}

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/ReplenishExamBo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月20日 9:05
+ */
+@Data
+public class ReplenishExamBo implements Serializable {
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    private Long tenantId;
+}

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

@@ -729,12 +729,11 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                 if(fullName.equals("继续教育二级建造师")||fullName.equals("继续教育二级造价师")){
                     goodsUserVo.setErJianErZao(true);
                 }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);

+ 28 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/ReplenishExamVo.java

@@ -0,0 +1,28 @@
+package com.zhongzheng.modules.course.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月12日 8:52
+ */
+@Data
+public class ReplenishExamVo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("商品价格")
+    private BigDecimal goodsPrice;
+
+    @ApiModelProperty("封面地址")
+    private String coverUrl;
+
+}

+ 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;
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
+import com.zhongzheng.modules.course.bo.ReplenishExamBo;
 import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
+import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
@@ -91,4 +93,7 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<ReplenishExamVo> getReplenishExam(ReplenishExamBo bo);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -3,8 +3,10 @@ package com.zhongzheng.modules.goods.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
+import com.zhongzheng.modules.course.bo.ReplenishExamBo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
+import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.*;
@@ -152,4 +154,6 @@ public interface IGoodsService extends IService<Goods> {
 	Map<String,String> checkUserAccount(UserGoodsListBo bo);
 
     List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo);
+
+	List<ReplenishExamVo> getReplenishExam(ReplenishExamBo bo);
 }

+ 7 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -628,7 +628,8 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 });
                 iProfileTpService.updateBatchById(profileTpList);
             }
-        }else if (businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
+        }else if (businessName.contains("继续教育") && businessName.contains("施工现场专业人员")
+                && StringUtils.isNotBlank(bo.getSevenYear()) && !Arrays.asList("2021","2022").contains(bo.getSevenYear())){
             //七大员继教同专业下共用一个班级
             Goods oneGoods = getOne(new LambdaQueryWrapper<Goods>()
                     .eq(Goods::getEducationTypeId, add.getEducationTypeId())
@@ -5153,6 +5154,11 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return questionVos;
     }
 
+    @Override
+    public List<ReplenishExamVo> getReplenishExam(ReplenishExamBo bo) {
+        return baseMapper.getReplenishExam(bo);
+    }
+
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId,tenantId,handoutsId);
     }

+ 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>()

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java

@@ -230,5 +230,10 @@ public class ClassGradeStudentVo {
 	private Long expendBefore;
 
 	private String sevenYear;
+	@ApiModelProperty("学时推送结果")
+	private String periodPlushMsg;
+
+	@ApiModelProperty("官方信息推送结果")
+	private String officialStatusMsg;
 
 }

+ 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;
+
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderBusinessConfigGoodsMapper.java

@@ -18,4 +18,6 @@ import java.util.List;
  */
 public interface OrderBusinessConfigGoodsMapper extends BaseMapper<OrderBusinessConfigGoods> {
     List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo);
+
+    List<OrderBusinessConfigGoodsVo> selectMergeList(OrderBusinessConfigGoodsQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderBusinessConfigGoodsService.java

@@ -51,4 +51,6 @@ public interface IOrderBusinessConfigGoodsService extends IService<OrderBusiness
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 	List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo);
+
+	List<OrderBusinessConfigGoodsVo> selectMergeList(OrderBusinessConfigGoodsQueryBo bo);
 }

+ 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.*;

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderBusinessConfigGoodsServiceImpl.java

@@ -113,4 +113,9 @@ public class OrderBusinessConfigGoodsServiceImpl extends ServiceImpl<OrderBusine
     public List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo) {
         return this.baseMapper.selectList(bo);
     }
+
+    @Override
+    public List<OrderBusinessConfigGoodsVo> selectMergeList(OrderBusinessConfigGoodsQueryBo bo) {
+        return this.baseMapper.selectMergeList(bo);
+    }
 }

+ 21 - 9
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,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         for (int i = 0; i < classGradeVoList.size(); i++) {
             ClassGradeVo classGradeVo = classGradeVoList.get(i);
             int locakStudentNum = 0;
-            if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
+            Boolean sevenFlag = false;
+            if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")
+                    && StringUtils.isNotBlank(goods.getSevenYear()) && !Arrays.asList("2021","2022").contains(goods.getSevenYear())){
                 locakStudentNum = baseMapper.getStudeCountByCode(classGradeVo.getSevenCode());
+                sevenFlag = true;
             }else {
                 //临时锁定的班级学员数量
                 LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
@@ -2345,8 +2355,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
@@ -2387,9 +2398,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                             }
                         });
                     }
+                    String sevenCode = getSevenCode(goodsId);
+                    classGrade.setSevenCode(sevenCode);
                 }
-                String sevenCode = getSevenCode(goodsId);
-                classGrade.setSevenCode(sevenCode);
             }else {
                 classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
             }
@@ -2418,7 +2429,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //        classGrade.setClassName(goodsName + gradeCode);
         //七大员继教同一个专业下同一个班级名称
         Boolean classFlag = true;
-        if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
+        if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")
+                && StringUtils.isNotBlank(goods.getSevenYear()) && !Arrays.asList("2021","2022").contains(goods.getSevenYear())){
             List<ClassGrade> gradeName = baseMapper.getClassNameByGoods(goods.getEducationTypeId(),goods.getProjectId().longValue(),goods.getBusinessId(),goods.getMajorId());
             if (CollectionUtils.isNotEmpty(gradeName)){
                 ClassGrade grade = gradeName.stream().filter(x -> ObjectUtils.isNotNull(x.getClassStatus()) && x.getClassStatus() == 1).findFirst().orElse(null);

+ 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);
+                }
             }
         }
     }

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

@@ -817,6 +817,19 @@
           AND g.`status` = 1
     </select>
 
+    <select id="getReplenishExam" parameterType="com.zhongzheng.modules.course.bo.ReplenishExamBo" resultType="com.zhongzheng.modules.course.vo.ReplenishExamVo">
+        SELECT
+            g.goods_id,
+            g.goods_name,
+            g.stand_price AS goodsPrice,
+            g.cover_url
+        FROM
+            goods g
+        WHERE
+            g.`status` = 1
+            and g.unify_sign = 1
+    </select>
+
     <select id="queryGoodsByIdTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         FROM `goods`

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -179,6 +179,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="doNumber" column="do_number"/>
         <result property="expendNumber" column="expend_number"/>
         <result property="expendBefore" column="expend_before"/>
+        <result property="periodPlushMsg" column="official_status_msg"/>
+        <result property="officialStatusMsg" column="period_plush_msg"/>
     </resultMap>
 
 
@@ -417,6 +419,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cg.class_end_time,
         cg.interface_push_id,
         cgu.official_status,
+        cgu.official_status_msg,
+        cgu.period_plush_msg,
         cgu.learn_status,
         (SELECT COUNT(m.id) FROM course_menu_exam m LEFT JOIN goods_course c on m.course_id=c.course_id LEFT JOIN class_grade_goods cgg on cgg.goods_id = c.goods_id where cg.grade_id=cgg.grade_id and m.type  in (1,3) ) as exam_num,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id = ubr.goods_id where ubr.`status`=1 and ubr.type  in (1,3) and  ubr.user_id = u.user_id and ubr.grade_id = cgu.grade_id and ubr.report_status=1 and ubr.current_status = 1) as record_num,

+ 3 - 2
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -1563,8 +1563,9 @@
           AND g.`status` = 1
           AND gu.`status` = 1
           AND gu.change_grade = 0
-          AND IFNULL(gu.period_plush,0) != 1
-          AND gu.period_status = 1
+          AND IFNULL( gu.period_plush, 0 ) != 1
+	AND gu.period_status = 1
+	AND gu.official_status = 1
     </select>
 
     <select id="selectGoodsGradeList" parameterType="Long" resultMap="ClassGradeUserGoodsVoResult">

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

@@ -62,17 +62,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="selectList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
+        SELECT
+        bcg.*,
+        cs.subject_name,
+        obc.config_name
+        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
+        WHERE
+        obc.`status` = 1
+        and bcg.`status` = 1
+        <if test="configId != null and configId != ''">
+            and bcg.config_id = #{configId}
+        </if>
+        <if test="gradeType != null and gradeType != ''">
+            and obc.grade_type = #{gradeType}
+        </if>
+        <if test="businessId != null and businessId != ''">
+            and obc.business_id = #{businessId}
+        </if>
+        <if test="projectId != null and projectId != ''">
+            and cpt.id = #{projectId}
+        </if>
+        <if test="educationId != null and educationId != ''">
+            and cet.id = #{educationId}
+        </if>
+        <if test="subjectId != null and subjectId != ''">
+            and bcg.subject_id = #{subjectId}
+        </if>
+        <if test="businessName != null and businessName != ''">
+            and cb.business_name = #{businessName}
+        </if>
+        <if test="projectName != null and projectName != ''">
+            and cpt.project_name = #{projectName}
+        </if>
+        <if test="educationName != null and educationName != ''">
+            and cet.education_name = #{educationName}
+        </if>
+        <if test="subjectName != null and subjectName != ''">
+            and cs.subject_name = #{subjectName}
+        </if>
+        GROUP BY bcg.config_id
+    </select>
+
+
+    <select id="selectMergeList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
         SELECT
         bcg.config_id,
         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
@@ -108,5 +157,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         GROUP BY bcg.config_id
     </select>
-
 </mapper>

+ 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>