he2802 1 vuosi sitten
vanhempi
commit
cd31c39226
22 muutettua tiedostoa jossa 260 lisäystä ja 66 poistoa
  1. 0 37
      run-prod.sh
  2. 2 0
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  3. 13 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  4. 3 1
      zhongzheng-admin/src/main/resources/application-prod.yml
  5. 2 0
      zhongzheng-api/src/main/resources/application-prod.yml
  6. 2 2
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java
  7. 1 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java
  8. 2 2
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineHandler.java
  9. 16 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java
  10. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserAddBo.java
  11. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java
  12. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/SevenPushAuthAddBo.java
  13. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGradeUser.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java
  15. 4 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  16. 125 10
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  17. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentVo.java
  19. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodVo.java
  20. 2 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  21. 28 5
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  22. 4 2
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

+ 0 - 37
run-prod.sh

@@ -1,41 +1,4 @@
-#!/usr/bin/env bash
-# 定义应用组名
-group_name='zhongzheng'
-# 定义应用名称
-app_name='zhongzheng-saas-api'
-# 定义应用版本
-app_version='1.0-SNAPSHOT'
-# 定义应用环境
-profile_active='prod'
-echo '----copy jar----'
-docker stop ${app_name}
-echo '----stop container----'
-docker rm ${app_name}
-echo '----rm container----'
-docker rmi ${group_name}/${app_name}:${app_version}
-echo '----rm image----'
-# 打包编译docker镜像
-docker build -f /mydata/maven/build/Dockerfile -t ${group_name}/${app_name}:${app_version} .
-echo '----build image----'
-docker run -p 5055:5055 --name ${app_name} \
---restart=always \
--e 'spring.profiles.active'=${profile_active} \
--e TZ="Asia/Shanghai" \
--m 10240m \
---cpus=3 \
---log-opt max-size=50m \
---log-opt max-file=3 \
--v /etc/localtime:/etc/localtime \
--v /usr/share/fonts:/usr/share/fonts \
--v /data/logs/prod_api:/logs \
--v /mydata/app/${app_name}/logs:/var/logs \
--d ${group_name}/${app_name}:${app_version}
-echo '----start container----'
 
-echo "开始等待20秒..."
-# 1-10秒内随机
-sleep 5
-echo "等待后继续"
 
 #!/usr/bin/env bash
 # 定义应用组名

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

@@ -196,6 +196,8 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
 
 ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=

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

