he2802 2 年之前
父節點
當前提交
f42ca956ac
共有 100 個文件被更改,包括 4656 次插入919 次删除
  1. 1 1
      Dockerfile
  2. 39 0
      run-dev.sh
  3. 38 2
      run-prod.sh
  4. 4 2
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/AdminSaasApplication.java
  5. 73 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/alioss/OssController.java
  6. 316 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/common/CommonController.java
  7. 71 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseBusinessController.java
  8. 86 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseEducationTypeController.java
  9. 70 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseProjectTypeController.java
  10. 42 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseSubjectController.java
  11. 42 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopMajorController.java
  12. 43 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopSchoolController.java
  13. 85 12
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateController.java
  14. 7 20
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateGoodsController.java
  15. 11 39
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplatePosterController.java
  16. 7 20
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateRelationController.java
  17. 62 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/ReceiveOrderController.java
  18. 114 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostTpController.java
  19. 127 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java
  20. 80 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopOrderRecNoteController.java
  21. 112 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/mall/TopStoreController.java
  22. 105 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderAttachmentController.java
  23. 100 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderCheckLogController.java
  24. 310 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java
  25. 105 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderGoodsController.java
  26. 64 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderBankPayController.java
  27. 87 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  28. 72 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/sdk/TopNuoMplatformLogController.java
  29. 1 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SuperSysLoginController.java
  30. 29 3
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SysTenantController.java
  31. 76 79
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  32. 74 17
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  33. 75 28
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  34. 3 0
      zhongzheng-admin-saas/src/main/resources/application.yml
  35. 2 2
      zhongzheng-admin/src/main/java/com/zhongzheng/ZhongZhengApplication.java
  36. 13 23
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/activity/ActivityRecommendController.java
  37. 38 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java
  38. 239 72
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  39. 34 23
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java
  40. 51 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/CommonDistributionController.java
  41. 84 28
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java
  42. 0 69
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityGoodsController.java
  43. 71 31
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityPosterController.java
  44. 79 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionAdminCashWithdrawalController.java
  45. 55 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashLogController.java
  46. 115 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashWithdrawalController.java
  47. 57 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionLinkController.java
  48. 177 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java
  49. 11 5
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/SellerLoginController.java
  50. 0 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/SellerSmsController.java
  51. 23 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  52. 67 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/monitor/SysOperlogController.java
  53. 2 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderGoodsRefundController.java
  54. 39 4
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  55. 27 4
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysLoginController.java
  56. 3 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysMenuController.java
  57. 5 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysProfileController.java
  58. 14 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysUserController.java
  59. 47 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/SmsController.java
  60. 16 27
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserController.java
  61. 53 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java
  62. 81 82
      zhongzheng-admin/src/main/resources/application-dev.yml
  63. 21 16
      zhongzheng-admin/src/main/resources/application-pre.yml
  64. 24 16
      zhongzheng-admin/src/main/resources/application-prod.yml
  65. 6 3
      zhongzheng-admin/src/main/resources/application-trial.yml
  66. 3 3
      zhongzheng-admin/src/main/resources/application.yml
  67. 二進制
      zhongzheng-admin/src/main/resources/config/1640084970/apiclient_cert.p12
  68. 3 1
      zhongzheng-api/src/main/java/com/zhongzheng/ZhongZhengApiApplication.java
  69. 13 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/alioss/OssController.java
  70. 0 3
      zhongzheng-api/src/main/java/com/zhongzheng/controller/base/LockController.java
  71. 103 7
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java
  72. 27 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java
  73. 7 9
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java
  74. 0 115
      zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java
  75. 9 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  76. 9 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java
  77. 46 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java
  78. 11 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java
  79. 0 8
      zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxPayController.java
  80. 81 82
      zhongzheng-api/src/main/resources/application-dev.yml
  81. 21 16
      zhongzheng-api/src/main/resources/application-pre.yml
  82. 26 18
      zhongzheng-api/src/main/resources/application-prod.yml
  83. 9 3
      zhongzheng-api/src/main/resources/application-trial.yml
  84. 1 1
      zhongzheng-api/src/main/resources/application.yml
  85. 二進制
      zhongzheng-api/src/main/resources/config/1640084970/apiclient_cert.p12
  86. 10 5
      zhongzheng-common/pom.xml
  87. 0 3
      zhongzheng-common/src/main/java/com/zhongzheng/common/constant/Constants.java
  88. 144 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/bo/SysRoleBo.java
  89. 3 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/bo/SysUserEditBo.java
  90. 3 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictData.java
  91. 2 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictType.java
  92. 2 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java
  93. 6 3
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysUser.java
  94. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/TopSysUser.java
  95. 5 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginBody.java
  96. 5 4
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java
  97. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java
  98. 62 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  99. 4 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ServletUtils.java
  100. 54 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/TelPhoneUtils.java

+ 1 - 1
Dockerfile

@@ -5,7 +5,7 @@ ADD zhongzheng-api.jar /app.jar
 # 声明服务运行在8080端口
 EXPOSE 5055
 # 指定docker容器启动时运行jar包
-ENTRYPOINT ["java", "-jar","/app.jar"]
+ENTRYPOINT ["java", "-jar","-Xms2048m", "-Xmx2048m","/app.jar"]
 # 指定维护者的名字
 MAINTAINER zhongZheng
 

+ 39 - 0
run-dev.sh

@@ -70,6 +70,45 @@ docker run \
 -d ${group_admin_name}/${app_admin_name}:${app_admin_version}
 echo '----start container admin----'
 
+echo "开始等待20秒..."
+# 1-10秒内随机
+sleep 5
+echo "等待后继续"
+
+#!/usr/bin/env bash
+# 定义应用组名
+group_admin_name='zhongzheng'
+# 定义应用名称
+app_admin_name='zhongzheng-saas-admin-top'
+# 定义应用版本
+app_admin_version='1.0-SNAPSHOT'
+# 定义应用环境
+profile_active='dev'
+echo '----copy jar admin----'
+docker stop ${app_admin_name}
+echo '----stop container admin----'
+docker rm ${app_admin_name}
+echo '----rm container admin----'
+docker rmi ${group_admin_name}/${app_admin_name}:${app_admin_version}
+echo '----rm image admin----'
+# 打包编译docker镜像
+docker build -f /mydata/maven/build/Dockerfile-saas -t ${group_admin_name}/${app_admin_name}:${app_admin_version} .
+echo '----build image admin----'
+docker run \
+-p 7077:7077 \
+--name ${app_admin_name} \
+--restart=always \
+--link mysql:db \
+-e 'spring.profiles.active'=${profile_active} \
+-e TZ="Asia/Shanghai" \
+--add-host=gdxypx.xy.com:192.168.1.210 \
+-v /etc/localtime:/etc/localtime \
+-v /usr/share/fonts:/usr/share/fonts \
+-v /data/logs/dev_admin:/logs \
+-v /mydata/app/${app_admin_name}/logs:/var/logs \
+-v /data/nginx/conf.d:/data/nginx/conf.d \
+-d ${group_admin_name}/${app_admin_name}:${app_admin_version}
+echo '----start container admin top----'
 
 
 

+ 38 - 2
run-prod.sh

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

+ 4 - 2
zhongzheng-admin-saas/src/main/java/com/zhongzheng/AdminSaasApplication.java

