14 Commits 317a2725f2 ... 0bc1f1d328

Author SHA1 Message Date
  云殇忆 0bc1f1d328 修复首页扫码日志列表分页无效问题 1 year ago
  Yangyz 5ab44c73e8 改接口 1 year ago
  Yangyz df104ed470 加接口 1 year ago
  JensionDzero 628ac14045 修改bug 1 year ago
  JensionDzero da46aa4bdb 修改创建用户、禁用用户功能 1 year ago
  JensionDzero 9da1ba4375 Merge branch 'master' of http://47.107.53.207:3000/traineeCoder001/Digital-Investment 1 year ago
  Yangyz 74601311a2 改校验 1 year ago
  JensionDzero ba2926b6db 将u_id改成uId 1 year ago
  JensionDzero cea422629c 修改创建管理员权限 1 year ago
  Yangyz f79cfe9f0a 正式配置 1 year ago
  Yangyz 81c53c9d25 正式配置 1 year ago
  JensionDzero 74bf2c46ea 修改bug 1 year ago
  JensionDzero 946ad48750 Merge branch 'lcy' of http://47.107.53.207:3000/traineeCoder001/Digital-Investment 1 year ago
  JensionDzero 1075146849 添加prod 1 year ago
33 changed files with 669 additions and 299 deletions
  1. 29 0
      .run/digital-investment.run.xml
  2. 1 1
      .run/ruoyi-monitor-admin.run.xml
  3. 8 4
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/benyun/IUserinfoController.java
  4. 2 2
      ruoyi-admin/src/main/resources/application-lbtest.yml
  5. 195 0
      ruoyi-admin/src/main/resources/application-prod.yml
  6. 1 1
      ruoyi-admin/src/main/resources/application-test.yml
  7. 1 1
      ruoyi-admin/src/main/resources/application.yml
  8. 2 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/CommercialController.java
  9. 16 6
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/EquipmentController.java
  10. 11 26
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/PlanController.java
  11. 1 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Commercial.java
  12. 0 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/DlUser.java
  13. 31 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/SysCode.java
  14. 0 4
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/OrderAddBo.java
  15. 7 9
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/StatisticsAddBo.java
  16. 15 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/SysCodeMapper.java
  17. 1 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/CommericalService.java
  18. 3 4
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/EquipmentService.java
  19. 5 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/PlanService.java
  20. 15 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/SysCodeService.java
  21. 4 12
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/CommercialServiceImpl.java
  22. 148 110
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/EquipmentServiceImpl.java
  23. 3 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/OrderServiceImpl.java
  24. 64 66
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java
  25. 2 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StatisticsServiceImpl.java
  26. 0 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StoreServiceImpl.java
  27. 20 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/SysCodeServiceImpl.java
  28. 12 0
      ruoyi-demo/src/main/resources/mapper/demo/SysCodeMapper.xml
  29. 1 1
      ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml
  30. 8 5
      ruoyi-system/src/main/java/com/ruoyi/system/domain/OpenAccount.java
  31. 8 7
      ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/OpenAccountVO.java
  32. 54 27
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IUserinfoServiceImpl.java
  33. 1 0
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 29 - 0
.run/digital-investment.run.xml

@@ -0,0 +1,29 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="digital-investment" type="docker-deploy" factoryName="dockerfile" singleton="false" server-name="vpn-数字">
+    <deployment type="dockerfile">
+      <settings>
+        <option name="imageTag" value="digital-investment" />
+        <option name="containerName" value="digital-investment" />
+        <option name="envVars">
+          <list>
+            <DockerEnvVarImpl>
+              <option name="name" value="TZ" />
+              <option name="value" value="Asia/Shanghai" />
+            </DockerEnvVarImpl>
+          </list>
+        </option>
+        <option name="commandLineOptions" value="--network host" />
+        <option name="sourceFilePath" value="ruoyi-admin/Dockerfile" />
+        <option name="volumeBindings">
+          <list>
+            <DockerVolumeBindingImpl>
+              <option name="containerPath" value="/rouyi/server/logs" />
+              <option name="hostPath" value="/ruoyi/server/logs" />
+            </DockerVolumeBindingImpl>
+          </list>
+        </option>
+      </settings>
+    </deployment>
+    <method v="2" />
+  </configuration>
+</component>

+ 1 - 1
.run/ruoyi-monitor-admin.run.xml

@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile" server-name="szzs">
+  <configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile" singleton="false" server-name="lx-积分 数字招商">
     <deployment type="dockerfile">
       <settings>
         <option name="imageTag" value="ruoyi/ruoyi-monitor-admin:4.8.0" />

+ 8 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/benyun/IUserinfoController.java

@@ -2,6 +2,8 @@ package com.ruoyi.web.controller.benyun;
 
 import cn.dev33.satoken.annotation.SaIgnore;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.system.domain.vo.OpenAccountVO;
 import com.ruoyi.system.service.AccountService;
 import com.ruoyi.system.service.IUserinfoService;
