Browse Source

Merge remote-tracking branch 'origin/pre' into pre

yangdamao 2 years ago
parent
commit
903b2ddf7f
28 changed files with 426 additions and 18 deletions
  1. 20 4
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  2. 9 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderBusinessConfigGoodsController.java
  3. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java
  4. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/MybatisPlusConfig.java
  5. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  6. 70 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineInnerInterceptor.java
  7. 120 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/FindInSetExpression.java
  8. 6 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  9. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/ReplenishExamBo.java
  10. 0 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  11. 28 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/ReplenishExamVo.java
  12. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  13. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  14. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  15. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  16. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java
  17. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/QuestionOpenBo.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderBusinessConfigGoodsMapper.java
  19. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderBusinessConfigGoodsService.java
  20. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderBusinessConfigGoodsServiceImpl.java
  21. 6 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  22. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserImportAddBo.java
  23. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  24. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java
  25. 13 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  26. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  27. 3 2
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  28. 48 1
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderBusinessConfigGoodsMapper.xml

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

@@ -26,11 +26,16 @@ import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
 import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alioss.service.OssService;
+import com.zhongzheng.modules.bank.bo.QuestionQueryBo;
 import com.zhongzheng.modules.bank.service.IExamService;
 import com.zhongzheng.modules.bank.service.IExamService;
 import com.zhongzheng.modules.bank.service.IQuestionOtherService;
 import com.zhongzheng.modules.bank.service.IQuestionOtherService;
+import com.zhongzheng.modules.bank.service.IQuestionService;
+import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 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.ExternalQuestionVo;
+import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
 import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalPayBo;
 import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalPayBo;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
@@ -160,7 +165,6 @@ public class CommonController extends BaseController {
     private IQuestionOtherService iQuestionOtherService;
     private IQuestionOtherService iQuestionOtherService;
     @Autowired
     @Autowired
     private OssService ossService;
     private OssService ossService;
-
     /**
     /**
      * 通用下载请求
      * 通用下载请求
      *
      *
@@ -353,13 +357,23 @@ public class CommonController extends BaseController {
     @ApiOperation("获取外部题库商品(山东题库)")
     @ApiOperation("获取外部题库商品(山东题库)")
     @PostMapping("common/external/question")
     @PostMapping("common/external/question")
     public AjaxResult getExternalQuestion(@RequestBody ExternalQuestionBo bo) {
     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);
         List<ExternalQuestionVo> questionVos = iGoodsService.getExternalQuestion(bo);
         return AjaxResult.success(questionVos);
         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("获取某场考试信息")
     @ApiOperation("获取某场考试信息")
     @PostMapping("common/apply/detail")
     @PostMapping("common/apply/detail")
@@ -744,4 +758,6 @@ public class CommonController extends BaseController {
     public AjaxResult<Void> clientPost(@RequestBody ClientPostAddBo bo) {
     public AjaxResult<Void> clientPost(@RequestBody ClientPostAddBo bo) {
         return AjaxResult.success(iClassGradeUserService.sendClientPost(bo));
         return AjaxResult.success(iClassGradeUserService.sendClientPost(bo));
     }
     }
+
+
 }
 }

+ 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);
         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 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java

@@ -374,7 +374,7 @@ public class ToolsUtils {
         try {
         try {
             md5 = MessageDigest.getInstance("MD5");
             md5 = MessageDigest.getInstance("MD5");
             // 这句是关键
             // 这句是关键
-            md5.update(str.getBytes("gb2312"));
+            md5.update(str.getBytes("gbk"));
         } catch (NoSuchAlgorithmException e) {
         } catch (NoSuchAlgorithmException e) {
             // TODO Auto-generated catch block
             // TODO Auto-generated catch block
             e.printStackTrace();
             e.printStackTrace();

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.zhongzheng.framework.mybatisplus.CreateAndUpdateMetaObjectHandler;
 import com.zhongzheng.framework.mybatisplus.CreateAndUpdateMetaObjectHandler;
 import com.zhongzheng.framework.mybatisplus.CustomTenantLineHandler;
 import com.zhongzheng.framework.mybatisplus.CustomTenantLineHandler;
+import com.zhongzheng.framework.mybatisplus.CustomTenantLineInnerInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;

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

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

+ 70 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineInnerInterceptor.java

@@ -0,0 +1,70 @@
+package com.zhongzheng.framework.mybatisplus;
+
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.Parenthesis;
+import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
+import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
+import net.sf.jsqlparser.expression.operators.relational.InExpression;
+import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
+import net.sf.jsqlparser.schema.Column;
+import net.sf.jsqlparser.schema.Table;
+import net.sf.jsqlparser.statement.delete.Delete;
+import net.sf.jsqlparser.statement.insert.Insert;
+import net.sf.jsqlparser.statement.select.SelectBody;
+import net.sf.jsqlparser.statement.update.Update;
+import org.springframework.stereotype.Component;
+
+
+public class CustomTenantLineInnerInterceptor extends TenantLineInnerInterceptor {
+    public CustomTenantLineInnerInterceptor(TenantLineHandler tenantLineHandler) {
+        super(tenantLineHandler);
+    }
+
+    /**
+     * 重构mybatispuls的多租户改为支持in
+     * @param currentExpression
+     * @param table
+     * @return
+     */
+    @Override
+    protected Expression builderExpression(Expression currentExpression, Table table) {
+        Column aliasColumn = this.getAliasColumn(table);
+        boolean presenceOfField=true;
+
+        if(presenceOfField) {
+            FindInSetExpression findInSetExpression = new FindInSetExpression();
+            findInSetExpression.setLeftExpression(getTenantLineHandler().getTenantId());
+            findInSetExpression.setRightExpression(aliasColumn);
+            if (currentExpression == null) {
+                return findInSetExpression;
+            } else {
+                return currentExpression instanceof OrExpression ? new AndExpression(new Parenthesis(currentExpression), findInSetExpression) : new AndExpression(currentExpression, findInSetExpression);
+            }
+        }else{
+            return currentExpression;
+        }
+
+    }
+
+    @Override
+    protected void processInsert(Insert insert, int index, String sql, Object obj) {
+
+    }
+
+    @Override
+    protected void processUpdate(Update update, int index, String sql, Object obj) {
+
+    }
+
+    @Override
+    protected void processDelete(Delete delete, int index, String sql, Object obj) {
+
+    }
+
+    @Override
+    protected void processInsertSelect(SelectBody selectBody) {
+
+    }
+}