@@ -4,16 +4,18 @@ import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,DruidDataSourceAutoConfigure.class})
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@EnableScheduling
 public class AdminSaasApplication {
 
     public static void main(String[] args)
     {
         System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(AdminSaasApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  超级Admin启动成功   ლ(´ڡ`ლ)゙");
+        System.out.println("(♥◠‿◠)ノ゙  超级Admin启动成功   ლ(´ڡ`ლ)゙"+"超级Admin");
     }
 
 }

+ 73 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/alioss/OssController.java

@@ -0,0 +1,73 @@
+package com.zhongzheng.controller.alioss;
+
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.alioss.bo.OssRequest;
+import com.zhongzheng.modules.alioss.service.OssService;
+import com.zhongzheng.modules.alioss.vo.ResultBean;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 阿里OSS
+ *
+ * @author change
+ * @date 2021-05-17
+ */
+@Api(value = "阿里OSS上传文件控制器", tags = {"阿里OSS上传文件"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/aliyun/oss")
+public class OssController extends BaseController {
+
+    private static Logger log = LoggerFactory.getLogger(OssController.class);
+
+    private final OssService ossService;
+
+    /**
+     * policy获得
+     */
+    @ApiOperation("policy获得")
+    @GetMapping("/policy")
+    public AjaxResult<ResultBean> policy(@Validated OssRequest ossRequest) {
+        ResultBean result = ossService.getPolicy(ossRequest);
+        log.info("服务端生成签名:{}",result);
+        return AjaxResult.success(result);
+    }
+
+    /**
+     * 阿里回调OSS返回参数到前端
+     */
+    @ApiOperation("回调")
+    @PostMapping("/callback")
+    public ResultBean callback(HttpServletRequest request) {
+        ResultBean ossCallbackResult = ossService.callback(request);
+        log.info("oss成功的回调:{}",ossCallbackResult);
+        return ossCallbackResult;
+    }
+
+
+    /**
+     * upload上传文件
+     */
+    @ApiOperation("上传file图片")
+    @PostMapping("/upload")
+    public AjaxResult<String> upload( OssRequest file) throws Exception {
+        String result = ossService.upload(file);
+        log.info("服务端生成签名:{}",result);
+        return AjaxResult.success("返回图片路径",result);
+    }
+
+}

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

@@ -0,0 +1,316 @@
+package com.zhongzheng.controller.common;
+
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.config.RuoYiConfig;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.common.utils.file.FileUtils;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
+import com.zhongzheng.modules.base.bo.ConfigQueryBo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
+import com.zhongzheng.modules.course.bo.CourseTopicGoodsQueryBo;
+import com.zhongzheng.modules.course.service.ICourseService;
+import com.zhongzheng.modules.course.service.ICourseTopicService;
+import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
+import com.zhongzheng.modules.course.vo.CourseUserVo;
+import com.zhongzheng.modules.data.domain.DataWxTpClick;
+import com.zhongzheng.modules.data.service.IDataWxTpClickService;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
+import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
+import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
+import com.zhongzheng.modules.goods.vo.GoodsUserVo;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.order.domain.Printer;
+import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogAddBo;
+import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
+import com.zhongzheng.modules.sdk.service.NuonuoService;
+import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
+import com.zhongzheng.modules.system.service.ISysConfigService;
+import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.top.financial.bo.*;
+import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
+import com.zhongzheng.modules.top.financial.vo.TopOrderRevocationVo;
+import com.zhongzheng.modules.top.financial.vo.TopSellerDiscountVo;
+import com.zhongzheng.modules.top.goods.bo.*;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.PayOrderCallBackBo;
+import com.zhongzheng.modules.wx.bo.WxInfoBo;
+import com.zhongzheng.modules.wx.bo.WxInfoQuery;
+import com.zhongzheng.modules.wx.bo.WxServerBody;
+import com.zhongzheng.modules.wx.domain.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程Controller
+ *
+ * @author hjl
+ * @date 2021-10-09
+ */
+@Api(value = "游客访问接口", tags = {"游客访问接口"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/sys/common/")
+public class CommonController extends BaseController {
+
+    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
+
+    private final ITopNuoMplatformLogService iTopNuoMplatformLogService;
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    /**
+     * 通用下载请求
+     *
+     * @param fileName 文件名称
+     * @param delete   是否删除
+     */
+    @GetMapping("/download")
+    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
+        try {
+            if (!FileUtils.checkAllowDownload(fileName)) {
+                throw new Exception(StrUtil.format("文件名称({})非法,不允许下载。 ", fileName));
+            }
+            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
+            String filePath = RuoYiConfig.getDownloadPath() + fileName;
+
+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+            FileUtils.setAttachmentResponseHeader(response, realFileName);
+            FileUtils.writeBytes(filePath, response.getOutputStream());
+           /* if (delete)
+            {
+                FileUtils.deleteFile(filePath);
+            }*/
+            FileUtils.deleteFile(filePath);
+        } catch (Exception e) {
+            log.error("下载文件失败", e);
+        }
+    }
+
+    /**
+     * 新增诺税通开单记录
+     */
+    @ApiOperation("新增诺税通开单记录")
+    @PreAuthorize("@ss.hasPermi('system:log:add')")
+    @Log(title = "诺税通开单记录", businessType = BusinessType.INSERT)
+    @PostMapping("/openMplatform/log")
+    public AjaxResult<Map<String, String>> add(@RequestBody TopNuoMplatformLogAddBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return AjaxResult.success(iTopNuoMplatformLogService.insertByAddBo(bo));
+    }
+
+    /**
+     * B端订单退款申请
+     */
+    @ApiOperation("B端订单退款申请")
+    @PostMapping("/refund/apply")
+    public AjaxResult<Void> orderRefundApply(@RequestBody TopOrderRefundApplyBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.orderRefundApply(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单新增订单
+     */
+    @ApiOperation("新增订单")
+    @PostMapping("/save/order")
+    public AjaxResult<Void> saveOrder(@RequestBody TopOldOrderAddBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+
+    /**
+     * B端订单回款
+     */
+    @ApiOperation("B端订单回款")
+    @PostMapping("/proceeds")
+    public AjaxResult<Void> orderProceeds(@RequestBody TopOrderProceedsBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.orderProceeds(bo) ? 1 : 0);
+    }
+
+    /**
+     * 新增诺税通开单记录
+     */
+    @ApiOperation("付款企业网银")
+    @PreAuthorize("@ss.hasPermi('system:log:add')")
+    @Log(title = "付款企业网银", businessType = BusinessType.INSERT)
+    @PostMapping("/payToCompany")
+    public AjaxResult<Void> payToCompany(@RequestBody TopOldOrderQueryBo bo) {
+        return toAjax(iTopOldOrderService.payToCompany(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("付款企业网银支付回调")
+    @PreAuthorize("@ss.hasPermi('system:log:add')")
+    @Log(title = "付款企业网银支付回调", businessType = BusinessType.INSERT)
+    @PostMapping("/payToCompanyCallBack")
+    public AjaxResult<Void> payToCompanyCallBack(@RequestBody PayOrderCallBackBo bo) {
+        if(!ToolsUtils.checkSignCwSnFromOldSys(bo.getMainUniqueId(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.payToCompanyCallBack(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单修改
+     */
+    @ApiOperation("B端订单修改")
+    @PostMapping("/edit/order")
+    public AjaxResult<Void> editOrder(@RequestBody TopOldOrderAddBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.editOrder(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单审核修改
+     */
+    @ApiOperation("B端订单审核修改")
+    @PostMapping("/edit/order/check")
+    public AjaxResult<Void> editOrderCheck(@RequestBody TopOldOrderAddBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.editOrderCheck(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单佣金修改
+     */
+    @ApiOperation("B端订单佣金修改")
+    @PostMapping("/edit/order/brokerage")
+    public AjaxResult<Void> editOrderBrokerage(@RequestBody OrderBrokerageBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.editOrderBrokerage(bo) ? 1 : 0);
+    }
+
+    /**
+     * 批量修改订单备注
+     */
+    @ApiOperation("批量修改订单备注")
+    @PostMapping("/update/order/remark")
+    public AjaxResult<Void> updateRemark(@RequestBody TopUpdateRemarkBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.updateRemark(bo) ? 1 : 0);
+    }
+
+    /**
+     * 订单修改(不审核)
+     */
+    @ApiOperation("订单修改(不审核)")
+    @PostMapping("/update/order/info")
+    public AjaxResult<Void> updateOrderInfo(@RequestBody TopOldOrderAddBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.updateOrderInfo(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单审核修改通知
+     */
+    @ApiOperation("B端订单审核修改通知")
+    @PostMapping("/edit/order/remind")
+    public AjaxResult<Void> editOrderRemind(@RequestBody TopOrderRemindBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.editOrderRemind(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单批量完单
+     */
+    @ApiOperation("B端订单批量完单")
+    @PostMapping("/order/finish")
+    public AjaxResult<Void> finishOrder(@RequestBody TopFinishOrderBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return toAjax(iTopOldOrderService.finishOrder(bo) ? 1 : 0);
+    }
+
+    /**
+     * B端订单获取业务员优惠额度
+     */
+    @ApiOperation("B端订单获取业务员优惠额度")
+    @PostMapping("/seller/discount")
+    public AjaxResult<TopSellerDiscountVo> getSellerDiscount(@RequestBody TopSellerDiscountBo bo) {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return AjaxResult.success(iTopOldOrderService.getSellerDiscount(bo));
+    }
+
+    /**
+     * B端订单撤销
+     */
+    @ApiOperation("B端订单撤销")
+    @PostMapping("/order/revocation")
+    public AjaxResult<TopOrderRevocationVo> orderRevocation(@RequestBody TopOrderRevocationBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        return AjaxResult.success(iTopOldOrderService.orderRevocation(bo));
+    }
+
+    /**
+     * B端订单操作历史记录
+     */
+    @ApiOperation("B端订单操作历史记录")
+    @PostMapping("/order/record")
+    public TableDataInfo<TopOrderLogVo> orderRevocation(@RequestBody TopOldOrderQueryBo bo) {
+        if(!ToolsUtils.checkOrderSignFromOldSys(bo.getOrderSn(),bo.getStamp().toString(),bo.getSign())){
+            throw new CustomException("签名错误");
+        }
+        startPage();
+        List<TopOrderLogVo> list = iTopOldOrderService.logList(bo);
+        return getDataTable(list);
+    }
+}

+ 71 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseBusinessController.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.course.bo.CourseBusinessAddBo;
+import com.zhongzheng.modules.course.bo.CourseBusinessEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseBusinessAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseBusinessEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseBusinessQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopCourseBusinessService;
+import com.zhongzheng.modules.top.goods.vo.TopCourseBusinessVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 业务层次Controller
+ *
+ * @author ruoyi
+ * @date 2021-10-08
+ */
+@Api(value = "业务层次控制器", tags = {"业务层次管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/business")
+public class TopCourseBusinessController extends BaseController {
+
+    private final ITopCourseBusinessService iCourseBusinessService;
+
+    /**
+     * 查询业务层次列表
+     */
+    @ApiOperation("查询业务层次列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopCourseBusinessVo> list(TopCourseBusinessQueryBo bo) {
+        startPage();
+        List<TopCourseBusinessVo> list = iCourseBusinessService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增业务层次
+     */
+    @ApiOperation("新增总平台业务层次")
+    @PreAuthorize("@ss.hasPermi('course:business:add')")
+    @Log(title = "业务层次", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopCourseBusinessAddBo bo) {
+        return toAjax(iCourseBusinessService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改业务层次
+     */
+    @ApiOperation("修改总平台业务层次")
+    @PreAuthorize("@ss.hasPermi('course:business:edit')")
+    @Log(title = "业务层次", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopCourseBusinessEditBo bo) {
+        return toAjax(iCourseBusinessService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+}

+ 86 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseEducationTypeController.java

@@ -0,0 +1,86 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.course.bo.CourseEducationTypeAddBo;
+import com.zhongzheng.modules.course.bo.CourseEducationTypeEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseEducationTypeAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseEducationTypeEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseEducationTypeQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopCourseEducationTypeService;
+import com.zhongzheng.modules.top.goods.vo.TopCourseEducationTypeVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 教育类型Controller
+ *
+ * @author ruoyi
+ * @date 2021-10-08
+ */
+@Api(value = "教育类型控制器", tags = {"教育类型管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/educationType")
+public class TopCourseEducationTypeController extends BaseController {
+
+    private final ITopCourseEducationTypeService iCourseEducationTypeService;
+
+    /**
+     * 查询教育类型列表
+     */
+    @ApiOperation("查询教育类型列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopCourseEducationTypeVo> list(TopCourseEducationTypeQueryBo bo) {
+        startPage();
+        List<TopCourseEducationTypeVo> list = iCourseEducationTypeService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询教育类型列表
+     */
+    @ApiOperation("查询所有业务层次列表")
+    @GetMapping("/allList")
+    public TableDataInfo<TopCourseEducationTypeVo> allList(TopCourseEducationTypeQueryBo bo) {
+        startPage();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(1);
+        statusList.add(0);
+        bo.setStatusList(statusList);
+        List<TopCourseEducationTypeVo> list = iCourseEducationTypeService.queryAllList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增教育类型
+     */
+    @ApiOperation("新增总平台教育类型")
+    @PreAuthorize("@ss.hasPermi('course:type:add')")
+    @Log(title = "教育类型", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopCourseEducationTypeAddBo bo) {
+        return toAjax(iCourseEducationTypeService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改教育类型
+     */
+    @ApiOperation("修改总平台教育类型")
+    @PreAuthorize("@ss.hasPermi('course:type:edit')")
+    @Log(title = "教育类型", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopCourseEducationTypeEditBo bo) {
+        return toAjax(iCourseEducationTypeService.updateByEditBo(bo) ? 1 : 0);
+    }
+}

+ 70 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseProjectTypeController.java

@@ -0,0 +1,70 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.course.bo.CourseProjectTypeAddBo;
+import com.zhongzheng.modules.course.bo.CourseProjectTypeEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseProjectTypeAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseProjectTypeEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseProjectTypeQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopCourseProjectTypeService;
+import com.zhongzheng.modules.top.goods.vo.TopCourseProjectTypeVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 项目类型Controller
+ *
+ * @author ruoyi
+ * @date 2021-10-08
+ */
+@Api(value = "项目类型控制器", tags = {"项目类型管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/projectType")
+public class TopCourseProjectTypeController extends BaseController {
+
+    private final ITopCourseProjectTypeService iCourseProjectTypeService;
+
+    /**
+     * 查询项目类型列表
+     */
+    @ApiOperation("查询项目类型列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopCourseProjectTypeVo> list(TopCourseProjectTypeQueryBo bo) {
+        startPage();
+        List<TopCourseProjectTypeVo> list = iCourseProjectTypeService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增项目类型
+     */
+    @ApiOperation("新增总平台项目类型")
+    @PreAuthorize("@ss.hasPermi('course:type:add')")
+    @Log(title = "项目类型", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopCourseProjectTypeAddBo bo) {
+        return toAjax(iCourseProjectTypeService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改项目类型
+     */
+    @ApiOperation("修改总平台项目类型")
+    @PreAuthorize("@ss.hasPermi('course:type:edit')")
+    @Log(title = "项目类型", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopCourseProjectTypeEditBo bo) {
+        return toAjax(iCourseProjectTypeService.updateByEditBo(bo) ? 1 : 0);
+    }
+}

+ 42 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopCourseSubjectController.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.top.goods.bo.TopCourseSubjectQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopCourseSubjectService;
+import com.zhongzheng.modules.top.goods.vo.TopCourseSubjectVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 科目Controller
+ * 
+ * @author ruoyi
+ * @date 2021-10-09
+ */
+@Api(value = "科目控制器", tags = {"科目管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/subject")
+public class TopCourseSubjectController extends BaseController {
+
+    private final ITopCourseSubjectService iCourseSubjectService;
+
+    /**
+     * 查询科目列表
+     */
+    @ApiOperation("查询科目列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopCourseSubjectVo> list(TopCourseSubjectQueryBo bo) {
+        startPage();
+        List<TopCourseSubjectVo> list = iCourseSubjectService.queryList(bo);
+        return getDataTable(list);
+    }
+}

+ 42 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopMajorController.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.top.goods.bo.TopMajorQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopMajorService;
+import com.zhongzheng.modules.top.goods.vo.TopMajorVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 专业Controller
+ * 
+ * @author ruoyi
+ * @date 2021-10-09
+ */
+@Api(value = "专业控制器", tags = {"专业管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/major")
+public class TopMajorController extends BaseController {
+
+    private final ITopMajorService iTopMajorService;
+
+    /**
+     * 查询专业列表
+     */
+    @ApiOperation("查询专业列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopMajorVo> list(TopMajorQueryBo bo) {
+        startPage();
+        List<TopMajorVo> list = iTopMajorService.queryList(bo);
+        return getDataTable(list);
+    }
+}

+ 43 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/course/TopSchoolController.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.top.goods.bo.TopSchoolQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopSchoolService;
+import com.zhongzheng.modules.top.goods.vo.TopSchoolVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 高校Controller
+ * 
+ * @author ruoyi
+ * @date 2021-10-09
+ */
+@Api(value = "高校控制器", tags = {"高校管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/user/school")
+public class TopSchoolController extends BaseController {
+
+    private final ITopSchoolService iTopSchoolService;
+
+    /**
+     * 查询高校列表
+     */
+    @ApiOperation("查询高校列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopSchoolVo> list(TopSchoolQueryBo bo) {
+        startPage();
+        List<TopSchoolVo> list = iTopSchoolService.queryList(bo);
+        return getDataTable(list);
+    }
+
+}

+ 85 - 12
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateController.java

@@ -2,20 +2,22 @@ package com.zhongzheng.controller.distribution;
 
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
 import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateQueryBo;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityTemplateService;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityTemplateVo;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionStatusEditBo;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.top.distribution.bo.*;
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateService;
+import com.zhongzheng.modules.top.distribution.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -32,6 +34,8 @@ public class DistributionActivityTemplateController extends BaseController {
 
     private final IDistributionActivityTemplateService iDistributionActivityTemplateService;
 
+    private final TopTokenService tokenService;
+
     /**
      * 查询【请填写功能名称】列表
      */
@@ -69,6 +73,8 @@ public class DistributionActivityTemplateController extends BaseController {
     @ApiOperation("新增分销活动模板")
     @PostMapping("/save")
     public AjaxResult<Void> add(@RequestBody DistributionActivityTemplateAddBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setCreateTopSysUserId(loginUser.getUser().getUserId());
         return toAjax(iDistributionActivityTemplateService.insertByAddBo(bo) ? 1 : 0);
     }
 
@@ -76,17 +82,84 @@ public class DistributionActivityTemplateController extends BaseController {
      * 修改【请填写功能名称】
      */
     @ApiOperation("修改分销活动模板")
-    @PutMapping("/edit")
+    @PostMapping("/edit")
     public AjaxResult<Void> edit(@RequestBody DistributionActivityTemplateEditBo bo) {
         return toAjax(iDistributionActivityTemplateService.updateByEditBo(bo) ? 1 : 0);
     }
 
     /**
-     * 删除【请填写功能名称】
+     * 启用/禁用
+     */
+    @ApiOperation("启用/禁用")
+    @PostMapping("/update/status")
+    public AjaxResult<Void> updateStatus(@RequestBody DistributionStatusEditBo bo) {
+        return toAjax(iDistributionActivityTemplateService.updateStatus(bo) ? 1 : 0);
+    }
+
+    /**
+     * 活动模板发布
+     */
+    @ApiOperation("活动模板发布")
+    @GetMapping("/publish/{templateId}")
+    public AjaxResult<Void> publishActivity(@PathVariable("templateId") Long templateId) {
+        return toAjax(iDistributionActivityTemplateService.publishActivity(templateId) ? 1 : 0);
+    }
+
+
+    /**
+     * 分销业务员列表
+     */
+    @ApiOperation("分销业务员列表")
+    @GetMapping("/seller/list")
+    public TableDataInfo<DistributionSellerVo> sellerList(DistributionSellerQuery query) {
+        startPage();
+        List<DistributionSellerVo> list = iDistributionActivityTemplateService.sellerList(query);
+        return getDataTable(list);
+    }
+
+    /**
+     * 机构分销排行榜
+     */
+    @ApiOperation("机构分销排行榜")
+    @GetMapping("/sort/notice")
+    public TableDataInfo<TenantSortNoticeVo> getTenantSortNotice(TenantSortNoticeQueryBo bo) {
+        startPage();
+        List<TenantSortNoticeVo> list = iDistributionActivityTemplateService.getTenantSortNotice(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 机构所有分销订单
      */
-    @ApiOperation("删除【请填写功能名称】")
-    @DeleteMapping("/{ids}")
-    public AjaxResult<Void> remove(@PathVariable Long[] ids) {
-        return toAjax(iDistributionActivityTemplateService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    @ApiOperation("机构所有分销订单")
+    @GetMapping("/org/order")
+    public TableDataInfo<TenantOrderVo> getOrgOrder(TenantOrderQueryBo bo) {
+        startPage();
+        List<TenantOrderVo> list = iDistributionActivityTemplateService.getOrgOrder(bo);
+        return getDataTable(list);
     }
+
+    /**
+     * 佣金列表
+     */
+    @ApiOperation("佣金列表")
+    @GetMapping("/cash/list")
+    public TableDataInfo<DistributionCashTopVo> getOrgCashList(DistributionCashTopQueryBo bo) {
+        startPage();
+        List<DistributionCashTopVo> list = iDistributionActivityTemplateService.getOrgCashList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 佣金详情
+     */
+    @ApiOperation("佣金详情")
+    @GetMapping("/cash/detail")
+    public TableDataInfo<TopSellerOrderVo> getOrgCashDetail(TopSellerOrderQueryBo bo) {
+        startPage();
+        List<TopSellerOrderVo> list = iDistributionActivityTemplateService.getOrgCashDetail(bo);
+        return getDataTable(list);
+    }
+
+
 }

+ 7 - 20
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateGoodsController.java

@@ -1,21 +1,18 @@
 package com.zhongzheng.controller.distribution;
 
-import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateGoodsAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateGoodsEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateGoodsQueryBo;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityTemplateGoodsService;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityTemplateGoodsVo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateGoodsAddBo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateGoodsEditBo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateGoodsQueryBo;
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateGoodsService;
+import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplateGoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
@@ -39,7 +36,6 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 查询【请填写功能名称】列表
      */
     @ApiOperation("查询【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:goods:list')")
     @GetMapping("/list")
     public TableDataInfo<DistributionActivityTemplateGoodsVo> list(DistributionActivityTemplateGoodsQueryBo bo) {
         startPage();
@@ -51,8 +47,6 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 导出【请填写功能名称】列表
      */
     @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:goods:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult<DistributionActivityTemplateGoodsVo> export(DistributionActivityTemplateGoodsQueryBo bo) {
         List<DistributionActivityTemplateGoodsVo> list = iDistributionActivityTemplateGoodsService.queryList(bo);
@@ -64,7 +58,6 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 获取【请填写功能名称】详细信息
      */
     @ApiOperation("获取【请填写功能名称】详细信息")
-    @PreAuthorize("@ss.hasPermi('system:goods:query')")
     @GetMapping("/{id}")
     public AjaxResult<DistributionActivityTemplateGoodsVo> getInfo(@PathVariable("id" ) Long id) {
         return AjaxResult.success(iDistributionActivityTemplateGoodsService.queryById(id));
@@ -74,9 +67,7 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 新增【请填写功能名称】
      */
     @ApiOperation("新增【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:add')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
-    @PostMapping()
+    @PostMapping("/save")
     public AjaxResult<Void> add(@RequestBody DistributionActivityTemplateGoodsAddBo bo) {
         return toAjax(iDistributionActivityTemplateGoodsService.insertByAddBo(bo) ? 1 : 0);
     }
@@ -85,9 +76,7 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 修改【请填写功能名称】
      */
     @ApiOperation("修改【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:edit')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
-    @PutMapping()
+    @PostMapping()
     public AjaxResult<Void> edit(@RequestBody DistributionActivityTemplateGoodsEditBo bo) {
         return toAjax(iDistributionActivityTemplateGoodsService.updateByEditBo(bo) ? 1 : 0);
     }
@@ -96,8 +85,6 @@ public class DistributionActivityTemplateGoodsController extends BaseController
      * 删除【请填写功能名称】
      */
     @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public AjaxResult<Void> remove(@PathVariable Long[] ids) {
         return toAjax(iDistributionActivityTemplateGoodsService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);

+ 11 - 39
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplatePosterController.java

@@ -1,28 +1,24 @@
 package com.zhongzheng.controller.distribution;
 
 import cn.hutool.core.bean.BeanUtil;
-import com.zhongzheng.common.annotation.Log;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplatePosterAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplatePosterQueryBo;
-import com.zhongzheng.modules.distribution.bo.distributionActivityTemplatePosterEditBo;
-import com.zhongzheng.modules.distribution.domain.DistributionActivityTemplateImage;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityTemplateImageService;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityTemplatePosterService;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityTemplateImageVo;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityTemplatePosterVo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplatePosterAddBo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplatePosterQueryBo;
+import com.zhongzheng.modules.top.distribution.bo.distributionActivityTemplatePosterEditBo;
+import com.zhongzheng.modules.top.distribution.domain.DistributionActivityTemplateImage;
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateImageService;
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplatePosterService;
+import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplateImageVo;
+import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplatePosterVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -59,29 +55,15 @@ public class DistributionActivityTemplatePosterController extends BaseController
     @ApiOperation("获取海报模板底图列表")
     @GetMapping("/image/list")
     public AjaxResult<List<DistributionActivityTemplateImageVo>> list() {
-        List<DistributionActivityTemplateImage> imageList = iDistributionActivityTemplateImageService.list();
+        List<DistributionActivityTemplateImage> imageList = iDistributionActivityTemplateImageService.list(new LambdaQueryWrapper<DistributionActivityTemplateImage>().eq(DistributionActivityTemplateImage::getStatus,1));
         List<DistributionActivityTemplateImageVo> voList = imageList.stream().map(item -> BeanUtil.toBean(item, DistributionActivityTemplateImageVo.class)).collect(Collectors.toList());
         return AjaxResult.success(voList);
     }
 
-    /**
-     * 导出【请填写功能名称】列表
-     */
-    @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:poster:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult<DistributionActivityTemplatePosterVo> export(DistributionActivityTemplatePosterQueryBo bo) {
-        List<DistributionActivityTemplatePosterVo> list = iDistributionActivityTemplatePosterService.queryList(bo);
-        ExcelUtil<DistributionActivityTemplatePosterVo> util = new ExcelUtil<DistributionActivityTemplatePosterVo>(DistributionActivityTemplatePosterVo.class);
-        return util.exportExcel(list, "【请填写功能名称】");
-    }
-
     /**
      * 获取【请填写功能名称】详细信息
      */
     @ApiOperation("获取海报模板详细信息")
-    @PreAuthorize("@ss.hasPermi('system:poster:query')")
     @GetMapping("/{posterTempId}")
     public AjaxResult<DistributionActivityTemplatePosterVo> getInfo(@PathVariable("posterTempId" ) Long posterTempId) {
         return AjaxResult.success(iDistributionActivityTemplatePosterService.queryById(posterTempId));
@@ -100,19 +82,9 @@ public class DistributionActivityTemplatePosterController extends BaseController
      * 修改【请填写功能名称】
      */
     @ApiOperation("修改海报模板")
-    @PutMapping("/edit")
+    @PostMapping("/edit")
     public AjaxResult<Void> edit(@RequestBody distributionActivityTemplatePosterEditBo bo) {
         return toAjax(iDistributionActivityTemplatePosterService.updateByEditBo(bo) ? 1 : 0);
     }
 
-    /**
-     * 删除【请填写功能名称】
-     */
-    @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:poster:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
-    @DeleteMapping("/{posterTempIds}")
-    public AjaxResult<Void> remove(@PathVariable Long[] posterTempIds) {
-        return toAjax(iDistributionActivityTemplatePosterService.deleteWithValidByIds(Arrays.asList(posterTempIds), true) ? 1 : 0);
-    }
 }

+ 7 - 20
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityTemplateRelationController.java

@@ -1,21 +1,18 @@
 package com.zhongzheng.controller.distribution;
 
-import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateRelationAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateRelationEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityTemplateRelationQueryBo;
-import com.zhongzheng.modules.distribution.service.IDistributionActivityTemplateRelationService;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityTemplateRelationVo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateRelationAddBo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateRelationEditBo;
+import com.zhongzheng.modules.top.distribution.bo.DistributionActivityTemplateRelationQueryBo;
+import com.zhongzheng.modules.top.distribution.service.IDistributionActivityTemplateRelationService;
+import com.zhongzheng.modules.top.distribution.vo.DistributionActivityTemplateRelationVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
@@ -39,7 +36,6 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 查询【请填写功能名称】列表
      */
     @ApiOperation("查询【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:relation:list')")
     @GetMapping("/list")
     public TableDataInfo<DistributionActivityTemplateRelationVo> list(DistributionActivityTemplateRelationQueryBo bo) {
         startPage();
@@ -51,8 +47,6 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 导出【请填写功能名称】列表
      */
     @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:relation:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult<DistributionActivityTemplateRelationVo> export(DistributionActivityTemplateRelationQueryBo bo) {
         List<DistributionActivityTemplateRelationVo> list = iDistributionActivityTemplateRelationService.queryList(bo);
@@ -64,7 +58,6 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 获取【请填写功能名称】详细信息
      */
     @ApiOperation("获取【请填写功能名称】详细信息")
-    @PreAuthorize("@ss.hasPermi('system:relation:query')")
     @GetMapping("/{id}")
     public AjaxResult<DistributionActivityTemplateRelationVo> getInfo(@PathVariable("id" ) Long id) {
         return AjaxResult.success(iDistributionActivityTemplateRelationService.queryById(id));
@@ -74,9 +67,7 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 新增【请填写功能名称】
      */
     @ApiOperation("新增【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:relation:add')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
-    @PostMapping()
+    @PostMapping("/save")
     public AjaxResult<Void> add(@RequestBody DistributionActivityTemplateRelationAddBo bo) {
         return toAjax(iDistributionActivityTemplateRelationService.insertByAddBo(bo) ? 1 : 0);
     }
@@ -85,9 +76,7 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 修改【请填写功能名称】
      */
     @ApiOperation("修改【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:relation:edit')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
-    @PutMapping()
+    @PostMapping()
     public AjaxResult<Void> edit(@RequestBody DistributionActivityTemplateRelationEditBo bo) {
         return toAjax(iDistributionActivityTemplateRelationService.updateByEditBo(bo) ? 1 : 0);
     }
@@ -96,8 +85,6 @@ public class DistributionActivityTemplateRelationController extends BaseControll
      * 删除【请填写功能名称】
      */
     @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:relation:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public AjaxResult<Void> remove(@PathVariable Long[] ids) {
         return toAjax(iDistributionActivityTemplateRelationService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);

+ 62 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/ReceiveOrderController.java

@@ -0,0 +1,62 @@
+package com.zhongzheng.controller.financial;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.grade.vo.SyncUserChapterExport;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpAddBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpEditBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpQueryBo;
+import com.zhongzheng.modules.top.financial.service.ITopCostTpService;
+import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 成本模板Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "应收订单控制器", tags = {"成本模板管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/receive/order")
+public class ReceiveOrderController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+
+    @ApiOperation("应收订单列表")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderVo> list(TopOldOrderQueryBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOldOrderService.queryReceiveList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("应收订单列表导出")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/listExport")
+    public AjaxResult<List<TopOldOrderExportVo>> listExport(TopOldOrderQueryBo bo) {
+        List<TopOldOrderExportVo> list = iTopOldOrderService.queryReceiveListExport(bo);
+        ExcelUtil<TopOldOrderExportVo> util = new ExcelUtil<TopOldOrderExportVo>(TopOldOrderExportVo.class);
+        return util.exportExcel(list, "应收订单列表");
+    }
+
+}

+ 114 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostTpController.java

@@ -0,0 +1,114 @@
+package com.zhongzheng.controller.financial;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+
+
+import com.zhongzheng.modules.top.financial.bo.TopCostTpAddBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpEditBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpQueryBo;
+import com.zhongzheng.modules.top.financial.service.ITopCostTpService;
+import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 成本模板Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "成本模板控制器", tags = {"成本模板管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/financial/tp")
+public class TopCostTpController extends BaseController {
+
+    private final ITopCostTpService iTopCostTpService;
+
+    /**
+     * 查询成本模板列表
+     */
+    @ApiOperation("查询成本模板列表")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopCostTpVo> list(TopCostTpQueryBo bo) {
+        startPage();
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(0);
+        statusList.add(1);
+        bo.setStatusList(statusList);
+        List<TopCostTpVo> list = iTopCostTpService.selectList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取成本模板详细信息
+     */
+    @ApiOperation("获取成本模板详细信息")
+    @PreAuthorize("@ss.hasPermi('system:tp:query')")
+    @GetMapping("/{tpId}")
+    public AjaxResult<TopCostTpVo> getInfo(@PathVariable("tpId" ) Long tpId) {
+        return AjaxResult.success(iTopCostTpService.queryById(tpId));
+    }
+
+    /**
+     * 新增成本模板
+     */
+    @ApiOperation("新增成本模板")
+    @PreAuthorize("@ss.hasPermi('system:tp:add')")
+    @Log(title = "成本模板", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopCostTpAddBo bo) {
+        return toAjax(iTopCostTpService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改成本模板
+     */
+    @ApiOperation("修改成本模板")
+    @PreAuthorize("@ss.hasPermi('system:tp:edit')")
+    @Log(title = "成本模板", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopCostTpEditBo bo) {
+        return toAjax(iTopCostTpService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("修改成本模板默认状态")
+    @PreAuthorize("@ss.hasPermi('system:tp:edit')")
+    @Log(title = "成本模板", businessType = BusinessType.UPDATE)
+    @PostMapping("/editDefaultStatus")
+    public AjaxResult<Void> editDefaultStatus(@RequestBody TopCostTpEditBo bo) {
+        return toAjax(iTopCostTpService.updateDefaultStatus(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("成本模板批量删除")
+    @PreAuthorize("@ss.hasPermi('system:tp:edit')")
+    @Log(title = "成本模板批量删除", businessType = BusinessType.UPDATE)
+    @PostMapping("/deleteBatch")
+    public AjaxResult<Void> deleteBatch(@RequestBody TopCostTpQueryBo bo) {
+        return toAjax(iTopCostTpService.deleteBatch(bo) ? 1 : 0);
+    }
+}

+ 127 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java

@@ -0,0 +1,127 @@
+package com.zhongzheng.controller.financial;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.constant.UserConstants;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideLogEditBo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
+import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
+import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
+import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
+import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderEditBo;
+import com.zhongzheng.modules.top.user.vo.TopSysConfigVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 分成记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-09
+ */
+@Api(value = "分成记录控制器", tags = {"分成记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/divide/log")
+public class TopDivideLogController extends BaseController {
+
+    private final ITopDivideLogService iTopDivideLogService;
+
+    private final ITopDivideOrderService iTopDivideOrderService;
+
+    /**
+     * 查询分成记录列表
+     */
+    @ApiOperation("查询机构分成记录列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/companyList")
+    public TableDataInfo<TopDivideLogVo> getCompanyList(TopDivideLogQueryBo bo) {
+        startPage();
+        List<TopDivideLogVo> list = iTopDivideLogService.getCompanyList(bo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 分成记录修改备注
+     */
+    @ApiOperation("分成记录修改备注")
+    @PostMapping("/updateRemark")
+    public AjaxResult<Void> updateRemark(@RequestBody TopDivideLogEditBo bo) {
+        return toAjax(iTopDivideLogService.updateRemark(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("查询业务员提成列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/sellerList")
+    public TableDataInfo<TopDivideLogVo> getSellerList(TopDivideLogQueryBo bo) {
+        startPage();
+        List<TopDivideLogVo> list = iTopDivideLogService.getSellerList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("查询佣金列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/commissionList")
+    public TableDataInfo<TopDivideLogVo> getCommissionList(TopDivideLogQueryBo bo) {
+        startPage();
+        List<TopDivideLogVo> list = iTopDivideLogService.getCommissionList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("通过坏账配置详情")
+    @GetMapping(value = "/configKey/badBill")
+    public AjaxResult getBadBill()
+    {
+        return AjaxResult.success("配置内容",iTopDivideLogService.getBadBillConfig());
+    }
+
+    @ApiOperation("修改坏账配置")
+    @PostMapping("/updateBadBill")
+    public AjaxResult editBadBill(@Validated @RequestBody List<SysTenantBadBillConfigBo> bo)
+    {
+        return toAjax(iTopDivideLogService.updateBadBillConfig(bo));
+    }
+
+    @ApiOperation("查询月份订单列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/monthOrderList")
+    public AjaxResult<List<TopDivideOrderVo>> getMonthOrderList(TopDivideOrderQueryBo bo) {
+        List<TopDivideOrderVo> list = iTopDivideOrderService.getMonthOrderList(bo);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取分成记录详细信息
+     */
+    @ApiOperation("获取分成记录详细信息")
+    @PreAuthorize("@ss.hasPermi('system:log:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopDivideLogVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopDivideLogService.queryById(id));
+    }
+}

+ 80 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopOrderRecNoteController.java

@@ -0,0 +1,80 @@
+package com.zhongzheng.controller.financial;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.top.order.bo.TopOrderRecNoteAddBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRecNoteEditBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRecNoteQueryBo;
+import com.zhongzheng.modules.top.order.service.ITopOrderRecNoteService;
+import com.zhongzheng.modules.top.order.vo.TopOrderRecNoteVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 订单收款提醒Controller
+ *
+ * @author hjl
+ * @date 2023-04-24
+ */
+@Api(value = "订单收款提醒控制器", tags = {"订单收款提醒管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/receive/order/note")
+public class TopOrderRecNoteController extends BaseController {
+
+    private final ITopOrderRecNoteService iTopOrderRecNoteService;
+
+
+
+    /**
+     * 获取订单收款提醒详细信息
+     */
+    @ApiOperation("获取订单收款提醒详细信息")
+    @PreAuthorize("@ss.hasPermi('system:note:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopOrderRecNoteVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopOrderRecNoteService.queryById(id));
+    }
+
+    /**
+     * 新增订单收款提醒
+     */
+    @ApiOperation("新增订单收款提醒")
+    @PreAuthorize("@ss.hasPermi('system:note:add')")
+    @Log(title = "订单收款提醒", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOrderRecNoteAddBo bo) {
+        return toAjax(iTopOrderRecNoteService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改订单收款提醒
+     */
+    @ApiOperation("修改订单收款提醒")
+    @PreAuthorize("@ss.hasPermi('system:note:edit')")
+    @Log(title = "订单收款提醒", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopOrderRecNoteEditBo bo) {
+        return toAjax(iTopOrderRecNoteService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+
+}

+ 112 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/mall/TopStoreController.java

@@ -0,0 +1,112 @@
+package com.zhongzheng.controller.mall;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.top.mall.bo.TopStoreAddBo;
+import com.zhongzheng.modules.top.mall.bo.TopStoreEditBo;
+import com.zhongzheng.modules.top.mall.bo.TopStoreQueryBo;
+import com.zhongzheng.modules.top.mall.service.ITopStoreService;
+import com.zhongzheng.modules.top.mall.vo.TopStoreVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 商户店铺管理Controller
+ *
+ * @author hjl
+ * @date 2023-05-18
+ */
+@Api(value = "商户店铺管理控制器", tags = {"商户店铺管理管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/mall/store")
+public class TopStoreController extends BaseController {
+
+    private final ITopStoreService iTopStoreService;
+
+    /**
+     * 查询商户店铺管理列表
+     */
+    @ApiOperation("查询商户店铺管理列表")
+    @PreAuthorize("@ss.hasPermi('system:store:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopStoreVo> list(TopStoreQueryBo bo) {
+        startPage();
+        List<TopStoreVo> list = iTopStoreService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出商户店铺管理列表
+     */
+    @ApiOperation("导出商户店铺管理列表")
+    @PreAuthorize("@ss.hasPermi('system:store:export')")
+    @Log(title = "商户店铺管理", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<TopStoreVo> export(TopStoreQueryBo bo) {
+        List<TopStoreVo> list = iTopStoreService.queryList(bo);
+        ExcelUtil<TopStoreVo> util = new ExcelUtil<TopStoreVo>(TopStoreVo.class);
+        return util.exportExcel(list, "商户店铺管理");
+    }
+
+    /**
+     * 获取商户店铺管理详细信息
+     */
+    @ApiOperation("获取商户店铺管理详细信息")
+    @PreAuthorize("@ss.hasPermi('system:store:query')")
+    @GetMapping("/{storeId}")
+    public AjaxResult<TopStoreVo> getInfo(@PathVariable("storeId" ) Long storeId) {
+        return AjaxResult.success(iTopStoreService.queryById(storeId));
+    }
+
+    /**
+     * 新增商户店铺管理
+     */
+    @ApiOperation("新增商户店铺管理")
+    @PreAuthorize("@ss.hasPermi('system:store:add')")
+    @Log(title = "商户店铺管理", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopStoreAddBo bo) {
+        return toAjax(iTopStoreService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改商户店铺管理
+     */
+    @ApiOperation("修改商户店铺管理")
+    @PreAuthorize("@ss.hasPermi('system:store:edit')")
+    @Log(title = "商户店铺管理", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopStoreEditBo bo) {
+        return toAjax(iTopStoreService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除商户店铺管理
+     */
+    @ApiOperation("删除商户店铺管理")
+    @PreAuthorize("@ss.hasPermi('system:store:remove')")
+    @Log(title = "商户店铺管理" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{storeIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] storeIds) {
+        return toAjax(iTopStoreService.deleteWithValidByIds(Arrays.asList(storeIds), true) ? 1 : 0);
+    }
+}

+ 105 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderAttachmentController.java

@@ -0,0 +1,105 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAttachmentAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAttachmentEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAttachmentQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderAttachmentService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderAttachmentVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 订单附件Controller
+ * 
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单附件控制器", tags = {"订单附件管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/order/attachment")
+public class TopOldOrderAttachmentController extends BaseController {
+
+    private final ITopOldOrderAttachmentService iTopOrderAttachmentService;
+
+    /**
+     * 查询订单附件列表
+     */
+    @ApiOperation("查询订单附件列表")
+    @PreAuthorize("@ss.hasPermi('system:attachment:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderAttachmentVo> list(TopOldOrderAttachmentQueryBo bo) {
+        startPage();
+        List<TopOldOrderAttachmentVo> list = iTopOrderAttachmentService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出订单附件列表
+     */
+    @ApiOperation("导出订单附件列表")
+    @PreAuthorize("@ss.hasPermi('system:attachment:export')")
+    @Log(title = "订单附件", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<TopOldOrderAttachmentVo> export(TopOldOrderAttachmentQueryBo bo) {
+        List<TopOldOrderAttachmentVo> list = iTopOrderAttachmentService.queryList(bo);
+        ExcelUtil<TopOldOrderAttachmentVo> util = new ExcelUtil<TopOldOrderAttachmentVo>(TopOldOrderAttachmentVo.class);
+        return util.exportExcel(list, "订单附件");
+    }
+
+    /**
+     * 获取订单附件详细信息
+     */
+    @ApiOperation("获取订单附件详细信息")
+    @PreAuthorize("@ss.hasPermi('system:attachment:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopOldOrderAttachmentVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopOrderAttachmentService.queryById(id));
+    }
+
+    /**
+     * 新增订单附件
+     */
+    @ApiOperation("新增订单附件")
+    @PreAuthorize("@ss.hasPermi('system:attachment:add')")
+    @Log(title = "订单附件", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOldOrderAttachmentAddBo bo) {
+        return toAjax(iTopOrderAttachmentService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改订单附件
+     */
+    @ApiOperation("修改订单附件")
+    @PreAuthorize("@ss.hasPermi('system:attachment:edit')")
+    @Log(title = "订单附件", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody TopOldOrderAttachmentEditBo bo) {
+        return toAjax(iTopOrderAttachmentService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除订单附件
+     */
+    @ApiOperation("删除订单附件")
+    @PreAuthorize("@ss.hasPermi('system:attachment:remove')")
+    @Log(title = "订单附件" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult<Void> remove(@PathVariable Long[] ids) {
+        return toAjax(iTopOrderAttachmentService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+}

+ 100 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderCheckLogController.java

@@ -0,0 +1,100 @@
+package com.zhongzheng.controller.order;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderCheckLogVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 订单退款审核记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-26
+ */
+@Api(value = "订单退款审核记录控制器", tags = {"订单退款审核记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/check/order/log")
+public class TopOldOrderCheckLogController extends BaseController {
+
+    private final ITopOldOrderCheckLogService iTopOldOrderCheckLogService;
+
+    private final TopTokenService tokenService;
+
+    /**
+     * 查询订单退款审核记录列表
+     */
+    @ApiOperation("查询审核记录列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderCheckLogVo> list(TopOldOrderCheckLogQueryBo bo) {
+        startPage();
+        List<TopOldOrderCheckLogVo> list = iTopOldOrderCheckLogService.getCheckList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取订单退款审核记录详细信息
+     */
+    @ApiOperation("获取订单退款审核记录详细信息")
+    @PreAuthorize("@ss.hasPermi('system:log:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopOldOrderCheckLogVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopOldOrderCheckLogService.queryById(id));
+    }
+
+    /**
+     * 新增订单退款审核记录
+     */
+    @ApiOperation("新增订单退款审核记录")
+    @PreAuthorize("@ss.hasPermi('system:log:add')")
+    @Log(title = "订单退款审核记录", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOldOrderCheckLogAddBo bo) {
+        return toAjax(iTopOldOrderCheckLogService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改订单退款审核记录
+     */
+    @ApiOperation("修改订单分成审核记录")
+    @PreAuthorize("@ss.hasPermi('system:log:edit')")
+    @Log(title = "订单退款审核记录", businessType = BusinessType.UPDATE)
+    @PostMapping("/editDivide")
+    public AjaxResult<Void> editDivide(@RequestBody TopOldOrderCheckLogEditBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderCheckLogService.updateDivideByEditBo(bo) ? 1 : 0);
+    }
+
+
+}

+ 310 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java

@@ -0,0 +1,310 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.financial.bo.OrderRefundPayBo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
+import com.zhongzheng.modules.top.financial.vo.OrderRefundPayDetailVo;
+import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
+import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
+import com.zhongzheng.modules.top.goods.bo.*;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.goods.vo.TopOrderStatisticsVo;
+import com.zhongzheng.modules.top.goods.vo.TopRefundOrderDetailVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderCommissionExportVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderCompanyExportVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderSellerExportVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单控制器", tags = {"订单管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order")
+public class TopOldOrderController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    private final TopTokenService tokenService;
+
+    /**
+     * 查询订单列表
+     */
+    @ApiOperation("查询订单列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderVo> list(TopOldOrderQueryBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        startPage();
+        List<TopOldOrderVo> list = iTopOldOrderService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出订单列表
+     */
+    @ApiOperation("导出订单列表")
+    @GetMapping("/export")
+    public AjaxResult<TopOldOrderVo> export(TopOldOrderQueryBo bo) {
+        List<TopOldOrderVo> list = iTopOldOrderService.queryList(bo);
+        ExcelUtil<TopOldOrderVo> util = new ExcelUtil<TopOldOrderVo>(TopOldOrderVo.class);
+        return util.exportExcel(list, "订单");
+    }
+
+    /**
+     * 获取订单详细信息
+     */
+    @ApiOperation("获取订单详细信息")
+    @GetMapping("/{orderSn}")
+    public AjaxResult<TopOldOrderVo> getInfo(@PathVariable("orderSn" ) String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.queryById(orderSn));
+    }
+
+    /**
+     * 获取订单商品信息
+     */
+    @ApiOperation("获取订单商品信息")
+    @GetMapping("/goods/list")
+    public TableDataInfo<TopOldOrderGoodsListVo> getOrderGoodsList(TopOldOrderGoodsQuery query) {
+        startPage();
+        List<TopOldOrderGoodsListVo> list = iTopOldOrderService.getOrderGoodsList(query);
+        return getDataTable(list);
+    }
+
+    /**
+     * 新增订单
+     */
+    @ApiOperation("新增订单")
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOldOrderAddBo bo) {
+        return toAjax(iTopOldOrderService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改订单
+     */
+    @ApiOperation("修改订单")
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopOldOrderEditBo bo) {
+        return toAjax(iTopOldOrderService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 订单审核
+     */
+    @ApiOperation("订单审核")
+    @PostMapping("/check")
+    public AjaxResult<Void> checkOrder(@RequestBody TopOldOrderCheckBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderService.checkOrder(bo) ? 1 : 0);
+    }
+
+    /**
+     * 订单学员审核
+     */
+    @ApiOperation("订单学员审核")
+    @PostMapping("/check/student")
+    public AjaxResult<Void> checkOrderStudent(@RequestBody TopOldOrderCheckBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderService.checkOrderStudent(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("业务员提成列表")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/divSellerList")
+    public TableDataInfo<TopOldOrderVo> divSellerList(TopOldOrderQueryBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOldOrderService.queryDivSellerList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务员提成列表导出")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/sellerListExport")
+    public AjaxResult<List<TopOldOrderSellerExportVo>> sellerListExport(TopDivideLogQueryBo bo) {
+        List<TopOldOrderSellerExportVo> list = iTopOldOrderService.sellerListExport(bo);
+        ExcelUtil<TopOldOrderSellerExportVo> util = new ExcelUtil<TopOldOrderSellerExportVo>(TopOldOrderSellerExportVo.class);
+        return util.exportExcel(list, "机构分成列表");
+    }
+
+    @ApiOperation("佣金结算列表导出")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/commissionListExport")
+    public AjaxResult<List<TopOldOrderSellerExportVo>> commissionListExport(TopDivideLogQueryBo bo) {
+        List<TopOldOrderCommissionExportVo> list = iTopOldOrderService.commissionListExport(bo);
+        ExcelUtil<TopOldOrderCommissionExportVo> util = new ExcelUtil<TopOldOrderCommissionExportVo>(TopOldOrderCommissionExportVo.class);
+        return util.exportExcel(list, "佣金结算列表");
+    }
+
+    @ApiOperation("机构分成列表")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/queryTenantList")
+    public TableDataInfo<TopOldOrderVo> queryTenantList(TopOldOrderQueryBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOldOrderService.queryTenantList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("机构分成列表导出")
+    @PreAuthorize("@ss.hasPermi('system:tp:list')")
+    @GetMapping("/tenantListExport")
+    public AjaxResult<List<TopOldOrderCompanyExportVo>> tenantListExport(TopDivideLogQueryBo bo) {
+        List<TopOldOrderCompanyExportVo> list = iTopOldOrderService.tenantListExport(bo);
+        ExcelUtil<TopOldOrderCompanyExportVo> util = new ExcelUtil<TopOldOrderCompanyExportVo>(TopOldOrderCompanyExportVo.class);
+        return util.exportExcel(list, "机构分成列表");
+    }
+
+    /**
+     * 订单修改备注
+     */
+    @ApiOperation("订单修改备注")
+    @PostMapping("/updateRemark")
+    public AjaxResult<Void> updateRemark(@RequestBody TopOldOrderEditBo bo) {
+        return toAjax(iTopOldOrderService.updateRemark(bo) ? 1 : 0);
+    }
+
+    /**
+     * 订单退款审核详情
+     */
+    @ApiOperation("订单退款审核详情")
+    @GetMapping("/refund/detail/{orderSn}")
+    public AjaxResult<TopRefundOrderDetailVo> refundOrderDetail(@PathVariable("orderSn") String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.refundOrderDetail(orderSn));
+    }
+
+
+    /**
+     * 订单退款审核
+     */
+    @ApiOperation("订单退款审核")
+    @PostMapping("/refund/check")
+    public AjaxResult<Void> refundOrderCheck(@RequestBody TopRefundOrderCheckBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderService.refundOrderCheck(bo) ? 1 : 0);
+    }
+
+    /**
+     * 批量修改订单备注
+     */
+    @ApiOperation("批量修改订单备注")
+    @PostMapping("/update/remark")
+    public AjaxResult<Void> updateRemark(@RequestBody TopUpdateRemarkBo bo) {
+        return toAjax(iTopOldOrderService.updateRemark(bo) ? 1 : 0);
+    }
+
+    /**
+     * 批量完单
+     */
+    @ApiOperation("批量完单")
+    @PostMapping("/finish")
+    public AjaxResult<Void> finishOrder(@RequestBody TopFinishOrderBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderService.finishOrder(bo) ? 1 : 0);
+    }
+
+    /**
+     * 订单统计
+     */
+    @ApiOperation("订单统计")
+    @PostMapping("/statistics")
+    public AjaxResult<TopOrderStatisticsVo> statisticsOrder() {
+        return AjaxResult.success(iTopOldOrderService.statisticsOrder());
+    }
+
+    @ApiOperation("订单应收应付统计")
+    @GetMapping("/countOrderNum")
+    public AjaxResult<Map<String, Object>> countOrderNum(TopOldOrderQueryBo bo) {
+        return AjaxResult.success(iTopOldOrderService.countOrderNum(bo));
+    }
+
+    /**
+     * 订单成本
+     */
+    @ApiOperation("获取订单成本设置")
+    @GetMapping("/cost/{orderSn}")
+    public AjaxResult<TopCostTpVo> getOrderCost(@PathVariable("orderSn") String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderCost(orderSn));
+    }
+
+    /**
+     * 订单成本修改
+     */
+    @ApiOperation("批量订单成本修改")
+    @PostMapping("/update/cost")
+    public AjaxResult<Void> updateOrderCost(@RequestBody TopUpdateCostBo bo) {
+        return toAjax(iTopOldOrderService.updateOrderCost(bo) ? 1 : 0);
+    }
+
+
+    @ApiOperation("订单分成审核详情")
+    @GetMapping("/divide/detail")
+    public AjaxResult<TopOldOrderVo> divideOrderDetail(TopOldOrderCheckLogQueryBo bo) {
+        return AjaxResult.success(iTopOldOrderService.divideOrderDetail(bo));
+    }
+
+    /**
+     * 订单操作记录
+     */
+    @ApiOperation("订单操作记录")
+    @GetMapping("/log")
+    public TableDataInfo<TopOrderLogVo> logList(TopOldOrderQueryBo bo) {
+        startPage();
+        List<TopOrderLogVo> list = iTopOldOrderService.logList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 订单退款支付
+     */
+    @ApiOperation("订单退款支付")
+    @PostMapping("/refund/pay")
+    public AjaxResult<Void> orderRefundPay(@RequestBody OrderRefundPayBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOldOrderService.orderRefundPay(bo) ? 1 : 0);
+    }
+
+    /**
+     * 机构账号信息
+     */
+    @ApiOperation("机构账号信息")
+    @GetMapping("/refund/pay/detail/{orderSn}")
+    public AjaxResult<OrderRefundPayDetailVo> getOrderRefundPayDetail(@PathVariable("orderSn")String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderRefundPayDetail(orderSn));
+    }
+
+}

+ 105 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderGoodsController.java

@@ -0,0 +1,105 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQueryBo;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderGoodsService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 订单商品Controller
+ * 
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单商品控制器", tags = {"订单商品管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/order/goods")
+public class TopOldOrderGoodsController extends BaseController {
+
+    private final ITopOldOrderGoodsService iTopOldOrderGoodsService;
+
+    /**
+     * 查询订单商品列表
+     */
+    @ApiOperation("查询订单商品列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderGoodsVo> list(TopOldOrderGoodsQueryBo bo) {
+        startPage();
+        List<TopOldOrderGoodsVo> list = iTopOldOrderGoodsService.queryList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出订单商品列表
+     */
+    @ApiOperation("导出订单商品列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:export')")
+    @Log(title = "订单商品", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult<TopOldOrderGoodsVo> export(TopOldOrderGoodsQueryBo bo) {
+        List<TopOldOrderGoodsVo> list = iTopOldOrderGoodsService.queryList(bo);
+        ExcelUtil<TopOldOrderGoodsVo> util = new ExcelUtil<TopOldOrderGoodsVo>(TopOldOrderGoodsVo.class);
+        return util.exportExcel(list, "订单商品");
+    }
+
+    /**
+     * 获取订单商品详细信息
+     */
+    @ApiOperation("获取订单商品详细信息")
+    @PreAuthorize("@ss.hasPermi('system:goods:query')")
+    @GetMapping("/{orderGoodsId}")
+    public AjaxResult<TopOldOrderGoodsVo> getInfo(@PathVariable("orderGoodsId" ) Long orderGoodsId) {
+        return AjaxResult.success(iTopOldOrderGoodsService.queryById(orderGoodsId));
+    }
+
+    /**
+     * 新增订单商品
+     */
+    @ApiOperation("新增订单商品")
+    @PreAuthorize("@ss.hasPermi('system:goods:add')")
+    @Log(title = "订单商品", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOldOrderGoodsAddBo bo) {
+        return toAjax(iTopOldOrderGoodsService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改订单商品
+     */
+    @ApiOperation("修改订单商品")
+    @PreAuthorize("@ss.hasPermi('system:goods:edit')")
+    @Log(title = "订单商品", businessType = BusinessType.UPDATE)
+    @PutMapping()
+    public AjaxResult<Void> edit(@RequestBody TopOldOrderGoodsEditBo bo) {
+        return toAjax(iTopOldOrderGoodsService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除订单商品
+     */
+    @ApiOperation("删除订单商品")
+    @PreAuthorize("@ss.hasPermi('system:goods:remove')")
+    @Log(title = "订单商品" , businessType = BusinessType.DELETE)
+    @DeleteMapping("/{orderGoodsIds}")
+    public AjaxResult<Void> remove(@PathVariable Long[] orderGoodsIds) {
+        return toAjax(iTopOldOrderGoodsService.deleteWithValidByIds(Arrays.asList(orderGoodsIds), true) ? 1 : 0);
+    }
+}

+ 64 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderBankPayController.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.controller.order;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.order.bo.TopOrderBankPayAddBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderBankPayEditBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderBankPayQueryBo;
+import com.zhongzheng.modules.top.order.service.ITopOrderBankPayService;
+import com.zhongzheng.modules.top.order.vo.TopOrderBankPayVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 订单网银打款Controller
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Api(value = "订单网银打款控制器", tags = {"订单网银打款管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/order/bank/pay")
+public class TopOrderBankPayController extends BaseController {
+
+    private final ITopOrderBankPayService iTopOrderBankPayService;
+
+    private final TopTokenService tokenService;
+
+    /**
+     * 新增订单网银打款
+     */
+    @ApiOperation("新增订单网银打款")
+    @PreAuthorize("@ss.hasPermi('system:pay:add')")
+    @Log(title = "订单网银打款", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody TopOrderBankPayAddBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        bo.setLoginName(loginUser.getUser().getUserName());
+        return toAjax(iTopOrderBankPayService.payToCompany(bo) ? 1 : 0);
+    }
+
+}

+ 87 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -0,0 +1,87 @@
+package com.zhongzheng.controller.schedule;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.framework.web.service.AsyncService;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.schedule.service.IScheduleService;
+import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
+import com.zhongzheng.modules.top.order.service.ITopOrderRecNoteService;
+import com.zhongzheng.modules.user.bo.UserQueryBo;
+import com.zhongzheng.modules.user.bo.UserWxFollowQueryBo;
+import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 定时任务
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Api(value = "定时任务", tags = {"定时任务管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/sys/common")
+public class ScheduleController extends BaseController {
+
+    private final ITopNuoMplatformLogService iTopNuoMplatformLogService;
+
+    private final ITopOrderRecNoteService iTopOrderRecNoteService;
+
+    private final IScheduleService iScheduleService;
+
+    @ApiOperation("发票开票结果更新")
+    @GetMapping("/distributionRebate")
+    public AjaxResult distributionRebate(UserQueryBo bo){
+        iTopNuoMplatformLogService.updateByBatch();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("重开发票开票")
+    @GetMapping("/reOpenMplatform")
+    public AjaxResult reOpenMplatform(){
+        iTopNuoMplatformLogService.reOpenMplatform();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("催款提醒")
+    @GetMapping("/recTimeNoteBatchPush")
+    public AjaxResult recTimeNoteBatchPush(){
+        iTopOrderRecNoteService.timeNoteBatchPush();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("应收应付机构分成月度账单")
+    @GetMapping("/makeDivideMonthBill")
+    public AjaxResult makeDivideMonthBill(){
+        iScheduleService.makeDivideMonthBill();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("应收应付机构佣金月度账单")
+    @GetMapping("/makeDivideBrokerageMonthBill")
+    public AjaxResult makeDivideBrokerageMonthBill(){
+        iScheduleService.makeDivideBrokerageMonthBill();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("应收应付业务员提成月度账单")
+    @GetMapping("/makeDivideSellerMonthBill")
+    public AjaxResult makeDivideSellerMonthBill(){
+        iScheduleService.makeDivideSellerMonthBill();
+        return AjaxResult.success();
+    }
+}

+ 72 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/sdk/TopNuoMplatformLogController.java

@@ -0,0 +1,72 @@
+package com.zhongzheng.controller.sdk;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.Map;
+
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogAddBo;
+import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogEditBo;
+import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogQueryBo;
+import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
+import com.zhongzheng.modules.sdk.vo.TopNuoMplatformLogVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 诺税通开单记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-18
+ */
+@Api(value = "诺税通开单记录控制器", tags = {"诺税通开单记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/openMplatform/log")
+public class TopNuoMplatformLogController extends BaseController {
+
+    private final ITopNuoMplatformLogService iTopNuoMplatformLogService;
+
+    /**
+     * 查询诺税通开单记录列表
+     */
+    @ApiOperation("查询诺税通开单记录列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/list")
+    public TableDataInfo<TopNuoMplatformLogVo> list(TopNuoMplatformLogQueryBo bo) {
+        startPage();
+        List<TopNuoMplatformLogVo> list = iTopNuoMplatformLogService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取诺税通开单记录详细信息
+     */
+    @ApiOperation("获取诺税通开单记录详细信息")
+    @PreAuthorize("@ss.hasPermi('system:log:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopNuoMplatformLogVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopNuoMplatformLogService.queryById(id));
+    }
+
+
+}

+ 1 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SuperSysLoginController.java

@@ -65,6 +65,7 @@ public class SuperSysLoginController
     public AjaxResult login(@RequestBody LoginBody loginBody)
     {
         AjaxResult ajax = AjaxResult.success();
+
         // 生成令牌
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
                 loginBody.getUuid());

+ 29 - 3
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SysTenantController.java

@@ -3,10 +3,9 @@ package com.zhongzheng.controller.system;
 import java.util.List;
 import java.util.Arrays;
 
-import com.zhongzheng.modules.system.bo.SysTenantAddBo;
-import com.zhongzheng.modules.system.bo.SysTenantEditBo;
-import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
+import com.zhongzheng.modules.system.bo.*;
 import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.system.vo.SysTenantBankAccountVo;
 import com.zhongzheng.modules.system.vo.SysTenantVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -78,6 +77,15 @@ public class SysTenantController extends BaseController {
         return AjaxResult.success(iSysTenantService.queryById(tenantId));
     }
 
+    /**
+     * 获取系统商户银行账号信息
+     */
+    @ApiOperation("获取系统商户银行账号信息")
+    @GetMapping("/bank/{tenantId}")
+    public AjaxResult<List<SysTenantBankAccountVo>> getBankAccountList(@PathVariable("tenantId" ) String tenantId) {
+        return AjaxResult.success(iSysTenantService.getBankAccountList(tenantId));
+    }
+
     /**
      * 新增系统商户
      */
@@ -89,6 +97,15 @@ public class SysTenantController extends BaseController {
         return toAjax(iSysTenantService.insertByAddBo(bo) ? 1 : 0);
     }
 
+    /**
+     * 总平台新增系统商户
+     */
+    @ApiOperation("总平台新增系统商户")
+    @PostMapping("/add")
+    public AjaxResult<Void> addTopTenant(@Validated @RequestBody SysTopTenantAddBo bo) {
+        return toAjax(iSysTenantService.addTopTenant(bo) ? 1 : 0);
+    }
+
     /**
      * 修改系统商户
      */
@@ -100,6 +117,15 @@ public class SysTenantController extends BaseController {
         return toAjax(iSysTenantService.updateByEditBo(bo) ? 1 : 0);
     }
 
+    /**
+     * 总平台修改系统商户
+     */
+    @ApiOperation("总平台修改系统商户")
+    @PostMapping("/edit/top")
+    public AjaxResult<Void> editTopTenant(@RequestBody SysTopTenantEditBo bo) {
+        return toAjax(iSysTenantService.editTopTenant(bo) ? 1 : 0);
+    }
+
     /**
      * 删除系统商户
      */

+ 76 - 79
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -1,85 +1,51 @@
 # 数据源配置
 spring:
     datasource:
-        #配置hikari连接池
-        hikari:
-            minimum-idle: 10
-            maximum-pool-size: 20
-            connection-timeout: 10000
-            idle-timeout: 30000
-            connection-init-sql: set names utf8mb4
-        #动态数据源配置
-        dynamic:
-            primary: master #设置默认的数据源或者数据源组,默认值即为master
-            strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
-            datasource:
-                #数据源
-                master:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-                #数据源
-                slave:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-#    datasource:
-#        type: com.alibaba.druid.pool.DruidDataSource
-#        driverClassName: com.mysql.cj.jdbc.Driver
-#        druid:
-#            # 主库数据源
-#            master:
-#                url: jdbc:mysql://192.168.1.222:3306/zz_edu_sass_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-#                username: root
-#                password:  zhongzheng2021
-#            # 从库数据源
-#            slave:
-#                # 从数据源开关/默认关闭
-#                enabled: true
-#                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-#                username: root
-#                password: zhongzheng2021
-#            # 初始连接数
-#            initialSize: 5
-#            # 最小连接池数量
-#            minIdle: 10
-#            # 最大连接池数量
-#            maxActive: 20
-#            # 配置获取连接等待超时的时间
-#            maxWait: 60000
-#            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-#            timeBetweenEvictionRunsMillis: 60000
-#            # 配置一个连接在池中最小生存的时间,单位是毫秒
-#            minEvictableIdleTimeMillis: 300000
-#            # 配置一个连接在池中最大生存的时间,单位是毫秒
-#            maxEvictableIdleTimeMillis: 900000
-#            # 配置检测连接是否有效
-#            validationQuery: SELECT 1 FROM DUAL
-#            testWhileIdle: true
-#            testOnBorrow: false
-#            testOnReturn: false
-#            webStatFilter:
-#                enabled: true
-#            statViewServlet:
-#                enabled: true
-#                # 设置白名单,不填则允许所有访问
-#                allow:
-#                url-pattern: /druid/*
-#                # 控制台管理用户名和密码
-#                login-username: ruoyi
-#                login-password: 123456
-#            filter:
-#                stat:
-#                    enabled: true
-#                    # 慢SQL记录
-#                    log-slow-sql: true
-#                    slow-sql-millis: 1000
-#                    merge-sql: true
-#                wall:
-#                    config:
-#                        multi-statement-allow: true
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: com.mysql.cj.jdbc.Driver
+        druid:
+            url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: zhongzheng2021
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1 FROM DUAL
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            webStatFilter:
+                enabled: true
+            statViewServlet:
+                enabled: true
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username: ruoyi
+                login-password: 123456
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true
     # redis 配置
     redis:
         # 地址
@@ -166,9 +132,40 @@ oldStudySys:
     educationalInspector: http://192.168.1.210/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
+    salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
     periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: peixunjigou
     token: 0ca175b9c0f726a831d895e26933246
+
+distributionOldPay:
+    host: http://gdxypx.xy.com/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: http://192.168.1.7:9090/course/handouts/save
+    updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: SD39149760
+    APPSecret: 07168A248B2844E0
+
+oldOrder:
+    studyRecord: http://gdxypx.xy.com/WitSystem/BussinessApi/GetStudyRecord
+    orderCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/AuditUnderOrder
+    finishOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CompleteOrder
+    refuseCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/ReFundAuditResult
+    inputOrderSn: http://gdxypx.xy.com/WitSystem/BussinessApi/GetNewYxtinputOrderSn
+    checkOrderStudent: http://gdxypx.xy.com/WitSystem/BussinessApi/ReAuditUnderOrder
+    checkOrderBrokerage: http://gdxypx.xy.com/WitSystem/BussinessApi/CommissionRate
+    refundPay: http://192.168.1.222:5030/common/platform/pay
+    refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
+
+oldSys:
+    host: http://gdxypx.xy.com
+
+invoice:
+    host: http://192.168.1.222:7077/sys/common/openMplatform/log

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

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: zhongzheng2021
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -58,7 +49,7 @@ spring:
     # redis 配置
     redis:
         # 地址
-        host: 192.168.1.222
+        host: 172.18.19.227
         # 端口,默认为6379
         port: 6379
         # 数据库索引
@@ -79,19 +70,85 @@ spring:
                 max-wait: -1ms
 aliyun:
     oss:
-        endpoint: https://file-dev.xyyxt.net # oss对外服务的访问域名
+        endpoint: https://file.xyyxt.net # oss对外服务的访问域名
         accessKeyId: LTAIgC8O2WUXvXuR  # 访问身份验证中用到用户标识
         accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
-        bucketName: zhongzheng-test # oss的存储空间
+        bucketName: zhongzheng-prod # oss的存储空间
         policy:
             expire: 30 # 签名有效期(S)
-        maxSize: 10 # 上传文件大小(M)
-        callback: http://120.79.166.78:19004/aliyun/oss/callback # 文件上传成功后的回调地址
+        maxSize: 100 # 上传文件大小(M)
+        callback: https://cloud.xyyxt.net/aliyun/oss/callback # 文件上传成功后的回调地址
         dir:
             prefix: oss/images/ # 上传文件夹路径前缀 `
+
 poliv:
     token:
         userid: d5f6d309fe
         writetoken: 8f14a371-9d02-4ec1-922d-54d7b4f79dca
         readtoken: f2c397b4-e2a3-46dc-9266-e6a43ac26a35
         secretkey: xpPrYdcbA1
+
+wx:
+    small:
+        appid: wxd3c8ae80cf43a305
+        appsecret: 193a001ebfd46f227008a21e9d13e750
+    gzh:
+        appid: wx6f48f721d18244eb
+        appsecret: 2f8b2b4ff66e2f6adfb9f08ae22d7474
+        studyNoteTpId: DndIixcAp15Sqgb4KOGTMf73VLF09NlCUifPSel5Y_s
+        qdyTpId: s981yq3SyIODNUEXFzVSWn0OYj90E72aKdtKtSp05_E
+        qdySubTpId: gzE6zddD7OzDLUtOO4GfU-KPCxpMqWFhCj86uXExqB8
+        qdySubStatusTpId: 7oKaAHmc4P7jqfonuiM1wnjfNLh9T662Ywm1OAFaUFA
+        qdyExamTpId: 66LitnYp0AIWFclo0rLdyLQP4-_vVc4pM95fyFs6l-c
+        qdyExamStatusTpId: J7nNogGhD38OD20gI-3CzwawfEMu7lOjR8fsi4LgJ5g
+        signatureTpId: 66LitnYp0AIWFclo0rLdyLQP4-_vVc4pM95fyFs6l-c
+    wepay:
+        mchid: 1342013901
+        key: GdXyPxYjZx1234123yJzXgDxYpXyjpx9
+        appsecret: GdXyPxYjZx1234123yJzXgDxYpXyjpx9
+        notifyUrl: https://api.xyyxt.net/wx/pay/callback
+    scanLogin:
+        host: https://m.xyyxt.net/
+
+wisdomExamRoom:
+    mchid: 10001
+    appid: ZZ-YXT-GZ-20220820-0001
+    app_secret: mt70O1s/Xd5LwuH7yHLpj9R+tKUn5j9vTnCvmgBnbJDA11Hpl7+q4lEZliqPAjN+YHPn9bGmHkAbw5XwhhMiYg==
+    host: http://bg.sam457.site:9020
+
+certificate:
+    host: https://m.xyyxt.net/
+
+liveGotoURL: https://
+
+enCodeVersion: release
+
+oldStudySys:
+    syncPath: https://www.xyyxt.net/System/BussinessApi/PostUserStudyRecords
+    sharePath: https://www.xyyxt.net/witsystem/dataapi/SaleOrder
+    shareCanclePath: https://www.xyyxt.net/witsystem/dataapi/ordercance
+    searchGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCount
+    pushGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCountAuto
+    educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
+    classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
+    classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
+
+officialPush:
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoAccount: GDSXY
+    token: 01b5d9833987efdff54483cdc9720da6
+
+distributionOldPay:
+    host: https://www.xyyxt.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 75 - 28
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/test_zz_edu?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: gdxy2021!@#zzjykj
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -77,30 +68,19 @@ spring:
                 max-active: 8
                 # #连接池最大阻塞等待时间(使用负值表示没有限制)
                 max-wait: -1ms
-#aliyun:
-#    oss:
-#        endpoint: https://file.xyyxt.net  # oss对外服务的访问域名
-#        accessKeyId: LTAIgC8O2WUXvXuR  # 访问身份验证中用到用户标识
-#        accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
-#        bucketName: zhongzheng-prod # oss的存储空间
-#        policy:
-#            expire: 30 # 签名有效期(S)
-#        maxSize: 10 # 上传文件大小(M)
-#        callback: https://cloud.xyyxt.net/aliyun/oss/callback # 文件上传成功后的回调地址
-#        dir:
-#            prefix: oss/images/ # 上传文件夹路径前缀 `
 aliyun:
     oss:
-        endpoint: https://file-dev.xyyxt.net # oss对外服务的访问域名
+        endpoint: https://file.xyyxt.net # oss对外服务的访问域名
         accessKeyId: LTAIgC8O2WUXvXuR  # 访问身份验证中用到用户标识
         accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
-        bucketName: zhongzheng-test # oss的存储空间
+        bucketName: zhongzheng-prod # oss的存储空间
         policy:
             expire: 30 # 签名有效期(S)
-        maxSize: 10 # 上传文件大小(M)
-        callback: http://120.79.166.78:7072/aliyun/oss/callback # 文件上传成功后的回调地址
+        maxSize: 100 # 上传文件大小(M)
+        callback: https://cloud.xyyxt.net/aliyun/oss/callback # 文件上传成功后的回调地址
         dir:
             prefix: oss/images/ # 上传文件夹路径前缀 `
+
 poliv:
     token:
         userid: d5f6d309fe
@@ -108,3 +88,70 @@ poliv:
         readtoken: f2c397b4-e2a3-46dc-9266-e6a43ac26a35
         secretkey: xpPrYdcbA1
 
+wx:
+    small:
+        appid: wxd3c8ae80cf43a305
+        appsecret: 193a001ebfd46f227008a21e9d13e750
+    gzh:
+        appid: wx6f48f721d18244eb
+        appsecret: 2f8b2b4ff66e2f6adfb9f08ae22d7474
+        studyNoteTpId: DndIixcAp15Sqgb4KOGTMf73VLF09NlCUifPSel5Y_s
+        qdyTpId: s981yq3SyIODNUEXFzVSWn0OYj90E72aKdtKtSp05_E
+        qdySubTpId: gzE6zddD7OzDLUtOO4GfU-KPCxpMqWFhCj86uXExqB8
+        qdySubStatusTpId: 7oKaAHmc4P7jqfonuiM1wnjfNLh9T662Ywm1OAFaUFA
+        qdyExamTpId: 66LitnYp0AIWFclo0rLdyLQP4-_vVc4pM95fyFs6l-c
+        qdyExamStatusTpId: J7nNogGhD38OD20gI-3CzwawfEMu7lOjR8fsi4LgJ5g
+        signatureTpId: 66LitnYp0AIWFclo0rLdyLQP4-_vVc4pM95fyFs6l-c
+    wepay:
+        mchid: 1342013901
+        key: GdXyPxYjZx1234123yJzXgDxYpXyjpx9
+        appsecret: GdXyPxYjZx1234123yJzXgDxYpXyjpx9
+        notifyUrl: https://api.xyyxt.net/wx/pay/callback
+    scanLogin:
+        host: https://m.xyyxt.net/
+
+wisdomExamRoom:
+    mchid: 10001
+    appid: ZZ-YXT-GZ-20220820-0001
+    app_secret: mt70O1s/Xd5LwuH7yHLpj9R+tKUn5j9vTnCvmgBnbJDA11Hpl7+q4lEZliqPAjN+YHPn9bGmHkAbw5XwhhMiYg==
+    host: http://bg.sam457.site:9020
+
+certificate:
+    host: https://m.xyyxt.net/
+
+liveGotoURL: https://
+
+enCodeVersion: release
+
+oldStudySys:
+    syncPath: https://www.xyyxt.net/System/BussinessApi/PostUserStudyRecords
+    sharePath: https://www.xyyxt.net/witsystem/dataapi/SaleOrder
+    shareCanclePath: https://www.xyyxt.net/witsystem/dataapi/ordercance
+    searchGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCount
+    pushGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCountAuto
+    educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
+    classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
+    classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
+
+officialPush:
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoAccount: GDSXY
+    token: 01b5d9833987efdff54483cdc9720da6
+
+distributionOldPay:
+    host: https://www.xyyxt.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0
+
+oldSys:
+    host: https://www.xyyxt.net

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

@@ -303,3 +303,6 @@ aliyun:
     todayExamNotRecordWarn: SMS_257713140  #学员打卡提醒(每日一练)
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
+
+distributionOldPay:
+      host: http://test.jqbao.net/System/BussinessApi/AddRedPackData

+ 2 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/ZhongZhengApplication.java

@@ -12,13 +12,13 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  * @author zhongzheng
  */
 
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class })
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 @EnableScheduling
 public class ZhongZhengApplication
 {
     public static void main(String[] args)
     {
         SpringApplication.run(ZhongZhengApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  中正启动成功   ლ(´ڡ`ლ)゙");
+        System.out.println("(♥◠‿◠)ノ゙  中正启动成功   ლ(´ڡ`ლ)゙"+"ZSADMIN");
     }
 }

+ 13 - 23
zhongzheng-admin/src/main/java/com/zhongzheng/controller/activity/ActivityRecommendController.java

@@ -1,35 +1,25 @@
 package com.zhongzheng.controller.activity;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Arrays;
-
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendAddBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendEditBo;
-import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsEditBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo;
-import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
 import com.zhongzheng.modules.activity.service.IActivityRecommendService;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
-import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.zhongzheng.common.annotation.Log;
-import com.zhongzheng.common.core.controller.BaseController;
-import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.common.core.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * 商品推荐Controller

+ 38 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -222,6 +222,44 @@ public class QuestionController extends BaseController {
         return AjaxResult.success(rs);
     }
 
+    @Log(title = "题目管理", businessType = BusinessType.IMPORT)
+    @ApiOperation("导入旧系统题目模板返回数组")
+    @PreAuthorize("@ss.hasPermi('system:question:import')")
+    @PostMapping("/importDataBackFromOldList")
+    public AjaxResult<Map<String, Object>> importDataBackFromOldList(MultipartFile file) throws Exception
+    {
+        List<QuestionImportV3> questionList2 =EasyPoiUtil.importExcel(file,0,1,QuestionImportV3.class);
+
+        ExcelUtil<QuestionImportV3> util = new ExcelUtil<QuestionImportV3>(QuestionImportV3.class);
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        String operName = loginUser.getUsername();
+        //只返回数据不插入数据库
+        Map<String, Object> rs = iQuestionService.importExcelQuestionV3NotInBankFromOld(questionList2, false, operName);
+        List<QuestionImportV3> errorList = (List<QuestionImportV3>)rs.get("errorList");
+        List<QuestionAddBo> nqList = (List<QuestionAddBo>)rs.get("questionList");
+        if(Validator.isNotEmpty(errorList)&&errorList.size()>0){
+            List<QuestionImportV3> errorListExport = new ArrayList<>();
+            for(QuestionImportV3 qi : errorList){
+                QuestionImportV3 item = BeanUtil.toBean(qi, QuestionImportV3.class);
+                errorListExport.add(item);
+            }
+            ExcelUtil<QuestionImportV3> util1 = new ExcelUtil<QuestionImportV3>(QuestionImportV3.class);
+            String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            rs.put("errorExcel",util.exportEasyExcel(util1.exportEasyData(errorListExport), "导出错误数据"+timeStr));
+            rs.remove("errorList");
+        }
+        if(errorList.size()>0&&nqList.size()>0){
+            rs.put("fullStatus","部分成功");
+        }
+        else if(errorList.size()==0){
+            rs.put("fullStatus","全部成功");
+        }
+        else{
+            rs.put("fullStatus","失败");
+        }
+        return AjaxResult.success(rs);
+    }
+
     @Log(title = "导入题目Word模板", businessType = BusinessType.IMPORT)
     @ApiOperation("导入题目Word模板")
     @PreAuthorize("@ss.hasPermi('system:question:import')")

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

@@ -1,12 +1,20 @@
 package com.zhongzheng.controller.common;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.config.RuoYiConfig;
 import com.zhongzheng.common.constant.Constants;
+import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUploadUtils;
@@ -14,23 +22,38 @@ import com.zhongzheng.common.utils.file.FileUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.framework.config.ServerConfig;
 import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalPayBo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
+import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.goods.bo.AlikeGoodsBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListBo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsJzsVo;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.goods.vo.UserGoodsListVo;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.IClassGradeService;
 import com.zhongzheng.modules.grade.service.IUserPeriodService;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
+import com.zhongzheng.modules.order.bo.TopOldOrderRefundBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.service.IOrderGoodsRefundService;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.system.bo.SysTenantAdminBo;
+import com.zhongzheng.modules.system.bo.SysTenantAdminOldBo;
+import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
 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.ISysWebService;
 import com.zhongzheng.modules.system.vo.SysTenantVo;
@@ -44,6 +67,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -64,8 +88,7 @@ import java.util.stream.Collectors;
  * @author zhongzheng
  */
 @RestController
-public class CommonController
-{
+public class CommonController extends BaseController {
     private static final Logger log = LoggerFactory.getLogger(CommonController.class);
 
     @Autowired
@@ -87,28 +110,36 @@ public class CommonController
     @Autowired
     private IWxPayService iWxPayService;
     @Autowired
-    private  IClassGradeService iClassGradeService;
+    private IClassGradeService iClassGradeService;
     @Autowired
     private ISysTenantService iSysTenantService;
     @Autowired
     private IUserService iUserService;
     @Autowired
-    private  ITopSysTenantRegisterService iTopSysTenantRegisterService;
+    private ITopSysTenantRegisterService iTopSysTenantRegisterService;
     @Autowired
-    private  ISysWebService webService;
+    private ISysWebService webService;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private IDistributionCashWithdrawalService iDistributionCashWithdrawalService;
+    @Autowired
+    private IDistributionSellerService iDistributionSellerService;
+    @Autowired
+    private IDistributionActivityGoodsService iDistributionActivityGoodsService;
+    @Autowired
+    private IOrderGoodsRefundService iOrderGoodsRefundService;
+
     /**
      * 通用下载请求
      *
      * @param fileName 文件名称
-     * @param delete 是否删除
+     * @param delete   是否删除
      */
     @GetMapping("common/download")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(fileName))
-            {
+    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
+        try {
+            if (!FileUtils.checkAllowDownload(fileName)) {
                 throw new Exception(StrUtil.format("文件名称({})非法,不允许下载。 ", fileName));
             }
             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
@@ -122,9 +153,7 @@ public class CommonController
                 FileUtils.deleteFile(filePath);
             }*/
             FileUtils.deleteFile(filePath);
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("下载文件失败", e);
         }
     }
@@ -133,10 +162,8 @@ public class CommonController
      * 通用上传请求
      */
     @PostMapping("/common/upload")
-    public AjaxResult uploadFile(MultipartFile file) throws Exception
-    {
-        try
-        {
+    public AjaxResult uploadFile(MultipartFile file) throws Exception {
+        try {
             // 上传文件路径
             String filePath = RuoYiConfig.getUploadPath();
             // 上传并返回新文件名称
@@ -146,59 +173,50 @@ public class CommonController
             ajax.put("fileName", fileName);
             ajax.put("url", url);
             return ajax;
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
     }
 
+
     /**
      * 本地资源通用下载
      */
     @GetMapping("/common/download/resource")
     public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
-            throws Exception
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(resource))
-            {
+            throws Exception {
+        try {
+            if (!FileUtils.checkAllowDownload(resource)) {
                 throw new Exception(StrUtil.format("资源文件({})非法,不允许下载。 ", resource));
             }
             // 本地资源路径
             String localPath = RuoYiConfig.getProfile();
             // 数据库资源地址
-            String downloadPath = localPath + StrUtil.subAfter(resource, Constants.RESOURCE_PREFIX,false);
+            String downloadPath = localPath + StrUtil.subAfter(resource, Constants.RESOURCE_PREFIX, false);
             // 下载名称
-            String downloadName = StrUtil.subAfter(downloadPath, "/",true);
+            String downloadName = StrUtil.subAfter(downloadPath, "/", true);
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, downloadName);
             FileUtils.writeBytes(downloadPath, response.getOutputStream());
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("下载文件失败", e);
         }
     }
 
     @ApiOperation("获取继教二建的商品结构列表")
     @GetMapping("common/jzs/goodsList")
-    public AjaxResult<GoodsJzsVo> goodsList()
-    {
+    public AjaxResult<GoodsJzsVo> goodsList() {
         GoodsQueryBo queryBo = new GoodsQueryBo();
         List<SyncGoodsExport> goodsJzsVoList = iGoodsService.selectRjJzsList(queryBo);
         ExcelUtil<SyncGoodsExport> util = new ExcelUtil<SyncGoodsExport>(SyncGoodsExport.class);
-  //      ExcelUtil<SyncGoodsExport> util = new ExcelUtil<>(SyncGoodsExport.class);
+        //      ExcelUtil<SyncGoodsExport> util = new ExcelUtil<>(SyncGoodsExport.class);
         return util.exportEasyExcel(util.exportEasyData(goodsJzsVoList), "继建商品");
     }
 
 
-
     @ApiOperation("测试列表")
     @PostMapping("common/jzs/test")
-    public AjaxResult<Void> testList(@RequestBody UserPeriodEditBo bo)
-    {
+    public AjaxResult<Void> testList(@RequestBody UserPeriodEditBo bo) {
         UserPeriodEditBo queryBo = new UserPeriodEditBo();
         queryBo.setGoodsId(1085L);
         queryBo.setGradeId(978L);
@@ -209,9 +227,8 @@ public class CommonController
 
     @ApiOperation("旧系统打回重审")
     @PostMapping("common/rollback/period")
-    public AjaxResult<Void> rollbackPeriod(@RequestBody RollBackPeriodBo bo)
-    {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+    public AjaxResult<Void> rollbackPeriod(@RequestBody RollBackPeriodBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         UserPeriodEditBo queryBo = new UserPeriodEditBo();
@@ -223,9 +240,8 @@ public class CommonController
 
     @ApiOperation("旧系统获取用户商品信息")
     @PostMapping("common/get/goods")
-    public AjaxResult getUserGoodsList(@RequestBody UserGoodsListBo bo)
-    {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+    public AjaxResult getUserGoodsList(@RequestBody UserGoodsListBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         List<UserGoodsListVo> voList = iGoodsService.getUserGoodsList(bo);
@@ -235,9 +251,8 @@ public class CommonController
 
     @ApiOperation("旧系统获取商品学习中心路径")
     @PostMapping("common/get/goods/studyUrl")
-    public AjaxResult getGoodsStudyUrl(@RequestBody GoodsStudyUrlBo bo)
-    {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+    public AjaxResult getGoodsStudyUrl(@RequestBody GoodsStudyUrlBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         String studyUrl = iGoodsService.getGoodsStudyUrl(bo);
@@ -246,20 +261,19 @@ public class CommonController
 
     @ApiOperation("批量查询官方班级人数")
     @PostMapping("common/free/batch/officialGradeCount")
-    public AjaxResult batchOfficialGradeCount(@RequestBody ClassGradeBatchQueryBo bo)
-    {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+    public AjaxResult batchOfficialGradeCount(@RequestBody ClassGradeBatchQueryBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         String[] list = bo.getOfficialNameStr().split(",");
-        List<Map<String,Object>> numList = new ArrayList<>();
-        for(String officialName : list){
-            Map<String,Object> map = new HashMap<>();
+        List<Map<String, Object>> numList = new ArrayList<>();
+        for (String officialName : list) {
+            Map<String, Object> map = new HashMap<>();
             ClassGradeQueryBo queryBo = new ClassGradeQueryBo();
             queryBo.setOfficialName(officialName);
-            map.put("officialName",officialName);
+            map.put("officialName", officialName);
             Integer num = iClassGradeService.queryOfficialGradeCount(queryBo);
-            map.put("num",num);
+            map.put("num", num);
             numList.add(map);
         }
         return AjaxResult.success(numList);
@@ -268,7 +282,7 @@ public class CommonController
     @ApiOperation("查询官方班级详情")
     @PostMapping("common/free/officialGradeDetail")
     public AjaxResult officialGradeDetail(@RequestBody ClassNpUserInfoBo bo) {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         return AjaxResult.success(iClassGradeService.officialGradeDetail(bo));
@@ -277,7 +291,7 @@ public class CommonController
     @ApiOperation("查询预开班官方班级编号")
     @PostMapping("common/free/officialGrade/num")
     public AjaxResult getOfficialGradeNum(@RequestBody ClassOfficialNumBo bo) {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         return AjaxResult.success(iClassGradeService.getOfficialGradeNum(bo));
@@ -286,7 +300,7 @@ public class CommonController
     @ApiOperation("预报名班级开班")
     @PostMapping("common/free/open/class")
     public AjaxResult openOfficialGrade(@RequestBody ClassGradeOpenBo bo) {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         iClassGradeService.openOfficialGrade(bo);
@@ -295,32 +309,39 @@ public class CommonController
 
     @ApiOperation("测试分班")
     @GetMapping("common/jzs/grade")
-    public AjaxResult<Void> testGrade()
-    {
-     //   iClassGradeService.checkEjjjPeopleNumLimit(195L,984L);
-        iUserService.batchUpdateTelId();
+    public AjaxResult<Void> testGrade() {
+        //   iClassGradeService.checkEjjjPeopleNumLimit(195L,984L);
+        //   iUserService.batchUpdateTelId();
         return AjaxResult.success();
     }
 
 
     @ApiOperation("获取商品分享码")
     @PostMapping("/shareGoodsCode")
-    public AjaxResult getWxSmallAccessToken(@RequestBody WxShareGoodsBo bo)
-    {
+    public AjaxResult getWxSmallAccessToken(@RequestBody WxShareGoodsBo bo) {
         String token = wxLoginService.shareGoodsCode(bo);
         return AjaxResult.success(token);
     }
 
+    @ApiOperation("获取同价格商品")
+    @PostMapping("/common/alike/goods")
+    public AjaxResult getAlikeGoods(@RequestBody AlikeGoodsBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        List<GoodsVo> voList = iGoodsService.getAlikeGoods(bo);
+        return AjaxResult.success(voList);
+    }
+
     @ApiOperation("推送分销商品")
     @PostMapping("/toshareGoods")
-    public AjaxResult toshareGoods(@RequestBody WxShareGoodsBo bo)
-    {
+    public AjaxResult toshareGoods(@RequestBody WxShareGoodsBo bo) {
         String out_trade_no = "22110210122554298238";
         Map<String, Object> map = new HashMap<>();
         map.put("order_sn", out_trade_no);
         List<OrderGoods> goodsList = iOrderGoodsService.listByMap(map);
         Order order = iOrderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, out_trade_no));
-        iWxPayService.shareToOldSys(order,goodsList);
+        iWxPayService.shareToOldSys(order, goodsList);
         return AjaxResult.success();
     }
 
@@ -331,12 +352,51 @@ public class CommonController
         return AjaxResult.success();
     }
 
+    @ApiOperation("创建新机构后台(旧系统)")
+    @PostMapping("common/create/tenant/admin/old")
+    public AjaxResult createTenantAdminOld(@RequestBody SysTenantAdminOldBo bo) {
+        iSysTenantService.createTenantAdminOld(bo);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("同步其他机构角色菜单")
+    @PostMapping("common/update/role")
+    public AjaxResult updateRoleTenant(@RequestBody List<Long> tenantIds) {
+        iSysTenantService.updateRoleTenant(tenantIds);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("同步其他机构字典")
+    @PostMapping("common/update/dict")
+    public AjaxResult updateDictTenant(@RequestBody List<Long> tenantIds) {
+        iSysTenantService.updateDictTenant(tenantIds);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 总平台退款支付
+     */
+    @ApiOperation("总平台退款支付")
+    @PostMapping("/common/platform/pay")
+    public AjaxResult<Void> platformRefundPay(@RequestBody List<TopOldOrderRefundBo> bo) {
+        return toAjax(iOrderGoodsRefundService.platformRefundPay(bo) ? 1 : 0);
+    }
+
+    /**
+     * 总平台退款支付订单处理
+     */
+    @ApiOperation("总平台退款支付订单处理")
+    @PostMapping("/common/platform/pay/handle")
+    public AjaxResult<Void> platformRefundPayHandle(@RequestBody List<OrderGoodsVo> orderGoodsVos) {
+        return toAjax(iOrderGoodsRefundService.handleRefundOrder(orderGoodsVos) ? 1 : 0);
+    }
+
     @ApiOperation("获取企业列表")
     @GetMapping("common/tenant/list")
     public AjaxResult<List<SysTenantVo>> getTenantList() {
         String tenant = ServletUtils.getRequest().getHeader("TenantId");
         List<SysTenant> list = iSysTenantService.list();
-        if (CollectionUtils.isEmpty(list)){
+        if (CollectionUtils.isEmpty(list)) {
             return AjaxResult.success(new ArrayList<>());
         }
         List<SysTenantVo> collect = list.stream().filter(x -> !x.getTenantId().equals(Long.valueOf(tenant)))
@@ -347,16 +407,16 @@ public class CommonController
     @ApiOperation("机构注册开通")
     @PostMapping("common/free/tenant/register")
     public AjaxResult tenantRegister(@RequestBody TopSysTenantRegisterAddBo bo) {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
-        return AjaxResult.success("成功",iTopSysTenantRegisterService.insertByAddBo(bo) ? 1 : 0);
+        return AjaxResult.success("成功", iTopSysTenantRegisterService.insertByAddBo(bo) ? 1 : 0);
     }
 
     @ApiOperation("重启服务restart")
     @PostMapping("common/free/webRestart")
     public AjaxResult<Void> webRestart(@RequestBody ConfigQueryBo bo) {
-        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
         webService.restartWebService();
@@ -369,4 +429,111 @@ public class CommonController
         iTopSysTenantRegisterService.test(new TopSysTenantRegisterAddBo());
         return AjaxResult.success();
     }*/
+
+    @ApiOperation("登录双重验证")
+    @GetMapping("common/free/dual_auth")
+    public AjaxResult<String> dual_auth() {
+        String dualAuth = configService.selectConfigByKey("login.dual.auth");
+        return AjaxResult.success("成功", dualAuth);
+    }
+
+    @ApiOperation("decodeTel加密")
+    @GetMapping("common/free/decodeTel")
+    public AjaxResult<String> decodeTel(String key) {
+        return AjaxResult.success("成功", EncryptHandler.decrypt(key));
+    }
+
+    @ApiOperation("分销打款结果回调")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "打款", businessType = BusinessType.INSERT)
+    @PostMapping("/common/free/payCashCallBack")
+    public AjaxResult payCashCallBack(@RequestBody DistributionCashWithdrawalPayBo bo) {
+        if (!ToolsUtils.checkSignCwSnFromOldSys(bo.getCwSn(), bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        return AjaxResult.success("成功", iDistributionCashWithdrawalService.payCashCallBack(bo) ? 1 : 0);
+    }
+
+    /**
+     * 获取企业ID
+     */
+    @ApiOperation("获取企业ID")
+    @GetMapping("common/free/findTenantId")
+    public AjaxResult<String> findTenantId(SysTenantQueryBo bo) {
+        Long tenantId = iSysTenantService.findTenantId(bo);
+        if (Validator.isNotEmpty(tenantId)) {
+            return AjaxResult.success("成功", tenantId.toString());
+        } else {
+            if (Validator.isNotEmpty(bo.getHostH5()) && bo.getHostH5().equals("120.79.166.78:19012")) {
+                return AjaxResult.success("成功", "867735392558919680");
+            }
+            if (Validator.isNotEmpty(bo.getHostLive()) && bo.getHostLive().equals("120.79.166.78:19012")) {
+                return AjaxResult.success("成功", "867735392558919680");
+            }
+            if (Validator.isNotEmpty(bo.getHostPc()) && bo.getHostPc().equals("120.79.166.78:19012")) {
+                return AjaxResult.success("成功", "867735392558919680");
+            }
+            if (Validator.isNotEmpty(bo.getHostAdmin()) && bo.getHostAdmin().equals("120.79.166.78:19012")) {
+                return AjaxResult.success("成功", "867735392558919680");
+            }
+            if (Validator.isNotEmpty(bo.getHostH5Seller()) && bo.getHostH5Seller().equals("120.79.166.78:19012")) {
+                return AjaxResult.success("成功", "867735392558919680");
+            }
+            return AjaxResult.error(511, "失败", null);
+        }
+    }
+
+    /**
+     * 获取企业ID
+     */
+    @ApiOperation("获取系统配置")
+    @GetMapping("common/free/config")
+    public AjaxResult<Map<String, Object>> findConfig(SysTenantQueryBo bo) {
+        Map<String, Object> map = new HashMap<>();
+        String jsonStr = configService.selectConfigByKey("home.header");
+        JSONObject objectJson = JSON.parseObject(jsonStr);
+        map.put("companyName", String.valueOf(objectJson.get("companyName")));
+        return AjaxResult.success(map);
+    }
+
+    @ApiOperation("获取微信参数")
+    @GetMapping("app/common/wx/config")
+    public AjaxResult<Map<String, Object>> wxConfig() {
+        Map<String, Object> map = new HashMap<>();
+        String smallAppId = configService.selectConfigByKey("wx.small.appid");
+        String gzhAppId = configService.selectConfigByKey("wx.gzh.appid");
+        map.put("smallAppId", smallAppId);
+        map.put("gzhAppId", gzhAppId);
+        return AjaxResult.success(map);
+    }
+
+    @ApiOperation("移动端配置参数")
+    @GetMapping("app/common/mobileConfig")
+    public AjaxResult<Map<String, Object>> mobileConfig(ConfigQueryBo bo) {
+        Map<String, Object> map = new HashMap<>();
+        String json = configService.selectConfigByKey("home.mobile");
+        map.put("mobileConfig", json);
+        return AjaxResult.success(map);
+    }
+
+
+    @ApiOperation("通过分享code查询业务员用户信息")
+    @GetMapping("app/common/distribution/getInfoByShareCode")
+    public AjaxResult<DistributionSellerVo> getInfoByShareCode(String shareCode) {
+        DistributionSellerVo vo = iDistributionSellerService.queryByShareCode(shareCode);
+        vo.setNull();
+        String jsonStr = configService.selectConfigByKey("home.header");
+        JSONObject objectJson = JSON.parseObject(jsonStr);
+        vo.setTenantName(String.valueOf(objectJson.get("companyName")));
+        return AjaxResult.success(vo);
+    }
+
+
+    @ApiOperation("获取分销活动商品列表")
+    @GetMapping("app/common/distribution/getGoodsList")
+    public TableDataInfo<ActivityGoodsPriceVo> distributionGoodsList(DistributionActivityGoodsQueryBo bo) {
+        startPage();
+        List<ActivityGoodsPriceVo> list = iDistributionActivityGoodsService.getGoodsList(bo);
+        return getDataTable(list);
+    }
 }

+ 34 - 23
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java

@@ -1,32 +1,25 @@
 package com.zhongzheng.controller.course;
 
-import java.util.List;
-import java.util.Arrays;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.modules.course.vo.CourseHandoutsVo;
-import com.zhongzheng.modules.course.bo.CourseHandoutsQueryBo;
 import com.zhongzheng.modules.course.bo.CourseHandoutsAddBo;
 import com.zhongzheng.modules.course.bo.CourseHandoutsEditBo;
+import com.zhongzheng.modules.course.bo.CourseHandoutsFileQueryBo;
+import com.zhongzheng.modules.course.bo.CourseHandoutsQueryBo;
+import com.zhongzheng.modules.course.service.ICourseFileService;
 import com.zhongzheng.modules.course.service.ICourseHandoutsService;
-import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.course.vo.CourseHandoutsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 讲义列Controller
@@ -42,6 +35,8 @@ public class CourseHandoutsController extends BaseController {
 
     private final ICourseHandoutsService iCourseHandoutsService;
 
+    private final ICourseFileService iCourseFileService;
+
     /**
      * 查询讲义列列表
      */
@@ -72,9 +67,9 @@ public class CourseHandoutsController extends BaseController {
      */
     @ApiOperation("获取讲义列详细信息")
     @PreAuthorize("@ss.hasPermi('course:handouts:query')")
-    @GetMapping("/{handoutsId}")
-    public AjaxResult<CourseHandoutsVo> getInfo(@PathVariable("handoutsId" ) Long handoutsId) {
-        return AjaxResult.success(iCourseHandoutsService.queryById(handoutsId));
+    @GetMapping("/file/detail")
+    public AjaxResult<CourseHandoutsVo> getInfo(CourseHandoutsFileQueryBo queryBo) {
+        return AjaxResult.success(iCourseHandoutsService.queryById(queryBo));
     }
 
     /**
@@ -88,17 +83,33 @@ public class CourseHandoutsController extends BaseController {
         return toAjax(iCourseHandoutsService.insertByAddBo(bo) ? 1 : 0);
     }
 
+    /**
+     * 新增讲义列
+     */
+    @ApiOperation("新增讲义列")
+    @PostMapping("/save")
+    public AjaxResult<Void> addHandouts(@RequestBody CourseHandoutsAddBo bo) {
+        return toAjax(iCourseFileService.addHandouts(bo) ? 1 : 0);
+    }
+
     /**
      * 修改讲义列
      */
     @ApiOperation("修改讲义列")
-    @PreAuthorize("@ss.hasPermi('course:handouts:edit')")
-    @Log(title = "讲义列", businessType = BusinessType.UPDATE)
     @PostMapping("edit")
     public AjaxResult<Void> edit(@RequestBody CourseHandoutsEditBo bo) {
         return toAjax(iCourseHandoutsService.updateByEditBo(bo) ? 1 : 0);
     }
 
+    /**
+     * 修改讲义列
+     */
+    @ApiOperation("修改讲义列")
+    @PostMapping("edit/handouts")
+    public AjaxResult<Void> editHandouts(@RequestBody CourseHandoutsEditBo bo) {
+        return toAjax(iCourseFileService.editHandouts(bo) ? 1 : 0);
+    }
+
     /**
      * 删除讲义列
      */

+ 51 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/CommonDistributionController.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterService;
+import com.zhongzheng.modules.distribution.vo.SellerWxVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 商品Controller
+ *
+ * @author hjl
+ * @date 2021-10-12
+ */
+@Api(value = "游客商品管理", tags = {"游客商品管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/app/common/distribution")
+public class CommonDistributionController extends BaseController {
+
+    private final IDistributionActivityPosterService iDistributionActivityPosterService;
+
+    private final WxLoginService wxLoginService;
+
+    @ApiOperation("获取分享页面参数")
+    @PreAuthorize("@ss.hasPermi('system:poster:query')")
+    @GetMapping("/sharePoster")
+    public AjaxResult<Map<String,Object>> sharePoster(DistributionActivityPosterQueryBo bo) {
+
+        return AjaxResult.success("成功",iDistributionActivityPosterService.sharePoster(bo));
+    }
+
+    @ApiOperation("获取公众号openid")
+    @GetMapping("/gzh_openid")
+    public AjaxResult<SellerWxVo> gzh_openid(@RequestParam("code") String code) {
+        return AjaxResult.success("成功",wxLoginService.getGzhOpenId(code));
+    }
+
+}

+ 84 - 28
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityController.java

@@ -1,45 +1,43 @@
 package com.zhongzheng.controller.distribution;
 
-import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionActivityQueryBo;
+import com.zhongzheng.modules.distribution.bo.*;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
-import com.zhongzheng.modules.distribution.vo.DistributionActivityVo;
-import com.zhongzheng.system.bo.DistributionActivityAddBo;
+import com.zhongzheng.modules.distribution.vo.*;
+import com.zhongzheng.modules.distribution.bo.DistributionOrderQueryBo;
+import com.zhongzheng.modules.distribution.vo.DistributionOrderVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
  * 【请填写功能名称】Controller
- * 
+ *
  * @author ruoyi
  * @date 2023-03-06
  */
-@Api(value = "【请填写功能名称】控制器", tags = {"【请填写功能名称】管理"})
+@Api(value = "分销活动控制器", tags = {"分销活动管理"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
-@RequestMapping("/system/activity")
+@RequestMapping("/distribution/activity")
 public class DistributionActivityController extends BaseController {
 
     private final IDistributionActivityService iDistributionActivityService;
 
+    private final IDistributionActivityGoodsService iDistributionActivityGoodsService;
     /**
      * 查询【请填写功能名称】列表
      */
     @ApiOperation("查询【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:activity:list')")
     @GetMapping("/list")
     public TableDataInfo<DistributionActivityVo> list(DistributionActivityQueryBo bo) {
         startPage();
@@ -51,8 +49,6 @@ public class DistributionActivityController extends BaseController {
      * 导出【请填写功能名称】列表
      */
     @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:activity:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult<DistributionActivityVo> export(DistributionActivityQueryBo bo) {
         List<DistributionActivityVo> list = iDistributionActivityService.queryList(bo);
@@ -64,7 +60,6 @@ public class DistributionActivityController extends BaseController {
      * 获取【请填写功能名称】详细信息
      */
     @ApiOperation("获取【请填写功能名称】详细信息")
-    @PreAuthorize("@ss.hasPermi('system:activity:query')")
     @GetMapping("/{distributionId}")
     public AjaxResult<DistributionActivityVo> getInfo(@PathVariable("distributionId" ) Long distributionId) {
         return AjaxResult.success(iDistributionActivityService.queryById(distributionId));
@@ -74,10 +69,9 @@ public class DistributionActivityController extends BaseController {
      * 新增【请填写功能名称】
      */
     @ApiOperation("新增【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:activity:add')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
-    @PostMapping()
+    @PostMapping("/save")
     public AjaxResult<Void> add(@RequestBody DistributionActivityAddBo bo) {
+        bo.setCreateBy(SecurityUtils.getUsername());
         return toAjax(iDistributionActivityService.insertByAddBo(bo) ? 1 : 0);
     }
 
@@ -85,21 +79,83 @@ public class DistributionActivityController extends BaseController {
      * 修改【请填写功能名称】
      */
     @ApiOperation("修改【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:activity:edit')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
-    @PutMapping()
+    @PostMapping("/edit")
     public AjaxResult<Void> edit(@RequestBody DistributionActivityEditBo bo) {
         return toAjax(iDistributionActivityService.updateByEditBo(bo) ? 1 : 0);
     }
 
     /**
-     * 删除【请填写功能名称】
+     * 启用/禁用分销活动
      */
-    @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:activity:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
-    @DeleteMapping("/{distributionIds}")
-    public AjaxResult<Void> remove(@PathVariable Long[] distributionIds) {
-        return toAjax(iDistributionActivityService.deleteWithValidByIds(Arrays.asList(distributionIds), true) ? 1 : 0);
+    @ApiOperation("启用/禁用分销活动")
+    @PostMapping("/edit/status")
+    public AjaxResult<Void> editStatus(@RequestBody DistributionStatusEditBo bo) {
+        return toAjax(iDistributionActivityService.editStatus(bo) ? 1 : 0);
     }
+
+    /**
+     * 拉取商品信息
+     */
+    @ApiOperation("拉取商品信息")
+    @GetMapping("/pull/goods/{distributionId}")
+    public AjaxResult<Void> pullGoods(@PathVariable("distributionId") Long distributionId) {
+        return toAjax(iDistributionActivityService.pullGoods(distributionId) ? 1 : 0);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @ApiOperation("查询活动详情商品列表")
+    @GetMapping("/goodsList")
+    public TableDataInfo<DistributionActivityGoodsVo> getDetailGoodsList(DistributionActivityGoodsQueryBo bo) {
+        startPage();
+        List<DistributionActivityGoodsVo> list = iDistributionActivityGoodsService.getDetailGoodsList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询业务员分销排行榜
+     */
+    @ApiOperation("查询业务员分销排行榜")
+    @GetMapping("/seller/sort/notice")
+    public TableDataInfo<SellerSortNoticeVo> getSellerSortNotice(SellerSortNoticeQueryBo bo) {
+        startPage();
+        List<SellerSortNoticeVo> list = iDistributionActivityGoodsService.getSellerSortNotice(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 业务员所有分销订单
+     */
+    @ApiOperation("业务员所有分销订单")
+    @GetMapping("/seller/order")
+    public TableDataInfo<SellerOrderVo> getSellerOrder(SellerOrderQueryBo bo) {
+        startPage();
+        List<SellerOrderVo> list = iDistributionActivityService.getSellerOrder(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 佣金列表
+     */
+    @ApiOperation("佣金列表")
+    @GetMapping("/cash/list")
+    public TableDataInfo<DistributionCashVo> getCashList(DistributionCashQueryBo bo) {
+        startPage();
+        List<DistributionCashVo> list = iDistributionActivityService.getCashList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 分销订单列表
+     */
+    @ApiOperation("分销订单列表")
+    @GetMapping("/order/list")
+    public TableDataInfo<DistributionOrderVo> getOrderList(DistributionOrderQueryBo bo) {
+        startPage();
+        List<DistributionOrderVo> list = iDistributionActivityService.getOrderList(bo);
+        return getDataTable(list);
+    }
+
+
 }

+ 0 - 69
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityGoodsController.java

@@ -33,73 +33,4 @@ import java.util.List;
 @RequestMapping("/system/goods")
 public class DistributionActivityGoodsController extends BaseController {
 
-    private final IDistributionActivityGoodsService iDistributionActivityGoodsService;
-
-    /**
-     * 查询【请填写功能名称】列表
-     */
-    @ApiOperation("查询【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:goods:list')")
-    @GetMapping("/list")
-    public TableDataInfo<DistributionActivityGoodsVo> list(DistributionActivityGoodsQueryBo bo) {
-        startPage();
-        List<DistributionActivityGoodsVo> list = iDistributionActivityGoodsService.queryList(bo);
-        return getDataTable(list);
-    }
-
-    /**
-     * 导出【请填写功能名称】列表
-     */
-    @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:goods:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult<DistributionActivityGoodsVo> export(DistributionActivityGoodsQueryBo bo) {
-        List<DistributionActivityGoodsVo> list = iDistributionActivityGoodsService.queryList(bo);
-        ExcelUtil<DistributionActivityGoodsVo> util = new ExcelUtil<DistributionActivityGoodsVo>(DistributionActivityGoodsVo.class);
-        return util.exportExcel(list, "【请填写功能名称】");
-    }
-
-    /**
-     * 获取【请填写功能名称】详细信息
-     */
-    @ApiOperation("获取【请填写功能名称】详细信息")
-    @PreAuthorize("@ss.hasPermi('system:goods:query')")
-    @GetMapping("/{id}")
-    public AjaxResult<DistributionActivityGoodsVo> getInfo(@PathVariable("id" ) Long id) {
-        return AjaxResult.success(iDistributionActivityGoodsService.queryById(id));
-    }
-
-    /**
-     * 新增【请填写功能名称】
-     */
-    @ApiOperation("新增【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:add')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
-    @PostMapping()
-    public AjaxResult<Void> add(@RequestBody DistributionActivityGoodsAddBo bo) {
-        return toAjax(iDistributionActivityGoodsService.insertByAddBo(bo) ? 1 : 0);
-    }
-
-    /**
-     * 修改【请填写功能名称】
-     */
-    @ApiOperation("修改【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:edit')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
-    @PutMapping()
-    public AjaxResult<Void> edit(@RequestBody DistributionActivityGoodsEditBo bo) {
-        return toAjax(iDistributionActivityGoodsService.updateByEditBo(bo) ? 1 : 0);
-    }
-
-    /**
-     * 删除【请填写功能名称】
-     */
-    @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:goods:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
-    public AjaxResult<Void> remove(@PathVariable Long[] ids) {
-        return toAjax(iDistributionActivityGoodsService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
-    }
 }

+ 71 - 31
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionActivityPosterController.java

@@ -1,16 +1,25 @@
 package com.zhongzheng.controller.distribution;
 
-import com.zhongzheng.common.annotation.Log;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.framework.web.service.TokenService;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterAddBo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterEditBo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.domain.DistributionActivityImage;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityImageService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityPosterService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.distribution.vo.DistributionActivityImageVo;
 import com.zhongzheng.modules.distribution.vo.DistributionActivityPosterVo;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.user.entity.ClientLoginSeller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -18,28 +27,34 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 【请填写功能名称】Controller
- * 
+ *
  * @author ruoyi
  * @date 2023-03-06
  */
-@Api(value = "【请填写功能名称】控制器", tags = {"【请填写功能名称】管理"})
+@Api(value = "分销活动海报控制器", tags = {"分销活动海报控制器管理"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
-@RequestMapping("/system/poster")
+@RequestMapping("/distribution/poster")
 public class DistributionActivityPosterController extends BaseController {
 
     private final IDistributionActivityPosterService iDistributionActivityPosterService;
 
+    private final IDistributionActivityImageService iDistributionImageService;
+
+    private final TokenService tokenService;
+
+    private final IDistributionSellerService iDistributionSellerService;
     /**
-     * 查询【请填写功能名称】列表
+     * 查询海报列表
      */
-    @ApiOperation("查询【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:poster:list')")
+    @ApiOperation("查询海报列表")
     @GetMapping("/list")
     public TableDataInfo<DistributionActivityPosterVo> list(DistributionActivityPosterQueryBo bo) {
         startPage();
@@ -47,12 +62,21 @@ public class DistributionActivityPosterController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 获取底图列表
+     */
+    @ApiOperation("获取海报底图列表")
+    @GetMapping("/image/list")
+    public AjaxResult<List<DistributionActivityImageVo>> list() {
+        List<DistributionActivityImage> imageList = iDistributionImageService.list(new LambdaQueryWrapper<DistributionActivityImage>().eq(DistributionActivityImage::getStatus,1));
+        List<DistributionActivityImageVo> voList = imageList.stream().map(item -> BeanUtil.toBean(item, DistributionActivityImageVo.class)).collect(Collectors.toList());
+        return AjaxResult.success(voList);
+    }
+
     /**
      * 导出【请填写功能名称】列表
      */
     @ApiOperation("导出【请填写功能名称】列表")
-    @PreAuthorize("@ss.hasPermi('system:poster:export')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult<DistributionActivityPosterVo> export(DistributionActivityPosterQueryBo bo) {
         List<DistributionActivityPosterVo> list = iDistributionActivityPosterService.queryList(bo);
@@ -61,45 +85,61 @@ public class DistributionActivityPosterController extends BaseController {
     }
 
     /**
-     * 获取【请填写功能名称】详细信息
+     * 获取海报详细信息
      */
-    @ApiOperation("获取【请填写功能名称】详细信息")
-    @PreAuthorize("@ss.hasPermi('system:poster:query')")
+    @ApiOperation("获取海报详细信息")
     @GetMapping("/{posterId}")
     public AjaxResult<DistributionActivityPosterVo> getInfo(@PathVariable("posterId" ) Long posterId) {
         return AjaxResult.success(iDistributionActivityPosterService.queryById(posterId));
     }
 
     /**
-     * 新增【请填写功能名称】
+     * 新增海报
      */
-    @ApiOperation("新增【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:poster:add')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
-    @PostMapping()
+    @ApiOperation("新增海报")
+    @PostMapping("/save")
     public AjaxResult<Void> add(@RequestBody DistributionActivityPosterAddBo bo) {
         return toAjax(iDistributionActivityPosterService.insertByAddBo(bo) ? 1 : 0);
     }
 
     /**
-     * 修改【请填写功能名称】
+     * 修改海报
      */
-    @ApiOperation("修改【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:poster:edit')")
-    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
-    @PutMapping()
+    @ApiOperation("修改海报")
+    @PostMapping("/edit")
     public AjaxResult<Void> edit(@RequestBody DistributionActivityPosterEditBo bo) {
         return toAjax(iDistributionActivityPosterService.updateByEditBo(bo) ? 1 : 0);
     }
 
     /**
-     * 删除【请填写功能名称】
+     * 获取分销海报详细信息
      */
-    @ApiOperation("删除【请填写功能名称】")
-    @PreAuthorize("@ss.hasPermi('system:poster:remove')")
-    @Log(title = "【请填写功能名称】" , businessType = BusinessType.DELETE)
-    @DeleteMapping("/{posterIds}")
-    public AjaxResult<Void> remove(@PathVariable Long[] posterIds) {
-        return toAjax(iDistributionActivityPosterService.deleteWithValidByIds(Arrays.asList(posterIds), true) ? 1 : 0);
+    @ApiOperation("生成业务员海报")
+    @PreAuthorize("@ss.hasPermi('system:poster:query')")
+    @GetMapping("/makePoster")
+    public AjaxResult<String> makePoster(DistributionActivityPosterQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        return AjaxResult.success("成功",iDistributionActivityPosterService.makePoster(bo));
+    }
+
+    @ApiOperation("获取分享链条码")
+    @PreAuthorize("@ss.hasPermi('system:poster:query')")
+    @GetMapping("/linkCode")
+    public AjaxResult<Map<String,String>> linkCode(DistributionActivityPosterQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        Map<String,String> map = new HashMap<>();
+        map.put("linkCode",iDistributionActivityPosterService.getLinkCode(bo));
+        DistributionSellerVo vo = iDistributionSellerService.queryById(loginUser.getUser().getSellerId());
+        map.put("shareCode",vo.getShareCode());
+        return AjaxResult.success("成功",map);
+    }
+
+
+    @ApiOperation("获取微信授权路径")
+    @GetMapping("/wxCodeUrl")
+    public AjaxResult<String> getWxCodeUrl() {
+        return AjaxResult.success("成功",iDistributionActivityPosterService.getWxCodeUrl());
     }
 }

+ 79 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionAdminCashWithdrawalController.java

@@ -0,0 +1,79 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckHandleBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckDetailVo;
+import com.zhongzheng.modules.distribution.vo.DistributionCheckVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 分销业务员提现申请Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+
+@Api(value = "分销业务员提现申请控制器", tags = {"分销业务员提现申请管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/distribution/check")
+
+public class DistributionAdminCashWithdrawalController extends BaseController {
+
+    private final IDistributionCashWithdrawalService iDistributionCashWithdrawalService;
+
+    private final TokenService tokenService;
+
+    /**
+     * 审核列表
+     */
+    @ApiOperation("审核列表")
+    @GetMapping("/list")
+    public TableDataInfo<DistributionCheckVo> list(DistributionCheckQueryBo bo) {
+        startPage();
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setAuditorId(loginUser.getUser().getUserId());
+        bo.setAuditor(SecurityUtils.getUsername());
+        List<DistributionCheckVo> list = iDistributionCashWithdrawalService.queryCheckList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 审核
+     */
+    @ApiOperation("审核")
+    @PostMapping("/handle")
+    public AjaxResult<Void> checkHandle(@RequestBody DistributionCheckHandleBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setAuditorId(loginUser.getUser().getUserId());
+        bo.setAuditor(SecurityUtils.getUsername());
+        return toAjax(iDistributionCashWithdrawalService.checkHandle(bo)? 1 : 0);
+    }
+
+    /**
+     * 审核详情
+     */
+    @ApiOperation("审核详情")
+    @GetMapping("/detail/{id}")
+    public AjaxResult<List<DistributionCheckDetailVo>> checkDetail(@PathVariable("id") Long id) {
+        List<DistributionCheckDetailVo> detailVos = iDistributionCashWithdrawalService.checkDetail(id);
+        return AjaxResult.success(detailVos);
+    }
+
+
+
+}

+ 55 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashLogController.java

@@ -0,0 +1,55 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionCashLogQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionCashLogService;
+import com.zhongzheng.modules.distribution.vo.DistributionCashLogVo;
+import com.zhongzheng.modules.user.entity.ClientLoginSeller;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 业务员金额操作日志Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+@Api(value = "业务员金额操作日志控制器", tags = {"业务员金额操作日志管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/distribution/cash/log")
+public class DistributionCashLogController extends BaseController {
+
+    private final IDistributionCashLogService iDistributionCashLogService;
+
+    private final TokenService tokenService;
+
+    /**
+     * 查询业务员金额操作日志列表
+     */
+    @ApiOperation("查询业务员佣金列表")
+    @PreAuthorize("@ss.hasPermi('system:log:list')")
+    @GetMapping("/fromOrderCashList")
+    public TableDataInfo<DistributionCashLogVo> fromOrderCashList(DistributionCashLogQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        startPage();
+        List<DistributionCashLogVo> list = iDistributionCashLogService.fromOrderCashList(bo);
+        return getDataTable(list);
+    }
+
+
+
+}

+ 115 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionCashWithdrawalController.java

@@ -0,0 +1,115 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.SecurityUtils;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalEditBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalQueryBo;
+import com.zhongzheng.modules.distribution.bo.DistributionCheckQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionCashWithdrawalService;
+import com.zhongzheng.modules.distribution.vo.DistributionCashWithdrawalVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 分销业务员提现申请Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-25
+ */
+
+@Api(value = "分销业务员提现申请控制器", tags = {"分销业务员提现申请管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/distribution/withdrawal")
+public class DistributionCashWithdrawalController extends BaseController {
+
+    private final IDistributionCashWithdrawalService iDistributionCashWithdrawalService;
+
+    private final TokenService tokenService;
+
+    /**
+     * 查询分销业务员提现申请列表
+     */
+    @ApiOperation("查询分销业务员提现申请列表")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:list')")
+    @GetMapping("/list")
+    public TableDataInfo<DistributionCashWithdrawalVo> list(DistributionCashWithdrawalQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        startPage();
+        List<DistributionCashWithdrawalVo> list = iDistributionCashWithdrawalService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取分销业务员提现申请详细信息
+     */
+    @ApiOperation("获取分销业务员提现申请详细信息")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<DistributionCashWithdrawalVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iDistributionCashWithdrawalService.queryById(id));
+    }
+
+    /**
+     * 新增分销业务员提现申请
+     */
+    @ApiOperation("新增分销业务员提现申请")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "分销业务员提现申请", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody DistributionCashWithdrawalAddBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        return toAjax(iDistributionCashWithdrawalService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("打款")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "打款", businessType = BusinessType.INSERT)
+    @PostMapping("/payCash")
+    public AjaxResult<Void> payCash(@RequestBody DistributionCheckQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setAuditorId(loginUser.getUser().getUserId());
+        bo.setAuditor(SecurityUtils.getUsername());
+        return toAjax(iDistributionCashWithdrawalService.payCash(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("重新发起打款")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "打款", businessType = BusinessType.INSERT)
+    @PostMapping("/rePayCash")
+    public AjaxResult<Void> rePayCash(@RequestBody DistributionCheckQueryBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setAuditorId(loginUser.getUser().getUserId());
+        bo.setAuditor(SecurityUtils.getUsername());
+        return toAjax(iDistributionCashWithdrawalService.rePayCash(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("取消打款申请")
+    @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
+    @Log(title = "取消打款申请", businessType = BusinessType.INSERT)
+    @PostMapping("/cancelApply")
+    public AjaxResult<Void> cancelApply(@RequestBody DistributionCashWithdrawalEditBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        return toAjax(iDistributionCashWithdrawalService.cancelApply(bo) ? 1 : 0);
+    }
+
+
+}

+ 57 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionLinkController.java

@@ -0,0 +1,57 @@
+package com.zhongzheng.controller.distribution;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.distribution.bo.DistributionLinkAddBo;
+import com.zhongzheng.modules.distribution.service.IDistributionLinkService;
+import com.zhongzheng.modules.goods.service.impl.GoodsServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 分销链路Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-23
+ */
+@Api(value = "分销链路控制器", tags = {"分销链路管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/link")
+public class DistributionLinkController extends BaseController {
+
+    private final IDistributionLinkService iDistributionLinkService;
+
+    private final TokenService tokenService;
+    /**
+     * 新增分销链路
+     */
+    @ApiOperation("绑定分销链路")
+    @PreAuthorize("@ss.hasPermi('system:link:add')")
+    @Log(title = "分销链路", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody DistributionLinkAddBo bo) {
+
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        return toAjax(iDistributionLinkService.bindLink(bo) ? 1 : 0);
+    }
+
+
+
+
+}

+ 177 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java

@@ -0,0 +1,177 @@
+package com.zhongzheng.controller.distribution;
+
+import cn.hutool.core.lang.Validator;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.distribution.bo.DistributionSellerAddBo;
+import com.zhongzheng.modules.distribution.bo.DistributionSellerEditBo;
+import com.zhongzheng.modules.distribution.bo.DistributionSellerQueryBo;
+import com.zhongzheng.modules.distribution.bo.SellerOrderQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.distribution.vo.SellerOrderVo;
+import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 分销业务员Controller
+ *
+ * @author hjl
+ * @date 2023-03-13
+ */
+@Api(value = "分销业务员控制器", tags = {"分销业务员管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/distribution/seller")
+public class DistributionSellerController extends BaseController {
+
+    private final IDistributionSellerService iDistributionSellerService;
+
+    private final TokenService tokenService;
+
+    private final WxLoginService wxLoginService;
+
+    /**
+     * 查询分销业务员列表
+     */
+    @ApiOperation("查询分销业务员列表")
+    @PreAuthorize("@ss.hasPermi('system:seller:list')")
+    @GetMapping("/list")
+    public TableDataInfo<DistributionSellerVo> list(DistributionSellerQueryBo bo) {
+        startPage();
+        List<DistributionSellerVo> list = iDistributionSellerService.findList(bo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取分销业务员详细信息
+     */
+    @ApiOperation("获取分销业务员详细信息")
+    @PreAuthorize("@ss.hasPermi('system:seller:query')")
+    @GetMapping("/{salerId}")
+    public AjaxResult<DistributionSellerVo> getInfo(@PathVariable("salerId" ) Long salerId) {
+        return AjaxResult.success(iDistributionSellerService.findDetail(salerId));
+    }
+
+    /**
+     * 新增分销业务员
+     */
+    @ApiOperation("新增分销业务员")
+    @PreAuthorize("@ss.hasPermi('system:seller:add')")
+    @Log(title = "分销业务员", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody DistributionSellerAddBo bo) {
+        return toAjax(iDistributionSellerService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改分销业务员
+     */
+    @ApiOperation("修改分销业务员")
+    @PreAuthorize("@ss.hasPermi('system:seller:edit')")
+    @Log(title = "分销业务员", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody DistributionSellerEditBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSysUserId(loginUser.getUser().getUserId());
+        return toAjax(iDistributionSellerService.updateByEditBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 管理员修改分销业务员
+     */
+    @ApiOperation("管理员修改分销业务员")
+    @PreAuthorize("@ss.hasPermi('system:seller:edit')")
+    @Log(title = "分销业务员", businessType = BusinessType.UPDATE)
+    @PostMapping("/sysEdit")
+    public AjaxResult<Void> sysEdit(@RequestBody DistributionSellerEditBo bo) {
+        return toAjax(iDistributionSellerService.updateBySysEditBo(bo) ? 1 : 0);
+    }
+
+
+    /**
+     * 新增分销业务员
+     */
+    @ApiOperation("批量新增关联分销业务员")
+    @PreAuthorize("@ss.hasPermi('system:seller:add')")
+    @Log(title = "分销业务员", businessType = BusinessType.INSERT)
+    @PostMapping("/batchAdd")
+    public AjaxResult<Void> batchAdd(@RequestBody DistributionSellerAddBo bo) {
+        return toAjax(iDistributionSellerService.insertBatchByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 获取用户信息
+     *
+     * @return 用户信息
+     */
+    @ApiOperation("登录业务员用户信息")
+    @GetMapping("getInfo")
+    public AjaxResult<DistributionSellerVo> getInfo()
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        DistributionSellerVo vo = iDistributionSellerService.findDetail(loginUser.getUser().getSellerId());
+        if(Validator.isEmpty(vo)){
+            throw new CustomException("非法用户");
+        }
+        vo.setSelfNull();
+        return AjaxResult.success(vo);
+    }
+
+    @ApiOperation("业务员检查是否绑定公众号")
+    @GetMapping("/checkBindGzh")
+    public AjaxResult<String> checkBindGzh()
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        DistributionSellerVo vo = iDistributionSellerService.queryById(loginUser.getUser().getSellerId());
+        return AjaxResult.success("成功",vo.getGzhOpenId());
+    }
+
+    @ApiOperation("提现前绑定公众号openid")
+    @PostMapping("/gzh_bind")
+    public AjaxResult gzh_bind(@RequestBody WxLoginBody loginBody)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        loginBody.setSellerId(loginUser.getUser().getSellerId());
+        if(Validator.isNotEmpty(loginBody.getGzhOpenid())){
+            wxLoginService.bindWxGzhOpenIdSeller(loginBody);
+        }
+        else if(Validator.isNotEmpty(loginBody.getCode())){
+            wxLoginService.bindWxGzhUnionIdSeller(loginBody);
+        }
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("业务员佣金")
+    @GetMapping("/cash/list")
+    public TableDataInfo<SellerOrderVo> getCashList(SellerOrderQueryBo bo) {
+        startPage();
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setSellerId(loginUser.getUser().getSellerId());
+        List<SellerOrderVo> list = iDistributionSellerService.getCashList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务员佣金详情")
+    @GetMapping("/cash/detail/{id}")
+    public AjaxResult<SellerOrderVo> getCashDetail(@PathVariable("id") Long id) {
+        return AjaxResult.success(iDistributionSellerService.getCashDetail(id));
+    }
+
+}

+ 11 - 5
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/SellerLoginController.java → zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/SellerLoginController.java

@@ -3,12 +3,10 @@ package com.zhongzheng.controller.distribution;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.framework.web.service.SellerTokenService;
 import com.zhongzheng.modules.distribution.bo.SellerAppAccountLoginBo;
+import com.zhongzheng.modules.distribution.bo.SellerAppOpenidLoginBo;
 import com.zhongzheng.modules.distribution.bo.SellerAppRegisterBo;
 import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
-import com.zhongzheng.modules.user.bo.*;
-import com.zhongzheng.modules.user.service.IUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -32,7 +30,6 @@ public class SellerLoginController extends BaseController {
 
     private final IDistributionSellerService iDistributionSellerService;
 
-    private final SellerTokenService sellerTokenService;
 
     /**
      * 用户注册
@@ -63,13 +60,22 @@ public class SellerLoginController extends BaseController {
         return AjaxResult.success(map);
     }
 
+    @ApiOperation("业务员openid登录")
+    @PostMapping("/openid_login")
+    public AjaxResult openid_login(@RequestBody SellerAppOpenidLoginBo bo) {
+        Map<String,Object> map = iDistributionSellerService.openidLogin(bo);
+        return AjaxResult.success(map);
+    }
+
     @ApiOperation("刷新业务员登录令牌")
     @GetMapping("/refreshToken/{userAccount}")
     public AjaxResult refreshToken(@PathVariable("userAccount") String userAccount)
     {
-        String token = sellerTokenService.refreshSellerToken(userAccount);
+        String token = iDistributionSellerService.refreshSellerToken(userAccount);
         Map<String,Object> map = new HashMap<>();
         map.put(Constants.TOKEN, token);
         return AjaxResult.success(map);
     }
+
+
 }

+ 0 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/SellerSmsController.java → zhongzheng-admin/src/main/java/com/zhongzheng/controller/distribution/SellerSmsController.java


+ 23 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -20,6 +20,8 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.modules.base.bo.UserProfileQueryBo;
 import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.*;
@@ -75,6 +77,8 @@ public class ClassGradeController extends BaseController {
 
     private final RedisCache redisCache;
 
+    private final IGoodsService iGoodsService;
+
     /**
      * 查询班级列表
      */
@@ -233,6 +237,16 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
     }
 
+
+    @ApiOperation("查询学员视频学习记录列表")
+    @PreAuthorize("@ss.hasPermi('grade:user:list')")
+    @GetMapping("/listUserVideoRecord")
+    public TableDataInfo<ClassPeriodStudentVo> listUserVideoRecord(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodStudentVo> list = iClassGradeUserService.listUserVideoRecord(bo);
+        return getDataTable(list);
+    }
+
     /**
      * 查询学时学员记录列表
      */
@@ -564,7 +578,6 @@ public class ClassGradeController extends BaseController {
      */
     @ApiOperation("锁定学时审核页面")
     @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
-    @Log(title = "锁定学时审核页面", businessType = BusinessType.UPDATE)
     @PostMapping("/lockPeriod")
     public AjaxResult<Void> lockPeriod(@RequestBody UserPeriodEditBo bo) {
         String key = "LockPeriod_"+bo.getGradeId()+"-"+bo.getUserId();
@@ -671,5 +684,14 @@ public class ClassGradeController extends BaseController {
         return AjaxResult.success(iClassGradeService.queryOfficialGradeCount(bo));
     }
 
+    @ApiOperation("导出商品的课程结构")
+    @GetMapping("/exportGoodsMenuExcel")
+    public AjaxResult<List<ClassNpUserInfoVo>> exportGoodsMenuExcel(UserPeriodEditBo bo) {
+        GoodsVo goodsVo = iGoodsService.queryById(bo.getGoodsId());
+        List<SyncUserChapterExport> list = iUserPeriodService.exportGoodsMenuExcel(bo);
+        List<SyncUserChapterExport> exportVos = list.stream().map(item -> BeanUtil.toBean(item,SyncUserChapterExport.class)).collect(Collectors.toList());
+        ExcelUtil<SyncUserChapterExport> util = new ExcelUtil<SyncUserChapterExport>(SyncUserChapterExport.class);
+        return util.exportExcel(exportVos, goodsVo.getGoodsName());
+    }
 
 }

+ 67 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/monitor/SysOperlogController.java

@@ -0,0 +1,67 @@
+package com.zhongzheng.controller.monitor;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.system.domain.SysOperLog;
+import com.zhongzheng.modules.system.service.ISysOperLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 操作日志记录
+ *
+ * @author zhongzheng
+ */
+@Api(tags ="操作日志记录")
+@RestController
+@RequestMapping("/monitor/operlog")
+public class SysOperlogController extends BaseController
+{
+    @Autowired
+    private ISysOperLogService operLogService;
+
+    @ApiOperation("操作日志分页列表")
+    @PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysOperLog operLog)
+    {
+        startPage();
+        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
+        return getDataTable(list);
+    }
+
+    @Log(title = "操作日志", businessType = BusinessType.EXPORT)
+    @PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
+    @GetMapping("/export")
+    public AjaxResult export(SysOperLog operLog)
+    {
+        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
+        ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
+        return util.exportExcel(list, "操作日志");
+    }
+
+    @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
+    @DeleteMapping("/{operIds}")
+    public AjaxResult remove(@PathVariable Long[] operIds)
+    {
+        return toAjax(operLogService.deleteOperLogByIds(operIds));
+    }
+
+    @Log(title = "操作日志", businessType = BusinessType.CLEAN)
+    @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
+    @DeleteMapping("/clean")
+    public AjaxResult clean()
+    {
+        operLogService.cleanOperLog();
+        return AjaxResult.success();
+    }
+}

+ 2 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderGoodsRefundController.java

@@ -7,8 +7,10 @@ import com.zhongzheng.modules.grade.bo.UserPeriodEditBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsRefundAddBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsRefundEditBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsRefundQueryBo;
+import com.zhongzheng.modules.order.bo.TopOldOrderRefundBo;
 import com.zhongzheng.modules.order.service.IOrderGoodsRefundService;
 import com.zhongzheng.modules.order.vo.OrderGoodsRefundVo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrderRefund;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;

+ 39 - 4
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -5,21 +5,22 @@ import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.framework.web.service.AsyncService;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
-import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
 import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
 import com.zhongzheng.modules.schedule.service.IScheduleService;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
 import com.zhongzheng.modules.user.bo.UserWxFollowQueryBo;
-import com.zhongzheng.modules.user.service.IUserWxFollowService;
 import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -395,4 +396,38 @@ public class ScheduleController extends BaseController {
         return AjaxResult.success();
     }
 
+    @ApiOperation("同步机构商品")
+    @GetMapping("/synchronization/goods")
+    public AjaxResult synchronizationGoods(){
+        //湛江云学堂 972001468256950403
+        //茂名市建设培训学校 680980002459417532
+        //肇庆市建筑业协会 480813706424615769
+//        List<String> tenantIds = Arrays.asList("972001468256950403", "680980002459417532", "480813706424615769");
+        List<String> tenantIds = Arrays.asList("335322347347308");
+        tenantIds.forEach(tenantId -> {
+            iScheduleService.synchronizationGoodsByTenantId(tenantId);
+        });
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("处理商品关联")
+    @GetMapping("/goods/dispose")
+    public AjaxResult goodsDispose(){
+        iScheduleService.goodsDispose();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("同步一建商品(山西)")
+    @GetMapping("/goods/copy/one")
+    public AjaxResult goodsCopyOne(){
+        iScheduleService.goodsCopyOne();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("分销佣金解冻")
+    @GetMapping("/distributionRebate")
+    public AjaxResult distributionRebate(UserQueryBo bo){
+        iScheduleService.distributionRebate();
+        return AjaxResult.success();
+    }
 }

+ 27 - 4
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysLoginController.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.controller.system;
 
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.AjaxResult;
@@ -9,11 +10,14 @@ import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.common.core.domain.model.LoginBody;
 import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.framework.web.service.SysLoginService;
 import com.zhongzheng.framework.web.service.SysPermissionService;
 import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.goods.bo.OldTenantLoginBo;
 import com.zhongzheng.modules.system.service.ISysMenuService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.system.service.ISysUserService;
 import com.zhongzheng.modules.system.vo.SysTenantVo;
 import com.zhongzheng.modules.user.bo.UserBusinessLoginBo;
 import io.swagger.annotations.Api;
@@ -53,7 +57,8 @@ public class SysLoginController
 
     @Autowired
     private ISysTenantService iSysTenantService;
-
+    @Autowired
+    private ISysUserService iSysUserService;
     /**
      * 登录方法
      *
@@ -84,7 +89,7 @@ public class SysLoginController
         AjaxResult ajax = AjaxResult.success();
         // 生成令牌
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
-                loginBody.getUuid());
+                loginBody.getUuid(),loginBody.getSmsCode(),loginBody.getPhonenumber());
         ajax.put(Constants.TOKEN, token);
         return ajax;
     }
@@ -99,7 +104,8 @@ public class SysLoginController
     public AjaxResult getInfo()
     {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        SysUser user = loginUser.getUser();
+        SysUser user = iSysUserService.getOne(new LambdaQueryWrapper<SysUser>()
+                .eq(SysUser::getUserId, loginUser.getUser().getUserId()).last("limit 1"));
         // 角色集合
         Set<String> roles = permissionService.getRolePermission(user);
         // 权限集合
@@ -129,4 +135,21 @@ public class SysLoginController
         List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId());
         return AjaxResult.success(menuService.buildMenus(menus));
     }
+
+    @ApiOperation("旧系统用户登入")
+    @PostMapping("/old/login")
+    public AjaxResult oldTenantLogin(@RequestBody OldTenantLoginBo bo)
+    {
+        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+            return AjaxResult.error("签名错误");
+        }
+        if (StringUtils.isBlank(bo.getAccount())){
+            return AjaxResult.error("账号不能为空");
+        }
+        AjaxResult ajax = AjaxResult.success();
+        String token = loginService.oldTenantLogin(bo);
+        ajax.put(Constants.TOKEN, token);
+        return ajax;
+    }
+
 }

+ 3 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysMenuController.java

@@ -61,7 +61,9 @@ public class SysMenuController extends BaseController
     @GetMapping(value = "/{menuId}")
     public AjaxResult getInfo(@PathVariable Long menuId)
     {
-        return AjaxResult.success(menuService.selectMenuById(menuId));
+        SysMenu sysMenu = menuService.selectMenuById(menuId);
+        sysMenu.setTenantId(null);
+        return AjaxResult.success(sysMenu);
     }
 
     /**

+ 5 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysProfileController.java

@@ -9,8 +9,10 @@ import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.file.FileUploadUtils;
 import com.zhongzheng.framework.web.service.TokenService;
 import com.zhongzheng.modules.system.service.ISysUserService;
@@ -94,6 +96,9 @@ public class SysProfileController extends BaseController
         {
             return AjaxResult.error("修改密码失败,旧密码错误");
         }
+        if(!ToolsUtils.verifPwd(newPassword)){
+            throw new CustomException("密码应由8-16位数字、大小写字母、符号组成");
+        }
         if (SecurityUtils.matchesPassword(newPassword, password))
         {
             return AjaxResult.error("新密码不能与旧密码相同");

+ 14 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/system/SysUserController.java

@@ -291,4 +291,18 @@ public class SysUserController extends BaseController
         List<SysUser> list = userService.queryBusinessPeopleList(bo);
         return getDataTable(list);
     }
+
+    @ApiOperation("检查密码修改时间")
+    @PreAuthorize("@ss.hasPermi('system:user:list')")
+    @GetMapping("/checkPwdTime")
+    public AjaxResult<Boolean> checkPwdTime()
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        SysUser user = userService.selectUserById(loginUser.getUser().getUserId());
+        boolean needUpdate = false;
+        if(Validator.isNotEmpty(user.getPwdTime())&&(DateUtils.getNowTime().longValue()-user.getPwdTime().longValue())>90*24*3600){
+            needUpdate = true;
+        }
+        return AjaxResult.success(needUpdate);
+    }
 }

+ 47 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/SmsController.java

@@ -0,0 +1,47 @@
+package com.zhongzheng.controller.user;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.alisms.bo.SmsAddBo;
+import com.zhongzheng.modules.alisms.service.IAliSmsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 客户端用户Controller
+ *
+ * @author hjl
+ * @date 2021-06-08
+ */
+@Api(value = "短信控制器", tags = {"短信控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/app/common/sms")
+public class SmsController extends BaseController {
+
+    private final IAliSmsService iSmsService;
+
+
+    @ApiOperation("获取注册短信")
+    @PostMapping("/register")
+    public AjaxResult register(@RequestBody SmsAddBo bo) {
+        iSmsService.sendRegisterSms(bo.getTel());
+        return AjaxResult.success();
+    }
+
+
+    @ApiOperation("获取登录短信")
+    @PostMapping("/login")
+    public AjaxResult login(@RequestBody SmsAddBo bo) {
+        iSmsService.sendLoginSms(bo.getTel());
+        return AjaxResult.success();
+    }
+
+
+}

+ 16 - 27
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -1,43 +1,32 @@
 package com.zhongzheng.controller.user;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-
 import cn.afterturn.easypoi.excel.entity.ExportParams;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.zhongzheng.common.core.domain.entity.SysUser;
-import com.zhongzheng.common.core.domain.model.LoginUser;
-import com.zhongzheng.common.utils.ServletUtils;
-import com.zhongzheng.modules.alisms.service.IAliSmsService;
-import com.zhongzheng.modules.course.vo.CourseSectionImport;
-import com.zhongzheng.modules.grade.vo.ClassPeriodStudentExportVo;
-import com.zhongzheng.modules.user.bo.*;
-import com.zhongzheng.modules.user.service.IUserService;
-import com.zhongzheng.modules.user.vo.*;
-import io.netty.util.internal.ObjectUtil;
-import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.alisms.service.IAliSmsService;
+import com.zhongzheng.modules.user.bo.*;
+import com.zhongzheng.modules.user.service.IUserService;
+import com.zhongzheng.modules.user.vo.UserIdCardBatchVo;
+import com.zhongzheng.modules.user.vo.UserStatstVo;
+import com.zhongzheng.modules.user.vo.UserStudyRecordVo;
+import com.zhongzheng.modules.user.vo.UserVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
 /**
  * 客户端用户Controller
  *

+ 53 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.controller.wx;
+
+import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSON;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import com.zhongzheng.common.constant.Constants;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import com.zhongzheng.modules.user.service.IUserService;
+import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import com.zhongzheng.modules.wx.service.IWxPayService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Api(tags ="微信登录用户操作管理")
+@ApiSupport(order = 2)
+@RestController
+public class WxLoginController
+{
+    @Autowired
+    private WxLoginService wxLoginService;
+
+    @Autowired
+    private IWxPayService iWxPayService;
+
+
+    @Autowired
+    private  RedisCache redisCache;
+    private static final Logger log = LoggerFactory.getLogger(WxLoginController.class);
+
+
+
+    @ApiOperation("公众号分享微信参数")
+    @GetMapping("/app/common/shareGzh")
+    public AjaxResult shareGzh(String url)
+    {
+        Map<String,String> map = iWxPayService.shareGzh(url);
+        return AjaxResult.success(map);
+    }
+
+}

+ 81 - 82
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -1,85 +1,51 @@
 # 数据源配置
 spring:
     datasource:
-        #配置hikari连接池
-        hikari:
-            minimum-idle: 10
-            maximum-pool-size: 20
-            connection-timeout: 10000
-            idle-timeout: 30000
-            connection-init-sql: set names utf8mb4
-        #动态数据源配置
-        dynamic:
-            primary: master #设置默认的数据源或者数据源组,默认值即为master
-            strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
-            datasource:
-                #数据源
-                master:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-                #数据源
-                slave:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-#    datasource:
-#        type: com.alibaba.druid.pool.DruidDataSource
-#        driverClassName: com.mysql.cj.jdbc.Driver
-#        druid:
-#            # 主库数据源
-#            master:
-#                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-#                username: root
-#                password:  zhongzheng2021
-#            # 从库数据源
-#            slave:
-#                # 从数据源开关/默认关闭
-#                enabled: false
-#                url:
-#                username:
-#                password:
-#            # 初始连接数
-#            initialSize: 5
-#            # 最小连接池数量
-#            minIdle: 10
-#            # 最大连接池数量
-#            maxActive: 20
-#            # 配置获取连接等待超时的时间
-#            maxWait: 60000
-#            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-#            timeBetweenEvictionRunsMillis: 60000
-#            # 配置一个连接在池中最小生存的时间,单位是毫秒
-#            minEvictableIdleTimeMillis: 300000
-#            # 配置一个连接在池中最大生存的时间,单位是毫秒
-#            maxEvictableIdleTimeMillis: 900000
-#            # 配置检测连接是否有效
-#            validationQuery: SELECT 1 FROM DUAL
-#            testWhileIdle: true
-#            testOnBorrow: false
-#            testOnReturn: false
-#            webStatFilter:
-#                enabled: true
-#            statViewServlet:
-#                enabled: true
-#                # 设置白名单,不填则允许所有访问
-#                allow:
-#                url-pattern: /druid/*
-#                # 控制台管理用户名和密码
-#                login-username: ruoyi
-#                login-password: 123456
-#            filter:
-#                stat:
-#                    enabled: true
-#                    # 慢SQL记录
-#                    log-slow-sql: true
-#                    slow-sql-millis: 1000
-#                    merge-sql: true
-#                wall:
-#                    config:
-#                        multi-statement-allow: true
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: com.mysql.cj.jdbc.Driver
+        druid:
+            url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: zhongzheng2021
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1 FROM DUAL
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            webStatFilter:
+                enabled: true
+            statViewServlet:
+                enabled: true
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username: ruoyi
+                login-password: 123456
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true
     # redis 配置
     redis:
         # 地址
@@ -153,7 +119,7 @@ wisdomExamRoom:
 certificate:
     host: http://192.168.1.38:8000/
 
-liveGotoURL: http://120.79.166.78:19014/
+liveGotoURL: http://
 
 enCodeVersion: develop
 
@@ -166,9 +132,42 @@ oldStudySys:
     educationalInspector: http://192.168.1.210/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
+    salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: peixunjigou
     token: 0ca175b9c0f726a831d895e26933246
+
+
+
+distributionOldPay:
+    host: http://gdxypx.xy.com/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: http://192.168.1.7:9090/course/handouts/save
+    updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0
+
+oldOrder:
+    studyRecord: http://gdxypx.xy.com/WitSystem/BussinessApi/GetStudyRecord
+    orderCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/AuditUnderOrder
+    finishOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CompleteOrder
+    refuseCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/ReFundAuditResult
+    inputOrderSn: http://gdxypx.xy.com/WitSystem/BussinessApi/GetNewYxtinputOrderSn
+    checkOrderStudent: http://gdxypx.xy.com/WitSystem/BussinessApi/ReAuditUnderOrder
+    checkOrderBrokerage: http://gdxypx.xy.com/WitSystem/BussinessApi/CommissionRate
+    refundPay: http://192.168.1.222:5030/common/platform/pay
+    refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
+
+oldSys:
+    host: http://gdxypx.xy.com
+
+invoice:
+    host: http://192.168.1.222:7077/sys/common/openMplatform/log

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

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_pre?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password:  zhongzheng2021
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -50,7 +41,7 @@ spring:
                     enabled: true
                     # 慢SQL记录
                     log-slow-sql: true
-                    slow-sql-millis: 2500
+                    slow-sql-millis: 1000
                     merge-sql: true
                 wall:
                     config:
@@ -128,7 +119,7 @@ wisdomExamRoom:
 certificate:
     host: http://192.168.1.38:8000/
 
-liveGotoURL: http://120.79.166.78:19010/
+liveGotoURL: http://
 
 enCodeVersion: trial
 
@@ -141,9 +132,23 @@ oldStudySys:
     educationalInspector: http://192.168.1.210/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
+    salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: peixunjigou
     token: 0ca175b9c0f726a831d895e26933246
+
+distributionOldPay:
+    host: http://test.jqbao.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 24 - 16
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: gdxy2021!@#zzjykj
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -50,7 +41,7 @@ spring:
                     enabled: true
                     # 慢SQL记录
                     log-slow-sql: true
-                    slow-sql-millis: 4000
+                    slow-sql-millis: 1000
                     merge-sql: true
                 wall:
                     config:
@@ -128,7 +119,7 @@ wisdomExamRoom:
 certificate:
     host: https://m.xyyxt.net/
 
-liveGotoURL: https://web.xyyxt.net/
+liveGotoURL: https://
 
 enCodeVersion: release
 
@@ -141,9 +132,26 @@ oldStudySys:
     educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: GDSXY
     token: 01b5d9833987efdff54483cdc9720da6
+
+distributionOldPay:
+    host: https://www.xyyxt.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0
+
+oldSys:
+    host: https://www.xyyxt.net

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

@@ -128,7 +128,7 @@ wisdomExamRoom:
 certificate:
     host: https://m.xyyxt.net/
 
-liveGotoURL: https://web.xyyxt.net/
+liveGotoURL: https://
 
 enCodeVersion: release
 
@@ -138,11 +138,14 @@ oldStudySys:
     shareCanclePath: https://www.xyyxt.net/witsystem/dataapi/ordercance
     searchGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCount
     pushGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCountAuto
+    educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http:///www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: GDSXY
     token: 01b5d9833987efdff54483cdc9720da6

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

@@ -76,9 +76,9 @@ spring:
   servlet:
      multipart:
        # 单个文件大小
-       max-file-size:  10MB
+       max-file-size:  1024MB
        # 设置总上传的文件大小
-       max-request-size:  20MB
+       max-request-size:  1024MB
   # 服务模块
   devtools:
     restart:
@@ -261,7 +261,7 @@ tencent:
 
 aliyun:
   sms:
-    signName: 祥粤学校
+    signName: 中正科技
     registerTemplateCode: SMS_228670004
     loginTemplateCode: SMS_228670005
     forgetTemplateCode: SMS_228685033

二進制
zhongzheng-admin/src/main/resources/config/1640084970/apiclient_cert.p12


+ 3 - 1
zhongzheng-api/src/main/java/com/zhongzheng/ZhongZhengApiApplication.java

@@ -5,9 +5,11 @@ import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 
-@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class})
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@EnableScheduling
 public class ZhongZhengApiApplication {
 
     public static void main(String[] args)

+ 13 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/alioss/OssController.java

@@ -7,6 +7,7 @@ import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alioss.vo.ResultBean;
+import com.zhongzheng.modules.user.entity.ClientLoginSeller;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -40,6 +41,7 @@ public class OssController {
 
     private final WxTokenService wxTokenService;
 
+
     /**
      * policy获得
      */
@@ -53,6 +55,17 @@ public class OssController {
         return AjaxResult.success(result);
     }
 
+    /**
+     * policy获得
+     */
+    @ApiOperation("业务员policy获得")
+    @GetMapping("/seller_policy")
+    public AjaxResult<ResultBean> seller_policy(@Validated OssRequest ossRequest) {
+        ResultBean result = ossService.getPolicy(ossRequest);
+        log.info("服务端生成签名:{}",result);
+        return AjaxResult.success(result);
+    }
+
     /**
      * 阿里回调OSS返回参数到前端
      */

+ 0 - 3
zhongzheng-api/src/main/java/com/zhongzheng/controller/base/LockController.java

@@ -45,7 +45,6 @@ public class LockController extends BaseController {
      */
     @ApiOperation("锁定行为")
     @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
-    @Log(title = "锁定行为", businessType = BusinessType.UPDATE)
     @PostMapping("/lockAction")
     public AjaxResult<Void> lockAction(@Validated @RequestBody ActionLockQueryBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
@@ -59,7 +58,6 @@ public class LockController extends BaseController {
      */
     @ApiOperation("查看行为锁定状态")
     @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
-    @Log(title = "查看行为锁定状态", businessType = BusinessType.UPDATE)
     @PostMapping("/lockStatus")
     public AjaxResult<Void> lockStatus(@RequestBody ActionLockQueryBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
@@ -78,7 +76,6 @@ public class LockController extends BaseController {
      */
     @ApiOperation("删除锁定状态")
     @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
-    @Log(title = "删除锁定状态", businessType = BusinessType.UPDATE)
     @PostMapping("/delLock")
     public AjaxResult delLock(@RequestBody ActionLockQueryBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());

+ 103 - 7
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java

@@ -1,14 +1,17 @@
 package com.zhongzheng.controller.cmmon;
 
 import cn.hutool.core.lang.Validator;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.activity.vo.ActivityGoodsPriceVo;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.CourseTopicGoodsQueryBo;
@@ -17,10 +20,13 @@ import com.zhongzheng.modules.course.service.ICourseTopicService;
 import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
 import com.zhongzheng.modules.course.vo.CourseTopicVo;
 import com.zhongzheng.modules.course.vo.CourseUserVo;
-import com.zhongzheng.modules.exam.bo.ExamActivityApplyBo;
-import com.zhongzheng.modules.exam.bo.ExamActivityApplyVo;
-import com.zhongzheng.modules.exam.service.IExamActivityService;
-import com.zhongzheng.modules.exam.vo.ExamActivityVo;
+import com.zhongzheng.modules.data.domain.DataWxTpClick;
+import com.zhongzheng.modules.data.service.IDataWxTpClickService;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
+import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
+import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
 import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
 import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
@@ -29,7 +35,6 @@ import com.zhongzheng.modules.order.domain.Printer;
 import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
-import com.zhongzheng.modules.system.service.ISysWebService;
 import com.zhongzheng.modules.wx.bo.WxInfoBo;
 import com.zhongzheng.modules.wx.bo.WxInfoQuery;
 import com.zhongzheng.modules.wx.bo.WxServerBody;
@@ -39,7 +44,13 @@ import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.text.ParseException;
 import java.util.HashMap;
 import java.util.List;
@@ -63,7 +74,7 @@ public class CommonController extends BaseController {
 
     private final ISysConfigService configService;
 
-
+    private final IDistributionSellerService iDistributionSellerService;
 
     @Autowired
     private RedisCache redisCache;
@@ -74,6 +85,35 @@ public class CommonController extends BaseController {
 
     private final ISysTenantService iSysTenantService;
 
+    private final IDataWxTpClickService iDataWxTpClickService;
+
+    private final IDistributionActivityGoodsService iDistributionActivityGoodsService;
+
+    @PostMapping("/returnStream")
+    public AjaxResult returnStream(MultipartFile file, HttpServletResponse response) throws IOException {
+        ServletOutputStream out = null;
+        ByteArrayOutputStream baos = null;
+        try {
+            InputStream inStream = file.getInputStream();
+            byte[] buffer = new byte[1024];
+            int len;
+            baos = new ByteArrayOutputStream();
+            while ((len = inStream.read(buffer)) != -1) {
+                baos.write(buffer, 0, len);
+            }
+            out = response.getOutputStream();
+            out.write(baos.toByteArray());
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            baos.flush();
+            baos.close();
+//            out.flush();
+//            out.close();
+        }
+        return AjaxResult.success();
+    }
+
     /**
      * 获取微信小程序信息(网页跳转小程序)
      */
@@ -110,6 +150,15 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iGoodsSpecTemplateService.queryById(specTemplateId));
     }
 
+    /**
+     * 获取商品规格模板信息
+     */
+    @ApiOperation("获取商品规格模板信息")
+    @GetMapping("/distribution/spec")
+    public AjaxResult<GoodsSpecTemplateVo> getDistributionSpec(DistributionGoodsBo bo) {
+        return AjaxResult.success(iGoodsSpecTemplateService.getDistributionSpec(bo));
+    }
+
     /**
      * 获取规格属性值对应的商品信息
      */
@@ -175,6 +224,7 @@ public class CommonController extends BaseController {
         return AjaxResult.success(map);
     }
 
+
     @ApiOperation("登录双重验证")
     @GetMapping("/dual_auth")
     public AjaxResult<String> dual_auth() {
@@ -272,4 +322,50 @@ public class CommonController extends BaseController {
     }
 
 
+    /**
+     * 领取题库活动校验
+     */
+    @ApiOperation("领取题库活动校验")
+    @GetMapping("/check")
+    public AjaxResult<Void> checkTime() {
+        return toAjax(iCourseService.checkTime()? 1 : 0);
+    }
+
+    /**
+     * 领取题库活动记录
+     */
+    @ApiOperation("领取题库活动记录")
+    @GetMapping("/save/activity/record/{crowdType}")
+    public AjaxResult<Void> saveActivityRecord(@PathVariable("crowdType") Integer crowdType) {
+        DataWxTpClick dataWxTpClick = new DataWxTpClick();
+        dataWxTpClick.setCrowdType(crowdType);
+        dataWxTpClick.setCreateTime(DateUtils.getNowTime());
+        dataWxTpClick.setType(2);
+        dataWxTpClick.setStatus(1);
+        dataWxTpClick.setInformId(0L);
+        dataWxTpClick.setUpdateTime(DateUtils.getNowTime());
+        return toAjax(iDataWxTpClickService.save(dataWxTpClick)? 1 : 0);
+    }
+
+    @ApiOperation("通过分享code查询业务员用户信息")
+    @GetMapping("/distribution/getInfoByShareCode")
+    public AjaxResult<DistributionSellerVo> getInfoByShareCode(String shareCode)
+    {
+        DistributionSellerVo vo = iDistributionSellerService.queryByShareCode(shareCode);
+        vo.setNull();
+        String jsonStr = configService.selectConfigByKey("home.header");
+        JSONObject objectJson = JSON.parseObject(jsonStr);
+        vo.setTenantName(String.valueOf(objectJson.get("companyName")));
+        return AjaxResult.success(vo);
+    }
+
+
+    @ApiOperation("获取分销活动商品列表")
+    @GetMapping("/distribution/getGoodsList")
+    public TableDataInfo<ActivityGoodsPriceVo> distributionGoodsList(DistributionActivityGoodsQueryBo bo)
+    {
+        startPage();
+        List<ActivityGoodsPriceVo> list = iDistributionActivityGoodsService.getGoodsList(bo);
+        return getDataTable(list);
+    }
 }

+ 27 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java

@@ -4,8 +4,10 @@ import cn.hutool.core.lang.Validator;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
+import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
+import com.zhongzheng.modules.distribution.vo.DistributionGoodsListVo;
+import com.zhongzheng.modules.goods.bo.DistributionGoodsBo;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
@@ -15,7 +17,6 @@ import com.zhongzheng.modules.goods.vo.GoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -42,6 +43,8 @@ public class CommonGoodsController extends BaseController {
 
     private final IGoodsAttachedService iGoodsAttachedService;
 
+    private final IDistributionActivityService iDistributionActivityService;
+
     /**
      * 查询商品列表
      */
@@ -82,6 +85,15 @@ public class CommonGoodsController extends BaseController {
         return AjaxResult.success(iGoodsService.selectDetail(goodsId));
     }
 
+    /**
+     * 获取分销活动商品详细信息
+     */
+    @ApiOperation("获取分销活动商品详细信息")
+    @GetMapping("/distribution/goods")
+    public AjaxResult<GoodsVo> getDistributionGoods(DistributionGoodsBo bo) {
+        return AjaxResult.success(iGoodsService.getDistributionGoods(bo));
+    }
+
 
 
     @ApiOperation("查询商品题库目录列表")
@@ -102,4 +114,17 @@ public class CommonGoodsController extends BaseController {
         return AjaxResult.success(list);
     }
 
+    /**
+     * 获取活动商品信息
+     * @author change
+     * @date 2023/3/28 9:41
+     * @param distributionId
+     * @return null
+     */
+    @ApiOperation("获取活动商品信息")
+    @GetMapping("/goods/list/{distributionId}")
+    public AjaxResult<List<DistributionGoodsListVo>> getGoodsList(@PathVariable("distributionId") Long distributionId) {
+        return AjaxResult.success(iDistributionActivityService.getGoodsList(distributionId));
+    }
+
 }

+ 7 - 9
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java

@@ -1,12 +1,9 @@
 package com.zhongzheng.controller.course;
 
-import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
-import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.modules.course.bo.CourseHandoutsAddBo;
-import com.zhongzheng.modules.course.bo.CourseHandoutsEditBo;
+import com.zhongzheng.modules.course.bo.CourseHandoutsFileQueryBo;
 import com.zhongzheng.modules.course.bo.CourseHandoutsQueryBo;
 import com.zhongzheng.modules.course.service.ICourseHandoutsService;
 import com.zhongzheng.modules.course.vo.CourseHandoutsVo;
@@ -14,8 +11,9 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
@@ -59,8 +57,8 @@ public class CourseHandoutsController extends BaseController {
      * 获取讲义列详细信息
      */
     @ApiOperation("获取讲义列详细信息")
-    @GetMapping("/{handoutsId}")
-    public AjaxResult<CourseHandoutsVo> getInfo(@PathVariable("handoutsId" ) Long handoutsId) {
-        return AjaxResult.success(iCourseHandoutsService.queryById(handoutsId));
+    @GetMapping("/file/detail")
+    public AjaxResult<CourseHandoutsVo> getInfo(CourseHandoutsFileQueryBo queryBo) {
+        return AjaxResult.success(iCourseHandoutsService.queryById(queryBo));
     }
 }

+ 0 - 115
zhongzheng-api/src/main/java/com/zhongzheng/controller/distribution/DistributionSellerController.java

@@ -1,115 +0,0 @@
-package com.zhongzheng.controller.distribution;
-
-import java.util.List;
-import java.util.Arrays;
-
-import cn.hutool.core.lang.Validator;
-import com.zhongzheng.common.utils.ServletUtils;
-import com.zhongzheng.framework.web.service.SellerTokenService;
-import com.zhongzheng.modules.distribution.bo.DistributionSellerAddBo;
-import com.zhongzheng.modules.distribution.bo.DistributionSellerEditBo;
-import com.zhongzheng.modules.distribution.bo.DistributionSellerQueryBo;
-import com.zhongzheng.modules.distribution.service.IDistributionSellerService;
-import com.zhongzheng.modules.distribution.vo.DistributionSellerVo;
-import com.zhongzheng.modules.user.bo.UserVisitLogAddBo;
-import com.zhongzheng.modules.user.domain.UserWxFollow;
-import com.zhongzheng.modules.user.entity.ClientLoginSeller;
-import com.zhongzheng.modules.user.entity.ClientLoginUser;
-import com.zhongzheng.modules.user.vo.UserVo;
-import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.zhongzheng.common.annotation.Log;
-import com.zhongzheng.common.core.controller.BaseController;
-import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.common.core.page.TableDataInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-/**
- * 分销业务员Controller
- *
- * @author hjl
- * @date 2023-03-13
- */
-@Api(value = "分销业务员控制器", tags = {"分销业务员管理"})
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
-@RestController
-@RequestMapping("/distribution/seller")
-public class DistributionSellerController extends BaseController {
-
-    private final IDistributionSellerService iDistributionSellerService;
-
-    private final SellerTokenService sellerTokenService;
-
-    /**
-     * 查询分销业务员列表
-     */
-    @ApiOperation("查询分销业务员列表")
-    @PreAuthorize("@ss.hasPermi('system:seller:list')")
-    @GetMapping("/list")
-    public TableDataInfo<DistributionSellerVo> list(DistributionSellerQueryBo bo) {
-        startPage();
-        List<DistributionSellerVo> list = iDistributionSellerService.queryList(bo);
-        return getDataTable(list);
-    }
-
-
-    /**
-     * 获取分销业务员详细信息
-     */
-    @ApiOperation("获取分销业务员详细信息")
-    @PreAuthorize("@ss.hasPermi('system:seller:query')")
-    @GetMapping("/{salerId}")
-    public AjaxResult<DistributionSellerVo> getInfo(@PathVariable("salerId" ) Long salerId) {
-        return AjaxResult.success(iDistributionSellerService.queryById(salerId));
-    }
-
-    /**
-     * 新增分销业务员
-     */
-   /* @ApiOperation("新增分销业务员")
-    @PreAuthorize("@ss.hasPermi('system:seller:add')")
-    @Log(title = "分销业务员", businessType = BusinessType.INSERT)
-    @PostMapping()
-    public AjaxResult<Void> add(@RequestBody DistributionSellerAddBo bo) {
-        return toAjax(iDistributionSellerService.insertByAddBo(bo) ? 1 : 0);
-    }*/
-
-    /**
-     * 修改分销业务员
-     */
-    @ApiOperation("修改分销业务员")
-    @PreAuthorize("@ss.hasPermi('system:seller:edit')")
-    @Log(title = "分销业务员", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult<Void> edit(@RequestBody DistributionSellerEditBo bo) {
-        return toAjax(iDistributionSellerService.updateByEditBo(bo) ? 1 : 0);
-    }
-
-    /**
-     * 获取用户信息
-     *
-     * @return 用户信息
-     */
-    @ApiOperation("登录业务员用户信息")
-    @GetMapping("getInfo")
-    public AjaxResult<DistributionSellerVo> getInfo(UserVisitLogAddBo bo)
-    {
-        ClientLoginSeller loginUser = sellerTokenService.getLoginUser(ServletUtils.getRequest());
-        DistributionSellerVo vo = iDistributionSellerService.queryById(loginUser.getSeller().getSellerId());
-        vo.setNull();
-        return AjaxResult.success(vo);
-    }
-
-}

+ 9 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -104,4 +104,13 @@ public class ClassGradeController extends BaseController {
         bo.setUserId(loginUser.getUser().getUserId());
         return AjaxResult.success(iUserPeriodService.checkGoodsStudy(bo));
     }
+
+    @ApiOperation("检查二建二造用户是否学完必修")
+    @PreAuthorize("@ss.hasPermi('grade:user:list')")
+    @GetMapping("/checkFinishRequiredCourse")
+    public AjaxResult<Long> checkFinishRequiredCourse(ClassGradeUserQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iClassGradeUserService.checkFinishRequiredCourse(bo));
+    }
 }

+ 9 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -5,7 +5,6 @@ import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
-import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.base.vo.BaseFilterVo;
@@ -16,7 +15,6 @@ import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
-import com.zhongzheng.modules.order.vo.OrderVo;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -110,6 +108,15 @@ public class OrderController extends BaseController {
         return AjaxResult.success(iOrderService.placeGzhOrder(bo));
     }
 
+    @ApiOperation("领取活动商品")
+    @PostMapping("/activity/goods")
+    public AjaxResult getActivityGoods(@RequestBody OrderAddBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iOrderService.getActivityGoods(bo));
+    }
+
+
     @ApiOperation("继续支付小程序订单")
     @PostMapping("/resumeSmallOrder")
     public AjaxResult resumeSmallOrder(@RequestBody OrderAddBo bo) {

+ 46 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -1,11 +1,17 @@
 package com.zhongzheng.controller.user;
 
 import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSON;
 import com.zhongzheng.common.annotation.Log;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.entity.SysUser;
+import com.zhongzheng.common.core.domain.model.LoginUser;
 import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.controller.alioss.OssController;
+import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.framework.web.service.WxTokenService;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserWxFollow;
@@ -15,10 +21,14 @@ import com.zhongzheng.modules.user.service.IUserVisitLogService;
 import com.zhongzheng.modules.user.service.IUserWxFollowService;
 import com.zhongzheng.modules.user.vo.RanKingUser;
 import com.zhongzheng.modules.user.vo.UserVo;
+import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -44,7 +54,9 @@ public class UserController extends BaseController {
 
     private final IUserVisitLogService iUserVisitLogService;
 
+    private final WxLoginService wxLoginService;
 
+    private static Logger log = LoggerFactory.getLogger(UserController.class);
     /**
      * 修改客户端用户
      */
@@ -139,4 +151,38 @@ public class UserController extends BaseController {
         bo.setUserId(loginUser.getUser().getUserId());
         return toAjax(iUserService.editShareActivityCode(bo) ? 1 : 0);
     }
+
+    @ApiOperation("检查密码修改时间")
+    @PreAuthorize("@ss.hasPermi('system:user:list')")
+    @GetMapping("/checkPwdTime")
+    public AjaxResult<Boolean> checkPwdTime()
+    {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId());
+        boolean needUpdate = false;
+        if(Validator.isNotEmpty(userVo.getPwdTime())&&(DateUtils.getNowTime().longValue()-userVo.getPwdTime().longValue())>90*24*3600){
+            needUpdate = true;
+        }
+        return AjaxResult.success(needUpdate);
+    }
+
+    @ApiOperation("购买前获取公众号openid")
+    @PostMapping("/gzh_bind")
+    public AjaxResult gzh_bind(@RequestBody WxLoginBody loginBody)
+    {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        loginBody.setUserId(loginUser.getUser().getUserId());
+        wxLoginService.bindWxGzhUnionIdUser(loginBody);
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("检查是否绑定公众号")
+    @PreAuthorize("@ss.hasPermi('system:user:list')")
+    @GetMapping("/checkBindGzh")
+    public AjaxResult<String> checkBindGzh()
+    {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId());
+        return AjaxResult.success("成功",userVo.getGzhOpenId());
+    }
 }

+ 11 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java

@@ -18,6 +18,7 @@ import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
+import com.zhongzheng.modules.wx.service.IWxPayService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -39,6 +40,9 @@ public class WxLoginController
     @Autowired
     private WxLoginService wxLoginService;
 
+    @Autowired
+    private IWxPayService iWxPayService;
+
     @Autowired
     private WxTokenService wxTokenService;
 
@@ -155,8 +159,6 @@ public class WxLoginController
     }
 
 
-
-
     @ApiOperation("刷新登录令牌")
     @GetMapping("/refreshToken/{userAccount}")
     public AjaxResult refreshToken(@PathVariable("userAccount") String userAccount)
@@ -167,5 +169,12 @@ public class WxLoginController
         return AjaxResult.success(map);
     }
 
+    @ApiOperation("公众号分享微信参数")
+    @GetMapping("/app/common/shareGzh")
+    public AjaxResult shareGzh(String url)
+    {
+        Map<String,String> map = iWxPayService.shareGzh(url);
+        return AjaxResult.success(map);
+    }
 
 }

+ 0 - 8
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxPayController.java

@@ -1,15 +1,10 @@
 package com.zhongzheng.controller.wx;
 
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
-import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.framework.web.service.WxTokenService;
-import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserService;
-import com.zhongzheng.modules.user.vo.UserVo;
-import com.zhongzheng.modules.wx.bo.WxLoginBody;
 import com.zhongzheng.modules.wx.bo.WxPayBody;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import io.swagger.annotations.Api;
@@ -17,9 +12,6 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
-import java.util.Map;
-
 @Api(tags ="微信支付操作管理")
 @ApiSupport(order = 2)
 @RestController

+ 81 - 82
zhongzheng-api/src/main/resources/application-dev.yml

@@ -1,86 +1,51 @@
 # 数据源配置
 spring:
     datasource:
-        #配置hikari连接池
-        hikari:
-            minimum-idle: 10
-            maximum-pool-size: 20
-            connection-timeout: 10000
-            idle-timeout: 30000
-            connection-init-sql: set names utf8mb4
-        #动态数据源配置
-        dynamic:
-            primary: slave #设置默认的数据源或者数据源组,默认值即为master
-            strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
-            datasource:
-                #数据源
-                master:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-                #数据源
-                slave:
-                    driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                    username: root
-                    password: zhongzheng2021
-#    datasource:
-#        type: com.alibaba.druid.pool.DruidDataSource
-#        driverClassName: com.mysql.cj.jdbc.Driver
-#        druid:
-#            # 主库数据源
-#            master:
-#                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-##                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-#                username: root
-#                password: zhongzheng2021
-#            # 从库数据源
-#            slave:
-#                # 从数据源开关/默认关闭
-#                enabled: false
-#                url:
-#                username:
-#                password:
-#            # 初始连接数
-#            initialSize: 5
-#            # 最小连接池数量
-#            minIdle: 10
-#            # 最大连接池数量
-#            maxActive: 20
-#            # 配置获取连接等待超时的时间
-#            maxWait: 60000
-#            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-#            timeBetweenEvictionRunsMillis: 60000
-#            # 配置一个连接在池中最小生存的时间,单位是毫秒
-#            minEvictableIdleTimeMillis: 300000
-#            # 配置一个连接在池中最大生存的时间,单位是毫秒
-#            maxEvictableIdleTimeMillis: 900000
-#            # 配置检测连接是否有效
-#            validationQuery: SELECT 1 FROM DUAL
-#            testWhileIdle: true
-#            testOnBorrow: false
-#            testOnReturn: false
-#            webStatFilter:
-#                enabled: true
-#            statViewServlet:
-#                enabled: true
-#                # 设置白名单,不填则允许所有访问
-#                allow:
-#                url-pattern: /druid/*
-#                # 控制台管理用户名和密码
-#                login-username: ruoyi
-#                login-password: 123456
-#            filter:
-#                stat:
-#                    enabled: true
-#                    # 慢SQL记录
-#                    log-slow-sql: true
-#                    slow-sql-millis: 1000
-#                    merge-sql: true
-#                wall:
-#                    config:
-#                        multi-statement-allow: true
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: com.mysql.cj.jdbc.Driver
+        druid:
+            url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: zhongzheng2021
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1 FROM DUAL
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            webStatFilter:
+                enabled: true
+            statViewServlet:
+                enabled: true
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username: ruoyi
+                login-password: 123456
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true
     # redis 配置
     redis:
         # 地址
@@ -154,8 +119,11 @@ wisdomExamRoom:
 certificate:
     host: http://192.168.1.38:8000/
 
+
+
 liveGotoURL: http://120.79.166.78:19014/
 
+
 enCodeVersion: trial
 
 oldStudySys:
@@ -167,9 +135,40 @@ oldStudySys:
     educationalInspector: http://192.168.1.210/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
+    salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: peixunjigou
     token: 0ca175b9c0f726a831d895e26933246
+
+distributionOldPay:
+    host: http://gdxypx.xy.com/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: http://192.168.1.7:9090/course/handouts/save
+    updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sandbox.nuonuocs.cn/open/v1/services
+    APPkey: SD39149760
+    APPSecret: SD168A248B2844E0
+
+oldOrder:
+    studyRecord: http://gdxypx.xy.com/WitSystem/BussinessApi/GetStudyRecord
+    orderCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/AuditUnderOrder
+    finishOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CompleteOrder
+    refuseCheck: http://gdxypx.xy.com/WitSystem/BussinessApi/ReFundAuditResult
+    inputOrderSn: http://gdxypx.xy.com/WitSystem/BussinessApi/GetNewYxtinputOrderSn
+    checkOrderStudent: http://gdxypx.xy.com/WitSystem/BussinessApi/ReAuditUnderOrder
+    checkOrderBrokerage: http://gdxypx.xy.com/WitSystem/BussinessApi/CommissionRate
+    refundPay: http://192.168.1.222:5030/common/platform/pay
+    refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
+
+oldSys:
+    host: http://gdxypx.xy.com
+
+invoice:
+    host: http://192.168.1.222:7077/sys/common/openMplatform/log

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

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: zhongzheng2021
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -50,7 +41,7 @@ spring:
                     enabled: true
                     # 慢SQL记录
                     log-slow-sql: true
-                    slow-sql-millis: 2500
+                    slow-sql-millis: 1000
                     merge-sql: true
                 wall:
                     config:
@@ -128,7 +119,7 @@ wisdomExamRoom:
 certificate:
     host: http://192.168.1.38:8000/
 
-liveGotoURL: http://120.79.166.78:19010/
+liveGotoURL: http://
 
 enCodeVersion: trial
 
@@ -141,9 +132,23 @@ oldStudySys:
     educationalInspector: http://192.168.1.210/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
+    salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: peixunjigou
     token: 0ca175b9c0f726a831d895e26933246
+
+distributionOldPay:
+    host: http://test.jqbao.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sandbox.nuonuocs.cn/open/v1/services
+    APPkey: SD39149760
+    APPSecret: SD168A248B2844E0

+ 26 - 18
zhongzheng-api/src/main/resources/application-prod.yml

@@ -4,18 +4,9 @@ spring:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
         druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: gdxy2021!@#zzjykj
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url:
-                username:
-                password:
+            url: jdbc:mysql://rm-wz950fu2v70864v85.mysql.rds.aliyuncs.com/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+            username: root
+            password: gdxy2021!@#zzjykj
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -50,7 +41,7 @@ spring:
                     enabled: true
                     # 慢SQL记录
                     log-slow-sql: true
-                    slow-sql-millis: 400
+                    slow-sql-millis: 1000
                     merge-sql: true
                 wall:
                     config:
@@ -79,13 +70,13 @@ spring:
                 max-wait: -1ms
 #aliyun:
 #    oss:
-#        endpoint: https://file.xyyxt.net  # oss对外服务的访问域名
+#        endpoint: https://file.xyyxt.net # oss对外服务的访问域名
 #        accessKeyId: LTAIgC8O2WUXvXuR  # 访问身份验证中用到用户标识
 #        accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX # 用户用于加密签名字符串和oss用来验证签名字符串的密钥
 #        bucketName: zhongzheng-prod # oss的存储空间
 #        policy:
 #            expire: 30 # 签名有效期(S)
-#        maxSize: 10 # 上传文件大小(M)
+#        maxSize: 100 # 上传文件大小(M)
 #        callback: https://cloud.xyyxt.net/aliyun/oss/callback # 文件上传成功后的回调地址
 #        dir:
 #            prefix: oss/images/ # 上传文件夹路径前缀 `
@@ -140,7 +131,7 @@ wisdomExamRoom:
 certificate:
     host: https://m.xyyxt.net/
 
-liveGotoURL: https://web.xyyxt.net/
+liveGotoURL: https://
 
 enCodeVersion: release
 
@@ -153,9 +144,26 @@ oldStudySys:
     educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
-    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: GDSXY
     token: 01b5d9833987efdff54483cdc9720da6
+
+distributionOldPay:
+    host: https://www.xyyxt.net/System/BussinessApi/AddRedPackData
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0
+
+oldSys:
+    host: https://www.xyyxt.net

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

@@ -140,7 +140,7 @@ wisdomExamRoom:
 certificate:
     host: https://m.xyyxt.net/
 
-liveGotoURL: https://web.xyyxt.net/
+liveGotoURL: https://
 
 enCodeVersion: release
 
@@ -150,11 +150,17 @@ oldStudySys:
     shareCanclePath: https://www.xyyxt.net/witsystem/dataapi/ordercance
     searchGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCount
     pushGradeCount: https://www.xyyxt.net/System/BussinessApi/OfficialGradeCountAuto
+    educationalInspector: https://zs.gdzzkj.net/EduSystem/BusinessApi/NewYxtUserPrompt
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
+    salePassword: http:///www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
 
 officialPush:
-    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: https://jypt.gdcic.net/organjxjy/XueshiShenqing
     infoAccount: GDSXY
     token: 01b5d9833987efdff54483cdc9720da6
+
+handouts:
+    savePath: https://attach.xyyxt.net/course/handouts/save
+    updatePath: https://attach.xyyxt.net/course/handouts/edit

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

@@ -256,7 +256,7 @@ tencent:
 
 aliyun:
   sms:
-    signName: 祥粤学校
+    signName: 中正科技
     registerTemplateCode: SMS_228670004
     loginTemplateCode: SMS_228670005
     forgetTemplateCode: SMS_228685033

二進制
zhongzheng-api/src/main/resources/config/1640084970/apiclient_cert.p12


+ 10 - 5
zhongzheng-common/pom.xml

@@ -69,6 +69,11 @@
             <version>1.4.17</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.nuonuo</groupId>
+            <artifactId>open-sdk</artifactId>
+            <version>1.0.5.2</version>
+        </dependency>
         <!-- 保利威 -->
         <dependency>
             <groupId>net.polyv</groupId>
@@ -183,11 +188,11 @@
         </dependency>
 
         <!-- dynamic -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>3.0.0</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.baomidou</groupId>-->
+<!--            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>-->
+<!--            <version>3.0.0</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>com.baomidou</groupId>

+ 0 - 3
zhongzheng-common/src/main/java/com/zhongzheng/common/constant/Constants.java

@@ -64,7 +64,6 @@ public class Constants
 
     public static final String WX_LOGIN_TOKEN_KEY = "wx_login_tokens:";
 
-    public static final String SELLER_LOGIN_TOKEN_KEY = "se_login_tokens:";
 
     /**
      * 防重提交 redis key
@@ -98,7 +97,6 @@ public class Constants
      */
     public static final String WX_TOKEN_PREFIX = "WX ";
 
-    public static final String SELLER_TOKEN_PREFIX = "SE ";
 
     public static final String REGISTER_SMS = "REGISTER-";
     public static final String FORGET_SMS = "FORGET-";
@@ -114,7 +112,6 @@ public class Constants
 
     public static final String WX_LOGIN_USER_KEY = "wx_login_user_key";
 
-    public static final String SELLER_LOGIN_USER_KEY = "seller_login_user_key";
 
 
 

+ 144 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/bo/SysRoleBo.java

@@ -0,0 +1,144 @@
+package com.zhongzheng.common.core.bo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhongzheng.common.annotation.Excel;
+import com.zhongzheng.common.annotation.Excel.ColumnType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 角色表 sys_role
+ *
+ * @author zhongzheng
+ */
+@ApiModel("角色")
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class SysRoleBo implements Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 角色ID */
+    @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
+    @TableId(value = "role_id",type = IdType.AUTO)
+    private Long roleId;
+
+    /** 角色名称 */
+    @ApiModelProperty(value ="角色名称")
+    @Excel(name = "角色名称")
+    @NotBlank(message = "角色名称不能为空")
+    @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
+    private String roleName;
+
+    /** 角色权限 */
+    @ApiModelProperty(value ="权限字符")
+    @Excel(name = "角色权限")
+    @NotBlank(message = "权限字符不能为空")
+    @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
+    private String roleKey;
+
+    /** 角色排序 */
+    @ApiModelProperty(value ="角色排序")
+    @Excel(name = "角色排序")
+    @NotBlank(message = "显示顺序不能为空")
+    private String roleSort;
+
+    /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限) */
+    @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限")
+    private String dataScope;
+
+    @Value("true")
+    /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
+    private boolean menuCheckStrictly;
+
+    @Value("true")
+    /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */
+    private boolean deptCheckStrictly;
+
+    /** 角色状态(0正常 1停用) */
+    @ApiModelProperty(value ="状态 1=正常,0=停用")
+    @Value("1")
+    @Excel(name = "角色状态", readConverterExp = "1=正常,0=停用")
+    private String status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    @TableLogic
+    private String delFlag;
+
+    /** 创建者 */
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 更新者 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /** 备注 */
+    @ApiModelProperty(value ="备注")
+    private String remark;
+
+    /**
+     * 请求参数
+     */
+    @TableField(exist = false)
+    private Map<String, Object> params = new HashMap<>();
+
+    /** 用户是否存在此角色标识 默认不存在 */
+    @TableField(exist = false)
+    private boolean flag = false;
+
+    /** 菜单组 */
+    @ApiModelProperty(value ="菜单数组")
+    @TableField(exist = false)
+    private Long[] menuIds;
+
+    /** 部门组(数据权限) */
+    @TableField(exist = false)
+    private Long[] deptIds;
+
+    @TableField(exist = false)
+    private List<String> statusArray;
+    /** 业务层次ID */
+    @TableField(exist = false)
+    private List<Long> businessIds;
+
+    public SysRoleBo(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public boolean isAdmin()
+    {
+        return isAdmin(this.roleId);
+    }
+
+    public static boolean isAdmin(Long roleId)
+    {
+        return roleId != null && 1L == roleId;
+    }
+
+}

+ 3 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/bo/SysUserEditBo.java

@@ -87,4 +87,7 @@ public class SysUserEditBo
     private Long[] roleIds;
     @ApiModelProperty("岗位组")
     private Long[] postIds;
+    /** 身份证号 */
+    @ApiModelProperty("身份证号")
+    private String idCard;
 }

+ 3 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictData.java

@@ -70,6 +70,9 @@ public class SysDictData implements Serializable
     /** 表格字典样式 */
     private String listClass;
 
+    @TableField(value = "tenant_id")
+    private Long tenantId;
+
     /** 是否默认(Y是 N否) */
     @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
     private String isDefault;

+ 2 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysDictType.java

@@ -82,6 +82,8 @@ public class SysDictType implements Serializable
     @TableField(exist = false)
     private Map<String, Object> params = new HashMap<>();
 
+    @TableField(value = "tenant_id")
+    private Long tenantId;
 
     /** 分页大小 */
     @ApiModelProperty("分页大小")

+ 2 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysRole.java

@@ -101,6 +101,8 @@ public class SysRole implements Serializable
     @ApiModelProperty(value ="备注")
     private String remark;
 
+    private String tenantId;
+
     /**
      * 请求参数
      */

+ 6 - 3
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/SysUser.java

@@ -8,6 +8,7 @@ import com.zhongzheng.common.annotation.Excel;
 import com.zhongzheng.common.annotation.Excel.ColumnType;
 import com.zhongzheng.common.annotation.Excel.Type;
 import com.zhongzheng.common.annotation.Excels;
+import com.zhongzheng.common.type.EncryptHandler;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -30,7 +31,7 @@ import java.util.Map;
 @Data
 @NoArgsConstructor
 @Accessors(chain = true)
-@TableName("sys_user")
+@TableName(value ="sys_user",autoResultMap = true)
 public class SysUser implements Serializable
 {
     private static final long serialVersionUID = 1L;
@@ -165,9 +166,11 @@ public class SysUser implements Serializable
     private String preLoginIp;
     /** 上一次登录时间 */
     private Date preLoginDate;
-
     /** 密码最后修改时间 */
     private Long pwdTime;
+    /** 身份证号 */
+    @TableField(typeHandler = EncryptHandler.class)
+    private String idCard;
 
     public SysUser(Long userId)
     {
@@ -188,5 +191,5 @@ public class SysUser implements Serializable
     {
         return userId != null && 1L == userId;
     }*/
-
+  private Long sellerId;
 }

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/TopSysUser.java

@@ -148,7 +148,7 @@ public class TopSysUser implements Serializable
 
     /** 角色组 */
     @TableField(exist = false)
-    private Long[] roleIds;
+    private List<Long> roleIds;
 
     /** 角色名称 */
     @TableField(exist = false)

+ 5 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginBody.java

@@ -40,4 +40,9 @@ public class LoginBody
     @ApiModelProperty(value ="验证码uuid",required = true)
     private String uuid = "";
 
+    @ApiModelProperty(value ="短信验证码")
+    private String smsCode;
+
+    @ApiModelProperty(value ="手机号码")
+    private String phonenumber;
 }

+ 5 - 4
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/model/LoginUser.java

@@ -12,7 +12,7 @@ import java.util.Set;
 
 /**
  * 登录用户身份权限
- * 
+ *
  * @author zhongzheng
  */
 
@@ -68,6 +68,7 @@ public class LoginUser implements UserDetails
      */
     private SysUser user;
 
+
     public LoginUser(SysUser user, Set<String> permissions)
     {
         this.user = user;
@@ -99,7 +100,7 @@ public class LoginUser implements UserDetails
 
     /**
      * 指定用户是否解锁,锁定的用户无法进行身份验证
-     * 
+     *
      * @return
      */
     @JsonIgnore
@@ -111,7 +112,7 @@ public class LoginUser implements UserDetails
 
     /**
      * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
-     * 
+     *
      * @return
      */
     @JsonIgnore
@@ -123,7 +124,7 @@ public class LoginUser implements UserDetails
 
     /**
      * 是否可用 ,禁用的用户不能身份验证
-     * 
+     *
      * @return
      */
     @JsonIgnore

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/type/EncryptHandler.java

@@ -21,7 +21,7 @@ public class EncryptHandler  implements TypeHandler<String> {
 
 
 
-    public String decrypt(String value) {
+    public static String decrypt(String value) {
         if (null == value) {
             return null;
         }

+ 62 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java

@@ -3,7 +3,9 @@ package com.zhongzheng.common.utils;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
@@ -224,6 +226,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return cal.getTimeInMillis() / 1000;  //今天凌晨
     }
 
+    public static String formatDate(Date time,String str)
+    {
+       SimpleDateFormat sdf = new SimpleDateFormat(str);
+        return sdf.format(time);
+    }
+
     /**
      * 获取明天凌晨时间戳
      */
@@ -323,6 +331,21 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return "P"+getDateOrderSn();
     }
 
+    public static String getInvoiceOrderSn()
+    {
+        DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        String localDate = (LocalDateTime.now().format(ofPattern)).substring(2);
+        //随机数
+        String randomNumeric = RandomStringUtils.randomNumeric(4);
+        return "IN"+localDate+randomNumeric;
+
+    }
+
+    public static String getTagOrderSn(String tag)
+    {
+        return tag+getDateOrderSn();
+    }
+
     public static String secToTime(int time) {
         String timeStr = null;
         int hour = 0;
@@ -365,4 +388,43 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return hh*60*60+mi*60+ss;
     }
 
+    public static Integer dayBetween(Long s1,Long s2) {
+        String date1str = timestampToDateFormat(s1);
+        String date2str = timestampToDateFormat(s2);
+        int count = 0;
+        if("".equals(date1str) || date1str == null || "".equals(date2str) || date2str == null) {
+            return count;
+        }
+        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
+       try {
+           Date date1 = format.parse(date1str);
+           Date date2 = format.parse(date2str);
+           count = ((int) ((date1.getTime() - date2.getTime()) / (1000*3600*24)));
+           return count;
+        }catch (Exception e){
+           return null;
+       }
+    }
+
+    public static  Integer getTodayWeek(){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        int weekIdx = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+        switch (weekIdx) {
+            case 1:
+                return 1;
+            case 2:
+                return 2;
+            case 3:
+                return 3;
+            case 4:
+                return 4;
+            case 5:
+                return 5;
+            case 6:
+                return 6;
+            default:
+                return 7;
+        }
+    }
 }

+ 4 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/ServletUtils.java

@@ -2,6 +2,7 @@ package com.zhongzheng.common.utils;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
+import org.apache.tomcat.util.http.MimeHeaders;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -10,6 +11,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Map;
 
 /**
  * 客户端工具类
@@ -78,6 +81,7 @@ public class ServletUtils
 
     }
 
+
     /**
      * 获取response
      */

+ 54 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/TelPhoneUtils.java

@@ -4,6 +4,9 @@ import com.zhongzheng.common.utils.spring.SpringUtils;
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 
+import java.io.IOException;
+import java.util.Random;
+
 /**
  * 手机号码工具栏
  *
@@ -11,6 +14,57 @@ import org.springframework.context.i18n.LocaleContextHolder;
  */
 public class TelPhoneUtils
 {
+    //中国移动
+    public static final String[] CHINA_MOBILE = {
+            "134", "135", "136", "137", "138", "139", "150", "151", "152", "157", "158", "159",
+            "182", "183", "184", "187", "188", "178", "147", "172", "198"
+    };
+    //中国联通
+    public static final String[] CHINA_UNICOM = {
+            "130", "131", "132", "145", "155", "156", "166", "171", "175", "176", "185", "186", "166"
+    };
+    //中国电信
+    public static final String[] CHINA_TELECOME = {
+            "133", "149", "153", "173", "177", "180", "181", "189", "199"
+    };
+
+    /**
+     * 生成手机号
+     */
+    public static String createMobile() {
+        StringBuilder sb = new StringBuilder();
+        Random random = new Random();
+        int op = random.nextInt(3);//随机运营商标志位
+        String mobileThree;//手机号前三位
+        int temp;
+        switch (op) {
+            case 0:
+                mobileThree = CHINA_MOBILE[random.nextInt(CHINA_MOBILE.length)];
+                break;
+            case 1:
+                mobileThree = CHINA_UNICOM[random.nextInt(CHINA_UNICOM.length)];
+                break;
+            case 2:
+                mobileThree = CHINA_TELECOME[random.nextInt(CHINA_TELECOME.length)];
+                break;
+            default:
+                mobileThree = "op标志位有误!";
+                break;
+        }
+        if (mobileThree.length() > 3) {
+            return mobileThree;
+        }
+        sb.append(mobileThree);
+        //生成手机号后8位
+        for (int i = 0; i < 8; i++) {
+            temp = random.nextInt(10);
+            sb.append(temp);
+        }
+        return sb.toString();
+    }
+
+
+
     /**
      * 隐藏手机号码
      * @param tel

部分文件因文件數量過多而無法顯示