@@ -170,11 +170,14 @@ public class CommonController extends BaseController {
 
     @Autowired
     private IZsBankService iZsBankService;
+
     @Autowired
     private ClassGradeUserMapper classGradeUserMapper;
 
     @Autowired
     private IMajorService iMajorService;
+
+
     /**
      * 通用下载请求
      *
@@ -842,5 +845,14 @@ public class CommonController extends BaseController {
         return AjaxResult.success();
     }
 
-
+    @ApiOperation("七大员推送权限结果回调")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @PostMapping("/common/free/sevenPushAuthCallBack")
+    public AjaxResult sevenPushAuthCallBack(@RequestBody SevenPushAuthAddBo bo) {
+        ServletUtils.getRequestAttributes().getResponse().setHeader("TenantId", "867735392558919680");
+        if (!ToolsUtils.checkSignCwSnFromOldSys(bo.getGradeUserId().toString(), bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        return AjaxResult.success("成功", iClassGradeUserService.sevenPushAuthCallBack(bo) ? 1 : 0);
+    }
 }

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

@@ -169,7 +169,7 @@ oldOrder:
     updateRemark: http://www.xyyxt.net/WitSystem/BussinessApi/UpdateOrderAuditRemark
 
 oldSys:
-    host: http://test.jqbao.net
+    host: http://www.xyyxt.net
     goods: http://www.xyyxt.net/system/BussinessApi/NewYxtLogin
 
 invoice:
@@ -196,6 +196,8 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
 
 ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=

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

@@ -209,6 +209,8 @@ shared:
     rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
     rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
     customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData
+    tenantData: http://www.xyyxt.net/witsystem/bussinessapi/GetOrgList
+    saleData: http://www.xyyxt.net/witsystem/bussinessapi/GetSaleListByOrgId
 
 ZsBank:
     publickey: BNsIe9U0x8IeSe4h/dxUzVEz9pie0hDSfMRINRXc7s1UIXfkExnYECF4QqJ2SnHxLv3z/99gsfDQrQ6dzN5lZj0=

+ 2 - 2
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ToolsUtils.java

@@ -428,9 +428,9 @@ public class ToolsUtils {
     }
 
     public static String getTenantId() {
-        String TenantId = ServletUtils.getRequest().getHeader("TenantId");
+        String TenantId =  ServletUtils.getResponse().getHeader("TenantId");
         if(!StrUtil.isNotBlank(TenantId)||TenantId==null){
-            TenantId = ServletUtils.getResponse().getHeader("TenantId");
+            TenantId = ServletUtils.getRequest().getHeader("TenantId");
         }
         if(Validator.isNotEmpty(TenantId)){
             if(TenantId.equals("undefined")){

+ 1 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.common.utils.http;
 
 import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.http.*;
 import org.apache.http.client.HttpClient;

+ 2 - 2
zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineHandler.java

@@ -54,9 +54,9 @@ public class CustomTenantLineHandler implements TenantLineHandler {
     @SneakyThrows
     @Override
     public Expression getTenantId() {
-        String TenantId = ServletUtils.getRequest().getHeader("TenantId");
+        String TenantId = ServletUtils.getResponse().getHeader("TenantId");
         if(Validator.isEmpty(TenantId)){
-            TenantId = ServletUtils.getResponse().getHeader("TenantId");
+            TenantId = ServletUtils.getRequest().getHeader("TenantId");
             if(enabledTenant){
                 if(Validator.isEmpty(TenantId)){
                     int code = HttpStatus.HTTP_UNAVAILABLE;

+ 16 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -31,7 +31,9 @@ import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
+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.user.bo.UserWxFollowAddBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -164,6 +166,9 @@ public class WxLoginService implements IWxLoginService {
     @Autowired
     private IDistributionSellerService iDistributionSellerService;
 
+    @Autowired
+    private ISysTenantService iSysTenantService;
+
     private final String KEY_PREFIX = "GOODS_SHARE";
 
     public void initData(){
@@ -1216,8 +1221,18 @@ public class WxLoginService implements IWxLoginService {
             }
         }
         JSONObject jsonObject = JSONObject.parseObject(result);
+        if(jsonObject.containsKey("url_link")){
+            return jsonObject.get("url_link").toString();
+        }else{
+            String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+            SysTenant sysTenant = iSysTenantService.getOne(new LambdaQueryWrapper<SysTenant>()
+                    .eq(SysTenant::getTenantId,tenantId).last("limit 1"));
+            if(Validator.isNotEmpty(sysTenant)){
+                return "https://"+sysTenant.getHostH5();
+            }
+            return null;
+        }
 
-        return jsonObject.get("url_link").toString();
     }
 
     @Override

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserAddBo.java

@@ -76,4 +76,7 @@ public class ClassGradeUserAddBo {
     /** 学习记录同步到老系统时间 */
     @ApiModelProperty("学习记录同步到老系统时间")
     private Long toOldTime;
+    /** 七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送 */
+    @ApiModelProperty("七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
+    private Integer sevenPushCheck;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java

@@ -86,4 +86,7 @@ public class ClassGradeUserEditBo {
     /** 学习记录同步到老系统时间 */
     @ApiModelProperty("学习记录同步到老系统时间")
     private Long toOldTime;
+    /** 七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送 */
+    @ApiModelProperty("七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
+    private Integer sevenPushCheck;
 }

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/SevenPushAuthAddBo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.grade.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+
+/**
+ * 学员记录添加对象 class_grade_user
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("学员记录添加对象")
+public class SevenPushAuthAddBo {
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    /** 班级用户ID */
+    @ApiModelProperty("班级用户ID")
+    private Long gradeUserId;
+
+    @ApiModelProperty("推送权限状态 1允许推送 2不允许推送")
+    private Integer pushStatus;
+
+    @ApiModelProperty("失败原因")
+    private String sevenPushReason;
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGradeUser.java

@@ -84,6 +84,9 @@ private static final long serialVersionUID=1L;
     private String toOldResult;
     /** 学习记录同步到老系统时间 */
     private Long toOldTime;
+    /** 七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送 */
+    private Integer sevenPushCheck;
 
+    private String sevenPushReason;
 }
 

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

@@ -95,6 +95,8 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     Long checkFinishRequiredCourse(ClassGradeUserQueryBo bo);
 
+    Long getSevenPeriodStartTime(ClassGradeUserQueryBo bo);
+
     Long getPeriodStartTime(ClassGradeUserQueryBo bo);
 
     Long getPeriodEndTime(ClassGradeUserQueryBo bo);

+ 4 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -142,6 +142,9 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
     List<ClassGradeUser> getClassInfoByUser(Long userId);
 
-
 	List<ClassPeriodStudentVo> listVideoUserPeriod(ClassGradeUserQueryBo bo);
+
+	Boolean sevenPushAuthCallBack(SevenPushAuthAddBo bo);
+
+
 }

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

@@ -47,8 +47,11 @@ import com.zhongzheng.modules.grade.mapper.ClassGradeUserMapper;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.*;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
+import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.domain.OrderInput;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.service.IOrderInputService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
@@ -67,6 +70,7 @@ import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordPhotoService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.*;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,6 +119,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IOrderService iOrderService;
 
+    @Autowired
+    private IOrderInputService iOrderInputService;
+
     @Autowired
     private IOrderGoodsService iOrderGoodsService;
 
@@ -179,6 +186,8 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Value("${officialPush.sevenPeriodPath}")
     private String OFFICIALPUSH_SEVEN_PERIODPATH;
 
+    @Value("${oldSys.host}")
+    private String OLD_SYS_HOST;
 
     @Autowired
     private IUserPeriodService iUserPeriodService;
@@ -619,6 +628,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         CourseBusinessQueryBo queryBo = new CourseBusinessQueryBo();
         queryBo.setId(goods.getBusinessId());
         String fullName = iCourseBusinessService.queryFullName(queryBo);
+        if (Validator.isEmpty(userVo.getRealName()) || Validator.isEmpty(userVo.getIdCard()) || Validator.isEmpty(userVo.getTelPhone())) {
+            return "用户信息缺失";
+        }
+        userVo.setRealName(userVo.getRealName().replaceAll(" ", ""));
         if(fullName.contains("继续教育")&&fullName.contains("施工现场专业人员")){
             return pushSevenOfficialInfo(bo,userVo,orderGoods,goods);
         }
@@ -631,10 +644,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         } else {
             bmrq = userVo.getClassStartTime();
         }
