he2802 1 년 전
부모
커밋
567eb16ff5
42개의 변경된 파일322개의 추가작업 그리고 89개의 파일을 삭제
  1. 0 3
      run-prod.sh
  2. 1 1
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  3. 4 1
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  4. 1 1
      zhongzheng-admin/src/main/resources/application-pre.yml
  5. 4 1
      zhongzheng-admin/src/main/resources/application-prod.yml
  6. 1 1
      zhongzheng-admin/src/main/resources/application-trial.yml
  7. BIN
      zhongzheng-admin/src/main/resources/config/1664882784/apiclient_cert.p12
  8. BIN
      zhongzheng-admin/src/main/resources/config/1665678341/apiclient_cert.p12
  9. BIN
      zhongzheng-admin/src/main/resources/config/1666320573/apiclient_cert.p12
  10. BIN
      zhongzheng-admin/src/main/resources/config/1667498563/apiclient_cert.p12
  11. 1 1
      zhongzheng-api/src/main/resources/application-pre.yml
  12. 4 1
      zhongzheng-api/src/main/resources/application-prod.yml
  13. 1 1
      zhongzheng-api/src/main/resources/application-trial.yml
  14. BIN
      zhongzheng-api/src/main/resources/config/1664882784/apiclient_cert.p12
  15. BIN
      zhongzheng-api/src/main/resources/config/1665678341/apiclient_cert.p12
  16. BIN
      zhongzheng-api/src/main/resources/config/1666320573/apiclient_cert.p12
  17. BIN
      zhongzheng-api/src/main/resources/config/1667498563/apiclient_cert.p12
  18. 2 2
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  19. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java
  20. 3 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  21. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java
  22. 8 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  23. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java
  24. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java
  25. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java
  26. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java
  27. 44 21
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  28. 9 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  29. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java
  30. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderBusinessConfigGoodsQueryBo.java
  31. 18 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  32. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysWebServiceImpl.java
  33. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/IFaceOcrService.java
  34. 39 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/impl/FaceOcrServiceImpl.java
  35. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java
  36. 13 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserLoginErrorServiceImpl.java
  37. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  38. 23 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  39. 45 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  40. 36 3
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  41. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderInputMapper.xml
  42. 2 2
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

+ 0 - 3
run-prod.sh

@@ -34,6 +34,3 @@ docker run \
 -v /data/nginx/conf.d:/data/nginx/conf.d \
 -d ${group_admin_name}/${app_admin_name}:${app_admin_version}
 echo '----start container admin----'
-
-
-

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

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 1
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 4 - 1
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -207,3 +207,6 @@ ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
+
+record:
+    downloadPath: http://39.108.7.155:9090/common/user/data/download

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

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 1
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 4 - 1
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -207,3 +207,6 @@ ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
+
+record:
+    downloadPath: http://39.108.7.155:9090/common/user/data/download

+ 1 - 1
zhongzheng-admin/src/main/resources/application-trial.yml

@@ -64,7 +64,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:

BIN
zhongzheng-admin/src/main/resources/config/1664882784/apiclient_cert.p12


BIN
zhongzheng-admin/src/main/resources/config/1665678341/apiclient_cert.p12


BIN
zhongzheng-admin/src/main/resources/config/1666320573/apiclient_cert.p12


BIN
zhongzheng-admin/src/main/resources/config/1667498563/apiclient_cert.p12


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

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 1
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:

+ 4 - 1
zhongzheng-api/src/main/resources/application-prod.yml

@@ -55,7 +55,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:
@@ -220,3 +220,6 @@ ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=
     privatekey: NBtl7WnuUtA2v5FaebEkU0/Jj1IodLGT6lQqwkzmd2E=
     sm4key: VuAzSWQhsoNqzn0K
+
+record:
+    downloadPath: http://39.108.7.155:9090/common/user/data/download

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

@@ -64,7 +64,7 @@ spring:
         # 数据库索引
         database: 0
         # 密码
-        password: zhongzheng2021_redis
+        password: zhongzheng@@2024
         # 连接超时时间
         timeout: 10s
         lettuce:

BIN
zhongzheng-api/src/main/resources/config/1664882784/apiclient_cert.p12


BIN
zhongzheng-api/src/main/resources/config/1665678341/apiclient_cert.p12


BIN
zhongzheng-api/src/main/resources/config/1666320573/apiclient_cert.p12


BIN
zhongzheng-api/src/main/resources/config/1667498563/apiclient_cert.p12


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

@@ -245,7 +245,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             userVo.setClassGradeUserGoodsVoList(classGradeUserGoodsVos);
             userVo.setOrderNum(userVo.getGoodsCourseNum());
 
-            UserVisitLog userVisitLog = iUserVisitLogService.getOneNoTenant(userVo.getUserId());
+           /* UserVisitLog userVisitLog = iUserVisitLogService.getOneNoTenant(userVo.getUserId());
             if(Validator.isNotEmpty(userVisitLog)){
                 userVo.setLastVisitTime(userVisitLog.getCreateTime());
                 userVo.setVisitFromPlat(Integer.parseInt(userVisitLog.getFromPlat()));
@@ -255,7 +255,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             if(Validator.isNotEmpty(userStudyLog)){
                 userVo.setLastStudyTime(userStudyLog.getCreateTime());
                 userVo.setStudyFromPlat(Integer.parseInt(userStudyLog.getFromPlat()));
-            }
+            }*/
         }
         return list;
     }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java

@@ -19,7 +19,9 @@ import com.zhongzheng.modules.alisms.vo.ResultBean;
 import com.zhongzheng.modules.base.bo.SmsAddBo;
 import com.zhongzheng.modules.base.service.ISmsService;
 import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysTenant;