+ 120 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/FindInSetExpression.java

@@ -0,0 +1,120 @@
+package com.zhongzheng.framework.mybatisplus;
+
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.ExpressionVisitor;
+import net.sf.jsqlparser.expression.operators.relational.ItemsList;
+import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
+import net.sf.jsqlparser.expression.operators.relational.SupportsOldOracleJoinSyntax;
+import net.sf.jsqlparser.parser.ASTNodeAccessImpl;
+
+public class FindInSetExpression extends ASTNodeAccessImpl implements Expression {
+    private Expression leftExpression;
+    private ItemsList leftItemsList;
+    private ItemsList rightItemsList;
+    private boolean not = false;
+    private Expression rightExpression;
+    private MultiExpressionList multiExpressionList;
+    private int oldOracleJoinSyntax = 0;
+
+    public FindInSetExpression() {
+    }
+
+    public FindInSetExpression(Expression leftExpression, ItemsList itemsList) {
+        this.setLeftExpression(leftExpression);
+        this.setRightItemsList(itemsList);
+    }
+
+    public void setOldOracleJoinSyntax(int oldOracleJoinSyntax) {
+        this.oldOracleJoinSyntax = oldOracleJoinSyntax;
+        if (oldOracleJoinSyntax < 0 || oldOracleJoinSyntax > 1) {
+            throw new IllegalArgumentException("unexpected join type for oracle found with IN (type=" + oldOracleJoinSyntax + ")");
+        }
+    }
+
+    public int getOldOracleJoinSyntax() {
+        return this.oldOracleJoinSyntax;
+    }
+
+    public ItemsList getRightItemsList() {
+        return this.rightItemsList;
+    }
+
+    public Expression getLeftExpression() {
+        return this.leftExpression;
+    }
+
+    public final void setRightItemsList(ItemsList list) {
+        this.rightItemsList = list;
+    }
+
+    public final void setLeftExpression(Expression expression) {
+        this.leftExpression = expression;
+    }
+
+    public boolean isNot() {
+        return this.not;
+    }
+
+    public void setNot(boolean b) {
+        this.not = b;
+    }
+
+    public ItemsList getLeftItemsList() {
+        return this.leftItemsList;
+    }
+
+    public void setLeftItemsList(ItemsList leftItemsList) {
+        this.leftItemsList = leftItemsList;
+    }
+
+    public Expression getRightExpression() {
+        return this.rightExpression;
+    }
+
+    public void setRightExpression(Expression rightExpression) {
+        this.rightExpression = rightExpression;
+    }
+
+
+
+    private String getLeftExpressionString() {
+        return this.leftExpression + (this.oldOracleJoinSyntax == 1 ? "(+)" : "");
+    }
+
+    public String toString() {
+        StringBuilder statementBuilder = new StringBuilder();
+
+        statementBuilder.append("FIND_IN_SET ");
+        statementBuilder.append("(");
+        statementBuilder.append(this.getLeftExpressionString());
+        statementBuilder.append(",");
+        statementBuilder.append(this.rightExpression);
+        statementBuilder.append(")");
+
+        return statementBuilder.toString();
+    }
+
+    public int getOraclePriorPosition() {
+        return 0;
+    }
+
+    public void setOraclePriorPosition(int priorPosition) {
+        if (priorPosition != 0) {
+            throw new IllegalArgumentException("unexpected prior for oracle found");
+        }
+    }
+
+    public MultiExpressionList getMultiExpressionList() {
+        return this.multiExpressionList;
+    }
+
+    public void setMultiExpressionList(MultiExpressionList multiExpressionList) {
+        this.multiExpressionList = multiExpressionList;
+    }
+
+    @Override
+    public void accept(ExpressionVisitor expressionVisitor) {
+
+    }
+}
+