-        if (Validator.isEmpty(userVo.getRealName()) || Validator.isEmpty(userVo.getIdCard()) || Validator.isEmpty(userVo.getTelPhone())) {
-            return "用户信息缺失";
-        }
-        userVo.setRealName(userVo.getRealName().trim());
+
         if(Validator.isNotEmpty(configService.selectConfigByKeyNoCache("office.account"))){
             OFFICIALPUSH_INFOACCOUNT = configService.selectConfigByKeyNoCache("office.account");
             OFFICIALPUSH_TOKEN = configService.selectConfigByKeyNoCache("office.token");
@@ -754,7 +764,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         }
         Major major = iMajorService.getOne(new LambdaQueryWrapper<Major>()
                 .eq(Major::getId, goods.getMajorId()));
-        if("材料员".equals(major.getCategoryName())||"劳务员".equals(major.getCategoryName())||"资料员".equals(major.getCategoryName())){
+        /*if("材料员".equals(major.getCategoryName())||"劳务员".equals(major.getCategoryName())||"资料员".equals(major.getCategoryName())){
             if(userVo.getEduLevel().equals("小学")||userVo.getEduLevel().equals("中学")){
                 userVo.setEduLevel("高中");
             }
@@ -762,6 +772,15 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             if(userVo.getEduLevel().equals("小学")||userVo.getEduLevel().equals("中学")||userVo.getEduLevel().equals("职高")||userVo.getEduLevel().equals("高中")){
                 userVo.setEduLevel("专科");
             }
+        }*/
+        if(userVo.getEduLevel().equals("小学")||userVo.getEduLevel().equals("中学")||userVo.getEduLevel().equals("高中")||userVo.getEduLevel().equals("中职(含技工学校)")){
+            userVo.setEduLevel("中职(含技工学校)");
+        }
+        else if(userVo.getEduLevel().equals("本科")||userVo.getEduLevel().equals("硕士研究生")||userVo.getEduLevel().equals("博士研究生")||userVo.getEduLevel().equals("本科及以上")){
+            userVo.setEduLevel("本科及以上");
+        }
+        else{
+            userVo.setEduLevel("专科(含高职和技师学院)");
         }
         if (Validator.isEmpty(orderGoods.getSevenYear())) {
             return "商品年份缺失";
@@ -773,6 +792,66 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             SEVEN_OFFICIALPUSH_INFOACCOUNT = configService.selectConfigByKeyNoCache("seven.office.account");
             SEVEN_OFFICIALPUSH_TOKEN = configService.selectConfigByKeyNoCache("seven.office.token");
         }
+        String jsonStr = configService.selectConfigByKeyNoCache("home.header");
+        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(authRs==1){
+                    sevenPushAuth = true;
+                }
+            }
+        }
+        if(sevenPushAuth){
+            if(userVo.getSevenPushCheck()==0){
+                Map<String, String> params = new HashMap<>();
+                Long nowTime = DateUtils.getNowTime();
+                String sign = ToolsUtils.EncoderByMd5(userVo.getIdCard()+nowTime.toString());
+                params.put("stamp", nowTime.toString());
+                params.put("sign", sign);
+                params.put("idnum", userVo.getIdCard());
+                params.put("name", userVo.getRealName());
+                params.put("mobile", userVo.getTelPhone());
+                params.put("majorname", major.getCategoryName());
+                params.put("orderno", "");
+                params.put("gradeUserId", userVo.getId().toString());
+                Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>()
+                        .eq(Order::getOrderSn, orderGoods.getOrderSn()));
+                if(Validator.isNotEmpty(order.getInputOrderSn())){
+                    OrderInput orderInput = iOrderInputService.getOne(new LambdaQueryWrapper<OrderInput>()
+                            .eq(OrderInput::getInputOrderSn, order.getInputOrderSn()));
+                    if(Validator.isNotEmpty(orderInput.getOldOrderSn())){
+                        params.put("orderno", orderInput.getOldOrderSn());
+                    }
+                }
+                log.info("七大员权限推送参数"+OLD_SYS_HOST+"/system/BussinessApi/QdyCheckInfo"+ JSON.toJSONString(params));
+                String respone = "";
+                LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                objectLambdaUpdateWrapper.eq(ClassGradeUser::getId, userVo.getId());
+                try {
+                    respone = HttpUtils.postFormBody(OLD_SYS_HOST+"/system/BussinessApi/QdyCheckInfo", params);
+                    log.info("七大员权限推送结果"+ JSON.toJSONString(respone));
+                    if (respone.contains("\"Status\":true")) {
+                        objectLambdaUpdateWrapper.set(ClassGradeUser::getSevenPushCheck, 1);
+                        objectLambdaUpdateWrapper.set(ClassGradeUser::getUpdateTime, DateUtils.getNowTime());
+                        iClassGradeUserService.update(null, objectLambdaUpdateWrapper);
+                        return "等待权限推送";
+                    }else{
+                        throw new CustomException("七大员权限请求错误"+JSON.toJSONString(respone));
+                    }
+                } catch (IOException e) {
+                    throw new CustomException("七大员权限请求错误"+e.getMessage());
+                }
+
+            }
+            else if(userVo.getSevenPushCheck()==1){
+                return "等待权限推送";
+            }
+            else if(userVo.getSevenPushCheck()>=3){
+                return "无权限推送";
+            }
+        }
         Map<String, String> params = new HashMap<>();
         params.put("zh", SEVEN_OFFICIALPUSH_INFOACCOUNT);
         params.put("bh", userVo.getOfficialName());
