TRX 1 年間 前
コミット
6613053e69
43 ファイル変更482 行追加368 行削除
  1. 2 6
      src/main/java/com/zswl/dataservice/controller/TestController.java
  2. 4 3
      src/main/java/com/zswl/dataservice/controller/user/OauthController.java
  3. 20 12
      src/main/java/com/zswl/dataservice/controller/user/UserController.java
  4. 49 0
      src/main/java/com/zswl/dataservice/dao/base/BaseImpl.java
  5. 4 7
      src/main/java/com/zswl/dataservice/dao/impl/UserDaoImpl.java
  6. 3 5
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/DeviceInfoDaoImpl.java
  7. 3 5
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/GateWayInfoDaoImpl.java
  8. 4 5
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/GateWayUserInfoDaoImpl.java
  9. 4 5
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/OperationLogsDaoImpl.java
  10. 4 6
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/OperationMessageDaoImpl.java
  11. 5 6
      src/main/java/com/zswl/dataservice/dao/mqtt/impl/ProjectInfoDaoImpl.java
  12. 17 12
      src/main/java/com/zswl/dataservice/domain/base/SuperEntity.java
  13. 6 13
      src/main/java/com/zswl/dataservice/model/baseParam/SuperModel.java
  14. 35 0
      src/main/java/com/zswl/dataservice/model/baseParam/SuperParam.java
  15. 40 0
      src/main/java/com/zswl/dataservice/model/baseParam/SuperSearchParam.java
  16. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoAddParam.java
  17. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoModel.java
  18. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoSearchParam.java
  19. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoAddParam.java
  20. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoModel.java
  21. 2 1
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoSearchParam.java
  22. 2 1
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoAddParam.java
  23. 2 1
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoModel.java
  24. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoNameParam.java
  25. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoSearchParam.java
  26. 1 1
      src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoAddParam.java
  27. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoModel.java
  28. 1 1
      src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoSimpleModel.java
  29. 1 2
      src/main/java/com/zswl/dataservice/model/mqtt/OperationMessageModel.java
  30. 1 8
      src/main/java/com/zswl/dataservice/model/mqtt/OperationMessageSearchParam.java
  31. 1 1
      src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoAddParam.java
  32. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoModel.java
  33. 1 0
      src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoSearchParam.java
  34. 0 23
      src/main/java/com/zswl/dataservice/model/mqtt/SuperParam.java
  35. 0 27
      src/main/java/com/zswl/dataservice/model/mqtt/SuperSearchParam.java
  36. 1 1
      src/main/java/com/zswl/dataservice/model/operLogs/OperationLogsModel.java
  37. 1 1
      src/main/java/com/zswl/dataservice/model/operLogs/OperationLogsSearchParam.java
  38. 10 34
      src/main/java/com/zswl/dataservice/model/user/UserInfoModel.java
  39. 3 2
      src/main/java/com/zswl/dataservice/model/user/UserSearchParams.java
  40. 16 0
      src/main/java/com/zswl/dataservice/model/user/UserUpdateParam.java
  41. 2 1
      src/main/java/com/zswl/dataservice/service/user/AuthService.java
  42. 2 178
      src/main/java/com/zswl/dataservice/service/user/UserService.java
  43. 226 0
      src/main/java/com/zswl/dataservice/service/user/impl/UserServiceImpl.java

+ 2 - 6
src/main/java/com/zswl/dataservice/controller/TestController.java

@@ -1,10 +1,9 @@
 package com.zswl.dataservice.controller;
 
 import com.zswl.dataservice.model.mqtt.SendMessageModel;
-import com.zswl.dataservice.service.user.UserService;
+import com.zswl.dataservice.service.user.impl.UserServiceImpl;
 import com.zswl.dataservice.utils.result.ResultContent;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -13,9 +12,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  *
  */