+ 6 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -861,6 +861,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
             SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
             inertData.setUserAccount(String.valueOf(idWorker.nextId()));
             inertData.setUserAccount(String.valueOf(idWorker.nextId()));
             inertData.setSex(1);
             inertData.setSex(1);
+            if(Validator.isNotEmpty(itemImport.getSex())){
+                inertData.setSex(itemImport.getSex().equals("女")?2:1);
+            }
+            if(Validator.isNotEmpty(itemImport.getEduLevel())){
+                inertData.setEduLevel(itemImport.getEduLevel());
+            }
             inertData.setIdCard(itemImport.getIdCard());
             inertData.setIdCard(itemImport.getIdCard());
             inertData.setRealname(itemImport.getRealname());
             inertData.setRealname(itemImport.getRealname());
             if (StringUtils.isNotBlank(itemImport.getCompanyName())) {
             if (StringUtils.isNotBlank(itemImport.getCompanyName())) {

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

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

@@ -729,7 +729,6 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                 if(fullName.equals("继续教育二级建造师")||fullName.equals("继续教育二级造价师")){
                 if(fullName.equals("继续教育二级建造师")||fullName.equals("继续教育二级造价师")){
                     goodsUserVo.setErJianErZao(true);
                     goodsUserVo.setErJianErZao(true);
                 }else if (goodsUserVo.getEducationName().equals("考前培训") && goodsUserVo.getProjectName().equals("施工现场专业人员")){
                 }else if (goodsUserVo.getEducationName().equals("考前培训") && goodsUserVo.getProjectName().equals("施工现场专业人员")){
-                    //七大员新考 判断是否提交学员资料
                     int count = iUserProfileService.count(new LambdaQueryWrapper<UserProfile>()
                     int count = iUserProfileService.count(new LambdaQueryWrapper<UserProfile>()
                             .ne(UserProfile::getStatus,-1)
                             .ne(UserProfile::getStatus,-1)
                             .eq(UserProfile::getUserId, goodsUserVo.getUserId())
                             .eq(UserProfile::getUserId, goodsUserVo.getUserId())

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

+ 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.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 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.CourseVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 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.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
@@ -91,4 +93,7 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
 
     @InterceptorIgnore(tenantLine = "true")
     @InterceptorIgnore(tenantLine = "true")
     List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo);
     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.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 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.CourseModuleFreeExamVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 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.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.bo.*;
@@ -152,4 +154,6 @@ public interface IGoodsService extends IService<Goods> {
 	Map<String,String> checkUserAccount(UserGoodsListBo bo);
 	Map<String,String> checkUserAccount(UserGoodsListBo bo);
 
 
     List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo 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);
                 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>()
             Goods oneGoods = getOne(new LambdaQueryWrapper<Goods>()
                     .eq(Goods::getEducationTypeId, add.getEducationTypeId())
                     .eq(Goods::getEducationTypeId, add.getEducationTypeId())
@@ -5153,6 +5154,11 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return questionVos;
         return questionVos;
     }
     }
 
 
+    @Override
+    public List<ReplenishExamVo> getReplenishExam(ReplenishExamBo bo) {
+        return baseMapper.getReplenishExam(bo);
+    }
+
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId,tenantId,handoutsId);
         baseMapper.updateHandoutsId(goodsId,tenantId,handoutsId);
     }
     }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -1223,10 +1223,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         params.put("jsrq", DateUtils.timestampToDate(endTime));
         params.put("jsrq", DateUtils.timestampToDate(endTime));
         String dataTxt = params.get("zh") + params.get("bh") + params.get("year") + params.get("xm") + params.get("sfz") + params.get("ksrq") + params.get("jsrq");
         String dataTxt = params.get("zh") + params.get("bh") + params.get("year") + params.get("xm") + params.get("sfz") + params.get("ksrq") + params.get("jsrq");
         try {
         try {
+            log.info("学时信息推送参数"+ dataTxt+SEVEN_OFFICIALPUSH_TOKEN);
             String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
             String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
             params.put("SignMsg", encrypted);
             params.put("SignMsg", encrypted);
             String respone = "";
             String respone = "";
-            log.info("学时信息推送参数"+ dataTxt);
             respone = HttpUtils.postFormBody(OFFICIALPUSH_SEVEN_PERIODPATH, params);
             respone = HttpUtils.postFormBody(OFFICIALPUSH_SEVEN_PERIODPATH, params);
             if (Validator.isEmpty(respone)) {
             if (Validator.isEmpty(respone)) {
                 return "响应信息空";
                 return "响应信息空";

+ 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 Long expendBefore;
 
 
 	private String sevenYear;
 	private String sevenYear;
+	@ApiModelProperty("学时推送结果")
+	private String periodPlushMsg;
+
+	@ApiModelProperty("官方信息推送结果")
+	private String officialStatusMsg;
 
 
 }
 }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/QuestionOpenBo.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年08月09日 13:58
+ */
+@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;
+}

+ 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> {
 public interface OrderBusinessConfigGoodsMapper extends BaseMapper<OrderBusinessConfigGoods> {
     List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo);
     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);
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 
 	List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo);
 	List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo);