@@ -864,10 +943,13 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         if (!DateUtils.dateTimeNow(DateUtils.YYYYMMDD).equals(datetimeStr)) {
             throw new CustomException("数据错误");
         }
-        User user = iUserService.getOne(new LambdaQueryWrapper<User>().eq(User::getIdCard, EncryptHandler.encrypt(idCard)).last("limit 1"));
+        User user = iUserService.getByCardNoTenant(idCard);
         if (Validator.isEmpty(user)) {
             throw new CustomException("身份证查无用户");
         }
+        if(Validator.isNotEmpty(user.getTenantId())){
+            ServletUtils.getRequestAttributes().getResponse().setHeader("TenantId", user.getTenantId().toString());
+        }
         String bh = split.get("bh");
         List<ClassGrade> classGradeList = iClassGradeService.list(new LambdaQueryWrapper<ClassGrade>().eq(ClassGrade::getOfficialName, bh));
         if (Validator.isEmpty(classGradeList) || classGradeList.size() == 0) {
@@ -878,6 +960,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         for (ClassGrade classGrade : classGradeList) {
             classGradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>()
                     .eq(ClassGradeUser::getGradeId, classGrade.getGradeId())
+                    .eq(ClassGradeUser::getStatus, 1)
                     .eq(ClassGradeUser::getUserId, user.getUserId()).last("limit 1"));
             if (Validator.isNotEmpty(classGradeUser)) {
                 grade = classGrade;
@@ -905,6 +988,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         studentVo.setGoodsName(goods.getGoodsName());
         studentVo.setFullName(fullName);
         studentVo.setOrderGoodsId(orderGoods.getOrderGoodsId());
+        studentVo.setTenantId(user.getTenantId().toString());
         String userName = "erjian";
         if(fullName.equals("继续教育二级建造师")){
             studentVo.setGradeType(1);
@@ -982,6 +1066,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             LambdaQueryWrapper<ClassGradeUser> lqw = Wrappers.lambdaQuery();
             lqw.eq(ClassGradeUser::getGradeId, classGrade.getGradeId());
             lqw.eq(ClassGradeUser::getUserId,  user.getUserId());
+            lqw.eq(ClassGradeUser::getStatus,  1);
             List<ClassGradeUser> gradeUserList = iClassGradeUserService.list(lqw);
             for (ClassGradeUser gu : gradeUserList) {
                 OrderGoods og = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId, gu.getOrderGoodsId())
@@ -1015,6 +1100,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         studentVo.setGoodsName(goods.getGoodsName());
         studentVo.setFullName(fullName);
         studentVo.setOrderGoodsId(orderGoods.getOrderGoodsId());
+        studentVo.setTenantId(user.getTenantId().toString());
         String userName = "施工继教";
         SysUser sysUser = iSysUserService.getOne(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getUserName, userName).last("limit 1"));
@@ -1070,7 +1156,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             return "用户不存在";
         }
         if(Validator.isNotEmpty(userVo.getRealName())){
-            userVo.setRealName(userVo.getRealName().trim());
+            userVo.setRealName(userVo.getRealName().replaceAll(" ", ""));
         }
         if (Validator.isEmpty(userVo.getInterfacePushId())) {
             return "没开通信息推送";
@@ -1262,6 +1348,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         userQueryBo.setOrderGoodsId(bo.getOrderGoodsId());
         Long startTime = baseMapper.getPeriodStartTime(userQueryBo);
         Long endTime = baseMapper.getPeriodEndTime(userQueryBo);
+        log.info("七大员学时信息推送商品"+ JSONObject.toJSONString(orderGoods));
+        if(orderGoods.getSevenClassCopy()>1){
+            startTime = baseMapper.getSevenPeriodStartTime(userQueryBo);
+        }
 
         Map<String, String> params = new HashMap<>();
         params.put("zh", SEVEN_OFFICIALPUSH_INFOACCOUNT);
@@ -1276,12 +1366,12 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
             params.put("SignMsg", encrypted);
             String respone = "";
-            log.info("学时信息推送参数"+ dataTxt);
+            log.info("七大员学时信息推送参数"+ dataTxt);
             respone = HttpUtils.postFormBody(OFFICIALPUSH_SEVEN_PERIODPATH, params);
             if (Validator.isEmpty(respone)) {
                 return "响应信息空";
             }
-            log.info("学时信息推送参数结果"+ respone);
+            log.info("七大员学时信息推送参数结果"+ respone);
             if(Validator.isEmpty(respone)){
                 return null;
             }
@@ -1776,7 +1866,6 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     }
 
     @Override
-    @DataScope(businessAlias = "cb")
     public List<ClassPeriodStudentVo> listUserPeriod(ClassGradeUserQueryBo bo) {
         //查询班级学员信息
         List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);
@@ -2803,6 +2892,12 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             throw new CustomException("缺少OrderGoodsId");
         }
         OrderGoods og = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId, bo.getOrderGoodsId()));