+import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.system.service.ISysUserService;
 import com.zhongzheng.modules.user.domain.User;
@@ -74,8 +76,22 @@ public class AliSmsServiceImpl implements IAliSmsService {
     @Autowired
     private ISysTenantService iSysTenantService;
 
+    @Autowired
+    private ISysConfigService configService;
+
+    public void initData(){
+        if(Validator.isNotEmpty(configService.selectConfigByKeyNoCache("sms.signName"))){
+            SIGNNAME = configService.selectConfigByKeyNoCache("sms.signName");
+        }else{
+            SysConfig config = configService.getSysConfigByKeyTenant("sms.signName",867735392558919680L);
+            SIGNNAME = config.getConfigValue();
+        }
+
+    }
+
     @Override
     public ResultBean sendSms(String tel, String param) {
+        initData();
         try{
             SendSmsResponse response = SmsUtils.sendSms(tel,SIGNNAME,REGISTERTEMPLATECODE,param,ACCESSKEYID,ACCESSKEYSECRET);
             System.out.println(response);
@@ -88,6 +104,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public ResultBean sendInformSms(String tel, String param,String code) {
+        initData();
         //发送带指定短信code带参数发送不同短信内容
         try{
             SendSmsResponse response = SmsUtils.sendSms(tel,SIGNNAME,code,param,ACCESSKEYID,ACCESSKEYSECRET);
@@ -110,6 +127,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendRegisterSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -143,6 +161,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendForgetSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -175,6 +194,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendLoginSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -207,6 +227,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendPwdSms(String tel,String code) {
+        initData();
         try{
             Map<String,Object> param = new HashMap<>();
             param.put("name","");
@@ -230,6 +251,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendBindNewTelSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -262,6 +284,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendSellerRegisterSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -295,6 +318,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendSellerForgetSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -327,6 +351,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendSellerLoginSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }
@@ -359,6 +384,7 @@ public class AliSmsServiceImpl implements IAliSmsService {
 
     @Override
     public Boolean sendLiveSms(String tel) {
+        initData();
         if(tel==null){
             throw new CustomException("手机号码不能为空");
         }

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -297,8 +297,6 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             OrderGoods orderGoods = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>()
                     .eq(OrderGoods::getOrderGoodsId, gradeUser.getOrderGoodsId()));
             queryBo.setGoodsId(orderGoods.getGoodsId());
-            System.out.println("生成证书");
-            System.out.println(JSON.toJSONString(queryBo));
             makeCertificatePhoto(queryBo);
         }
         return null;
@@ -653,7 +651,9 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         addBo.setChapterStr(ArrayUtils.toString(vo.getChapterList(), ","));
         addBo.setMoreCertificateStatus(goodsVo.getMoreCertificateStatus());
         addBo.setModuleId(moduleId);
-        addBo.setPublicClassHours(goodsVo.getPublicClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP ));
+        if(Validator.isNotEmpty(goodsVo.getPublicClassHours())){
+            addBo.setPublicClassHours(goodsVo.getPublicClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP ));
+        }
         addBo.setOrderGoodsId(bo.getOrderGoodsId());
         return addBo;
     }

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

@@ -54,6 +54,8 @@ public interface CourseMapper extends BaseMapper<Course> {
     //不传班级可能出现用户重复购买情况
     ClassGradeVo gradeIdSelect(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("gradeId") Long gradeId, @Param("orderGoodsId") Long orderGoodsId);
 
+    ClassGradeVo gradeIdSimpleSelect(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("gradeId") Long gradeId, @Param("orderGoodsId") Long orderGoodsId);
+
     @InterceptorIgnore(tenantLine = "true")
     ClassGradeVo gradeIdSelectTenant(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("gradeId") Long gradeId,@Param("tenantId") Long tenantId);
 

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

@@ -427,7 +427,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         if(Validator.isNotEmpty(keyStatus)&&keyStatus==100L){
             throw new CustomException("禁止频繁提交",667);
         }
-        redisCache.setCacheObject(key, 100L,5, TimeUnit.SECONDS);
+        redisCache.setCacheObject(key, 100L,60, TimeUnit.SECONDS);
         //将该班级下的学员作弊的节改成待重修
         List<GoodsPeriodStatusVo> goodsPeriodStatusVos = baseMapper.listSection(bo);
         for (GoodsPeriodStatusVo goodsPeriodStatusVo : goodsPeriodStatusVos) {
@@ -492,6 +492,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         }
         //更新班级学时状态
         iClassGradeUserService.updateUserPeriodStatus(bo);
+        redisCache.deleteObject(key);
         return true;
     }
 
@@ -972,10 +973,11 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         //用户课程得详细信息
         for (GoodsUserVo goodsUserVo : goodsUserVos) {
             //获得当前所在班级
-            ClassGradeVo classGradeVo = baseMapper.gradeIdSelect(goodsUserVo.getUserId(),goodsUserVo.getGoodsId(),goodsUserVo.getGradeId(),goodsUserVo.getOrderGoodsId());
+            ClassGradeVo classGradeVo = baseMapper.gradeIdSimpleSelect(goodsUserVo.getUserId(),goodsUserVo.getGoodsId(),goodsUserVo.getGradeId(),goodsUserVo.getOrderGoodsId());
             if(Validator.isEmpty(classGradeVo)){
                 continue;
             }
+
             Long secLong = 0L;
             Long studyLong = 0L;
             SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
@@ -983,13 +985,16 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             subjectStudyRecordQueryBo.setUserId(bo.getUserId());
             subjectStudyRecordQueryBo.setGradeId(goodsUserVo.getGradeId());
             subjectStudyRecordQueryBo.setOrderGoodsId(goodsUserVo.getOrderGoodsId());
-            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
+            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listDangAnSubject(subjectStudyRecordQueryBo);
             for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
                 secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
                 studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
             }
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setStuAllNum(studyLong);
+            goodsUserVo.setExamNum(classGradeVo.getExamNum());
+            goodsUserVo.setRecordNum(classGradeVo.getRecordNum());
+            goodsUserVo.setPeriodStatus(classGradeVo.getPeriodStatus());
         }
         return goodsUserVos;
     }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java

@@ -217,4 +217,5 @@ public class GoodsQueryBo extends BaseEntity {
 	private Integer querySign;
 	@ApiModelProperty("去掉多规格:1 ")
 	private Integer withNotSpec;
+
 }

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

@@ -444,4 +444,6 @@ public class GoodsUserVo {
 
 	@ApiModelProperty("旧业务系统订单号")
 	private String oldOrderSn;
+
+
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java

@@ -35,6 +35,9 @@ public class ClassGradeUserQueryBo extends BaseEntity {
 	 */
 	@ApiModelProperty("当前页数")
 	private Integer pageNum;
+
+	private Long id;
+
 	/**
 	 * 排序列
 	 */
@@ -309,5 +312,4 @@ public class ClassGradeUserQueryBo extends BaseEntity {
 
 
 
-
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java

@@ -110,4 +110,10 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
     List<ClassPeriodStudentVo> listBKUserPeriod(ClassGradeUserQueryBo bo);
 
     List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Boolean updateGradeUser(ClassGradeUser bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    ClassGradeUser selectUserNoTenant(ClassGradeUserQueryBo bo);
 }

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

@@ -225,8 +225,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     private IQuestionChapterExamService iQuestionChapterExamService;
 
 
-    private String SEVEN_OFFICIALPUSH_INFOACCOUNT;
-    private String SEVEN_OFFICIALPUSH_TOKEN;
+    /*private String SEVEN_OFFICIALPUSH_INFOACCOUNT;
+    private String SEVEN_OFFICIALPUSH_TOKEN;*/
 
     private static final Logger log = LoggerFactory.getLogger(ClassGradeUserServiceImpl.class);
 
@@ -725,8 +725,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
 
 
     public String pushSevenOfficialInfo(ClassGradeUserQueryBo bo,ClassGradeUserVo userVo,OrderGoodsVo orderGoods,Goods goods) {
-        SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
-        SEVEN_OFFICIALPUSH_TOKEN=null;
+        String SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
+        String SEVEN_OFFICIALPUSH_TOKEN=null;
         log.info("报名信息推送" + JSON.toJSONString(bo));
         //暂时先关闭信息推送入口
 //        if (true){
@@ -809,18 +809,19 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             return "商品年份缺失";
         }
         if (orderGoods.getSevenYear().equals("2021")||orderGoods.getSevenYear().equals("2022")) {
-            return "2021/2022无法报名";
+    //        return "2021/2022无法报名";
         }
         if(Validator.isNotEmpty(configService.selectConfigByKeyNoCache("seven.office.account"))){
             SEVEN_OFFICIALPUSH_INFOACCOUNT = configService.selectConfigByKeyNoCache("seven.office.account");
             SEVEN_OFFICIALPUSH_TOKEN = configService.selectConfigByKeyNoCache("seven.office.token");
         }
-        String jsonStr = configService.selectConfigByKeyNoCache("home.header");
+        String jsonStr = configService.selectConfigByKeyNoCache("client.config");
         boolean sevenPushAuth = false; //无需校验
         if(Validator.isNotEmpty(jsonStr)){
             JSONObject objectJson = JSON.parseObject(jsonStr);
-            if(Validator.isNotEmpty(objectJson)&&objectJson.containsKey("sevenPushAuth")){
-                Integer authRs = objectJson.getInteger("sevenPushAuth");
+            if(Validator.isNotEmpty(objectJson)&&objectJson.containsKey("other")){
+                JSONObject jsonObject = objectJson.getJSONObject("other");
+                Integer authRs = jsonObject.getInteger("sevenPushAuth");
                 if(authRs==1){
                     sevenPushAuth = true;
                 }
@@ -839,6 +840,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 params.put("majorname", major.getCategoryName());
                 params.put("orderno", "");
                 params.put("gradeUserId", userVo.getId().toString());
+                params.put("year", orderGoods.getSevenYear());
                 Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>()
                         .eq(Order::getOrderSn, orderGoods.getOrderSn()));
                 if(Validator.isNotEmpty(order.getInputOrderSn())){
@@ -872,7 +874,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 return "等待权限推送";
             }
             else if(userVo.getSevenPushCheck()>=3){
-                return "无权限推送";
+                return userVo.getSevenPushReason();
             }
         }
         Map<String, String> params = new HashMap<>();
@@ -1032,8 +1034,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
 
     @Override
     public ClassPeriodStudentVo DecryptSevenOfficialInfo(ClassGradeDecryptQueryBo bo) {
-        SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
-        SEVEN_OFFICIALPUSH_TOKEN=null;
+        String SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
+        String SEVEN_OFFICIALPUSH_TOKEN=null;
         String pars;
         try {
             if(Validator.isNotEmpty(bo.getTenantId())){
@@ -1147,6 +1149,18 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         int index = 1;
         String errorMsg = "";
         for (ClassGradeUserQueryBo bo : list) {
+            if(Validator.isEmpty(bo.getUserId())||Validator.isEmpty(bo.getOrderGoodsId())){
+                throw new CustomException("参数缺失");
+            }
+            LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+            objectLambdaUpdateWrapper.eq(ClassGradeUser::getUserId, bo.getUserId());
+            objectLambdaUpdateWrapper.eq(ClassGradeUser::getOrderGoodsId, bo.getOrderGoodsId());
+            objectLambdaUpdateWrapper.eq(ClassGradeUser::getGradeId, bo.getGradeId());
+
+            objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatus, 0);
+            objectLambdaUpdateWrapper.set(ClassGradeUser::getUpdateTime, DateUtils.getNowTime());
+            this.update(null, objectLambdaUpdateWrapper);
+
             String msg = pushOfficialInfo(bo);
             if (Validator.isNotEmpty(msg)) {
                 errorMsg += "第" + index + "条错误:" + msg;
@@ -1303,8 +1317,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     }
 
     public String pushSevenOfficialPeriod(ClassGradeUserQueryBo bo,ClassGradeUserVo userVo,OrderGoodsVo orderGoods) {
-        SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
-        SEVEN_OFFICIALPUSH_TOKEN=null;
+        String SEVEN_OFFICIALPUSH_INFOACCOUNT=null;
+        String SEVEN_OFFICIALPUSH_TOKEN=null;
  //       ClassGradeUserVo userVo = this.baseMapper.selectUser(bo);
         if (Validator.isEmpty(userVo)) {
             return "用户不存在";
@@ -1347,7 +1361,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             return "班级商品不存在";
         }
         if (orderGoods.getSevenYear().equals("2021")||orderGoods.getSevenYear().equals("2022")) {
-            return "2021/2022无法报名";
+   //         return "2021/2022无法报名";
         }
        /* UserProfile userProfile = iUserProfileService.getOne(new LambdaQueryWrapper<UserProfile>()
                 .eq(UserProfile::getUserId, bo.getUserId()).eq(UserProfile::getGoodsId, orderGoods.getGoodsId())
@@ -1934,7 +1948,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             subjectStudyRecordQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
             subjectStudyRecordQueryBo.setUserId(classPeriodStudentVo.getUserId());
             subjectStudyRecordQueryBo.setGradeId(classPeriodStudentVo.getGradeId());
-            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(subjectStudyRecordQueryBo);
+            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listDangAnSubject(subjectStudyRecordQueryBo);
             for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
                 secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
                 studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
@@ -1959,9 +1973,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             classPeriodStudentVo.setAllStatus(changePeriodStatus(classPeriodStudentVo.getPeriodStatus()));
 
             classPeriodStudentVo.setWaitRebuildNum(classPeriodUserVos.getCheat() + classPeriodUserVos.getExamCheat());
-            if (!CollectionUtils.isEmpty(baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId()))) {
+            List<Long> timeList = baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (!CollectionUtils.isEmpty(timeList)) {
                 //查找开始学习时间
-                classPeriodStudentVo.setStartTime(baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId()).get(0));
+                classPeriodStudentVo.setStartTime(timeList.get(0));
             }else{
                 classPeriodStudentVo.setStartTime(baseMapper.selectStartNoPhoto(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId())
                 );
@@ -2176,6 +2191,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         cGQB.setGoodsId(bo.getGoodsId());
         cGQB.setUserId(bo.getUserId());
         cGQB.setGradeId(bo.getGradeId());
+        cGQB.setOrderGoodsId(bo.getOrderGoodsId());
         List<ClassPeriodVo> list = listPeriodAudit(cGQB);
         String moduleName = "";
         String chapterName = "";
@@ -3733,19 +3749,26 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         if(Validator.isEmpty(bo.getGradeUserId())||Validator.isEmpty(bo.getPushStatus())){
             throw new CustomException("参数缺失");
         }
-        ClassGradeUser classGradeUser = getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getId, bo.getGradeUserId()));
+        ClassGradeUserQueryBo queryBo = new ClassGradeUserQueryBo();
+        queryBo.setId(bo.getGradeUserId());
+        ClassGradeUser classGradeUser = this.baseMapper.selectUserNoTenant(queryBo);
         if(Validator.isEmpty(classGradeUser)){
             throw new CustomException("数据不存在");
         }
         if(classGradeUser.getSevenPushCheck()==0||classGradeUser.getSevenPushCheck()==2){
             throw new CustomException("无效操作");
         }
-        LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+        /*LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
         objectLambdaUpdateWrapper.eq(ClassGradeUser::getId, bo.getGradeUserId());
         objectLambdaUpdateWrapper.set(ClassGradeUser::getSevenPushCheck, bo.getPushStatus()+1);
         objectLambdaUpdateWrapper.set(ClassGradeUser::getUpdateTime, DateUtils.getNowTime());
-        objectLambdaUpdateWrapper.set(ClassGradeUser::getSevenPushReason, bo.getSevenPushReason());
-        return this.update(null, objectLambdaUpdateWrapper);
+        objectLambdaUpdateWrapper.set(ClassGradeUser::getSevenPushReason, bo.getSevenPushReason());*/
+        ClassGradeUser gradeUser = new ClassGradeUser();
+        gradeUser.setId(bo.getGradeUserId());
+        gradeUser.setSevenPushCheck(bo.getPushStatus()+1);
+        gradeUser.setSevenPushReason(bo.getSevenPushReason());
+        gradeUser.setUpdateTime(DateUtils.getNowTime());
+        return this.baseMapper.updateGradeUser(gradeUser);
     }
 
     @Override

+ 9 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -130,6 +130,9 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private IUserService iUserService;
 
+    @Autowired
+    private ISysTenantService iSysTenantService;
+
     @Autowired
     private IExamApplyGoodsService iExamApplyGoodsService;
 
@@ -205,9 +208,6 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private ICourseModuleService iCourseModuleService;
 
-    @Autowired
-    private ISysTenantService iSysTenantService;
-
     @Value("${oldStudySys.syncPath}")
     private String SYNC_PATH;
 
@@ -694,8 +694,12 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
 //            }
             SysTenant sysTenant = iSysTenantService.getById(Long.valueOf(tenant));
             if (ObjectUtils.isNotNull(sysTenant) && sysTenant.getPeriodSign() == 1){
-                hasSeven = true;
-                studyRec.setCourseType(17);
+                if(fullName.contains("考前培训")&&fullName.contains("施工现场专业人员")){
+                    hasSeven = true;
+                    studyRec.setCourseType(17);
+                }else{
+                    return true;
+                }
             }else if (!"继续教育二级造价师".equals(fullName)){
                 return true;
             }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java

@@ -176,4 +176,6 @@ public class ClassGradeUserVo {
 	@Excel(name = "七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
 	@ApiModelProperty("七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
 	private Integer sevenPushCheck;
+
+	private String sevenPushReason;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderBusinessConfigGoodsQueryBo.java

@@ -70,4 +70,6 @@ public class OrderBusinessConfigGoodsQueryBo extends BaseEntity {
 	private String businessName;
 	@ApiModelProperty("科目名称")
 	private Long subjectName;
+	@ApiModelProperty("年份")
+	private String year;
 }

+ 18 - 9
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1322,7 +1322,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         String out_trade_no = DateUtils.getDateOrderSn();
         BigDecimal totalPrice = new BigDecimal(0);
         BigDecimal payPrice = new BigDecimal(0);
-        String body = "中正云-";
+        String body = "云课程-";
         List<OrderGoods> freeList = new ArrayList<>();
         //生成订单
         for (OrderGoodsAddBo g : goodsList) {
@@ -1338,6 +1338,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
                 //寄件商品
                 add.setOrderType(5);
@@ -1345,7 +1346,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 add.setConsigneePhone(g.getConsigneePhone());
                 add.setConsigneeSite(g.getConsigneeSite());
             }
-            body = "中正云-" + goods.getGoodsName();
+
+            body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             orderGoods.setGoodsYear(goods.getYear().toString());
@@ -1749,7 +1752,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         String out_trade_no = DateUtils.getDateOrderSn();
         BigDecimal totalPrice = new BigDecimal(0);
         BigDecimal payPrice = new BigDecimal(0);
-        String body = "中正云-";
+        String body = "云课程-";
         List<OrderGoods> freeList = new ArrayList<>();
         //生成订单
         for (OrderGoodsAddBo g : goodsList) {
@@ -1765,6 +1768,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
                 //寄件商品
                 add.setOrderType(5);
@@ -1772,7 +1776,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 add.setConsigneePhone(g.getConsigneePhone());
                 add.setConsigneeSite(g.getConsigneeSite());
             }
-            body = "中正云-" + goods.getGoodsName();
+
+            body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             if (g.getGoodsInputData() != null) {
@@ -1963,7 +1969,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         String out_trade_no = DateUtils.getDateOrderSn();
         BigDecimal totalPrice = new BigDecimal(0);
         BigDecimal payPrice = new BigDecimal(0);
-        String body = "中正云-";
+        String body = "云课程-";
         List<OrderGoods> freeList = new ArrayList<>();
         //生成订单
         for (OrderGoodsAddBo g : goodsList) {
@@ -1979,6 +1985,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
             if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
                 //寄件商品
                 add.setOrderType(5);
@@ -1986,7 +1993,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 add.setConsigneePhone(g.getConsigneePhone());
                 add.setConsigneeSite(g.getConsigneeSite());
             }
-            body = "中正云-" + goods.getGoodsName();
+
+            body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             if (g.getGoodsInputData() != null) {
@@ -2144,7 +2153,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 if (goods.getGoodsStatus() != 1) {
                     throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
                 }
-                body = "中正云-" + goods.getGoodsName();
+                body = "云课程-" + goods.getGoodsName();
                 break;
             }
         } else {
@@ -2180,7 +2189,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 if (goods.getGoodsStatus() != 1) {
                     throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
                 }
-                body = "中正云-" + goods.getGoodsName();
+                body = "云课程-" + goods.getGoodsName();
                 break;
             }
         } else {
@@ -2314,7 +2323,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 if (goods.getGoodsStatus() != 1) {
                     throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
                 }
-                body = "中正云-" + goods.getGoodsName();
+                body = "云课程-" + goods.getGoodsName();
                 break;
             }
         } else {

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysWebServiceImpl.java

@@ -360,6 +360,17 @@ public class SysWebServiceImpl implements ISysWebService {
         config27.setUpdateBy("admin");
         coll.add(config27);
 
+        SysConfig config28 = new SysConfig();
+        config28.setTenantId(bo.getTenantId());
+        config28.setConfigName("客户端配置");
+        config28.setConfigKey("client.config");
+        config28.setConfigValue("");
+        config28.setConfigType("N");
+        config28.setConfigModule("home");
+        config28.setCreateBy("admin");
+        config28.setUpdateBy("admin");
+        coll.add(config28);
+
         configService.saveBatch(coll);
 
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/IFaceOcrService.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.tencentcloud.service;
 
 
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.iai.v20200303.models.DetectFaceResponse;
 import com.zhongzheng.modules.tencentcloud.bo.FaceQueryBo;
 import com.zhongzheng.modules.tencentcloud.bo.InvoiceQueryBo;
 
@@ -12,6 +13,8 @@ public interface IFaceOcrService {
 
     Integer CompareFace(FaceQueryBo bo);
 
+    Boolean DetectFace(FaceQueryBo bo);
+
     Map<String,String> IDCardOCR(FaceQueryBo bo);
 
     Map<String,String> VatInvoiceOCR(InvoiceQueryBo bo);

+ 39 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/impl/FaceOcrServiceImpl.java

@@ -11,8 +11,7 @@ import com.tencentcloudapi.faceid.v20180301.FaceidClient;
 import com.tencentcloudapi.faceid.v20180301.models.ImageRecognitionRequest;
 import com.tencentcloudapi.faceid.v20180301.models.ImageRecognitionResponse;
 import com.tencentcloudapi.iai.v20200303.IaiClient;
-import com.tencentcloudapi.iai.v20200303.models.CompareFaceRequest;
-import com.tencentcloudapi.iai.v20200303.models.CompareFaceResponse;
+import com.tencentcloudapi.iai.v20200303.models.*;
 import com.tencentcloudapi.ocr.v20181119.OcrClient;
 import com.tencentcloudapi.ocr.v20181119.models.*;
 import com.zhongzheng.common.exception.CustomException;
@@ -85,21 +84,50 @@ public class FaceOcrServiceImpl implements IFaceOcrService {
 
     //        String oneInchPhotos = JSONObject.parseObject(String.valueOf(maps.get("recent_photos")), UserProfileFit.class).getValue(); //审核资料一寸照片
 
-            String oneInchPhotos =ossHost+"/"+userVo.getOneInchPhotos();
+            if(DetectFace(bo)){
+                String oneInchPhotos =ossHost+"/"+userVo.getOneInchPhotos();
+                Credential cred = new Credential(SecretId, SecretKey);
+                ClientProfile clientProfile = new ClientProfile();
+                clientProfile.setSignMethod(clientProfile.SIGN_TC3_256);
+                IaiClient iaiClient = new IaiClient(cred,"ap-guangzhou");
+                CompareFaceRequest faceRequest = new CompareFaceRequest();
+                faceRequest.setImageA(bo.getImageA()); //学习拍照
+                faceRequest.setUrlB(oneInchPhotos); //一寸近照
+                faceRequest.setQualityControl(2L);
+                CompareFaceResponse response = iaiClient.CompareFace(faceRequest);
+                return response.getScore().intValue();
+            }
+            return 0;
+        }catch (TencentCloudSDKException e){
+            System.out.println("错误"+e.getMessage());
+            return 0;
+        }
+    }
+
+    @Override
+    public Boolean DetectFace(FaceQueryBo bo) {
+        try{
             Credential cred = new Credential(SecretId, SecretKey);
             ClientProfile clientProfile = new ClientProfile();
             clientProfile.setSignMethod(clientProfile.SIGN_TC3_256);
             IaiClient iaiClient = new IaiClient(cred,"ap-guangzhou");
-            CompareFaceRequest faceRequest = new CompareFaceRequest();
-            faceRequest.setImageA(bo.getImageA()); //学习拍照
-            faceRequest.setUrlB(oneInchPhotos); //一寸近照
-            faceRequest.setQualityControl(2L);
-            CompareFaceResponse response = iaiClient.CompareFace(faceRequest);
-            return response.getScore().intValue();
+            DetectFaceRequest faceRequest = new DetectFaceRequest();
+            faceRequest.setImage(bo.getImageA()); //学习拍照
+            DetectFaceResponse response = iaiClient.DetectFace(faceRequest);
+            FaceInfo[] face = response.getFaceInfos();
+            if(face[0].getFaceQualityInfo().getBrightness().intValue()<30){
+                throw new CustomException("照片光照不达标"+face[0].getFaceQualityInfo().getBrightness().intValue());
+            }
+            if(face[0].getFaceQualityInfo().getScore().intValue()<40){
+                throw new CustomException("照片质量不达标"+face[0].getFaceQualityInfo().getScore().intValue());
+            }
+            if(Validator.isEmpty(face[0].getFaceQualityInfo().getCompleteness())){
+                throw new CustomException("照片五官不达标");
+            }
         }catch (TencentCloudSDKException e){
-            System.out.println("错误"+e.getMessage());
-            return 0;
+            throw new CustomException("人脸检测错误"+e.getMessage());
         }
+        return true;
     }
 
     @Override

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java

@@ -110,6 +110,8 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
     @Autowired
     private RedisCache redisCache;
 
+
+
     private static Logger log = LoggerFactory.getLogger(UserBankRecordServiceImpl.class);
 
 

+ 13 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserLoginErrorServiceImpl.java

@@ -18,6 +18,9 @@ import com.zhongzheng.modules.user.domain.UserLoginError;
 import com.zhongzheng.modules.user.mapper.UserLoginErrorMapper;
 import com.zhongzheng.modules.user.service.IUserLoginErrorService;
 import com.zhongzheng.modules.user.vo.UserLoginErrorVo;
+import com.zhongzheng.modules.wx.service.impl.WxPayServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -39,6 +42,8 @@ import java.util.stream.Collectors;
 @Service
 public class UserLoginErrorServiceImpl extends ServiceImpl<UserLoginErrorMapper, UserLoginError> implements IUserLoginErrorService {
 
+    private static Logger log = LoggerFactory.getLogger(UserLoginErrorServiceImpl.class);
+
     @Autowired
     private ISysConfigService configService;
 
@@ -102,13 +107,16 @@ public class UserLoginErrorServiceImpl extends ServiceImpl<UserLoginErrorMapper,
         lqwExam.eq(UserLoginError::getLoginAccount, loginAccount);
         lqwExam.eq(UserLoginError::getDate, DateUtils.getTodayZeroTime());
         Integer count = baseMapper.selectCount(lqwExam);
-        String jsonStr = configService.selectConfigByKey("home.header");
+        String jsonStr = configService.selectConfigByKeyNoCache("client.config");
         if(Validator.isNotEmpty(jsonStr)){
             JSONObject objectJson = JSON.parseObject(jsonStr);
-            if(Validator.isNotEmpty(objectJson)&&objectJson.containsKey("loginLimit")){
-                Integer maxCount = objectJson.getInteger("loginLimit");
-                if(maxCount>0&&count>=maxCount){
-                    throw new CustomException("今天你的错误次数已超过"+maxCount+"次,请明天再登录");
+            if(Validator.isNotEmpty(objectJson)&&objectJson.containsKey("other")){
+                JSONObject jsonObject = objectJson.getJSONObject("other");
+                Integer maxCount = jsonObject.getInteger("loginLimit");
+                if(Validator.isNotEmpty(maxCount)){
+                    if(maxCount>0&&count>=maxCount){
+                        throw new CustomException("今天你的错误次数已超过"+maxCount+"次,请明天再登录");
+                    }
                 }
             }
         }

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

@@ -174,6 +174,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     @Autowired
     private ICourseMenuService iCourseMenuService;
 
+
     @Value("${fileHost}")
     private String fileHost;
 
@@ -432,7 +433,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
                                         if(fullName.contains("继续教育")&&fullName.contains("施工现场专业人员")){
                                             if((DateUtils.getNowTime().longValue()-userPeriodStatusVo.getRecordStartTime().longValue())<(videoTime.longValue()-5)){
                                                 log.info("视频学习时长不达标"+JSON.toJSONString(bo));
-                                                throw new CustomException("视频学习时长不达标,"+(videoTime.longValue()-5-(DateUtils.getNowTime().longValue()-userPeriodStatusVo.getRecordStartTime().longValue())),558);
+                                                throw new CustomException("视频学习时长不达标,"+(videoTime.longValue()-5-(DateUtils.getNowTime().longValue()-photo.getCreateTime().longValue())),558);
                                             }
                                         }else{
                                             log.info("视频学习时长不达标"+JSON.toJSONString(bo));

+ 23 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -255,13 +255,13 @@ public class WxPayServiceImpl implements IWxPayService {
 
 
     public void initData(){
-        appid = configService.selectConfigByKey("wx.small.appid");
-        gzhAppid = configService.selectConfigByKey("wx.gzh.appid");
-        gzh_appsrcret = configService.selectConfigByKey("wx.gzh.appsecret");
-        mchid = configService.selectConfigByKey("wx.wepay.mchid");
-        key = configService.selectConfigByKey("wx.wepay.key");
-        appsecret = configService.selectConfigByKey("wx.wepay.appsecret");
-        notifyUrl =  configService.selectConfigByKey("wx.wepay.notifyUrl");
+        appid = configService.selectConfigByKeyNoCache("wx.small.appid");
+        gzhAppid = configService.selectConfigByKeyNoCache("wx.gzh.appid");
+        gzh_appsrcret = configService.selectConfigByKeyNoCache("wx.gzh.appsecret");
+        mchid = configService.selectConfigByKeyNoCache("wx.wepay.mchid");
+        key = configService.selectConfigByKeyNoCache("wx.wepay.key");
+        appsecret = configService.selectConfigByKeyNoCache("wx.wepay.appsecret");
+        notifyUrl =  configService.selectConfigByKeyNoCache("wx.wepay.notifyUrl");
     }
 
 
@@ -1251,7 +1251,7 @@ public class WxPayServiceImpl implements IWxPayService {
     @Override
     public Map<String, String> refund(String out_refund_no, String transaction_id, BigDecimal refund_fee, BigDecimal total_fee) {
         initData();
-        WxSmallConfig config = new WxSmallConfig(appid, mchid, key);
+        WxSmallConfig config = new WxSmallConfig(gzhAppid, mchid, key);
         BigDecimal unit = new BigDecimal(100);
         refund_fee = refund_fee.multiply(unit);
         total_fee = total_fee.multiply(unit);
@@ -1265,17 +1265,29 @@ public class WxPayServiceImpl implements IWxPayService {
             data.put("refund_fee", refund_fee.intValue() + "");
             data.put("total_fee", total_fee.intValue() + "");
             Map<String, String> result = new HashMap<>();
-            result.put("appId", appid);
+            result.put("appId", gzhAppid);
             result.put("nonceStr", WXPayUtil.generateNonceStr());
             result.put("signType", "MD5");
             result.put("sign", WXPayUtil.generateSignature(result, key, WXPayConstants.SignType.MD5));
-            Map rMap = wxpay.refund(data);
+            log.info("微信退款参数:{}"+JSON.toJSONString(data));
+            Map<String, String> rMap = wxpay.refund(data);
+            log.info("微信退款结果:{}"+JSON.toJSONString(rMap));
+            if(Validator.isNotEmpty(rMap)){
+                if(rMap.containsKey("result_code")){
+                    String result_code = rMap.get("result_code");
+                    if("FAIL".equals(result_code)){
+                        String err_code_des = rMap.get("err_code_des");
+                        throw new CustomException("微信退款失败:"+err_code_des);
+                    }
+                }
+            }
             return rMap;
         } catch (Exception e) {
             e.printStackTrace();
+            log.info("微信退款错误结果:{}"+e.getMessage());
+            throw new CustomException(e.getMessage());
         }
 
-        return null;
     }
 
 }

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

@@ -595,6 +595,8 @@
         </if>
     </select>
 
+
+
     <select id="goodsProgressList" parameterType="com.zhongzheng.modules.course.bo.CourseQueryBo"  resultMap="GoodsUserVo">
         SELECT
         g.*,
@@ -835,6 +837,49 @@
           AND ups.`status` = 0
           AND ups.period_status = 1
     </select>
+
+    <select id="gradeIdSimpleSelect" parameterType="map"  resultMap="ClassGradeVoResult" >
+        SELECT
+        (SELECT
+        COUNT( m.id )
+        FROM
+        goods_course c  LEFT JOIN  course_menu_exam m ON m.course_id = c.course_id
+        where
+        m.type in (1,3)
+        and c.goods_id = #{goodsId}) as exam_num,
+        (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.report_status=1 and ubr.grade_id = cg.grade_id and ubr.order_goods_id = cgu.order_goods_id and ubr.user_id = cgu.user_id and ubr.current_status = 1) as record_num,
+        cgu.grade_id,
+        cg.class_start_time,
+        cg.class_end_time,
+        cg.class_status,
+        cg.status,
+        cg.learning_status,
+        cgu.period_status,
+        cg.learning_time_start,
+        cgu.learn_status,
+        cg.interface_account_id,
+        cg.official_learning_url,
+        cg.interface_push_id,
+        cgu.official_status,
+        cgu.period_plush,
+        cgu.order_goods_id,
+        cg.official_name,
+        cgu.period_wait_time
+        FROM
+        class_grade_user cgu
+        LEFT JOIN class_grade cg on cgu.grade_id = cg.grade_id
+        WHERE
+        1=1
+        <if test="gradeId != null and gradeId != ''">
+            and cg.grade_id = #{gradeId}
+        </if>
+        <if test="orderGoodsId != null and orderGoodsId != ''">
+            and cgu.order_goods_id = #{orderGoodsId}
+        </if>
+        and cg.`status` =1  and cgu.change_grade = 0 and cgu.user_id=#{userId}
+        order by cg.create_time desc LIMIT 1
+    </select>
+
     <select id="gradeIdSelect" parameterType="map"  resultMap="ClassGradeVoResult" >
         SELECT
          (SELECT

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

@@ -531,7 +531,11 @@
             and (u.realname like concat('%', #{searchKey}, '%')
                 or u.id_card like concat('%', #{searchKey,typeHandler=com.zhongzheng.common.type.EncryptHandler}, '%')
                 or g.goods_name like concat('%', #{searchKey}, '%')
-                or cg.class_name like concat('%', #{searchKey}, '%'))
+                or cg.class_name like concat('%', #{searchKey}, '%')
+                or u.company_name like concat('%', #{searchKey}, '%'))
+        </if>
+        <if test="companyName != null and companyName != '' ">
+            and u.company_name like concat('%', #{companyName}, '%')
         </if>
         <if test="idCard != null and idCard !='' ">
             AND u.id_card = #{idCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
@@ -2014,13 +2018,13 @@
             AND u.telphone = #{telphone,typeHandler=com.zhongzheng.common.type.EncryptHandler}
         </if>
         <if test="searchStartTime != null and searchStartTime !='' ">
-            AND cgu.create_time >=#{searchStartTime}
+            AND cgu.create_time >= #{searchStartTime}
         </if>
         <if test="searchEndTime != null and searchEndTime !='' ">
             AND #{searchEndTime} >= cgu.create_time
         </if>
         <if test="periodStartTime != null and periodStartTime !='' ">
-            AND cgu.period_time >=#{periodStartTime}
+            AND cgu.period_time >= #{periodStartTime}
         </if>
         <if test="periodEndTime != null and periodEndTime !='' ">
             AND #{periodEndTime} >= cgu.period_time
@@ -2096,4 +2100,33 @@
         </if>
         order by us.create_time DESC
     </select>
+
+    <update id="updateGradeUser" parameterType="com.zhongzheng.modules.grade.domain.ClassGradeUser" >
+        update class_grade_user
+        <set>
+            <if test="sevenPushCheck != null">
+                seven_push_check = #{sevenPushCheck},
+            </if>
+            <if test="sevenPushReason != null ">
+                seven_push_reason=#{sevenPushReason},
+            </if>
+            <if test="updateTime != null ">
+                update_time=#{updateTime},
+            </if>
+        </set>
+        where id = #{id}
+    </update>
+
+    <select id="selectUserNoTenant" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
+            resultType="com.zhongzheng.modules.grade.domain.ClassGradeUser">
+        SELECT
+            g.*
+        FROM
+            class_grade_user g
+
+        WHERE
+            1 = 1
+          AND g.id = #{id}
+
+    </select>
 </mapper>

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

@@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND oi.old_order_sn = #{oldOrderSn}
         </if>
         <if test="searchKey != null and searchKey != ''">
-            AND (oi.create_username like concat('%', #{searchKey}, '%') or oi.input_order_sn = #{searchKey})
+            AND (oi.create_username like concat('%', #{searchKey}, '%') or oi.input_order_sn = #{searchKey} or (select count(*) from `user` us where us.user_id = o.user_id AND us.realname like concat('%', #{searchKey}, '%') )>0)
         </if>
         <if test="startTime != null and startTime != ''">
             AND oi.create_time >= #{startTime}

+ 2 - 2
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -311,8 +311,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectListNoTenant" parameterType="com.zhongzheng.modules.user.bo.UserQueryBo" resultMap="UserResult">
         SELECT DISTINCT
-        u.*,
-        (case WHEN u.union_id is null then 0 ELSE 1 end) as user_bind_wx
+        u.*
+    /*    ,(case WHEN u.union_id is null then 0 ELSE 1 end) as user_bind_wx */
         <if test="getOrderNum != null and getOrderNum == 1" >
             ,ou.goods_course_num,ou.goods_bank_num,ou.goods_live_num
         </if>