+
+	List<OrderBusinessConfigGoodsVo> selectMergeList(OrderBusinessConfigGoodsQueryBo 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) {
     public List<OrderBusinessConfigGoodsVo> selectList(OrderBusinessConfigGoodsQueryBo bo) {
         return this.baseMapper.selectList(bo);
         return this.baseMapper.selectList(bo);
     }
     }
+
+    @Override
+    public List<OrderBusinessConfigGoodsVo> selectMergeList(OrderBusinessConfigGoodsQueryBo bo) {
+        return this.baseMapper.selectMergeList(bo);
+    }
 }
 }

+ 6 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -2336,7 +2336,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             ClassGradeVo classGradeVo = classGradeVoList.get(i);
             ClassGradeVo classGradeVo = classGradeVoList.get(i);
             int locakStudentNum = 0;
             int locakStudentNum = 0;
             Boolean sevenFlag = false;
             Boolean sevenFlag = false;
-            if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
+            if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")
+                    && StringUtils.isNotBlank(goods.getSevenYear()) && !Arrays.asList("2021","2022").contains(goods.getSevenYear())){
                 locakStudentNum = baseMapper.getStudeCountByCode(classGradeVo.getSevenCode());
                 locakStudentNum = baseMapper.getStudeCountByCode(classGradeVo.getSevenCode());
                 sevenFlag = true;
                 sevenFlag = true;
             }else {
             }else {
@@ -2397,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 {
             }else {
                 classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
                 classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
             }
             }
@@ -2428,7 +2429,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //        classGrade.setClassName(goodsName + gradeCode);
 //        classGrade.setClassName(goodsName + gradeCode);
         //七大员继教同一个专业下同一个班级名称
         //七大员继教同一个专业下同一个班级名称
         Boolean classFlag = true;
         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());
             List<ClassGrade> gradeName = baseMapper.getClassNameByGoods(goods.getEducationTypeId(),goods.getProjectId().longValue(),goods.getBusinessId(),goods.getMajorId());
             if (CollectionUtils.isNotEmpty(gradeName)){
             if (CollectionUtils.isNotEmpty(gradeName)){
                 ClassGrade grade = gradeName.stream().filter(x -> ObjectUtils.isNotNull(x.getClassStatus()) && x.getClassStatus() == 1).findFirst().orElse(null);
                 ClassGrade grade = gradeName.stream().filter(x -> ObjectUtils.isNotNull(x.getClassStatus()) && x.getClassStatus() == 1).findFirst().orElse(null);

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserImportAddBo.java

@@ -37,6 +37,14 @@ public class UserImportAddBo {
     @ApiModelProperty("科目,多个,拼接")
     @ApiModelProperty("科目,多个,拼接")
     private String subjectNames;
     private String subjectNames;
 
 
+    @Excel(name = "性别")
+    @ApiModelProperty("性别")
+    private String sex;
+
+    @Excel(name = "学历")
+    @ApiModelProperty("学历")
+    private String eduLevel;
+
     @Excel(name = "失败原因")
     @Excel(name = "失败原因")
     private String cause;
     private String cause;
 
 

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

@@ -373,7 +373,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                                 num = 3;
                                 num = 3;
                             }
                             }
                             if(fullName.contains("继续教育")&&fullName.contains("施工现场专业人员")){
                             if(fullName.contains("继续教育")&&fullName.contains("施工现场专业人员")){
-                                num =  (int)Math.ceil(videoTime.intValue()/(46*60));
+                                num =  (int)Math.floor(videoTime.intValue()/(50*60))+1;
                             }
                             }
                             UserPeriodQueryBo userPeriodQueryBo2 = new UserPeriodQueryBo();
                             UserPeriodQueryBo userPeriodQueryBo2 = new UserPeriodQueryBo();
                             userPeriodQueryBo2.setSectionId(bo.getSectionId());
                             userPeriodQueryBo2.setSectionId(bo.getSectionId());
@@ -1340,6 +1340,9 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                         .eq(UserPeriodStatus::getStatus, 1)
                         .eq(UserPeriodStatus::getStatus, 1)
                         .eq(UserPeriodStatus::getPeriodStatus, 1));
                         .eq(UserPeriodStatus::getPeriodStatus, 1));
             }
             }
