فهرست منبع

feat:用户管理功能

wangzaijun 7 ماه پیش
والد
کامیت
02d5e51277
31فایلهای تغییر یافته به همراه314 افزوده شده و 62 حذف شده
  1. 8 8
      pom.xml
  2. 1 0
      service-base/src/main/java/com/simuwang/base/common/support/BaseEntity.java
  3. 3 0
      service-base/src/main/java/com/simuwang/base/common/support/BaseMultiJoinService.java
  4. 28 2
      service-base/src/main/java/com/simuwang/base/common/support/BaseService.java
  5. 1 0
      service-base/src/main/java/com/simuwang/base/common/support/MybatisPage.java
  6. 17 0
      service-base/src/main/java/com/simuwang/base/common/support/command/BaseAddCmd.java
  7. 3 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseCmd.java
  8. 17 0
      service-base/src/main/java/com/simuwang/base/common/support/command/BaseEditCmd.java
  9. 1 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseIdCmd.java
  10. 1 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseIdStatusCmd.java
  11. 3 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseQuery.java
  12. 1 1
      service-base/src/main/java/com/simuwang/base/common/support/PageQuery.java
  13. 1 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseMultiJoinVO.java
  14. 3 1
      service-base/src/main/java/com/simuwang/base/common/support/BaseVO.java
  15. 4 0
      service-base/src/main/java/com/simuwang/base/config/DaqProperties.java
  16. 1 1
      service-base/src/main/java/com/simuwang/base/mapper/SysUserMapper.java
  17. 2 2
      service-base/src/main/java/com/simuwang/base/pojo/dto/command/DeleteByIdCmd.java
  18. 2 2
      service-base/src/main/java/com/simuwang/base/pojo/dto/command/UpdateStatusCmd.java
  19. 0 12
      service-base/src/main/java/com/simuwang/base/pojo/dto/query/UserPageQuery.java
  20. 2 2
      service-base/src/main/java/com/simuwang/base/pojo/dto/query/RoleUserPageQuery.java
  21. 45 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserAddCmd.java
  22. 47 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserEditCmd.java
  23. 27 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserPageQuery.java
  24. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysMenuVO.java
  25. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysRoleVO.java
  26. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysUserVO.java
  27. 2 2
      service-base/src/main/resources/mapper/SysUserMapper.xml
  28. 1 0
      service-deploy/src/main/resources/application.yml
  29. 3 3
      service-manage/src/main/java/com/simuwang/manage/api/TestController.java
  30. 33 7
      service-manage/src/main/java/com/simuwang/manage/api/system/SysUserController.java
  31. 54 11
      service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysUserServiceImpl.java

+ 8 - 8
pom.xml

@@ -16,7 +16,7 @@
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <pagehelper.boot.version>2.0.0</pagehelper.boot.version>
-        <data-calc.version>0.1.8-SNAPSHOT</data-calc.version>
+        <data-calc.version>1.0.0</data-calc.version>
         <joda-time.version>2.12.7</joda-time.version>
         <commons-math3.version>3.6.1</commons-math3.version>
         <hutool.version>5.8.31</hutool.version>
@@ -223,13 +223,13 @@
             <id>smppw-release</id>
             <url>http://120.24.213.180:8081/nexus/content/repositories/releases/</url>
         </repository>
-        <repository>
-            <id>smppw-snapshots</id>
-            <url>http://120.24.213.180:8081/nexus/content/repositories/snapshots/</url>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </repository>
+<!--        <repository>-->
+<!--            <id>smppw-snapshots</id>-->
+<!--            <url>http://120.24.213.180:8081/nexus/content/repositories/snapshots/</url>-->
+<!--            <snapshots>-->
+<!--                <enabled>true</enabled>-->
+<!--            </snapshots>-->
+<!--        </repository>-->
     </repositories>
 
     <pluginRepositories>

+ 1 - 0
service-base/src/main/java/com/simuwang/base/common/support/BaseEntity.java

@@ -3,6 +3,7 @@ package com.simuwang.base.common.support;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.simuwang.base.common.conts.Constants;
+import com.simuwang.base.common.support.vo.BaseVO;
 import lombok.Getter;
 import lombok.Setter;
 