+        String commonGradeName = null;
+        if(Validator.isNotEmpty(og.getSevenClassCopy())&&og.getSevenClassCopy()>1){
+            OrderGoods copyOg = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId, og.getSevenClassCopy()));
+            ClassGrade classGrade = iClassGradeService.getOne(new LambdaQueryWrapper<ClassGrade>().eq(ClassGrade::getGradeId, copyOg.getGradeId()));
+            commonGradeName = classGrade.getClassName();
+        }
         //查找最外层课程目录 模块 章 节
         List<ClassPeriodVo> classPeriodVos = baseMapper.listPeriodAudit(bo);
         classPeriodVos.addAll(baseMapper.listPeriodAuditSection(bo));
@@ -2818,6 +2913,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             if (classPeriodVo.getType() == 1) {
                 moduleTotal++;
                 CourseModuleVo moduleVo = iCourseModuleService.queryById(classPeriodVo.getId());
+                classPeriodVo.setCommonGradeName(commonGradeName);
                 List<ClassPeriodChapterVo> classPeriodChapterVos = baseMapper.listperiodChapter(classPeriodVo.getId(), bo.getGoodsId(), classPeriodVo.getCourseId(), bo.getUserId(), bo.getGradeId(),bo.getOrderGoodsId());
                 Collections.sort(classPeriodChapterVos);
                 classPeriodChapterVos.addAll(baseMapper.listperiodModuleExam(bo.getGoodsId(), classPeriodVo.getCourseId(), bo.getUserId(), classPeriodVo.getId()));
@@ -3476,6 +3572,25 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return classPeriodStudentVos;
     }
 