+            if(Validator.isEmpty(copyUserPeriodStatus)){
+                throw new CustomException("同步学时数据错误");
+            }
             LambdaQueryWrapper<UserStudyRecordPhoto> lqwPhoto = Wrappers.lambdaQuery();
             LambdaQueryWrapper<UserStudyRecordPhoto> lqwPhoto = Wrappers.lambdaQuery();
             lqwPhoto.eq(UserStudyRecordPhoto::getPeriodId, userPeriodStatus.getId());
             lqwPhoto.eq(UserStudyRecordPhoto::getPeriodId, userPeriodStatus.getId());
             lqwPhoto.eq(UserStudyRecordPhoto::getRecordId, vo.getRecordId());
             lqwPhoto.eq(UserStudyRecordPhoto::getRecordId, vo.getRecordId());

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java

@@ -299,8 +299,8 @@ public class UserVo {
 
 
 	public void setNull(){
 	public void setNull(){
 		this.setOpenId(null);
 		this.setOpenId(null);
-		this.setIdCardImg1(null);
-		this.setIdCardImg2(null);
+		/*this.setIdCardImg1(null);
+		this.setIdCardImg2(null);*/
 		this.setCertifiedTime(null);
 		this.setCertifiedTime(null);
 		this.setGzhOpenId(null);
 		this.setGzhOpenId(null);
 	/*	if(this.getTelphone()!=null){
 	/*	if(this.getTelphone()!=null){

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

@@ -817,6 +817,19 @@
           AND g.`status` = 1
           AND g.`status` = 1
     </select>
     </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 id="queryGoodsByIdTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         SELECT *
         FROM `goods`
         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="doNumber" column="do_number"/>
         <result property="expendNumber" column="expend_number"/>
         <result property="expendNumber" column="expend_number"/>
         <result property="expendBefore" column="expend_before"/>
         <result property="expendBefore" column="expend_before"/>
+        <result property="periodPlushMsg" column="official_status_msg"/>
+        <result property="officialStatusMsg" column="period_plush_msg"/>
     </resultMap>
     </resultMap>
 
 
 
 
@@ -417,6 +419,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cg.class_end_time,
         cg.class_end_time,
         cg.interface_push_id,
         cg.interface_push_id,
         cgu.official_status,
         cgu.official_status,
+        cgu.official_status_msg,
+        cgu.period_plush_msg,
         cgu.learn_status,
         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(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,
         (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 g.`status` = 1
           AND gu.`status` = 1
           AND gu.`status` = 1
           AND gu.change_grade = 0
           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>
 
 
     <select id="selectGoodsGradeList" parameterType="Long" resultMap="ClassGradeUserGoodsVoResult">
     <select id="selectGoodsGradeList" parameterType="Long" resultMap="ClassGradeUserGoodsVoResult">

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

@@ -62,6 +62,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
 
     <select id="selectList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
     <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>
+    </select>
+
+
+    <select id="selectMergeList" parameterType="com.zhongzheng.modules.order.bo.OrderBusinessConfigGoodsQueryBo" resultMap="OrderBusinessConfigGoodsVoResult">
         SELECT
         SELECT
         bcg.config_id,
         bcg.config_id,
         any_value ( obc.config_name ) config_name,
         any_value ( obc.config_name ) config_name,
@@ -108,5 +156,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         </if>
         GROUP BY bcg.config_id
         GROUP BY bcg.config_id
     </select>
     </select>
-
 </mapper>
 </mapper>