@@ -26,7 +22,7 @@ import java.util.Map;
 public class TestController {
 
     @Autowired
-    UserService userService;
+    UserServiceImpl userService;
 
     @Operation(summary = "发送指令")
     @RequestMapping(value = "sendMessage", method = {RequestMethod.POST})

+ 4 - 3
src/main/java/com/zswl/dataservice/controller/user/OauthController.java

@@ -3,7 +3,7 @@ package com.zswl.dataservice.controller.user;
 import com.zswl.dataservice.model.params.LoginModel;
 import com.zswl.dataservice.model.user.LoginUser;
 import com.zswl.dataservice.service.user.AuthService;
-import com.zswl.dataservice.service.user.UserService;
+import com.zswl.dataservice.service.user.impl.UserServiceImpl;
 import com.zswl.dataservice.utils.result.ResultContent;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -13,6 +13,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -33,7 +34,7 @@ public class OauthController {
     AuthService authService;
 
     @Autowired
-    UserService userService;
+    UserServiceImpl userService;
 
     @Operation(summary = "初始管理员账号")
     @RequestMapping(value = "free/initAdmin", method = {RequestMethod.GET})
@@ -43,7 +44,7 @@ public class OauthController {
 
     @Operation(summary = "创建Token,需要提供登录名和密码!")
     @RequestMapping(value = "/free/token", method = {RequestMethod.POST})
-    public ResultContent createToken(LoginModel data, HttpServletRequest request, HttpServletResponse response) {
+    public ResultContent createToken(@RequestBody LoginModel data, HttpServletRequest request, HttpServletResponse response) {
         if (StringUtils.isEmpty(data.getLoginName())) {
             return ResultContent.buildFail("登录名不能为空");
         }

+ 20 - 12
src/main/java/com/zswl/dataservice/controller/user/UserController.java

@@ -1,26 +1,18 @@
 package com.zswl.dataservice.controller.user;
 
-import com.zswl.dataservice.model.mqtt.DeviceInfoAddParam;
-import com.zswl.dataservice.model.mqtt.DeviceInfoModel;
-import com.zswl.dataservice.model.mqtt.DeviceInfoSearchParam;
 import com.zswl.dataservice.model.user.UpdateUserPassWordParam;
+import com.zswl.dataservice.model.user.UserInfoModel;
 import com.zswl.dataservice.service.mqtt.DeviceInfoService;
-import com.zswl.dataservice.service.user.UserService;
+import com.zswl.dataservice.service.user.impl.UserServiceImpl;
 import com.zswl.dataservice.utils.result.ResultContent;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.enums.ParameterIn;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.web.PageableDefault;
 import org.springframework.util.Assert;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 用户管理 服务
@@ -38,7 +30,7 @@ public class UserController {
     DeviceInfoService deviceInfoService;
 
     @Autowired
-    UserService userService;
+    UserServiceImpl userService;
 
     @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
     @Operation(summary = "修改当前用户密码", description = "")
@@ -50,4 +42,20 @@ public class UserController {
         return userService.updateUserPassWord(param);
     }
 
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "得到当前用户信息", description = "")
+    @RequestMapping(value = "getCurrentUserInfo", method = {RequestMethod.GET})
+    public ResultContent<UserInfoModel> getCurrentUserInfo() {
+        return userService.getCurrentUserInfo();
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "重置用户密码", description = "")
+    @RequestMapping(value = "resetUserPassWord", method = {RequestMethod.GET})
+    public ResultContent<UserInfoModel> resetUserPassWord(
+            @Parameter(name = "id", description = "用户id", example = "")
+            @RequestParam("id") String id) {
+        return userService.resetUserPassWord(id);
+    }
+
 }

+ 49 - 0
src/main/java/com/zswl/dataservice/dao/base/BaseImpl.java

@@ -0,0 +1,49 @@
+package com.zswl.dataservice.dao.base;
+
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+public abstract class BaseImpl {
+
+    /**
+     * 通用创建搜索条件
+     *
+     * @param param
+     * @return
+     */
+    public Criteria buildCriteria(SuperSearchParam param) {
+        Criteria criteria = new Criteria();
+        criteria.and("isDelete").ne(Boolean.TRUE);
+        return criteria;
+    }
+
+    /**
+     * 排序
+     *
+     * @param param
+     * @return
+     */
+    public Sort buildSort(SuperSearchParam param) {
+        Sort sort = param.getOrderSort();
+        if (sort == null && param.getIsSortDesc() != null) {
+            if (param.getIsSortDesc()) {
+                // 倒序
+                sort = Sort.by(Sort.Order.desc("sort"), Sort.Order.desc("createTime"));
+            } else {
+                // 升序
+                sort = Sort.by(Sort.Order.asc("sort"), Sort.Order.desc("createTime"));
+            }
+        }
+        if (ObjectUtils.isEmpty(sort)) {
+            sort = Sort.by(Sort.Order.desc("createTime"));
+        }
+        return sort;
+    }
+
+}

+ 4 - 7
src/main/java/com/zswl/dataservice/dao/impl/UserDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.extend.UserDaoExtend;
 import com.zswl.dataservice.domain.user.User;
 import com.zswl.dataservice.helper.DBHelper;
@@ -24,7 +25,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/6
  * @Version: 1.0
  */
-public class UserDaoImpl implements UserDaoExtend {
+public class UserDaoImpl extends BaseImpl implements UserDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -34,7 +35,7 @@ public class UserDaoImpl implements UserDaoExtend {
 
     @Override
     public Page<User> page(Pageable pageable, UserSearchParams param) {
-        Criteria criteria = new Criteria();
+        Criteria criteria = buildCriteria(param);
 
         if (param.getUserType() != null) {
             criteria.and("userType").is(param.getUserType());
@@ -59,12 +60,8 @@ public class UserDaoImpl implements UserDaoExtend {
         }
 
         criteria.and("loginName").ne("admin");
-        criteria.and("isDelete").ne(Boolean.TRUE);
 
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, User.class);

+ 3 - 5
src/main/java/com/zswl/dataservice/dao/mqtt/impl/DeviceInfoDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.DeviceInfoDaoExtend;
 import com.zswl.dataservice.domain.mqtt.DeviceInfo;
 import com.zswl.dataservice.helper.DBHelper;
@@ -24,7 +25,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class DeviceInfoDaoImpl implements DeviceInfoDaoExtend {
+public class DeviceInfoDaoImpl extends BaseImpl implements DeviceInfoDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -62,10 +63,7 @@ public class DeviceInfoDaoImpl implements DeviceInfoDaoExtend {
 //        }
 
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, DeviceInfo.class);

+ 3 - 5
src/main/java/com/zswl/dataservice/dao/mqtt/impl/GateWayInfoDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.GateWayInfoDaoExtend;
 import com.zswl.dataservice.domain.mqtt.GateWayInfo;
 import com.zswl.dataservice.helper.DBHelper;
@@ -24,7 +25,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class GateWayInfoDaoImpl implements GateWayInfoDaoExtend {
+public class GateWayInfoDaoImpl extends BaseImpl implements GateWayInfoDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -55,10 +56,7 @@ public class GateWayInfoDaoImpl implements GateWayInfoDaoExtend {
         }
 
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, GateWayInfo.class);

+ 4 - 5
src/main/java/com/zswl/dataservice/dao/mqtt/impl/GateWayUserInfoDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.DeviceInfoDaoExtend;
 import com.zswl.dataservice.dao.mqtt.extend.GateWayUserInfoDaoExtend;
 import com.zswl.dataservice.domain.mqtt.DeviceInfo;
@@ -27,7 +28,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class GateWayUserInfoDaoImpl implements GateWayUserInfoDaoExtend {
+public class GateWayUserInfoDaoImpl extends BaseImpl implements GateWayUserInfoDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -62,10 +63,8 @@ public class GateWayUserInfoDaoImpl implements GateWayUserInfoDaoExtend {
         }
 
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
+
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, GateWayUserInfo.class);

+ 4 - 5
src/main/java/com/zswl/dataservice/dao/mqtt/impl/OperationLogsDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.OperationLogsDaoExtend;
 import com.zswl.dataservice.domain.mqtt.OperationLogs;
 import com.zswl.dataservice.helper.DBHelper;
@@ -24,7 +25,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class OperationLogsDaoImpl implements OperationLogsDaoExtend {
+public class OperationLogsDaoImpl extends BaseImpl implements OperationLogsDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -63,10 +64,8 @@ public class OperationLogsDaoImpl implements OperationLogsDaoExtend {
         }
 
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
+
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, OperationLogs.class);

+ 4 - 6
src/main/java/com/zswl/dataservice/dao/mqtt/impl/OperationMessageDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.DeviceInfoDaoExtend;
 import com.zswl.dataservice.dao.mqtt.extend.OperationMessageDaoExtend;
 import com.zswl.dataservice.domain.mqtt.DeviceInfo;
@@ -28,7 +29,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class OperationMessageDaoImpl implements OperationMessageDaoExtend {
+public class OperationMessageDaoImpl extends BaseImpl implements OperationMessageDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -70,12 +71,9 @@ public class OperationMessageDaoImpl implements OperationMessageDaoExtend {
         if (!CollectionUtils.isEmpty(criterias)) {
             criteria.andOperator(criterias.toArray(new Criteria[]{}));
         }
-
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+
+        Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, OperationMessage.class);

+ 5 - 6
src/main/java/com/zswl/dataservice/dao/mqtt/impl/ProjectInfoDaoImpl.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.dao.mqtt.impl;
 
+import com.zswl.dataservice.dao.base.BaseImpl;
 import com.zswl.dataservice.dao.mqtt.extend.DeviceInfoDaoExtend;
 import com.zswl.dataservice.dao.mqtt.extend.ProjectInfoDaoExtend;
 import com.zswl.dataservice.domain.mqtt.DeviceInfo;
@@ -27,7 +28,7 @@ import java.util.regex.Pattern;
  * @CreateDate: 2023/4/12
  * @Version: 1.0
  */
-public class ProjectInfoDaoImpl implements ProjectInfoDaoExtend {
+public class ProjectInfoDaoImpl extends BaseImpl implements ProjectInfoDaoExtend {
 
     @Autowired
     private MongoTemplate mongoTemplate;
@@ -42,7 +43,7 @@ public class ProjectInfoDaoImpl implements ProjectInfoDaoExtend {
         if (param.getState() != null) {
             criteria.and("state").is(param.getState());
         }
-        
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getName())) {
@@ -58,10 +59,8 @@ public class ProjectInfoDaoImpl implements ProjectInfoDaoExtend {
         }
 
         criteria.and("isDelete").is(Boolean.FALSE);
-        Sort sort = param.getSort();
-        if (ObjectUtils.isEmpty(sort)) {
-            sort = Sort.by(Sort.Order.desc("createTime"));
-        }
+        Sort sort = buildSort(param);
+
         Query query = Query.query(criteria);
         query.with(sort);
         return dbHelper.pages(query, pageable, ProjectInfo.class);

+ 17 - 12
src/main/java/com/zswl/dataservice/domain/base/SuperEntity.java

@@ -18,33 +18,38 @@ import java.io.Serializable;
 @EntityListeners(AuditingEntityListener.class)
 public abstract class SuperEntity extends AbstractPersistable<String> implements Serializable {
 
-
+    @Schema(description = "数据ID")
     @Id
     private String id;
 
-    /**
-     * 创建时间
-     */
-
+    @Schema(description = "创建时间")
     @Indexed
     @CreatedDate
     private Long createTime;
 
-    /**
-     * 修改时间
-     */
+    @Schema(description = "修改时间")
     @Indexed
     @LastModifiedDate
     private Long updateTime;
 
-    /**
-     * 备注
-     */
+    @Schema(description = "排序")
+    private Long sort = 1l;
+
+    @Schema(description = "备注")
     private String remark;
 
     @Schema(name = "isDelete", description = "是否删除")
     private Boolean isDelete = Boolean.FALSE;
 
     @Schema(description = "所属项目ID")
-    private String epId;
+    private String oid;
+
+    @Schema(description = "创建用户ID")
+    private String createUserId;
+
+    @Schema(description = "添加用户名称")
+    private String createUserName;
+
+    @Schema(description = "添加用户电话", hidden = true)
+    private String createPhone;
 }

+ 6 - 13
src/main/java/com/zswl/dataservice/model/mqtt/SuperModel.java → src/main/java/com/zswl/dataservice/model/baseParam/SuperModel.java

@@ -1,10 +1,7 @@
-package com.zswl.dataservice.model.mqtt;
+package com.zswl.dataservice.model.baseParam;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.mongodb.core.index.Indexed;
 
 import java.io.Serializable;
 
@@ -15,23 +12,19 @@ import java.io.Serializable;
 @Data
 public class SuperModel implements Serializable {
 
+    @Schema(description = "数据ID")
     private String id;
 
-    /**
-     * 创建时间
-     */
+    @Schema(description = "创建时间")
     private Long createTime;
 
-    /**
-     * 修改时间
-     */
+    @Schema(description = "修改时间")
     private Long updateTime;
 
-    /**
-     * 备注
-     */
+    @Schema(description = "备注")
     private String remark;
 
+    @Schema(description = "是否已删除")
     private Boolean isDelete = Boolean.FALSE;
 
     @Schema(description = "所属项目ID")

+ 35 - 0
src/main/java/com/zswl/dataservice/model/baseParam/SuperParam.java

@@ -0,0 +1,35 @@
+package com.zswl.dataservice.model.baseParam;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.data.domain.Sort;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/5/16
+ */
+@Data
+public class SuperParam implements Serializable {
+    @Schema(description = "数据ID", example = "")
+    private String id = null;
+
+    @Schema(description = "排序")
+    private Long sort = 1l;
+
+    @Schema(description = "所属项目ID", hidden = true)
+    private String oid;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "创建用户ID", hidden = true)
+    private String createUserId;
+
+    @Schema(description = "添加用户名称", hidden = true)
+    private String createUserName;
+
+    @Schema(description = "添加用户电话", hidden = true)
+    private String createPhone;
+}

+ 40 - 0
src/main/java/com/zswl/dataservice/model/baseParam/SuperSearchParam.java

@@ -0,0 +1,40 @@
+package com.zswl.dataservice.model.baseParam;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.domain.Sort;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/5/16
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperSearchParam implements Serializable {
+    @Schema(hidden = true)
+    private String id;
+
+    @Schema(description = "搜索时间范围")
+    private List<Long> times;
+
+    @Schema(description = "开始时间", hidden = true)
+    private Long startTime;
+
+    @Schema(description = "结束时间", hidden = true)
+    private Long endTime;
+
+    @Schema(description = "自定义排序", hidden = true)
+    private Sort orderSort;
+
+    @Schema(description = "是否按照序号排序", hidden = true)
+    private Boolean isSortDesc;
+
+    @Schema(description = "所属项目ID", hidden = true)
+    private String epId;
+}

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoAddParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/DeviceInfoSearchParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoAddParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import com.zswl.dataservice.utils.mqtt.type.OnLineState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.utils.mqtt.type.OnLineState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 2 - 1
src/main/java/com/zswl/dataservice/model/mqtt/GateWayInfoSearchParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import com.zswl.dataservice.utils.mqtt.type.OnLineState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -9,7 +10,7 @@ import lombok.Data;
  * @date 2024/5/17
  */
 @Data
-public class GateWayInfoSearchParam extends SuperSearchParam{
+public class GateWayInfoSearchParam extends SuperSearchParam {
     @Schema(description = "网关ID")
     private String gateWayId;
 

+ 2 - 1
src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoAddParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -8,7 +9,7 @@ import lombok.Data;
  * @date 2024/5/17
  */
 @Data
-public class GateWayUserInfoAddParam extends SuperParam{
+public class GateWayUserInfoAddParam extends SuperParam {
     @Schema(description = "mqtt连接账号", required = true)
     private String userName;
 

+ 2 - 1
src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import lombok.Data;
 
 /**
@@ -7,5 +8,5 @@ import lombok.Data;
  * @date 2024/5/17
  */
 @Data
-public class GateWayUserInfoModel extends SuperModel{
+public class GateWayUserInfoModel extends SuperModel {
 }

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoNameParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import com.zswl.dataservice.utils.mqtt.type.MqttUserState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/GateWayUserInfoSearchParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import com.zswl.dataservice.utils.mqtt.type.MqttUserState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 1 - 1
src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoAddParam.java

@@ -1,7 +1,7 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import com.zswl.dataservice.utils.mqtt.type.AddressType;
-import com.zswl.dataservice.utils.mqtt.type.CommonState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.utils.mqtt.type.AddressType;
 import com.zswl.dataservice.utils.mqtt.type.CommonState;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 1 - 1
src/main/java/com/zswl/dataservice/model/mqtt/MqttInfoSimpleModel.java

@@ -1,7 +1,7 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.utils.mqtt.type.AddressType;
-import com.zswl.dataservice.utils.mqtt.type.CommonState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 2
src/main/java/com/zswl/dataservice/model/mqtt/OperationMessageModel.java

@@ -1,7 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
-import com.zswl.dataservice.domain.mqtt.DeviceInfo;
-import com.zswl.dataservice.domain.mqtt.GateWayInfo;
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 8
src/main/java/com/zswl/dataservice/model/mqtt/OperationMessageSearchParam.java

@@ -1,7 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
-import com.zswl.dataservice.domain.mqtt.DeviceInfo;
-import com.zswl.dataservice.domain.mqtt.GateWayInfo;
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -35,10 +34,4 @@ public class OperationMessageSearchParam extends SuperSearchParam {
     @Schema(description = "是否收到信息")
     private Boolean isReceive;
 
-    @Schema(description = "消息发送时间")
-    private List<Long> times;
-
-    private Long startTime;
-
-    private Long endTime;
 }

+ 1 - 1
src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoAddParam.java

@@ -1,6 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
-import com.zswl.dataservice.utils.mqtt.type.CommonState;
+import com.zswl.dataservice.model.baseParam.SuperParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.utils.mqtt.type.CommonState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 1 - 0
src/main/java/com/zswl/dataservice/model/mqtt/ProjectInfoSearchParam.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.mqtt;
 
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import com.zswl.dataservice.utils.mqtt.type.CommonState;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;

+ 0 - 23
src/main/java/com/zswl/dataservice/model/mqtt/SuperParam.java

@@ -1,23 +0,0 @@
-package com.zswl.dataservice.model.mqtt;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springframework.data.domain.Sort;
-
-import java.io.Serializable;
-
-/**
- * @author TRX
- * @date 2024/5/16
- */
-@Data
-public class SuperParam implements Serializable {
-    @Schema(hidden = true)
-    private String id;
-
-    @Schema(description = "所属项目ID")
-    private String epId;
-
-    @Schema(hidden = true)
-    private Sort sort;
-}

+ 0 - 27
src/main/java/com/zswl/dataservice/model/mqtt/SuperSearchParam.java

@@ -1,27 +0,0 @@
-package com.zswl.dataservice.model.mqtt;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.springframework.data.domain.Sort;
-
-import java.io.Serializable;
-
-/**
- * @author TRX
- * @date 2024/5/16
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class SuperSearchParam implements Serializable {
-    @Schema(hidden = true)
-    private String id;
-
-    @Schema(hidden = true)
-    private Sort sort;
-
-    @Schema(description = "所属项目ID", hidden = true)
-    private String epId;
-}

+ 1 - 1
src/main/java/com/zswl/dataservice/model/operLogs/OperationLogsModel.java

@@ -1,6 +1,6 @@
 package com.zswl.dataservice.model.operLogs;
 
-import com.zswl.dataservice.model.mqtt.SuperModel;
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.utils.mqtt.type.LoginType;
 import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 1 - 1
src/main/java/com/zswl/dataservice/model/operLogs/OperationLogsSearchParam.java

@@ -1,6 +1,6 @@
 package com.zswl.dataservice.model.operLogs;
 
-import com.zswl.dataservice.model.mqtt.SuperSearchParam;
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import com.zswl.dataservice.utils.mqtt.type.LoginType;
 import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
 import io.swagger.v3.oas.annotations.media.Schema;

+ 10 - 34
src/main/java/com/zswl/dataservice/model/user/UserInfoModel.java

@@ -1,5 +1,6 @@
 package com.zswl.dataservice.model.user;
 
+import com.zswl.dataservice.model.baseParam.SuperModel;
 import com.zswl.dataservice.type.UserState;
 import com.zswl.dataservice.type.UserType;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -14,54 +15,29 @@ import lombok.NoArgsConstructor;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class UserInfoModel {
-
-    /**
-     * 用户ID
-     */
-    private String id;
+public class UserInfoModel extends SuperModel {
 
+    @Schema(description = "登录名称")
     private String loginName;
-    /**
-     * 用户名
-     */
+
+    @Schema(description = "用户名")
     private String userName;
 
-    /**
-     * 头像
-     */
+    @Schema(description = "头像")
     private String headUrl;
 
-    /**
-     * 电话号码
-     */
+    @Schema(description = "电话号码")
     private String phone;
 
-    /**
-     * 是否是超级管理员
-     */
+    @Schema(description = "是否是超级管理员")
     private Boolean isAdmin;
 
-    /**
-     * 用户类型:
-     */
+    @Schema(description = "用户类型")
     private UserType userType;
 
-    /**
-     * 用户状态:是否可用
-     */
+    @Schema(description = "用户状态:是否可用")
     private UserState userState;
 
-    /**
-     * 创建时间
-     */
-    private Long createTime;
-
-    /**
-     * 修改时间
-     */
-    private Long updateTime;
-
     @Schema(description = "最后登录时间")
     private Long lastLoginTime;
 }

+ 3 - 2
src/main/java/com/zswl/dataservice/model/user/UserSearchParams.java

@@ -1,6 +1,7 @@
 package com.zswl.dataservice.model.user;
 
-import com.zswl.dataservice.model.mqtt.SuperParam;
+import com.zswl.dataservice.model.baseParam.SuperParam;
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
 import com.zswl.dataservice.type.UserType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -10,7 +11,7 @@ import lombok.Data;
  * @date 2024/4/8
  */
 @Data
-public class UserSearchParams extends SuperParam {
+public class UserSearchParams extends SuperSearchParam {
     /**
      * 登录名
      */

+ 16 - 0
src/main/java/com/zswl/dataservice/model/user/UserUpdateParam.java

@@ -0,0 +1,16 @@
+package com.zswl.dataservice.model.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author TRX
+ * @date 2024/6/18
+ */
+@Data
+public class UserUpdateParam {
+    @Schema(description = "用户名称")
+    private String userName;
+    @Schema(description = "联系电话")
+    private String phone;
+}

+ 2 - 1
src/main/java/com/zswl/dataservice/service/user/AuthService.java

@@ -9,6 +9,7 @@ import com.zswl.dataservice.domain.user.User;
 import com.zswl.dataservice.model.params.LoginModel;
 import com.zswl.dataservice.model.user.LoginUser;
 import com.zswl.dataservice.service.base.RedisService;
+import com.zswl.dataservice.service.user.impl.UserServiceImpl;
 import com.zswl.dataservice.type.UserState;
 import com.zswl.dataservice.type.UserType;
 import com.zswl.dataservice.utils.bean.BeanUtils;
@@ -34,7 +35,7 @@ public class AuthService {
     TokenLoginDao tokenLoginDao;
 
     @Autowired
-    UserService userService;
+    UserServiceImpl userService;
 
     @Autowired
     JWTManager jwtManager;

+ 2 - 178
src/main/java/com/zswl/dataservice/service/user/UserService.java

@@ -1,184 +1,8 @@
 package com.zswl.dataservice.service.user;
 
-import com.alibaba.fastjson.JSONObject;
-import com.google.gson.JsonObject;
-import com.zswl.dataservice.config.SystemDefaultConfig;
-import com.zswl.dataservice.dao.UserDao;
-import com.zswl.dataservice.domain.user.User;
-import com.zswl.dataservice.model.mqtt.SendMessageModel;
-import com.zswl.dataservice.model.user.UpdateUserPassWordParam;
-import com.zswl.dataservice.service.base.RedisService;
-import com.zswl.dataservice.service.base.SuperService;
-import com.zswl.dataservice.type.ResultState;
-import com.zswl.dataservice.type.UserState;
-import com.zswl.dataservice.type.UserType;
-import com.zswl.dataservice.utils.DateUtils;
-import com.zswl.dataservice.utils.ValidateResult;
-import com.zswl.dataservice.utils.ValidateUtils;
-import com.zswl.dataservice.utils.mqtt.mqttConfig.client.MQClient;
-import com.zswl.dataservice.utils.mqtt.mqttConfig.constant.MQConstant;
-import com.zswl.dataservice.utils.result.ResultContent;
-import jakarta.jms.Message;
-import jakarta.jms.TextMessage;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage;
-import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
-import org.apache.commons.lang3.ObjectUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-
-import java.util.UUID;
-
 /**
  * @author TRX
- * @date 2024/3/20
+ * @date 2024/6/18
  */
-@Slf4j
-@Service
-public class UserService extends SuperService {
-    @Autowired
-    UserDao userDao;
-
-    @Autowired
-    RedisService redisService;
-
-    @Autowired
-    MQClient mqClient;
-
-    /**
-     * 初始超级管理员
-     *
-     * @return
-     */
-    public ResultContent initAdmin() {
-        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        String loginName = "admin";
-        User user = userDao.findByLoginName(loginName);
-        if (ObjectUtils.isEmpty(user)) {
-            user = new User();
-            String defaultPassWord = SystemDefaultConfig.defaultPassWord;
-            user.setLoginName(loginName);
-            user.setUserName("超级管理员");
-            user.setPassWord(passwordEncoder.encode(defaultPassWord));
-            user.setUserType(UserType.SuperAdmin);
-            user.setIsAdmin(Boolean.TRUE);
-            user.setUserState(UserState.Enable);
-            user.setPhone("");
-            user.setHeadUrl("");
-
-            userDao.save(user);
-        } else {
-            log.info("admin 用户已存在");
-        }
-        return ResultContent.buildSuccess();
-    }
-
-    /**
-     * 编辑当前用户密码
-     *
-     * @param param
-     * @return
-     */
-    public ResultContent updateUserPassWord(UpdateUserPassWordParam param) {
-        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        String userId = getCurrentUserId();
-        User user = userDao.findTopById(userId);
-        if (ObjectUtils.isEmpty(user)) {
-            return ResultContent.buildFail("当前用户信息为空");
-        }
-        if (!param.getConfirmPass().equals(param.getPassWord())) {
-            return ResultContent.buildFail("密码和验证密码不一致");
-        }
-        if (param.getOldPass().equals(param.getPassWord())) {
-            return ResultContent.buildFail("原密码和密码不能一致");
-        }
-        ValidateResult validateResult = ValidateUtils.validatePassWord(param.getPassWord());
-        if (!validateResult.isSuccess()) {
-            return ResultContent.buildFail(validateResult.getMsg());
-        }
-        ResultContent resultContent = checkLoginPassword(userId, param.getOldPass());
-        if (resultContent.isFailed()) {
-            return resultContent;
-        }
-        user.setPassWord(passwordEncoder.encode(param.getPassWord()));
-        userDao.save(user);
-        return ResultContent.buildSuccess();
-    }
-
-    /**
-     * 验证用户密码是否正确
-     *
-     * @param uid
-     * @param passWord
-     * @return
-     */
-    public ResultContent checkLoginPassword(String uid, String passWord) {
-        User user = userDao.findTopById(uid);
-        if (user == null) {
-            return ResultContent.buildContent(ResultState.UserNotExists);
-        }
-        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        return ResultContent.build(passwordEncoder.matches(passWord, user.getPassWord()) ? ResultState.Success : ResultState.UserPasswordError);
-    }
-
-    /**
-     * 发送指令
-     *
-     * @param param
-     * @return
-     */
-    public ResultContent sendMessage(SendMessageModel param) {
-        String msg = "发送成功";
-        try {
-            JsonObject jsonObject = new JsonObject();
-            jsonObject.addProperty("id", UUID.randomUUID().toString());
-            jsonObject.addProperty("data", param.getMessage());
-            jsonObject.addProperty("time", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
-            jsonObject.addProperty("ttl", 10 * 1000);
-            mqClient.sendObject(param.getTopic(), jsonObject.toString());
-            log.info("mqtt msg 发送成功");
-        } catch (Exception e) {
-            e.printStackTrace();
-            msg = "发送失败: " + e.getMessage();
-        }
-        return ResultContent.buildSuccess(msg);
-    }
-
-    //    @JmsListener(destination = "#", containerFactory = MQConstant.TopicListenerContainerFactory)
-    @JmsListener(destination = "v1/#", containerFactory = MQConstant.TopicListenerContainerFactory)
-    @JmsListener(destination = "v1.#", containerFactory = MQConstant.TopicListenerContainerFactory)
-    public void receiveMessage(Message message) {
-        // 处理接收到的消息
-        try {
-            ActiveMQTopic activeMQTopic = (ActiveMQTopic) message.getJMSDestination();
-            String topicName = activeMQTopic.getTopicName();
-            if (topicName.equals("activemq.notifications")) {
-                return;
-            }
-            log.info("receiveMessage {} 消息监听clientId: {}", message.getJMSMessageID(), message.getStringProperty("__AMQ_CID"));
-            log.info("Topic: {}", topicName);
-
-            if (message instanceof ActiveMQBytesMessage) {
-                ActiveMQBytesMessage activeMQBytesMessage = (ActiveMQBytesMessage) message;
-
-                byte[] messageBody = new byte[(int) activeMQBytesMessage.getBodyLength()];
-                // 读取消息内容到字节数组
-                activeMQBytesMessage.readBytes(messageBody);
-                String msg = new String(messageBody);
-                JSONObject json = JSONObject.parseObject(msg);
-                log.info("消息内容:{}", json.getString("msg"));
-            }
-            if (message instanceof TextMessage) {
-                TextMessage textMessage = (TextMessage) message;
-                log.info("textMessage: {}", textMessage.getText());
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
+public interface UserService {
 }

+ 226 - 0
src/main/java/com/zswl/dataservice/service/user/impl/UserServiceImpl.java

@@ -0,0 +1,226 @@
+package com.zswl.dataservice.service.user.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
+import com.zswl.dataservice.config.SystemDefaultConfig;
+import com.zswl.dataservice.dao.UserDao;
+import com.zswl.dataservice.domain.user.User;
+import com.zswl.dataservice.model.mqtt.SendMessageModel;
+import com.zswl.dataservice.model.user.UpdateUserPassWordParam;
+import com.zswl.dataservice.model.user.UserInfoModel;
+import com.zswl.dataservice.service.base.RedisService;
+import com.zswl.dataservice.service.base.SuperService;
+import com.zswl.dataservice.service.user.UserService;
+import com.zswl.dataservice.type.ResultState;
+import com.zswl.dataservice.type.UserState;
+import com.zswl.dataservice.type.UserType;
+import com.zswl.dataservice.utils.DateUtils;
+import com.zswl.dataservice.utils.ValidateResult;
+import com.zswl.dataservice.utils.ValidateUtils;
+import com.zswl.dataservice.utils.mqtt.mqttConfig.client.MQClient;
+import com.zswl.dataservice.utils.mqtt.mqttConfig.constant.MQConstant;
+import com.zswl.dataservice.utils.result.ResultContent;
+import jakarta.jms.Message;
+import jakarta.jms.TextMessage;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage;
+import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.annotation.JmsListener;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+import com.zswl.dataservice.utils.bean.BeanUtils;
+
+import java.util.UUID;
+
+/**
+ * @author TRX
+ * @date 2024/3/20
+ */
+@Slf4j
+@Service
+public class UserServiceImpl extends SuperService implements UserService {
+    @Autowired
+    UserDao userDao;
+
+    @Autowired
+    RedisService redisService;
+
+    @Autowired
+    MQClient mqClient;
+
+    /**
+     * 初始超级管理员
+     *
+     * @return
+     */
+    public ResultContent initAdmin() {
+        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        String loginName = "admin";
+        User user = userDao.findByLoginName(loginName);
+        if (ObjectUtils.isEmpty(user)) {
+            user = new User();
+            String defaultPassWord = SystemDefaultConfig.defaultPassWord;
+            user.setLoginName(loginName);
+            user.setUserName("超级管理员");
+            user.setPassWord(passwordEncoder.encode(defaultPassWord));
+            user.setUserType(UserType.SuperAdmin);
+            user.setIsAdmin(Boolean.TRUE);
+            user.setUserState(UserState.Enable);
+            user.setPhone("");
+            user.setHeadUrl("");
+
+            userDao.save(user);
+        } else {
+            log.info("admin 用户已存在");
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 编辑当前用户密码
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent updateUserPassWord(UpdateUserPassWordParam param) {
+        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        String userId = getCurrentUserId();
+        User user = userDao.findTopById(userId);
+        if (ObjectUtils.isEmpty(user)) {
+            return ResultContent.buildFail("当前用户信息为空");
+        }
+        if (!param.getConfirmPass().equals(param.getPassWord())) {
+            return ResultContent.buildFail("密码和验证密码不一致");
+        }
+        if (param.getOldPass().equals(param.getPassWord())) {
+            return ResultContent.buildFail("原密码和密码不能一致");
+        }
+        ValidateResult validateResult = ValidateUtils.validatePassWord(param.getPassWord());
+        if (!validateResult.isSuccess()) {
+            return ResultContent.buildFail(validateResult.getMsg());
+        }
+        ResultContent resultContent = checkLoginPassword(userId, param.getOldPass());
+        if (resultContent.isFailed()) {
+            return resultContent;
+        }
+        user.setPassWord(passwordEncoder.encode(param.getPassWord()));
+        userDao.save(user);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到当前用户信息
+     *
+     * @return
+     */
+    public ResultContent<UserInfoModel> getCurrentUserInfo() {
+        UserInfoModel model = new UserInfoModel();
+        User user = userDao.findTopById(getCurrentUserId());
+        if (ObjectUtils.isEmpty(user)) {
+            return ResultContent.buildFail("当前用户信息为空");
+        }
+        model = toModel(user);
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 重置用户密码
+     *
+     * @param id
+     * @return
+     */
+    public ResultContent resetUserPassWord(String id) {
+        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        User user = userDao.findTopById(id);
+        if (ObjectUtils.isEmpty(user)) {
+            return ResultContent.buildFail(String.format(ResultState.UserNotExists.getRemark()));
+        }
+        user.setPassWord(passwordEncoder.encode(SystemDefaultConfig.defaultPassWord));
+        return ResultContent.buildSuccess();
+    }
+
+    public UserInfoModel toModel(User entity) {
+        UserInfoModel model = new UserInfoModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+    /**
+     * 验证用户密码是否正确
+     *
+     * @param uid
+     * @param passWord
+     * @return
+     */
+    public ResultContent checkLoginPassword(String uid, String passWord) {
+        User user = userDao.findTopById(uid);
+        if (user == null) {
+            return ResultContent.buildContent(ResultState.UserNotExists);
+        }
+        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        return ResultContent.build(passwordEncoder.matches(passWord, user.getPassWord()) ? ResultState.Success : ResultState.UserPasswordError);
+    }
+
+    /**
+     * 发送指令
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent sendMessage(SendMessageModel param) {
+        String msg = "发送成功";
+        try {
+            JsonObject jsonObject = new JsonObject();
+            jsonObject.addProperty("id", UUID.randomUUID().toString());
+            jsonObject.addProperty("data", param.getMessage());
+            jsonObject.addProperty("time", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
+            jsonObject.addProperty("ttl", 10 * 1000);
+            mqClient.sendObject(param.getTopic(), jsonObject.toString());
+            log.info("mqtt msg 发送成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            msg = "发送失败: " + e.getMessage();
+        }
+        return ResultContent.buildSuccess(msg);
+    }
+
+    //    @JmsListener(destination = "#", containerFactory = MQConstant.TopicListenerContainerFactory)
+    @JmsListener(destination = "v1/#", containerFactory = MQConstant.TopicListenerContainerFactory)
+    @JmsListener(destination = "v1.#", containerFactory = MQConstant.TopicListenerContainerFactory)
+    public void receiveMessage(Message message) {
+        // 处理接收到的消息
+        try {
+            ActiveMQTopic activeMQTopic = (ActiveMQTopic) message.getJMSDestination();
+            String topicName = activeMQTopic.getTopicName();
+            if (topicName.equals("activemq.notifications")) {
+                return;
+            }
+            log.info("receiveMessage {} 消息监听clientId: {}", message.getJMSMessageID(), message.getStringProperty("__AMQ_CID"));
+            log.info("Topic: {}", topicName);
+
+            if (message instanceof ActiveMQBytesMessage) {
+                ActiveMQBytesMessage activeMQBytesMessage = (ActiveMQBytesMessage) message;
+
+                byte[] messageBody = new byte[(int) activeMQBytesMessage.getBodyLength()];
+                // 读取消息内容到字节数组
+                activeMQBytesMessage.readBytes(messageBody);
+                String msg = new String(messageBody);
+                JSONObject json = JSONObject.parseObject(msg);
+                log.info("消息内容:{}", json.getString("msg"));
+            }
+            if (message instanceof TextMessage) {
+                TextMessage textMessage = (TextMessage) message;
+                log.info("textMessage: {}", textMessage.getText());
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}