+    public Boolean sevenPushAuthCallBack(SevenPushAuthAddBo bo) {
+        if(Validator.isEmpty(bo.getGradeUserId())||Validator.isEmpty(bo.getPushStatus())){
+            throw new CustomException("参数缺失");
+        }
+        ClassGradeUser classGradeUser = getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getId, bo.getGradeUserId()));
+        if(Validator.isEmpty(classGradeUser)){
+            throw new CustomException("数据不存在");
+        }
+        if(classGradeUser.getSevenPushCheck()==0||classGradeUser.getSevenPushCheck()==2){
+            throw new CustomException("无效操作");
+        }
+        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);
+    }
+
 
     /**
      * 实体类转化成视图对象

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

@@ -172,4 +172,8 @@ public class ClassGradeUserVo {
 	@cn.afterturn.easypoi.excel.annotation.Excel(name = "性别1男2女")
 	@ApiModelProperty("性别1男2女")
 	private Integer sex;
+	/** 七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送 */
+	@Excel(name = "七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
+	@ApiModelProperty("七大员信息推送权限状态 0未推送 1已推送旧系统 2允许推送 3不允许推送")
+	private Integer sevenPushCheck;
 }

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

@@ -255,4 +255,6 @@ public class ClassPeriodStudentVo {
 	@ApiModelProperty("专业名")
 	private String categoryName;
 
+	private String tenantId;
+
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodVo.java

@@ -217,10 +217,11 @@ public class ClassPeriodVo implements Comparable<ClassPeriodVo> {
 	private Integer doType;
 	@ApiModelProperty("公共标识:1公共章 0非公共章")
 	private Integer commonSign;
-
 	private Long moduleTotal;
 	private Long chapterTotal;
 	private Long sectionTotal;
+	@ApiModelProperty("复制班级名称")
+	private String commonGradeName;
 	@Override
 	public int compareTo(ClassPeriodVo o) {
 		if(o.getCourseSort()==this.getCourseSort()){

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

@@ -2561,9 +2561,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         //订单总额
         BigDecimal moneyTotal = baseMapper.getMoneyStatisticsWithBo(bo);
         moneyVos.forEach(item -> {
-            if (item.getMoney().compareTo(BigDecimal.ZERO) == 0){
-                return;
-            }
+
             //环比
             Long startTime = bo.getStartTime();
             Long endTime = bo.getEndTime();
@@ -3080,6 +3078,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     break;
             }
         }
+
         if (StringUtils.isNotBlank(bo.getBusinessName())){
             String collect = Arrays.stream(bo.getBusinessName().split("-")).collect(Collectors.joining());
             bo.setBusinessName(collect);

+ 28 - 5
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -33,6 +33,8 @@
         <result property="toOldStatus" column="to_old_status"/>
         <result property="toOldResult" column="to_old_result"/>
         <result property="toOldTime" column="to_old_time"/>
+        <result property="sevenPushCheck" column="seven_push_check"/>
+        <result property="sevenPushReason" column="seven_push_reason"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeUserVo" id="ClassGradeUserVoResult">
@@ -70,6 +72,8 @@
         <result property="sex" column="sex"/>
         <result property="eduLevel" column="edu_level"/>
         <result property="companyName" column="company_name"/>
+        <result property="sevenPushCheck" column="seven_push_check"/>
+        <result property="sevenPushReason" column="seven_push_reason"/>
     </resultMap>
 
 
@@ -440,7 +444,7 @@
         cgu.period_status_num,
         cgu.period_time,
         cgu.order_goods_id,
-        IFNULL(ge.exam_num,0) as exam_num,
+        /*    IFNULL(ge.exam_num,0) as exam_num, */
         <if test="userPhoto != null and userPhoto == 1">
             up.key_value,
         </if>
@@ -461,7 +465,7 @@
         LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = og.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
         LEFT JOIN goods g on og.goods_id = g.goods_id
         LEFT JOIN course_business cb ON g.business_id = cb.id
-        LEFT JOIN (SELECT
+        /*     LEFT JOIN (SELECT
         COUNT( m.id ) AS exam_num,
         c.goods_id
         FROM
@@ -469,7 +473,7 @@
         LEFT JOIN goods_course c ON m.course_id = c.course_id
         where
         m.type in (1,3)
-        GROUP BY c.goods_id ) ge on og.goods_id = ge.goods_id
+        GROUP BY c.goods_id ) ge on og.goods_id = ge.goods_id */
         where 1=1
         and cgu.`status` =1
         <if test="periodPlush != null and periodPlush != ''">
@@ -544,8 +548,6 @@
         <if test="periodEndTime != null and periodEndTime !='' ">
             AND #{periodEndTime} >= cgu.period_time
         </if>
-        <!-- 数据范围过滤 -->
-        ${params.dataScope}
         <if test="periodStatus != 2 and periodStatus != 3">
             order by cgu.update_time desc
         </if>
@@ -1691,6 +1693,27 @@
             )>0
     </select>
 
+    <select id="getSevenPeriodStartTime" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo" resultType="java.lang.Long">
+        SELECT
+        p.create_time
+        FROM
+        user_study_record usr
+        LEFT JOIN user_study_record_photo p ON usr.record_id = p.record_id
+        LEFT JOIN course_module cm ON usr.module_id = cm.module_id
+        WHERE
+        usr.current_status = 1
+        AND usr.user_id = #{userId}
+        AND usr.grade_id = #{gradeId}
+        AND cm.common_sign = 0
+        <if test="orderGoodsId != null and orderGoodsId !='' ">
+            AND usr.order_goods_id = #{orderGoodsId}
+        </if>
+        AND P.create_time IS NOT NULL
+        ORDER BY
+        P.create_time
+        LIMIT 1
+    </select>
+
     <select id="getPeriodStartTime" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo" resultType="java.lang.Long">
         SELECT
             p.create_time

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

@@ -2368,7 +2368,7 @@
     <select id="getStatisticsTenantView" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo"
             resultType="com.zhongzheng.modules.top.order.vo.TopOrderStatisticsTwoVo">
         SELECT
-        COUNT(DISTINCT a.order_id) AS orderNum,
+        COUNT(DISTINCT a.order_sn) AS orderNum,
         SUM(a.money) AS money,
         any_value(a.timeStr) AS orderTime,
         any_value(a.create_username) AS create_username,
@@ -2384,6 +2384,7 @@
         </if>
         FROM (
         SELECT
+        too.order_sn as order_sn,
         too.order_id as order_id,
         too.check_time as timeStr,
         too.order_received - too.order_refunded as money,
@@ -2412,6 +2413,7 @@
         </if>
         UNION ALL
         SELECT
+        o.order_sn as order_sn,
         o.order_id as order_id,
         o.create_time as timeStr,
         og.goods_received as money,
@@ -2455,7 +2457,7 @@
     <select id="getStatisticsBusinessView" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo"
             resultType="com.zhongzheng.modules.top.order.vo.TopOrderStatisticsTwoVo">
         SELECT
-        COUNT(a.order_sn) AS orderNum,
+        COUNT(DISTINCT a.order_sn) AS orderNum,
         SUM(a.money) AS money,
         any_value(a.timeStr) AS orderTime,
         any_value(a.create_username) AS create_username,