@@ -29,8 +31,9 @@ public class IUserinfoController {
      * @param openAccountVO
      * @return
      */
+    @SaIgnore
     @PostMapping("/createAdmin")
-    public R createAdmin(@Validated @RequestBody OpenAccountVO openAccountVO) {
+    public R createAdmin(@Validated(value = {AddGroup.class}) @RequestBody OpenAccountVO openAccountVO) {
         ArrayList<Integer> integers = new ArrayList<>();
         integers.add(3); //管理员
         openAccountVO.setRoles(integers);
@@ -43,8 +46,9 @@ public class IUserinfoController {
      * @param openAccountVO
      * @return
      */
+    @SaIgnore
     @PostMapping("/createUser")
-    public R createUser(@Validated @RequestBody OpenAccountVO openAccountVO) {
+    public R createUser(@Validated(value = {AddGroup.class}) @RequestBody OpenAccountVO openAccountVO) {
         ArrayList<Integer> integers = new ArrayList<>();
         integers.add(2); //管理员
         openAccountVO.setRoles(integers);
@@ -52,9 +56,9 @@ public class IUserinfoController {
         return user;
     }
 
-
+    @SaIgnore
     @PostMapping("/disableUser")
-    public R disableUser(@Validated @RequestBody OpenAccountVO openAccountVO) {
+    public R disableUser(@Validated(value = {QueryGroup.class}) @RequestBody OpenAccountVO openAccountVO) {
         iUserinfoService.disableUser(openAccountVO);
         return R.ok();
     }

+ 2 - 2
ruoyi-admin/src/main/resources/application-lbtest.yml

@@ -67,8 +67,8 @@ spring:
           type: ${spring.datasource.type}
           driverClassName: com.mysql.cj.jdbc.Driver
           url: jdbc:mysql://192.168.2.65:3306/digital-investment?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
-          username:
-          password:
+          username: root
+          password: benyun
 #        oracle:
 #          type: ${spring.datasource.type}
 #          driverClassName: oracle.jdbc.OracleDriver

+ 195 - 0
ruoyi-admin/src/main/resources/application-prod.yml

@@ -0,0 +1,195 @@
+--- # 临时文件存储位置 避免临时文件被系统清理报错
+spring.servlet.multipart.location: /ruoyi/server/temp
+server:
+  port: 8100
+  servlet:
+    # 应用的访问路径
+    context-path: /szzs
+
+--- # 监控中心配置
+spring.boot.admin.client:
+  # 增加客户端开关
+  enabled: false
+  url: http://192.168.0.23:9090/admin
+  instance:
+    service-host-type: IP
+  username: ruoyi
+  password: 123456
+
+--- # xxl-job 配置
+xxl.job:
+  # 执行器开关
+  enabled: true
+  # 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
+  admin-addresses: http://192.168.0.26:8080/xxl-job-admin
+  # 执行器通讯TOKEN:非空时启用
+  access-token: tokenixuemtuoekpjmixhddlhzssuquvvlxya
+  executor:
+    # 执行器AppName:执行器心跳注册分组依据;为空则关闭自动注册
+    appname: xxl-job-executor
+    # 执行器端口号 执行器从9101开始往后写
+    port: 9101
+    # 执行器注册:默认IP:PORT
+    address:
+    # 执行器IP:默认自动获取IP
+    ip:
+    # 执行器运行日志文件存储磁盘路径
+    logpath: ./logs/xxl-job
+    # 执行器日志文件保存天数:大于3生效
+    logretentiondays: 30
+
+--- # 数据源配置
+spring:
+  datasource:
+    type: com.zaxxer.hikari.HikariDataSource
+    # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
+    dynamic:
+      # 性能分析插件(有性能损耗 不建议生产环境使用)
+      p6spy: false
+      # 设置默认的数据源或者数据源组,默认值即为 master
+      primary: master
+      # 严格模式 匹配不到数据源则报错
+      strict: true
+      datasource:
+        # 主库数据源
+        master:
+          type: ${spring.datasource.type}
+          driverClassName: com.mysql.cj.jdbc.Driver
+          # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+          # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
+          url: jdbc:mysql://192.168.0.31:3306/digital-investment?useSSL=true&characterEncoding=utf-8
+          username: root
+          password: LongX@321
+
+        # 从库数据源
+        slave:
+          lazy: true
+          type: ${spring.datasource.type}
+          driverClassName: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://192.168.0.31:3306/digital-investment?useSSL=true&characterEncoding=utf-8
+          username: root
+          password: LongX@321
+#        oracle:
+#          type: ${spring.datasource.type}
+#          driverClassName: oracle.jdbc.OracleDriver
+#          url: jdbc:oracle:thin:@//localhost:1521/XE
+#          username: ROOT
+#          password: root
+#          hikari:
+#            connectionTestQuery: SELECT 1 FROM DUAL
+#        postgres:
+#          type: ${spring.datasource.type}
+#          driverClassName: org.postgresql.Driver
+#          url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
+#          username: root
+#          password: root
+#        sqlserver:
+#          type: ${spring.datasource.type}
+#          driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#          url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
+#          username: SA
+#          password: root
+      hikari:
+        # 最大连接池数量
+        maxPoolSize: 20
+        # 最小空闲线程数量
+        minIdle: 10
+        # 配置获取连接等待超时的时间
+        connectionTimeout: 30000
+        # 校验超时时间
+        validationTimeout: 5000
+        # 空闲连接存活最大时间,默认10分钟
+        idleTimeout: 600000
+        # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+        maxLifetime: 1800000
+        # 连接测试query(配置检测连接是否有效)
+        connectionTestQuery: SELECT 1
+        # 多久检查一次连接的活性
+        keepaliveTime: 30000
+
+--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
+spring:
+  redis:
+    # 地址
+    host: 192.168.0.34
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码(如没有密码请注释掉)
+    password: lsf@12345
+    # 连接超时时间
+    timeout: 10s
+    # 是否开启ssl
+    ssl: false
+redisson:
+  # redis key前缀
+  keyPrefix:
+  # 线程池数量
+  threads: 16
+  # Netty线程池数量
+  nettyThreads: 32
+  # 单节点配置
+  singleServerConfig:
+    # 客户端名称
+    clientName: ${ruoyi.name}
+    # 最小空闲连接数
+    connectionMinimumIdleSize: 32
+    # 连接池大小
+    connectionPoolSize: 64
+    # 连接空闲超时,单位:毫秒
+    idleConnectionTimeout: 10000
+    # 命令等待超时,单位:毫秒
+    timeout: 3000
+    # 发布和订阅连接池大小
+    subscriptionConnectionPoolSize: 50
+
+--- # mail 邮件发送
+mail:
+  enabled: false
+  host: smtp.163.com
+  port: 465
+  # 是否需要用户名密码验证
+  auth: true
+  # 发送方,遵循RFC-822标准
+  from: xxx@163.com
+  # 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
+  user: xxx@163.com
+  # 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
+  pass: xxxxxxxxxx
+  # 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
+  starttlsEnable: true
+  # 使用SSL安全连接
+  sslEnable: true
+  # SMTP超时时长,单位毫秒,缺省值不超时
+  timeout: 0
+  # Socket连接超时值,单位毫秒,缺省值不超时
+  connectionTimeout: 0
+
+--- # sms 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
+# https://wind.kim/doc/start 文档地址 各个厂商可同时使用
+sms:
+  # 阿里云 dysmsapi.aliyuncs.com
+  alibaba:
+    #请求地址 默认为 dysmsapi.aliyuncs.com 如无特殊改变可以不用设置
+    requestUrl: dysmsapi.aliyuncs.com
+    #阿里云的accessKey
+    accessKeyId: xxxxxxx
+    #阿里云的accessKeySecret
+    accessKeySecret: xxxxxxx
+    #短信签名
+    signature: 测试
+  tencent:
+    #请求地址默认为 sms.tencentcloudapi.com 如无特殊改变可不用设置
+    requestUrl: sms.tencentcloudapi.com
+    #腾讯云的accessKey
+    accessKeyId: xxxxxxx
+    #腾讯云的accessKeySecret
+    accessKeySecret: xxxxxxx
+    #短信签名
+    signature: 测试
+    #短信sdkAppId
+    sdkAppId: appid
+    #地域信息默认为 ap-guangzhou 如无特殊改变可不用设置
+    territory: ap-guangzhou
+

+ 1 - 1
ruoyi-admin/src/main/resources/application-test.yml

@@ -9,7 +9,7 @@ server:
 --- # 监控中心配置
 spring.boot.admin.client:
   # 增加客户端开关
-  enabled: true
+  enabled: false
   url: http://localhost:9090/admin
   instance:
     service-host-type: IP

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -164,7 +164,7 @@ mybatis-plus:
     # 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
     # 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
     # 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
-    logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+    logImpl: org.apache.ibatis.logging.stdout.StdOutImpl
 #  global-config:
 #    # 是否打印 Logo banner
 #    banner: true

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/CommercialController.java

@@ -58,8 +58,8 @@ public class CommercialController {
     @SaCheckPermission("szzs:commerce:delete")
     @DeleteMapping("/deleteCommercial")
     public R deleteCommercial(@NotEmpty(message = "待删除商户Id不能为空") String[] commercialIds){
-        String s = commericalService.deleteCommercial(commercialIds);
-        return R.ok(s);
+        R r = commericalService.deleteCommercial(commercialIds);
+        return r;
     }
 
     /**

+ 16 - 6
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/EquipmentController.java

@@ -1,6 +1,8 @@
 package com.ruoyi.demo.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.annotation.SaIgnore;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageInfo;
@@ -47,11 +49,18 @@ public class EquipmentController {
     @PostMapping("/addEquipment")
     public R addEquipment(@RequestBody @Validated(value = {AddGroup.class}) EquipmentVo equipmentVo){
         Integer integer = equipmentService.addEquipment(equipmentVo);
-        if (integer == 0)
+        if (integer == 0) {
             return R.fail("添加失败,设备编号已存在");
+        }
         return R.ok();
     }
 
+    @PostMapping("/getCode")
+    @SaIgnore
+    public R getCode(){
+        return R.ok(equipmentService.getCode());
+    }
+
     /**
      * 修改设备信息
      * @param equipmentVo
@@ -94,8 +103,8 @@ public class EquipmentController {
     @SaCheckPermission("szzs:equipment:delete")
     @DeleteMapping("/deleteEquipment")
     public R deleteEquipment(@NotEmpty String[] equipmentIds){
-        String s = equipmentService.deleteEquipment(equipmentIds);
-        return R.ok(s);
+        R r = equipmentService.deleteEquipment(equipmentIds);
+        return r;
     }
 
     /**
@@ -150,8 +159,9 @@ public class EquipmentController {
     @SaCheckPermission("szzs:equipment:add")
     @PutMapping("/addStoreEquipment")
     public R addStoreEquipment(@RequestBody @Validated(value = {QueryGroup.class}) EquipmentVo equipmentVo){
-        if (equipmentVo.getStoreId() == null || equipmentVo.getStoreId().equals(""))
+        if (ObjectUtil.isNull(equipmentVo.getStoreId())) {
             return R.fail("添加失败");
+        }
         equipmentService.addStoreEquipment(equipmentVo);
         return R.ok();
     }
@@ -245,9 +255,9 @@ public class EquipmentController {
     @GetMapping ("/equipmentOnStateChange")
     public R equipmentOnStateChange(@NotBlank @RequestParam("equipmentCode") String equipmentCode,@NotBlank @RequestParam("change")String change){
         String s = null;
-        if (change.equals("true")){
+        if ("true".equals(change)){
             s = equipmentService.equipmentOnStateWakeup(equipmentCode);
-        }else if(change.equals("false")){
+        }else if("false".equals(change)){
             s = equipmentService.equipmentOnStatedormancy(equipmentCode);
         }
         return R.ok(s);

+ 11 - 26
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/PlanController.java

@@ -6,6 +6,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.demo.entity.Plan;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.bo.UpDownBo;
@@ -34,12 +35,7 @@ public class PlanController {
     @SaCheckPermission("szzs:planManage:update")
     @PutMapping("/{planId}")
     public R planUpDown(@PathVariable String planId){
-        int i = planService.planUpDown(planId);
-        if (i == 1)
-            return R.ok("成功");
-        if (i == -1)
-            return R.fail("计划不存在");
-        return R.fail("失败");
+        return planService.planUpDown(planId);
     }
     /**
      * 查询广告计划列表
@@ -148,17 +144,12 @@ public class PlanController {
     @SaIgnore
     @PostMapping()
     public R addPlan(@RequestBody @Validated(value = {AddGroup.class}) PlanAddBo bo){
-        if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null)
-            if (bo.getPlanStartTime().compareTo(bo.getPlanEndTime()) > 0)
+        if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null) {
+            if (bo.getPlanStartTime().compareTo(bo.getPlanEndTime()) > 0) {
                 return R.fail("起始时间不能大于结束时间");
-        String i = planService.addPlan(bo);
-        if ("0".equals(i))
-            return R.fail("添加失败");
-        if ("-1".equals(i))
-            return R.fail("无效的appkey");
-        if ("-3".equals(i))
-            return R.fail("校验sign出错");
-        return R.ok(i);
+            }
+        }
+        return planService.addPlan(bo);
     }
     /**
      * 删除广告推送计划
@@ -196,15 +187,8 @@ public class PlanController {
      */
     @SaIgnore
     @PostMapping("/push")
-    public R planPushUpDown(@RequestBody UpDownBo bo){
-        int i = planService.planPushUpDown(bo);
-        if (i == 1)
-            return R.ok("上架/下架成功");
-        if (i == -1)
-            return R.fail("无效的appkey");
-        if (i == -3)
-            return R.fail("校验sign出错");
-        return R.fail("上架/下架失败");
+    public R<?> planPushUpDown(@RequestBody UpDownBo bo){
+        return planService.planPushUpDown(bo);
     }
 
     /**
@@ -217,8 +201,9 @@ public class PlanController {
     @PostMapping("/push/getSign")
     public R UpDownGetSign(@RequestBody UpDownBo bo){
         String sign = planService.pushGetSign(bo);
-        if ("error".equals(sign))
+        if ("error".equals(sign)) {
             return R.fail("无效的appkey");
+        }
         return R.ok(sign);
     }
 

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Commercial.java

@@ -64,5 +64,6 @@ public class Commercial {
         this.prove5 = commercialVo.getProve5();
         this.addrCode = commercialVo.getAddrCode();
         this.addrInfo = commercialVo.getAddrInfo();
+        this.addrCodeInfo = commercialVo.getAddrCodeInfo();
     }
 }

+ 0 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/DlUser.java

@@ -25,7 +25,6 @@ public class DlUser {
     @TableField("start_equipment_code")
     private String startEquipmentCode;
     @TableField("start_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
     @TableField("end_equipment_id")
     private String endEquipmentId;
@@ -35,7 +34,6 @@ public class DlUser {
     @TableField("end_equipment_code")
     private String endEquipmentCode;
     @TableField("end_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
     @TableField("total_price")
     private BigDecimal totalPrice;

+ 31 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/SysCode.java

@@ -0,0 +1,31 @@
+package com.ruoyi.demo.entity;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.util.Date;
+import java.math.BigDecimal;
+import java.io.Serializable;
+
+/**
+ * (SysCode)表实体类
+ *
+ * @author Yyz
+ * @since 2024-01-09 09:15:03
+ */
+@TableName("sys_code")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SysCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "code",type = IdType.ASSIGN_ID)
+    private String code;
+}

+ 0 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/OrderAddBo.java

@@ -11,12 +11,8 @@ import java.math.BigDecimal;
 public class OrderAddBo extends StatisticsAddBo {
     @NotBlank(groups = {AddGroup.class},message = "订单编号不能为空")
     private String orderId;
-    @NotBlank(groups = {AddGroup.class},message = "规格不能为空")
     private String specs;
-    @NotNull(groups = {AddGroup.class},message = "商品价格不能为空")
     private BigDecimal goodsPrice;
-    @NotNull(groups = {AddGroup.class},message = "交易数量不能为空")
     private Integer dealCount;
-    @NotBlank(groups = {AddGroup.class},message = "交易状态不能为空")
     private String state;
 }

+ 7 - 9
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/StatisticsAddBo.java

@@ -1,34 +1,32 @@
 package com.ruoyi.demo.entity.bo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.validate.AddGroup;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class StatisticsAddBo {
+public class StatisticsAddBo implements Serializable {
+    private static final long serialVersionUID = -736373431471562730L;
+
     @NotBlank(groups = {AddGroup.class},message = "appkey不能为空")
     private String appkey;
     @NotBlank(groups = {AddGroup.class},message = "设备编号不能为空")
     private String equipmentCode;
-    @NotBlank(groups = {AddGroup.class},message = "商品Id不能为空")
     private String goodsId;
-    @NotBlank(groups = {AddGroup.class},message = "商品名称不能为空")
     private String goodsName;
-    @NotBlank(groups = {AddGroup.class},message = "供应商Id不能为空")
     private String vendorId;
-    @NotBlank(groups = {AddGroup.class},message = "供应商名称不能为空")
     private String vendorName;
-    @NotBlank(groups = {AddGroup.class},message = "客户Id不能为空")
     private String userId;
-    @NotBlank(groups = {AddGroup.class},message = "客户姓名不能为空")
     private String userName;
-    @NotBlank(groups = {AddGroup.class},message = "客户联系方式不能为空")
     private String userTelephone;
-    @NotNull(groups = {AddGroup.class},message = "时间不能为空")
     private Date time;
     @NotBlank(groups = {AddGroup.class},message = "签名不能为空")
     private String sign;
+
+
 }

+ 15 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/SysCodeMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.demo.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.demo.entity.SysCode;
+
+/**
+ * (SysCode)表数据库访问层
+ *
+ * @author Yyz
+ * @since 2024-01-09 09:15:03
+ */
+public interface SysCodeMapper extends BaseMapper<SysCode> {
+
+}

+ 1 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/CommericalService.java

@@ -11,7 +11,7 @@ import java.util.List;
 public interface CommericalService {
     void addCommercial(CommercialVo commercialVo);
 
-    String deleteCommercial(String[] commercialIds);
+    R deleteCommercial(String[] commercialIds);
 
     Commercial getCommercial(String commercialId);
 

+ 3 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/service/EquipmentService.java

@@ -2,17 +2,14 @@ package com.ruoyi.demo.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.Equipment;
-import com.ruoyi.demo.entity.PlanItem;
 import com.ruoyi.demo.entity.bo.EquipmentBo;
 import com.ruoyi.demo.entity.bo.PlanItemBo;
 import com.ruoyi.demo.entity.vo.EquipmentVo;
 import com.ruoyi.demo.entity.vo.PlanItemVo;
 
 import java.util.HashMap;
-import java.util.List;
 
 public interface EquipmentService {
     Integer addEquipment(EquipmentVo equipmentVo);
@@ -21,7 +18,7 @@ public interface EquipmentService {
 
     EquipmentBo getEquipment(String equipmentId);
 
-    String deleteEquipment(String[] equipmentIds);
+    R deleteEquipment(String[] equipmentIds);
 
     Page<Equipment> getEquipmentBySelect(EquipmentVo equipmentVo);
 
@@ -44,4 +41,6 @@ public interface EquipmentService {
     String equipmentOnStatedormancy(String equipmentCode);
 
     String equipmentOnStateWakeup(String equipmentCode);
+
+    String getCode();
 }

+ 5 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/PlanService.java

@@ -1,9 +1,11 @@
 package com.ruoyi.demo.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.AddrCategory;
 import com.ruoyi.demo.entity.Equipment;
 import com.ruoyi.demo.entity.MyPage;
+import com.ruoyi.demo.entity.Plan;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.bo.UpDownBo;
@@ -14,7 +16,7 @@ import java.util.List;
 public interface PlanService {
     String getSign(PlanAddBo bo);
 
-    String addPlan(PlanAddBo bo);
+    R<Plan> addPlan(PlanAddBo bo);
 
     int deletePlan(String id);
 
@@ -32,10 +34,10 @@ public interface PlanService {
     List<PlanPushVo> getPlanPushByCode(String equipmentCode);
 
     // 上下架广告计划
-    int planUpDown(String planId);
+    R<Integer> planUpDown(String planId);
 
     // 上下架广告
-    int planPushUpDown(UpDownBo bo);
+    R<?> planPushUpDown(UpDownBo bo);
     String pushGetSign(UpDownBo bo);
 
     MyPage<PlanManageListVo> getPlanManageList(PlanBo bo);

+ 15 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/SysCodeService.java

@@ -0,0 +1,15 @@
+package com.ruoyi.demo.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.demo.entity.SysCode;
+
+/**
+ * (SysCode)表服务接口
+ *
+ * @author Yyz
+ * @since 2024-01-09 09:15:03
+ */
+public interface SysCodeService extends IService<SysCode> {
+
+}

+ 4 - 12
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/CommercialServiceImpl.java

@@ -1,13 +1,10 @@
 package com.ruoyi.demo.service.impl;
 
-import cn.dev33.satoken.annotation.SaIgnore;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.validate.AddGroup;
-import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.demo.entity.App;
 import com.ruoyi.demo.entity.Commercial;
 import com.ruoyi.demo.entity.Plan;
@@ -23,14 +20,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.validation.constraints.NotBlank;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -55,7 +48,6 @@ public class CommercialServiceImpl implements CommericalService {
     public void addCommercial(CommercialVo commercialVo) {
         Commercial commercial = new Commercial(commercialVo);
         commercial.setCreateTime(DateUtil.date());
-       // commercial.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(commercial.getAddrCode()));
         commercialMapper.insert(commercial);
     }
 
@@ -65,15 +57,15 @@ public class CommercialServiceImpl implements CommericalService {
      * @return
      */
     @Override
-    public String deleteCommercial(String[] commercialIds) {
+    public R deleteCommercial(String[] commercialIds) {
         //1.判断旗下是否有小程序
         QueryWrapper<App> queryWrapper = new QueryWrapper<>();
         queryWrapper.in("commercial_id",commercialIds);
         Long aLong = appMapper.selectCount(queryWrapper);
         if (aLong != 0L)
-            return "待删除的商户中存在App";
+            return R.fail("待删除的商户中存在App");
         commercialMapper.deleteBatchIds(Arrays.asList(commercialIds));
-        return "删除成功";
+        return R.ok("删除成功");
     }
 
     /**
@@ -212,7 +204,7 @@ public class CommercialServiceImpl implements CommericalService {
                 .set("prove_4",commercialVo.getProve4())
                 .set("prove_5",commercialVo.getProve5())
                 .set("addr_code",commercialVo.getAddrCode())
-                .set("addr_code_info",initMapUtil.getInitAddrCodeMap(commercialVo.getAddrCode()))
+                .set("addr_code_info",commercialVo.getAddrCodeInfo())
                 .set("addr_info",commercialVo.getAddrInfo());
             commercialMapper.update(null,updateWrapper);
 

+ 148 - 110
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/EquipmentServiceImpl.java

@@ -1,35 +1,34 @@
 package com.ruoyi.demo.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.demo.config.MtStarProperties;
 import com.ruoyi.demo.entity.*;
 import com.ruoyi.demo.entity.bo.EquipmentBo;
-import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.bo.PlanItemBo;
 import com.ruoyi.demo.entity.vo.EquipmentVo;
 import com.ruoyi.demo.entity.vo.PlanItemVo;
-import com.ruoyi.demo.enums.EquipmentStateEnum;
 import com.ruoyi.demo.mapper.*;
 import com.ruoyi.demo.service.EquipmentService;
+import com.ruoyi.demo.service.SysCodeService;
 import com.ruoyi.demo.utils.InitMapUtil;
 import com.ruoyi.demo.utils.MtStarUtil;
+import com.ruoyi.demo.utils.UuidUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 import java.util.stream.Collectors;
 
 @Service
@@ -59,18 +58,22 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     @Autowired
     @Qualifier("equipmentStateMap")
-    HashMap<Integer,String> equipmentStateMap;
+    HashMap<Integer, String> equipmentStateMap;
 
     @Autowired
     @Qualifier("equipmentOnStateMap")
-    HashMap<Integer,String> equipmentOnStateMap;
+    HashMap<Integer, String> equipmentOnStateMap;
 
     @Autowired
     MtStarUtil mtStarUtil;
 
+    @Autowired
+    private SysCodeService sysCodeService;
+
 
     /**
      * 添加设备
+     *
      * @param equipmentVo
      * @return
      */
@@ -80,10 +83,9 @@ public class EquipmentServiceImpl implements EquipmentService {
         QueryWrapper<Equipment> equipmentCode = new QueryWrapper<>();
         equipmentCode.eq("equipment_code", equipmentVo.getEquipmentCode());
         Long aLong = equipmentMapper.selectCount(equipmentCode);
-        if (aLong == 0){
+        if (aLong == 0) {
             Equipment equipment = new Equipment(equipmentVo);
             //1.新增地区码映射
-            //equipment.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(equipment.getAddrCode()));
 
             //2.新增创建时间
             equipment.setEnterTime(DateUtil.date());
@@ -95,6 +97,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 修改设备信息
+     *
      * @param equipmentVo
      * @return
      */
@@ -102,72 +105,72 @@ public class EquipmentServiceImpl implements EquipmentService {
     public R updateEquipment(EquipmentVo equipmentVo) {
         //查找是否存在该设备
         QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("equipment_name","equipment_code","addr_info","addr_code","addr_code_info");
-        queryWrapper.eq("equipment_id",equipmentVo.getEquipmentId());
+        queryWrapper.select("equipment_name", "equipment_code", "addr_info", "addr_code", "addr_code_info");
+        queryWrapper.eq("equipment_id", equipmentVo.getEquipmentId());
         Equipment equipment = equipmentMapper.selectOne(queryWrapper);
 
-        if (equipment != null){
+        if (equipment != null) {
             //2.更新时间
             equipmentVo.setUpdateTime(DateUtil.date());
             UpdateWrapper<Equipment> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.eq("equipment_id",equipmentVo.getEquipmentId());
-            updateWrapper.set("equipment_name",equipmentVo.getEquipmentName())
-                .set("equipment_code",equipmentVo.getEquipmentCode())
-                .set("annotation",equipmentVo.getAnnotation())
-                .set("addr_info",equipmentVo.getAddrInfo())
-                .set("addr_code",equipmentVo.getAddrCode())
-                .set("addr_code_info",equipmentVo.getAddrCode())
-                .set("state",equipmentVo.getState())
-                .set("on_state",equipmentVo.getOnState())
-                .set("lat",equipmentVo.getLat())
-                .set("lng",equipmentVo.getLng())
-                .set("manufacturers",equipmentVo.getManufacturers())
-                .set("maintain_name",equipmentVo.getMaintainName())
-                .set("maintain_telephone",equipmentVo.getMaintainTelephone())
-                .set("update_time",equipmentVo.getUpdateTime());
-            equipmentMapper.update(null,updateWrapper);
+            updateWrapper.eq("equipment_id", equipmentVo.getEquipmentId());
+            updateWrapper.set("equipment_name", equipmentVo.getEquipmentName())
+                .set("equipment_code", equipmentVo.getEquipmentCode())
+                .set("annotation", equipmentVo.getAnnotation())
+                .set("addr_info", equipmentVo.getAddrInfo())
+                .set("addr_code", equipmentVo.getAddrCode())
+                .set("addr_code_info", equipmentVo.getAddrCodeInfo())
+                .set("state", equipmentVo.getState())
+                .set("on_state", equipmentVo.getOnState())
+                .set("lat", equipmentVo.getLat())
+                .set("lng", equipmentVo.getLng())
+                .set("manufacturers", equipmentVo.getManufacturers())
+                .set("maintain_name", equipmentVo.getMaintainName())
+                .set("maintain_telephone", equipmentVo.getMaintainTelephone())
+                .set("update_time", equipmentVo.getUpdateTime());
+            equipmentMapper.update(null, updateWrapper);
 
             //修改冗余字段
-            if (!equipment.getEquipmentName().equals(equipmentVo.getEquipmentName()) || !equipment.getEquipmentCode().equals(equipmentVo.getEquipmentCode()) || !equipment.getAddrCode().equals(equipmentVo.getAddrCode())){
+            if (!equipment.getEquipmentName().equals(equipmentVo.getEquipmentName()) || !equipment.getEquipmentCode().equals(equipmentVo.getEquipmentCode()) || !equipment.getAddrCode().equals(equipmentVo.getAddrCode())) {
                 UpdateWrapper<PlanItem> updateWrapper1 = new UpdateWrapper<>();
-                updateWrapper1.eq("equipment_id",equipmentVo.getEquipmentId());
-                updateWrapper1.set("equipment_name",equipmentVo.getEquipmentName())
-                    .set("equipment_code",equipmentVo.getEquipmentCode())
-                    .set("addr_info",equipmentVo.getAddrInfo())
-                    .set("addr_code",equipmentVo.getAddrCode())
-                    .set("addr_code_info",equipmentVo.getAddrCode());
-                planItemMapper.update(null,updateWrapper1);
+                updateWrapper1.eq("equipment_id", equipmentVo.getEquipmentId());
+                updateWrapper1.set("equipment_name", equipmentVo.getEquipmentName())
+                    .set("equipment_code", equipmentVo.getEquipmentCode())
+                    .set("addr_info", equipmentVo.getAddrInfo())
+                    .set("addr_code", equipmentVo.getAddrCode())
+                    .set("addr_code_info", equipmentVo.getAddrCodeInfo());
+                planItemMapper.update(null, updateWrapper1);
             }
 
 
-            if (!equipment.getEquipmentName().equals(equipmentVo.getEquipmentName()) || !equipment.getEquipmentCode().equals(equipmentVo.getEquipmentCode())){
+            if (!equipment.getEquipmentName().equals(equipmentVo.getEquipmentName()) || !equipment.getEquipmentCode().equals(equipmentVo.getEquipmentCode())) {
                 UpdateWrapper<Statistics> updateWrapper2 = new UpdateWrapper<>();
-                updateWrapper2.eq("equipment_id",equipmentVo.getEquipmentId());
-                updateWrapper2.set("equipment_name",equipmentVo.getEquipmentName())
-                    .set("equipment_code",equipmentVo.getEquipmentCode());
-                statisticsMapper.update(null,updateWrapper2);
+                updateWrapper2.eq("equipment_id", equipmentVo.getEquipmentId());
+                updateWrapper2.set("equipment_name", equipmentVo.getEquipmentName())
+                    .set("equipment_code", equipmentVo.getEquipmentCode());
+                statisticsMapper.update(null, updateWrapper2);
 
                 UpdateWrapper<DlUser> updateWrapper3 = new UpdateWrapper<>();
-                updateWrapper3.eq("start_equipment_id",equipmentVo.getEquipmentId());
-                updateWrapper3.set("start_equipment_name",equipmentVo.getEquipmentName())
-                    .set("start_equipment_code",equipmentVo.getEquipmentCode());
-                dlUserMapper.update(null,updateWrapper3);
+                updateWrapper3.eq("start_equipment_id", equipmentVo.getEquipmentId());
+                updateWrapper3.set("start_equipment_name", equipmentVo.getEquipmentName())
+                    .set("start_equipment_code", equipmentVo.getEquipmentCode());
+                dlUserMapper.update(null, updateWrapper3);
 
                 UpdateWrapper<DlUser> updateWrapper4 = new UpdateWrapper<>();
-                updateWrapper4.eq("end_equipment_id",equipmentVo.getEquipmentId());
-                updateWrapper4.set("end_equipment_name",equipmentVo.getEquipmentName())
-                    .set("end_equipment_code",equipmentVo.getEquipmentCode());
-                dlUserMapper.update(null,updateWrapper4);
+                updateWrapper4.eq("end_equipment_id", equipmentVo.getEquipmentId());
+                updateWrapper4.set("end_equipment_name", equipmentVo.getEquipmentName())
+                    .set("end_equipment_code", equipmentVo.getEquipmentCode());
+                dlUserMapper.update(null, updateWrapper4);
 
                 UpdateWrapper<PlanPushStatistics> updateWrapper5 = new UpdateWrapper<>();
-                updateWrapper5.eq("equipment_id",equipmentVo.getEquipmentId());
-                updateWrapper5.set("equipment_name",equipmentVo.getEquipmentName())
-                    .set("equipment_code",equipmentVo.getEquipmentCode());
-                planPushStatisticsMapper.update(null,updateWrapper5);
+                updateWrapper5.eq("equipment_id", equipmentVo.getEquipmentId());
+                updateWrapper5.set("equipment_name", equipmentVo.getEquipmentName())
+                    .set("equipment_code", equipmentVo.getEquipmentCode());
+                planPushStatisticsMapper.update(null, updateWrapper5);
             }
 
             return R.ok("修改成功");
-        }else {
+        } else {
             return R.fail("设备不存在");
         }
 
@@ -176,6 +179,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 获取设备详细信息
+     *
      * @param equipmentId
      * @return
      */
@@ -188,30 +192,33 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 删除设备(需要考虑设备下有没有广告计划存在)
+     *
      * @param equipmentIds
      * @return
      */
     @Override
-    public String deleteEquipment(String[] equipmentIds) {
+    public R deleteEquipment(String[] equipmentIds) {
         //1.查询设备下身份有广告
         QueryWrapper<PlanItemBo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in("equipment_id",equipmentIds);
+        queryWrapper.in("equipment_id", equipmentIds);
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.eq("dl_plan_item.deleted",0);
+            planItemBoQueryWrapper.eq("dl_plan_item.deleted", 0);
         });
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.gt("plan_end_time",DateUtil.date());
+            planItemBoQueryWrapper.gt("plan_end_time", DateUtil.date());
         });
         Integer count = planItemMapper.getEuipmentPlanCont(queryWrapper);
-        if (count > 0)
-            return "设备下存在广告计划,请移除广告后在删除设备";
+        if (count > 0) {
+            return R.fail("设备下存在广告计划,请移除广告后在删除设备");
+        }
         equipmentMapper.deleteBatchIds(Arrays.asList(equipmentIds));
-        return "移除成功";
+        return R.ok("移除成功");
     }
 
 
     /**
      * 获取没有绑定店铺的设备
+     *
      * @param equipmentVo
      * @return
      */
@@ -219,11 +226,11 @@ public class EquipmentServiceImpl implements EquipmentService {
     public Page<Equipment> getEquipmentBySelect(EquipmentVo equipmentVo) {
         QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
         queryWrapper.isNull("store_id");
-        if (equipmentVo.getSearchText() != null && !equipmentVo.getSearchText().equals("")){
+        if (ObjUtil.isNotNull(equipmentVo.getSearchText())) {
             queryWrapper.and(queryWrapper1 -> {
-                queryWrapper1.likeRight("equipment_id",equipmentVo.getSearchText());
-                queryWrapper1.or().like("equipment_name",equipmentVo.getSearchText());
-                queryWrapper1.or().like("equipment_code",equipmentVo.getSearchText());
+                queryWrapper1.likeRight("equipment_id", equipmentVo.getSearchText());
+                queryWrapper1.or().like("equipment_name", equipmentVo.getSearchText());
+                queryWrapper1.or().like("equipment_code", equipmentVo.getSearchText());
             });
         }
 
@@ -236,25 +243,27 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 绑定设备
+     *
      * @param equipmentVo
      */
     @Override
     public void addStoreEquipment(EquipmentVo equipmentVo) {
         UpdateWrapper<Equipment> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.eq("equipment_id",equipmentVo.getEquipmentId());
-        updateWrapper.set("store_id",equipmentVo.getStoreId());
-        equipmentMapper.update(null,updateWrapper);
+        updateWrapper.eq("equipment_id", equipmentVo.getEquipmentId());
+        updateWrapper.set("store_id", equipmentVo.getStoreId());
+        equipmentMapper.update(null, updateWrapper);
     }
 
     /**
      * 获取店铺下的设备列表
+     *
      * @param equipmentVo
      * @return
      */
     @Override
     public Page<Equipment> getEquipmentByStoreId(EquipmentVo equipmentVo) {
         QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("store_id",equipmentVo.getStoreId());
+        queryWrapper.eq("store_id", equipmentVo.getStoreId());
         Page<Equipment> page = new Page<>();
         page.setCurrent(equipmentVo.getPageNum());
         page.setSize(equipmentVo.getPageSize());
@@ -264,6 +273,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 获取设备下的计划列表
+     *
      * @param equipmentVo
      * @return
      */
@@ -274,25 +284,25 @@ public class EquipmentServiceImpl implements EquipmentService {
         page.setSize(equipmentVo.getPageSize());
 
         QueryWrapper<PlanItemBo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("equipment_id",equipmentVo.getEquipmentId());
+        queryWrapper.eq("equipment_id", equipmentVo.getEquipmentId());
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.eq("dl_plan_item.deleted",0);  //没有删除
+            planItemBoQueryWrapper.eq("dl_plan_item.deleted", 0);  //没有删除
         });
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.eq("dl_plan.state",1);  //审核通过
+            planItemBoQueryWrapper.eq("dl_plan.state", 1);  //审核通过
         });
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.eq("dl_plan.on_state",1);  //上架
+            planItemBoQueryWrapper.eq("dl_plan.on_state", 1);  //上架
         });
         queryWrapper.and(planItemBoQueryWrapper -> {
-            planItemBoQueryWrapper.gt("plan_end_time",DateUtil.date());  //结束时间大于当前时间
+            planItemBoQueryWrapper.gt("plan_end_time", DateUtil.date());  //结束时间大于当前时间
         });
 
         queryWrapper.apply("dl_plan.`plan_id` = dl_plan_item.`plan_id`");
-        if (equipmentVo.getSearchText() != null && !equipmentVo.getSearchText().equals("")){
+        if (ObjUtil.isNotNull(equipmentVo.getSearchText())) {
             queryWrapper.and(planItemBoQueryWrapper -> {
-                planItemBoQueryWrapper.likeRight("plan_id",equipmentVo.getSearchText()).or()
-                    .like("plan_name",equipmentVo.getSearchText());
+                planItemBoQueryWrapper.likeRight("plan_id", equipmentVo.getSearchText()).or()
+                    .like("plan_name", equipmentVo.getSearchText());
             });
         }
         queryWrapper.orderByDesc("sort");
@@ -303,61 +313,64 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 修改设备下的计划排序
+     *
      * @param planItemVo
      */
     @Override
     public void updateEquipmentPlan(PlanItemVo planItemVo) {
         UpdateWrapper<PlanItem> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.eq("item_id",planItemVo.getItemId());
-        updateWrapper.set("sort",planItemVo.getSort());
-        planItemMapper.update(null,updateWrapper);
+        updateWrapper.eq("item_id", planItemVo.getItemId());
+        updateWrapper.set("sort", planItemVo.getSort());
+        planItemMapper.update(null, updateWrapper);
     }
 
     /**
      * 获取设备数量
+     *
      * @return
      */
     @Override
     public HashMap getEquipmentCount() {
         QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("state","count(*) as onState");
+        queryWrapper.select("state", "count(*) as onState");
         queryWrapper.groupBy("state");
         List<Equipment> equipment = equipmentMapper.selectList(queryWrapper);
         HashMap<String, Integer> objectObjectHashMap = new HashMap<>();
         int total = 0;
         for (Equipment equipment1 : equipment) {
-            objectObjectHashMap.put(String.valueOf(equipment1.getState()),equipment1.getOnState());
-            total+=equipment1.getOnState();
+            objectObjectHashMap.put(String.valueOf(equipment1.getState()), equipment1.getOnState());
+            total += equipment1.getOnState();
         }
-        objectObjectHashMap.put("total",total);
+        objectObjectHashMap.put("total", total);
         return objectObjectHashMap;
     }
 
     /**
      * 获取设备列表
+     *
      * @param equipmentVo
      * @return
      */
     @Override
     public HashMap getEquipmentList(EquipmentVo equipmentVo) {
         QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
-        if (equipmentVo.getSearchText() != null && !equipmentVo.getSearchText().equals("")){
-            queryWrapper.likeRight("equipment_id",equipmentVo.getSearchText());
-            queryWrapper.or().like("equipment_name",equipmentVo.getSearchText());
-            queryWrapper.or().like("equipment_code",equipmentVo.getSearchText());
-            queryWrapper.or().like("maintain_name",equipmentVo.getSearchText());
-            queryWrapper.or().likeRight("maintain_telephone",equipmentVo.getSearchText());
+        if (ObjUtil.isNotNull(equipmentVo.getSearchText())) {
+            queryWrapper.likeRight("equipment_id", equipmentVo.getSearchText());
+            queryWrapper.or().like("equipment_name", equipmentVo.getSearchText());
+            queryWrapper.or().like("equipment_code", equipmentVo.getSearchText());
+            queryWrapper.or().like("maintain_name", equipmentVo.getSearchText());
+            queryWrapper.or().likeRight("maintain_telephone", equipmentVo.getSearchText());
         }
 
-        if (equipmentVo.getState() != null){
+        if (equipmentVo.getState() != null) {
             queryWrapper.and(equipmentQueryWrapper -> {
-                equipmentQueryWrapper.eq("state",equipmentVo.getState());
+                equipmentQueryWrapper.eq("state", equipmentVo.getState());
             });
         }
 
-        if (equipmentVo.getOnState() != null){
+        if (equipmentVo.getOnState() != null) {
             queryWrapper.and(equipmentQueryWrapper -> {
-                equipmentQueryWrapper.eq("on_state",equipmentVo.getOnState());
+                equipmentQueryWrapper.eq("on_state", equipmentVo.getOnState());
             });
         }
         queryWrapper.orderByDesc("enter_time");
@@ -374,23 +387,23 @@ public class EquipmentServiceImpl implements EquipmentService {
 
         HashMap<String, Integer> hashMap = new HashMap<>();
         List<EquipmentBo> result = new ArrayList<>();
-        if(!collect.isEmpty()){
+        if (!collect.isEmpty()) {
             QueryWrapper<PlanItem> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.select("equipment_id","count(*) as sort");
-            queryWrapper1.in("equipment_id",collect);
+            queryWrapper1.select("equipment_id", "count(*) as sort");
+            queryWrapper1.in("equipment_id", collect);
             queryWrapper1.groupBy("equipment_id");
             List<PlanItem> planItems = planItemMapper.selectList(queryWrapper1);
             for (PlanItem planItem : planItems) {
-                hashMap.put(planItem.getEquipmentId(),planItem.getSort());
+                hashMap.put(planItem.getEquipmentId(), planItem.getSort());
             }
 
             //组装
             for (Equipment equipment1 : equipmentPage.getRecords()) {
                 EquipmentBo equipmentBo = new EquipmentBo(equipment1);
                 Integer integer = hashMap.get(equipmentBo.getEquipmentId());
-                if (integer == null){
+                if (integer == null) {
                     equipmentBo.setPlanCounnt(0);
-                }else {
+                } else {
                     equipmentBo.setPlanCounnt(integer);
                 }
                 result.add(equipmentBo);
@@ -400,25 +413,27 @@ public class EquipmentServiceImpl implements EquipmentService {
 
         HashMap<String, Object> objectObjectHashMap = new HashMap<>();
         equipmentPage.setRecords(null);
-        objectObjectHashMap.put("page",equipmentPage);
-        objectObjectHashMap.put("data",result);
+        objectObjectHashMap.put("page", equipmentPage);
+        objectObjectHashMap.put("data", result);
         return objectObjectHashMap;
     }
 
     /**
      * 解除店铺绑定的设备
+     *
      * @param equipmentIds
      */
     @Override
     public void deleteStoreEquipment(String[] equipmentIds) {
         UpdateWrapper<Equipment> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.in("equipment_id",equipmentIds);
-        updateWrapper.set("store_id",null);
-        equipmentMapper.update(null,updateWrapper);
+        updateWrapper.in("equipment_id", equipmentIds);
+        updateWrapper.set("store_id", null);
+        equipmentMapper.update(null, updateWrapper);
     }
 
     /**
      * 删除设备下的广告推广
+     *
      * @param planItemIds
      */
     @Override
@@ -428,7 +443,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
         //查询已无推广设备广告的计划
         List<String> plans = planItemMapper.selectDeletePlanId(Arrays.asList(planItemIds));
-        if (!plans.isEmpty()){
+        if (!plans.isEmpty()) {
             //删除广告计划
             planMapper.deleteBatchIds(plans);
         }
@@ -436,6 +451,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 休眠设备
+     *
      * @param equipmentCode
      * @return
      */
@@ -447,6 +463,7 @@ public class EquipmentServiceImpl implements EquipmentService {
 
     /**
      * 唤醒设备
+     *
      * @param equipmentCode
      * @return
      */
@@ -455,5 +472,26 @@ public class EquipmentServiceImpl implements EquipmentService {
         return mtStarUtil.wakeup(equipmentCode);
     }
 
+    @Override
+    public String getCode() {
+        QueryWrapper<SysCode> sysCodeQueryWrapper = new QueryWrapper<>();
+        List<SysCode> list = sysCodeService.list(sysCodeQueryWrapper);
+        String uuid;
+        SysCode sysCode = new SysCode();
+        if (CollUtil.isEmpty(list)) {
+            uuid = UuidUtil.getUUID();
+            sysCode.setCode(uuid);
+            sysCodeService.save(sysCode);
+            return uuid;
+        }
+
+        do {
+            uuid = UuidUtil.getUUID();
+        } while (list.contains(uuid));
+        sysCode.setCode(uuid);
+        sysCodeService.save(sysCode);
+        return uuid;
+    }
+
 
 }

+ 3 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/OrderServiceImpl.java

@@ -110,7 +110,9 @@ public class OrderServiceImpl implements OrderService {
             user.setEndEquipmentName(equipment.getEquipmentName());
             user.setEndEquipmentCode(equipment.getEquipmentCode());
             user.setEndTime(bo.getTime());
-            user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice().multiply(new BigDecimal(bo.getDealCount()))));
+//            user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice().multiply(new BigDecimal(bo.getDealCount()))));
+            user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice()));
+
             dlUserMapper.update(user, userQueryWrapper);
         }
         // 添加交易行为记录

+ 64 - 66
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java

@@ -2,17 +2,24 @@ package com.ruoyi.demo.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Dict;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.*;
-import com.ruoyi.demo.entity.bo.*;
+import com.ruoyi.demo.entity.bo.PlanAddBo;
+import com.ruoyi.demo.entity.bo.PlanBo;
+import com.ruoyi.demo.entity.bo.PlanItemAddBo;
+import com.ruoyi.demo.entity.bo.UpDownBo;
 import com.ruoyi.demo.entity.vo.*;
 import com.ruoyi.demo.mapper.*;
 import com.ruoyi.demo.service.PlanService;
 import com.ruoyi.demo.utils.OnStateUtil;
-import com.ruoyi.demo.utils.SendCallBackUtil;
 import com.ruoyi.demo.utils.SignUtil;
 import com.ruoyi.demo.utils.StateUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -22,6 +29,7 @@ import java.util.*;
 
 @Service
 @Transactional
+@Slf4j
 public class PlanServiceImpl implements PlanService {
     @Autowired
     PlanMapper planMapper;
@@ -56,8 +64,9 @@ public class PlanServiceImpl implements PlanService {
             .eq("appkey", bo.getAppkey())
             .eq("state", 1)
             .eq("deleted", "0"));
-        if (app == null)
+        if (app == null) {
             return "error";
+        }
         Map<String, Object> params = Dict.create()
             .set("planOtherId", bo.getPlanOtherId())
             .set("appkey", bo.getAppkey())
@@ -78,14 +87,15 @@ public class PlanServiceImpl implements PlanService {
     }
 
     @Override
-    public String addPlan(PlanAddBo bo) {
+    public R<Plan> addPlan(PlanAddBo bo) {
         // app是否可用
         App app = appMapper.selectOne(new QueryWrapper<App>()
             .eq("appkey", bo.getAppkey())
             .eq("state", 1)
             .eq("deleted", "0"));
-        if (app == null)
-            return "-1";
+        if (app == null) {
+            return R.fail(-1, "无效的appkey");
+        }
         // 校验
         Map<String, Object> params = Dict.create()
             .set("planOtherId", bo.getPlanOtherId())
@@ -103,13 +113,14 @@ public class PlanServiceImpl implements PlanService {
             .set("sign", bo.getSign())
             .set("vendorId", bo.getVendorId())
             .set("vendorName", bo.getVendorName());
-        if (!SignUtil.verify(params, app.getAppSecret()))
-            return "-3";
+        if (!SignUtil.verify(params, app.getAppSecret())) {
+            return R.fail("校验sign出错");
+        }
         // 插入广告计划
         Plan plan = new Plan(app, bo);
-        int i = planMapper.insert(plan);
-        if (i == 0)
-            return "0";
+        planMapper.insert(plan);
+
+
         // 插入广告计划明细
         for (PlanItemAddBo itemAddBo : bo.getItems()) {
             PlanItem item = new PlanItem(plan.getPlanId(), itemAddBo);
@@ -120,9 +131,10 @@ public class PlanServiceImpl implements PlanService {
             .eq("appkey", bo.getAppkey())
             .eq("goods_id", bo.getGoodsId())
             .eq("vendor_id", bo.getVendorId()));
-        if (query == null)
+        if (query == null) {
             goodsMapper.insert(new Goods(plan));
-        return plan.getPlanId();
+        }
+        return R.ok(plan);
     }
 
     @Override
@@ -166,22 +178,7 @@ public class PlanServiceImpl implements PlanService {
         if (i == 0) return 0;
         // 插入审核记录
         PlanAudit audit = new PlanAudit(bo, userId.toString(), userName);
-        int insert = planAuditMapper.insert(audit);
-        if (insert == 1) { // 审核计划插入成功
-            // 启动回调地址
-            CallBackBean callBackBean = new CallBackBean();
-            callBackBean.setAuditPerson(userName);
-            if (bo.getState() == 1)
-                callBackBean.setAuditComment("审核通过");
-            else callBackBean.setAuditComment("审核不通过");
-            callBackBean.setAuditTime(now);
-            try {
-                SendCallBackUtil.sendCallBack(app.getCallBack(), callBackBean);
-            } catch (Exception e) {
-                return -2;
-            }
-        }
-        return insert;
+        return planAuditMapper.insert(audit);
     }
 
     @Override
@@ -279,13 +276,14 @@ public class PlanServiceImpl implements PlanService {
     }
 
     @Override
-    public int planUpDown(String planId) {
+    public R<Integer> planUpDown(String planId) {
         // 是否存在该广告计划
         Plan plan = planMapper.selectOne(new QueryWrapper<Plan>()
             .eq("plan_id", planId)
             .eq("deleted", "0"));
-        if (plan == null)
-            return -1;
+        if (ObjUtil.isNull(plan)) {
+            return R.fail(-1, "计划不存在");
+        }
         // 改变状态,1:上架;0:下架
         plan.setOnState(plan.getOnState() + 1);
         if (plan.getOnState() >= 2) {
@@ -296,54 +294,53 @@ public class PlanServiceImpl implements PlanService {
                     .eq("appkey", plan.getAppkey())
                     .eq("state", 1)
                     .eq("deleted", "0"));
-                Map<String, Object> map = Dict.create()
-                    .set("msg", "您的广告\"" + plan.getPlanName() + "\"已下架")
-                    .set("time", DateUtil.date());
-                SendCallBackUtil.sendCallBack(app.getCallBack(), map);
+                List<Integer> integers = Arrays.asList(Integer.valueOf(plan.getPlanOtherId()));
+                String s = JSONUtil.toJsonStr(integers);
+                log.info("【回调 json】 = {}", s);
+                String body = HttpRequest.post(app.getCallBack())
+                    .header("Content-Type", "application/json")
+                    .body(s)
+                    .execute()
+                    .body();
+                log.info("【回调 body】 {}", body);
             } catch (Exception e) {
             }
         }
-        return planMapper.updateById(plan);
+        return R.ok(planMapper.updateById(plan));
     }
 
     @Override
-    public int planPushUpDown(UpDownBo bo) {
+    public R<?> planPushUpDown(UpDownBo bo) {
         // app是否可用
         App app = appMapper.selectOne(new QueryWrapper<App>()
             .eq("appkey", bo.getAppkey())
             .eq("state", 1)
             .eq("deleted", "0"));
-        if (app == null)
-            return -1;
+        if (app == null) {
+            return R.fail(-1, "无效的appkey");
+        }
         // 校验
         Map<String, Object> params = Dict.create()
             .set("appkey", bo.getAppkey())
             .set("planIds", bo.getPlanIds())
             .set("sign", bo.getSign());
-        if (!SignUtil.verify(params, app.getAppSecret()))
-            return -3;
-        for (String planId : bo.getPlanIds()){
+        if (!SignUtil.verify(params, app.getAppSecret())) {
+            return R.fail(-3, "校验sign出错");
+        }
+        for (String planId : bo.getPlanIds()) {
             Plan plan = planMapper.selectOne(new QueryWrapper<Plan>()
                 .eq("plan_id", planId)
                 .eq("deleted", "0"));
-            if (plan == null)
-                continue;
-            // 改变状态,1:上架;0:下架
-            plan.setOnState(plan.getOnState() + 1);
-            if (plan.getOnState() >= 2) {
-                plan.setOnState(0);
-                // 发送下架信息
-                try {
-                    Map<String, Object> map = Dict.create()
-                        .set("msg", "您的广告\"" + plan.getPlanName() + "\"已下架")
-                        .set("time", DateUtil.date());
-                    SendCallBackUtil.sendCallBack(app.getCallBack(), map);
-                } catch (Exception e) {
+            if (ObjUtil.isNotNull(plan)) {
+                // 改变状态,1:上架;0:下架
+                plan.setOnState(plan.getOnState() + 1);
+                if (plan.getOnState() >= 2) {
+                    plan.setOnState(0);
                 }
+                planMapper.updateById(plan);
             }
-            planMapper.updateById(plan);
         }
-        return 1;
+        return R.ok("上架/下架成功");
     }
 
     @Override
@@ -596,14 +593,15 @@ public class PlanServiceImpl implements PlanService {
                 .eq("appkey", plan.getAppkey())
                 .eq("state", 1) // 启用
                 .eq("deleted", "0"));
-            Map<String, Object> map = Dict.create()
-                .set("msg", "您的广告\"" + plan.getPlanName() + "\"已下架")
-                .set("time", DateUtil.date());
-            try {
-                SendCallBackUtil.sendCallBack(app.getCallBack(), map);
-            } catch (Exception e) {
-                System.out.println("[appkey:" + app.getAppkey() + ",appName:" + app.getAppName() + "]的回调地址[" + app.getCallBack() + "]失效");
-            }
+            List<Integer> integers = Arrays.asList(Integer.valueOf(plan.getPlanOtherId()));
+            String s = JSONUtil.toJsonStr(integers);
+            log.info("【回调 json】 = {}", s);
+            String body = HttpRequest.post(app.getCallBack())
+                .header("Content-Type", "application/json")
+                .body(s)
+                .execute()
+                .body();
+            log.info("【回调 body】 {}", body);
         }
     }
 }

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StatisticsServiceImpl.java

@@ -43,7 +43,7 @@ public class StatisticsServiceImpl implements StatisticsService {
         if (bo.getEndTime() != null)
             queryWrapper.apply("`time` <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", bo.getEndTime());
         queryWrapper.orderByDesc("time");
-        Page<Statistics> page = new Page<>();
+        Page<Statistics> page = new Page<>(bo.getPageNum(), bo.getPageSize());
         List<Statistics> list = statisticsMapper.selectPage(page, queryWrapper).getRecords();
         List<ScanListVo> vos = new ArrayList<>();
         for (Statistics statistics : list) {
@@ -103,8 +103,8 @@ public class StatisticsServiceImpl implements StatisticsService {
             .set("userId", bo.getUserId())
             .set("userName", bo.getUserName())
             .set("userTelephone", bo.getUserTelephone())
-            .set("vendorId", bo.getVendorId())
             .set("vendorName", bo.getVendorName())
+            .set("vendorId", bo.getVendorId())
             .set("sign", bo.getSign());
         if (!SignUtil.verify(params, app.getAppSecret()))
             return -3;

+ 0 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StoreServiceImpl.java

@@ -45,7 +45,6 @@ public class StoreServiceImpl implements StoreService {
     @Override
     public void addStore(StoreVo storeVo) {
         Store store = new Store(storeVo);
-        //store.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(store.getAddrCode()));
         store.setCreateTime(DateUtil.date());
         storeMapper.insert(store);
     }
@@ -56,7 +55,6 @@ public class StoreServiceImpl implements StoreService {
      */
     @Override
     public void updateStore(StoreVo storeVo) {
-        storeVo.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(storeVo.getAddrCode()));
         UpdateWrapper<Store> updateWrapper = new UpdateWrapper<>();
         updateWrapper.eq("store_id",storeVo.getStoreId())
         .set("store_name",storeVo.getStoreName())

+ 20 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/SysCodeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.ruoyi.demo.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.demo.entity.SysCode;
+import com.ruoyi.demo.mapper.SysCodeMapper;
+import com.ruoyi.demo.service.SysCodeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * (SysCode)表服务实现类
+ *
+ * @author Yyz
+ * @since 2024-01-09 09:15:04
+ */
+@Service
+public class SysCodeServiceImpl extends ServiceImpl<SysCodeMapper, SysCode> implements SysCodeService {
+
+
+}

+ 12 - 0
ruoyi-demo/src/main/resources/mapper/demo/SysCodeMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.demo.mapper.SysCodeMapper">
+
+    <resultMap type="com.ruoyi.demo.entity.SysCode" id="BaseResultMap">
+        <result property="code" column="code" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        `code`
+    </sql>
+</mapper>

+ 1 - 1
ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml

@@ -36,7 +36,7 @@ management:
 --- # 监控配置
 spring.boot.admin.client:
   # 增加客户端开关
-  enabled: true
+  enabled: false
   # 设置 Spring Boot Admin Server 地址
   url: http://localhost:9090/admin
   instance:

+ 8 - 5
ruoyi-system/src/main/java/com/ruoyi/system/domain/OpenAccount.java

@@ -1,6 +1,9 @@
 package com.ruoyi.system.domain;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ruoyi.common.annotation.Sensitive;
@@ -8,12 +11,12 @@ import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.enums.SensitiveStrategy;
-import com.ruoyi.common.xss.Xss;
 import com.ruoyi.system.domain.vo.OpenAccountVO;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.*;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.Size;
 import java.util.Date;
 import java.util.List;
 
@@ -36,7 +39,7 @@ public class OpenAccount {
     /**
      * 用户Id
      */
-    @TableId(value = "user_id",type = IdType.ASSIGN_ID)
+    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
     private Long userId;
 
     /**
@@ -176,7 +179,7 @@ public class OpenAccount {
     }
 
     public OpenAccount(OpenAccountVO openAccountVO) {
-        this.uId = openAccountVO.getU_id();
+        this.uId = openAccountVO.getUId();
         this.userName = openAccountVO.getUserName();
         this.nickName = openAccountVO.getNickName();
         this.phonenumber = openAccountVO.getPhonenumber();

+ 8 - 7
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/OpenAccountVO.java

@@ -1,5 +1,7 @@
 package com.ruoyi.system.domain.vo;
 
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -17,23 +19,23 @@ public class OpenAccountVO implements Serializable {
     /**
      * 统一用户id(uId不懂为什么用不了)
      */
-//    @NotBlank(message = "uId不能为空")
-//    private Long uId;
+    @NotNull(message = "uId不能为空",groups = {AddGroup.class, QueryGroup.class})
+    private Long uId;
 
-    @NotNull(message = "u_id不能为空")
-    private Long u_id;
+//    @NotNull(message = "u_id不能为空")
+//    private Long u_id;
 
     /**
      * 用户账号
      */
-    @NotBlank(message = "用户账号不能为空")
+    @NotBlank(message = "用户账号不能为空",groups = {AddGroup.class})
     @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
     private String userName;
 
     /**
      * 用户昵称
      */
-    @NotBlank(message = "用户昵称不能为空")
+    @NotBlank(message = "用户昵称不能为空",groups = {AddGroup.class})
     @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
     private String nickName;
 
@@ -59,7 +61,6 @@ public class OpenAccountVO implements Serializable {
     /**
      * 密码
      */
-    @NotBlank(message = "密码不能为空")
     private String password;
     /**
      * 角色列表

+ 54 - 27
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/IUserinfoServiceImpl.java

@@ -27,9 +27,9 @@ public class IUserinfoServiceImpl implements IUserinfoService {
 
     @Override
     public R createAdmin(OpenAccountVO openAccountVO) {
-        //检查用户名称、Uid是否重复
-        String s = checkUIdAndUserName(openAccountVO);
-        if (s == null){
+        //检查是否存在uId用户
+        OpenAccount openAccount1 = checkUIdAndUserName(openAccountVO);
+        if (openAccount1 == null){
             //注册用户
             OpenAccount openAccount = new OpenAccount(openAccountVO);
             iUserinfoMapper.insert(openAccount);
@@ -41,15 +41,29 @@ public class IUserinfoServiceImpl implements IUserinfoService {
                 userRoleMapper.insert(sysUserRole);
             }
             return R.ok();
+        }else {
+            //启用用户
+            UpdateWrapper<OpenAccount> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.eq("u_id",openAccountVO.getUId());
+            updateWrapper.set("del_flag",0);
+            iUserinfoMapper.update(null,updateWrapper);
+
+            //设置角色
+            for (Integer role : openAccountVO.getRoles()) {
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setUserId(openAccount1.getUserId());
+                sysUserRole.setRoleId(Long.valueOf(role));
+                userRoleMapper.insert(sysUserRole);
+            }
+            return R.ok();
         }
-        return R.fail(s);
     }
 
     @Override
     public R createUser(OpenAccountVO openAccountVO) {
-        //检查用户名称、Uid是否重复
-        String s = checkUIdAndUserName(openAccountVO);
-        if (s == null){
+        //检查是否存在uId用户
+        OpenAccount openAccount1 = checkUIdAndUserName(openAccountVO);
+        if (openAccount1 == null){
             //注册用户
             OpenAccount openAccount = new OpenAccount(openAccountVO);
             iUserinfoMapper.insert(openAccount);
@@ -61,37 +75,50 @@ public class IUserinfoServiceImpl implements IUserinfoService {
                 userRoleMapper.insert(sysUserRole);
             }
             return R.ok();
+        }else {
+            //启用用户
+            UpdateWrapper<OpenAccount> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.eq("u_id",openAccountVO.getUId());
+            updateWrapper.set("del_flag",0);
+            iUserinfoMapper.update(null,updateWrapper);
+
+            //设置角色
+            for (Integer role : openAccountVO.getRoles()) {
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setUserId(openAccount1.getUserId());
+                sysUserRole.setRoleId(Long.valueOf(role));
+                userRoleMapper.insert(sysUserRole);
+            }
+            return R.ok();
         }
-        return R.fail(s);
     }
 
     @Override
     public void disableUser(OpenAccountVO openAccountVO) {
-        UpdateWrapper<OpenAccount> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.eq("u_id",openAccountVO.getU_id());
-        updateWrapper.set("delFlag",2);
-        iUserinfoMapper.update(null,updateWrapper);
+        //检查是否存在uId用户
+        OpenAccount openAccount1 = checkUIdAndUserName(openAccountVO);
+        if (openAccount1 != null){
+            //禁用用户
+            UpdateWrapper<OpenAccount> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.eq("u_id",openAccountVO.getUId());
+            updateWrapper.set("del_flag",2);
+            iUserinfoMapper.update(null,updateWrapper);
+
+            //清除分配角色
+            QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("user_id",openAccount1.getUserId());
+            userRoleMapper.delete(queryWrapper);
+        }
     }
 
     /**
      * 判断用户是否存在
      * */
-    public String checkUIdAndUserName(OpenAccountVO openAccountVO){
+    public OpenAccount checkUIdAndUserName(OpenAccountVO openAccountVO){
         //判断u_id 和 用户名称是否存在
         QueryWrapper<OpenAccount> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("u_id","user_name");
-        queryWrapper.eq("u_id",openAccountVO.getU_id());
-        queryWrapper.or();
-        queryWrapper.eq("user_name",openAccountVO.getUserName());
-        List<OpenAccount> openAccounts = iUserinfoMapper.selectList(queryWrapper);
-        if (!openAccounts.isEmpty()){
-            if (openAccounts.size() == 2)
-                return "u_id、userName已存在";
-            else if (openAccounts.get(0).getUId() == openAccountVO.getU_id())
-                return "u_id已存在";
-            else
-                return "userName已存在";
-        }
-        return null;
+        queryWrapper.eq("u_id",openAccountVO.getUId());
+        OpenAccount openAccount = iUserinfoMapper.selectOne(queryWrapper);
+        return openAccount;
     }
 }

+ 1 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -7,6 +7,7 @@
     <resultMap type="SysUser" id="SysUserResult">
         <id property="userId" column="user_id"/>
         <result property="deptId" column="dept_id"/>
+        <result property="uId" column="u_id"/>
         <result property="userName" column="user_name"/>
         <result property="nickName" column="nick_name"/>
         <result property="userType" column="user_type"/>