+ 3 - 0
service-base/src/main/java/com/simuwang/base/common/support/BaseMultiJoinService.java

@@ -1,5 +1,8 @@
 package com.simuwang.base.common.support;
 
+import com.simuwang.base.common.support.query.PageQuery;
+import com.simuwang.base.common.support.vo.BaseVO;
+
 /**
  * @author wangzaijun
  * @date 2024/9/13 16:02

+ 28 - 2
service-base/src/main/java/com/simuwang/base/common/support/BaseService.java

@@ -5,6 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.simuwang.base.common.exception.APIException;
+import com.simuwang.base.common.support.command.BaseAddCmd;
+import com.simuwang.base.common.support.command.BaseEditCmd;
+import com.simuwang.base.common.support.command.BaseIdCmd;
+import com.simuwang.base.common.support.command.BaseIdStatusCmd;
+import com.simuwang.base.common.support.query.PageQuery;
+import com.simuwang.base.common.support.vo.BaseVO;
 
 /**
  * @author wangzaijun
@@ -86,11 +92,31 @@ public interface BaseService<VO extends BaseVO, T extends BaseEntity<VO>> {
     }
 
     /**
+     * 新增记录的方法
+     *
+     * @param command 请求参数
+     * @param <C>     泛型对象
+     */
+    default <C extends BaseAddCmd<T>> void insert(C command) {
+        throw new APIException("方法insert未实现");
+    }
+
+    /**
+     * 修改记录的方法
+     *
+     * @param command 请求参数
+     * @param <C>     泛型对象
+     */
+    default <C extends BaseEditCmd<T>> void update(C command) {
+        throw new APIException("方法update未实现");
+    }
+
+    /**
      * 根据id更新状态
      *
      * @param command /
      */
-    default <BSC extends BaseIdStatusCmd> void updateStatus(BSC command) {
+    default <C extends BaseIdStatusCmd> void updateStatus(C command) {
         throw new APIException("方法updateStatus未实现");
     }
 
@@ -99,7 +125,7 @@ public interface BaseService<VO extends BaseVO, T extends BaseEntity<VO>> {
      *
      * @param command /
      */
-    default <BIC extends BaseIdCmd> void delete(BIC command) {
+    default <C extends BaseIdCmd> void delete(C command) {
         throw new APIException("方法delete未实现");
     }
 }

+ 1 - 0
service-base/src/main/java/com/simuwang/base/common/support/MybatisPage.java

@@ -3,6 +3,7 @@ package com.simuwang.base.common.support;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.simuwang.base.common.conts.Constants;
+import com.simuwang.base.common.support.vo.BaseVO;
 
 import java.io.Serial;
 import java.io.Serializable;

+ 17 - 0
service-base/src/main/java/com/simuwang/base/common/support/command/BaseAddCmd.java

@@ -0,0 +1,17 @@
+package com.simuwang.base.common.support.command;
+
+import com.simuwang.base.common.support.BaseEntity;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 17:19
+ * @description 新增的对象信息 抽象
+ */
+public abstract class BaseAddCmd<T extends BaseEntity<?>> extends BaseCmd {
+    /**
+     * 把当前的新增对象转数据库实体
+     *
+     * @return /
+     */
+    public abstract T toEntity();
+}

+ 3 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseCmd.java

@@ -1,4 +1,6 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.command;
+
+import com.simuwang.base.common.support.DTO;
 
 /**
  * @author wangzaijun

+ 17 - 0
service-base/src/main/java/com/simuwang/base/common/support/command/BaseEditCmd.java

@@ -0,0 +1,17 @@
+package com.simuwang.base.common.support.command;
+
+import com.simuwang.base.common.support.BaseEntity;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 17:19
+ * @description 修改的对象信息 抽象
+ */
+public abstract class BaseEditCmd<T extends BaseEntity<?>> extends BaseCmd {
+    /**
+     * 把当前的新增对象转数据库实体
+     *
+     * @return /
+     */
+    public abstract T toEntity();
+}

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseIdCmd.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.command;
 
 import lombok.Getter;
 import lombok.Setter;

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseIdStatusCmd.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.command;
 
 import lombok.Getter;
 import lombok.Setter;

+ 3 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseQuery.java

@@ -1,4 +1,6 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.query;
+
+import com.simuwang.base.common.support.DTO;
 
 /**
  * @author wangzaijun

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/support/PageQuery.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.query;
 
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 

+ 1 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseMultiJoinVO.java

@@ -1,4 +1,4 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.vo;
 
 /**
  * @author wangzaijun

+ 3 - 1
service-base/src/main/java/com/simuwang/base/common/support/BaseVO.java

@@ -1,4 +1,6 @@
-package com.simuwang.base.common.support;
+package com.simuwang.base.common.support.vo;
+
+import com.simuwang.base.common.support.DTO;
 
 import java.util.Date;
 

+ 4 - 0
service-base/src/main/java/com/simuwang/base/config/DaqProperties.java

@@ -13,6 +13,10 @@ import java.util.List;
 @ConfigurationProperties(prefix = "simuwang")
 public class DaqProperties {
     /**
+     * 默认的密码
+     */
+    private String defaultPwd = "QWER1234!@#$";
+    /**
      * token 过期时间
      */
     private Long tokenExpire = 60 * 60 * 24L;

+ 1 - 1
service-base/src/main/java/com/simuwang/base/mapper/SysUserMapper.java

@@ -5,7 +5,7 @@ import com.simuwang.base.pojo.dos.sys.SysMenuDO;
 import com.simuwang.base.pojo.dos.sys.SysRoleDO;
 import com.simuwang.base.pojo.dos.sys.SysRoleUserDO;
 import com.simuwang.base.pojo.dos.sys.SysUserDO;
-import com.simuwang.base.pojo.dto.query.RoleUserPageQuery;
+import com.simuwang.base.pojo.dto.sys.RoleUserPageQuery;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;

+ 2 - 2
service-base/src/main/java/com/simuwang/base/pojo/dto/command/DeleteByIdCmd.java

@@ -1,6 +1,6 @@
-package com.simuwang.base.pojo.dto.command;
+package com.simuwang.base.pojo.dto;
 
-import com.simuwang.base.common.support.BaseIdCmd;
+import com.simuwang.base.common.support.command.BaseIdCmd;
 
 /**
  * @author wangzaijun

+ 2 - 2
service-base/src/main/java/com/simuwang/base/pojo/dto/command/UpdateStatusCmd.java

@@ -1,6 +1,6 @@
-package com.simuwang.base.pojo.dto.command;
+package com.simuwang.base.pojo.dto;
 
-import com.simuwang.base.common.support.BaseIdStatusCmd;
+import com.simuwang.base.common.support.command.BaseIdStatusCmd;
 
 /**
  * @author wangzaijun

+ 0 - 12
service-base/src/main/java/com/simuwang/base/pojo/dto/query/UserPageQuery.java

@@ -1,12 +0,0 @@
-package com.simuwang.base.pojo.dto.query;
-
-import com.simuwang.base.common.support.PageQuery;
-
-/**
- * @author wangzaijun
- * @date 2024/9/13 13:38
- * @description 用户分页接口请求参数
- */
-public class UserPageQuery extends PageQuery {
-
-}

+ 2 - 2
service-base/src/main/java/com/simuwang/base/pojo/dto/query/RoleUserPageQuery.java

@@ -1,6 +1,6 @@
-package com.simuwang.base.pojo.dto.query;
+package com.simuwang.base.pojo.dto.sys;
 
-import com.simuwang.base.common.support.PageQuery;
+import com.simuwang.base.common.support.query.PageQuery;
 
 /**
  * @author wangzaijun

+ 45 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserAddCmd.java

@@ -0,0 +1,45 @@
+package com.simuwang.base.pojo.dto.sys;
+
+import com.simuwang.base.common.support.command.BaseAddCmd;
+import com.simuwang.base.pojo.dos.sys.SysUserDO;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 17:26
+ * @description 新增用户的接口请求参数
+ */
+@Setter
+@Getter
+public class UserAddCmd extends BaseAddCmd<SysUserDO> {
+    /**
+     * 用户名称
+     */
+    private String userName;
+    /**
+     * 用户邮箱
+     */
+    private String email;
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+    /**
+     * 密码在后端加密
+     */
+    private String password;
+
+    private Integer status;
+
+    @Override
+    public SysUserDO toEntity() {
+        SysUserDO entity = new SysUserDO();
+        entity.setUserName(this.userName);
+        entity.setEmail(this.email);
+        entity.setPhonenumber(this.phonenumber);
+        entity.setStatus(this.status);
+        // 密码要加密才OK
+        return entity;
+    }
+}

+ 47 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserEditCmd.java

@@ -0,0 +1,47 @@
+package com.simuwang.base.pojo.dto.sys;
+
+import com.simuwang.base.common.support.command.BaseEditCmd;
+import com.simuwang.base.pojo.dos.sys.SysUserDO;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 17:26
+ * @description 新增用户的接口请求参数
+ */
+@Setter
+@Getter
+public class UserEditCmd extends BaseEditCmd<SysUserDO> {
+    private Integer userId;
+    /**
+     * 用户名称
+     */
+    private String userName;
+    /**
+     * 用户邮箱
+     */
+    private String email;
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+    /**
+     * 密码在后端加密
+     */
+    private String password;
+
+    private Integer status;
+
+    @Override
+    public SysUserDO toEntity() {
+        SysUserDO entity = new SysUserDO();
+        entity.setUserId(this.userId);
+        entity.setUserName(this.userName);
+        entity.setEmail(this.email);
+        entity.setPhonenumber(this.phonenumber);
+        entity.setStatus(this.status);
+        // 密码要加密才OK
+        return entity;
+    }
+}

+ 27 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/sys/UserPageQuery.java

@@ -0,0 +1,27 @@
+package com.simuwang.base.pojo.dto.sys;
+
+import com.simuwang.base.common.support.query.PageQuery;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangzaijun
+ * @date 2024/9/13 13:38
+ * @description 用户分页接口请求参数
+ */
+@Setter
+@Getter
+public class UserPageQuery extends PageQuery {
+    /**
+     * 邮箱
+     */
+    private String email;
+    /**
+     * 手机号
+     */
+    private String phonenumber;
+    /**
+     * 状态
+     */
+    private Integer status;
+}

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysMenuVO.java

@@ -1,7 +1,7 @@
 package com.simuwang.base.pojo.vo.sys;
 
 
-import com.simuwang.base.common.support.BaseVO;
+import com.simuwang.base.common.support.vo.BaseVO;
 import lombok.Getter;
 import lombok.Setter;
 

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysRoleVO.java

@@ -1,6 +1,6 @@
 package com.simuwang.base.pojo.vo.sys;
 
-import com.simuwang.base.common.support.BaseVO;
+import com.simuwang.base.common.support.vo.BaseVO;
 import lombok.Getter;
 import lombok.Setter;
 

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/sys/SysUserVO.java

@@ -1,6 +1,6 @@
 package com.simuwang.base.pojo.vo.sys;
 
-import com.simuwang.base.common.support.BaseVO;
+import com.simuwang.base.common.support.vo.BaseVO;
 import lombok.Getter;
 import lombok.Setter;
 

+ 2 - 2
service-base/src/main/resources/mapper/SysUserMapper.xml

@@ -94,7 +94,7 @@
     </select>
 
     <select id="roleUserPage" resultType="com.simuwang.base.pojo.dos.sys.SysRoleUserDO"
-            parameterType="com.simuwang.base.pojo.dto.query.RoleUserPageQuery">
+            parameterType="com.simuwang.base.pojo.dto.sys.RoleUserPageQuery">
         select t.role_id    as roleId,
                t.role_name  as roleName,
                t.role_key   as roleKey,
@@ -143,7 +143,7 @@
         limit #{offset}, #{pageSize}
     </select>
 
-    <select id="countRoleUser" parameterType="com.simuwang.base.pojo.dto.query.RoleUserPageQuery">
+    <select id="countRoleUser" parameterType="com.simuwang.base.pojo.dto.sys.RoleUserPageQuery">
         select count(t.role_id)
         from sys_role t
                  join sys_user_role t1 on t.role_id = t1.role_id

+ 1 - 0
service-deploy/src/main/resources/application.yml

@@ -56,6 +56,7 @@ email:
 
 # 配置
 simuwang:
+  default-pwd: "QWER1234!@#$"
   token-expire: 86400
   tokenSecret: qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm12
   whitelist:

+ 3 - 3
service-manage/src/main/java/com/simuwang/manage/api/TestController.java

@@ -18,11 +18,11 @@ public class TestController {
     }
 
     @GetMapping("hello")
-    public String test() {
-        return "hello";
+    public boolean test() {
+        return false;
     }
 
-    @GetMapping("rsa")
+    @GetMapping("pwd-rsa")
     public String rsa(@RequestParam("str") String str) {
         String publicKey = this.properties.getSecurityRsa().getPublicKey();
         return new RSA(null, publicKey).encryptBase64(str, KeyType.PublicKey);

+ 33 - 7
service-manage/src/main/java/com/simuwang/manage/api/system/SysUserController.java

@@ -1,10 +1,12 @@
 package com.simuwang.manage.api.system;
 
 import com.simuwang.base.common.support.MybatisPage;
-import com.simuwang.base.pojo.dto.command.DeleteByIdCmd;
-import com.simuwang.base.pojo.dto.command.UpdateStatusCmd;
-import com.simuwang.base.pojo.dto.query.RoleUserPageQuery;
-import com.simuwang.base.pojo.dto.query.UserPageQuery;
+import com.simuwang.base.pojo.dto.DeleteByIdCmd;
+import com.simuwang.base.pojo.dto.UpdateStatusCmd;
+import com.simuwang.base.pojo.dto.sys.RoleUserPageQuery;
+import com.simuwang.base.pojo.dto.sys.UserAddCmd;
+import com.simuwang.base.pojo.dto.sys.UserEditCmd;
+import com.simuwang.base.pojo.dto.sys.UserPageQuery;
 import com.simuwang.base.pojo.vo.sys.SysRoleUserVO;
 import com.simuwang.base.pojo.vo.sys.SysUserVO;
 import com.simuwang.manage.service.system.SysUserService;
@@ -36,7 +38,7 @@ public class SysUserController {
     }
 
     /**
-     * 分页接口
+     * 多表关联的分页接口(案例,此接口暂无使用场景)
      *
      * @param query 用户列表分页请求参数
      * @return /
@@ -47,13 +49,36 @@ public class SysUserController {
     }
 
     /**
+     * 新增用户
+     *
+     * @param command 用户信息
+     */
+    @PostMapping("save")
+    public boolean save(@RequestBody UserAddCmd command) {
+        this.service.insert(command);
+        return true;
+    }
+
+    /**
+     * 更新用户
+     *
+     * @param command 用户id+用户信息
+     */
+    @PostMapping("update")
+    public boolean update(@RequestBody UserEditCmd command) {
+        this.service.update(command);
+        return true;
+    }
+
+    /**
      * 更新用户状态接口
      *
      * @param command 用户id+状态对象
      */
     @PostMapping("update-status")
-    public void updateStatus(@RequestBody UpdateStatusCmd command) {
+    public boolean updateStatus(@RequestBody UpdateStatusCmd command) {
         this.service.updateStatus(command);
+        return true;
     }
 
     /**
@@ -62,7 +87,8 @@ public class SysUserController {
      * @param command 用户id对象
      */
     @PostMapping("del")
-    public void deleteById(@RequestBody DeleteByIdCmd command) {
+    public boolean deleteById(@RequestBody DeleteByIdCmd command) {
         this.service.delete(command);
+        return true;
     }
 }

+ 54 - 11
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysUserServiceImpl.java

@@ -1,15 +1,26 @@
 package com.simuwang.manage.service.impl.system;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.simuwang.base.common.support.*;
+import com.simuwang.base.common.support.BaseService;
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.common.support.command.BaseAddCmd;
+import com.simuwang.base.common.support.command.BaseEditCmd;
+import com.simuwang.base.common.support.command.BaseIdCmd;
+import com.simuwang.base.common.support.command.BaseIdStatusCmd;
+import com.simuwang.base.common.support.query.PageQuery;
+import com.simuwang.base.config.DaqProperties;
 import com.simuwang.base.mapper.SysUserMapper;
 import com.simuwang.base.pojo.dos.sys.SysRoleUserDO;
 import com.simuwang.base.pojo.dos.sys.SysUserDO;
-import com.simuwang.base.pojo.dto.query.RoleUserPageQuery;
-import com.simuwang.base.pojo.dto.query.UserPageQuery;
+import com.simuwang.base.pojo.dto.sys.RoleUserPageQuery;
+import com.simuwang.base.pojo.dto.sys.UserAddCmd;
+import com.simuwang.base.pojo.dto.sys.UserEditCmd;
+import com.simuwang.base.pojo.dto.sys.UserPageQuery;
 import com.simuwang.base.pojo.vo.sys.SysRoleUserVO;
 import com.simuwang.base.pojo.vo.sys.SysUserVO;
 import com.simuwang.manage.service.system.SysUserService;
@@ -21,9 +32,11 @@ import java.util.stream.Collectors;
 @Service
 public class SysUserServiceImpl implements SysUserService {
     private final SysUserMapper mapper;
+    private final DaqProperties properties;
 
-    public SysUserServiceImpl(SysUserMapper mapper) {
+    public SysUserServiceImpl(SysUserMapper mapper, DaqProperties properties) {
         this.mapper = mapper;
+        this.properties = properties;
     }
 
     @Override
@@ -37,11 +50,16 @@ public class SysUserServiceImpl implements SysUserService {
         UserPageQuery params = (UserPageQuery) query;
         String keyword = params.getKeyword();
         if (StrUtil.isNotBlank(keyword)) {
-            wrapper.like("user_name", keyword)
-                    .or()
-                    .like("email", keyword)
-                    .or()
-                    .like("phonenumber", keyword);
+            wrapper.like("user_name", keyword);
+        }
+        if (StrUtil.isNotBlank(params.getEmail())) {
+            wrapper.like("email", params.getEmail());
+        }
+        if (StrUtil.isNotBlank(params.getPhonenumber())) {
+            wrapper.like("phonenumber", params.getPhonenumber());
+        }
+        if (params.getStatus() != null) {
+            wrapper.eq("status", params.getStatus());
         }
     }
 
@@ -61,7 +79,32 @@ public class SysUserServiceImpl implements SysUserService {
     }
 
     @Override
-    public <BSC extends BaseIdStatusCmd> void updateStatus(BSC command) {
+    public <C extends BaseAddCmd<SysUserDO>> void insert(C command) {
+        UserAddCmd cmd = (UserAddCmd) command;
+        SysUserDO entity = cmd.toEntity();
+        String originalPwd = cmd.getPassword();
+        if (StrUtil.isBlank(originalPwd)) {
+            originalPwd = this.properties.getDefaultPwd();
+        }
+        String publicKey = this.properties.getSecurityRsa().getPublicKey();
+        String password = new RSA(null, publicKey).encryptBase64(originalPwd, KeyType.PublicKey);
+        entity.setPassword(password);
+        this.mapper.insert(entity);
+    }
+
+    @Override
+    public <C extends BaseEditCmd<SysUserDO>> void update(C command) {
+        UserEditCmd cmd = (UserEditCmd) command;
+        SysUserDO entity = cmd.toEntity();
+        String originalPwd = cmd.getPassword();
+        String publicKey = this.properties.getSecurityRsa().getPublicKey();
+        String password = new RSA(null, publicKey).encryptBase64(originalPwd, KeyType.PublicKey);
+        entity.setPassword(password);
+        this.mapper.updateById(entity);
+    }
+
+    @Override
+    public <C extends BaseIdStatusCmd> void updateStatus(C command) {
         SysUserDO user = new SysUserDO();
         user.setUserId(command.getId());
         user.setStatus(command.getStatus());
@@ -69,7 +112,7 @@ public class SysUserServiceImpl implements SysUserService {
     }
 
     @Override
-    public <BIC extends BaseIdCmd> void delete(BIC command) {
+    public <C extends BaseIdCmd> void delete(C command) {
         Integer id = command.getId();
         this.mapper.deleteById(id);
     }