Bladeren bron

1、修改登录接口的userName字段
2、long类型的id使用string字符串传递给前端
3、优化用户相关接口
4、新增用户详情表
5、新增mybatis-plus-join

machaoyi 1 jaar geleden
bovenliggende
commit
41a49f006c
20 gewijzigde bestanden met toevoegingen van 716 en 41 verwijderingen
  1. 28 5
      .idea/workspace.xml
  2. 5 0
      application/pom.xml
  3. 113 0
      application/src/main/java/com/ctsi/SysUserDetail/controller/SysUserDetailController.java
  4. 89 0
      application/src/main/java/com/ctsi/SysUserDetail/entity/SysUserDetail.java
  5. 26 0
      application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.java
  6. 8 0
      application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.xml
  7. 51 0
      application/src/main/java/com/ctsi/SysUserDetail/service/SysUserDetailService.java
  8. 119 0
      application/src/main/java/com/ctsi/SysUserDetail/service/impl/SysUserDetailServiceImpl.java
  9. 1 1
      application/src/main/java/com/ctsi/system/entity/UserForm.java
  10. 1 1
      application/src/main/java/com/ctsi/system/web/login.java
  11. 28 9
      application/src/main/java/com/ctsi/user/controller/SysUserController.java
  12. 3 0
      application/src/main/java/com/ctsi/user/entity/SysUser.java
  13. 33 0
      application/src/main/java/com/ctsi/user/entity/UserAddVO.java
  14. 99 0
      application/src/main/java/com/ctsi/user/entity/UserDetailPO.java
  15. 33 0
      application/src/main/java/com/ctsi/user/entity/UserEditVO.java
  16. 22 0
      application/src/main/java/com/ctsi/user/entity/UserSearchVO.java
  17. 2 2
      application/src/main/java/com/ctsi/user/mapper/SysUserMapper.java
  18. 6 4
      application/src/main/java/com/ctsi/user/service/SysUserService.java
  19. 30 19
      application/src/main/java/com/ctsi/user/service/impl/SysUserServiceImpl.java
  20. 19 0
      application/src/main/java/com/ctsi/utils/LongtoStringSerialize.java

+ 28 - 5
.idea/workspace.xml

@@ -4,8 +4,22 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="1dc46973-e6f5-473b-a131-bf2bbc2dca15" name="更改" comment="基础框架配置">
+    <list default="true" id="1dc46973-e6f5-473b-a131-bf2bbc2dca15" name="更改" comment="1、post请求用body体&#10;2、通用返回体">
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/controller/SysUserDetailController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/entity/SysUserDetail.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/service/SysUserDetailService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/SysUserDetail/service/impl/SysUserDetailServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/UserAddVO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/UserDetailPO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/UserEditVO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/UserSearchVO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/utils/LongtoStringSerialize.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/application/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/application/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/application/src/main/java/com/ctsi/system/entity/UserForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/system/entity/UserForm.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/application/src/main/java/com/ctsi/system/web/login.java" beforeDir="false" afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/system/web/login.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/controller/SysUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/controller/SysUserController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/SysUser.java" beforeDir="false" afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/entity/SysUser.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/mapper/SysUserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/application/src/main/java/com/ctsi/user/mapper/SysUserMapper.java" afterDir="false" />
@@ -61,7 +75,6 @@
     "RequestMappingsPanelWidth1": "75",
     "RunOnceActivity.OpenProjectViewOnStart": "true",
     "RunOnceActivity.ShowReadmeOnStart": "true",
-    "SHARE_PROJECT_CONFIGURATION_FILES": "true",
     "Spring Boot.Application.executor": "Debug",
     "jdk.selected.JAVA_MODULE": "1.8",
     "kotlin-language-version-configured": "true",
@@ -89,6 +102,7 @@
       <recent name="C:\Users\setin\IdeaProjects\GeneralFrame\application\src\main\java\com\ctsi" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="com.ctsi.user.entity" />
       <recent name="com.ctsi.utils" />
     </key>
   </component>
@@ -116,7 +130,7 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1704693898384</updated>
-      <workItem from="1704693899463" duration="40238000" />
+      <workItem from="1704693899463" duration="50023000" />
     </task>
     <task id="LOCAL-00001" summary="基础框架配置">
       <option name="closed" value="true" />
@@ -126,7 +140,15 @@
       <option name="project" value="LOCAL" />
       <updated>1704846411609</updated>
     </task>
-    <option name="localTasksCounter" value="2" />
+    <task id="LOCAL-00002" summary="1、post请求用body体&#10;2、通用返回体">
+      <option name="closed" value="true" />
+      <created>1704849227759</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1704849227759</updated>
+    </task>
+    <option name="localTasksCounter" value="3" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -135,6 +157,7 @@
   <component name="VcsManagerConfiguration">
     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
     <MESSAGE value="基础框架配置" />
-    <option name="LAST_COMMIT_MESSAGE" value="基础框架配置" />
+    <MESSAGE value="1、post请求用body体&#10;2、通用返回体" />
+    <option name="LAST_COMMIT_MESSAGE" value="1、post请求用body体&#10;2、通用返回体" />
   </component>
 </project>

+ 5 - 0
application/pom.xml

@@ -33,6 +33,11 @@
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>RELEASE</version>
         </dependency>
+        <dependency>
+            <groupId>com.github.yulichang</groupId>
+            <artifactId>mybatis-plus-join-boot-starter</artifactId>
+            <version>RELEASE</version>
+        </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>

+ 113 - 0
application/src/main/java/com/ctsi/SysUserDetail/controller/SysUserDetailController.java

@@ -0,0 +1,113 @@
+package com.ctsi.SysUserDetail.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ctsi.entity.FramePage;
+import com.ctsi.utils.ApiResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+import com.ctsi.SysUserDetail.service.SysUserDetailService;
+
+import javax.annotation.Resource;
+
+ /**
+ * 用户信息表;(sys_user_detail)表控制层
+ * @author : machaoyi
+ * @date : 2024-1-10
+ */
+//@Api(tags = "用户信息表对象功能接口")
+//@RestController
+//@RequestMapping("/sysUserDetail")
+public class SysUserDetailController{
+    @Resource
+    private SysUserDetailService sysUserDetailService;
+    private static final Logger log = LoggerFactory.getLogger(SysUserDetailController.class);
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    @ApiOperation("通过ID查询单条数据")
+    @GetMapping("{id}")
+    public ApiResult<SysUserDetail> queryById(Long id){
+        try {
+            return ApiResult.success(sysUserDetailService.queryById(id));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("查询失败",null);
+        }
+    }
+    
+    /** 
+     * 分页查询
+     *
+     * @param sysUserDetail 筛选条件
+     * @return 查询结果
+     */
+    @ApiOperation("分页查询")
+    @GetMapping
+    public ApiResult<Page<SysUserDetail>> paginQuery(SysUserDetail sysUserDetail, FramePage framePage){
+        try {
+            return ApiResult.success(sysUserDetailService.paginQuery(sysUserDetail, framePage.getPageNum(), framePage.getPageSize()));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("分页查询失败",null);
+        }    
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("新增数据")
+    @PostMapping
+    public ApiResult<SysUserDetail> add(@RequestBody SysUserDetail sysUserDetail){
+        try {
+            return ApiResult.success(sysUserDetailService.insert(sysUserDetail));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("新增数据失败",null);
+        }
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("更新数据")
+    @PutMapping
+    public ApiResult<SysUserDetail> edit(@RequestBody SysUserDetail sysUserDetail){
+        try {
+            return ApiResult.success(sysUserDetailService.update(sysUserDetail));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("更新数据失败",null);
+        }
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    @ApiOperation("通过主键删除数据")
+    @DeleteMapping
+    public ApiResult<Boolean> deleteById(Long id){
+        try {
+            return ApiResult.success(sysUserDetailService.deleteById(id));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("删除数据失败",null);
+        }
+    }
+}

+ 89 - 0
application/src/main/java/com/ctsi/SysUserDetail/entity/SysUserDetail.java

@@ -0,0 +1,89 @@
+package com.ctsi.SysUserDetail.entity;
+
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+ /**
+ * 用户信息表;
+ * @author : machaoyi
+ * @date : 2024-1-10
+ */
+@ApiModel(value = "用户信息表",description = "")
+@TableName("sys_user_detail")
+public class SysUserDetail implements Serializable,Cloneable{
+    /** 主键id */
+    @ApiModelProperty(value = "主键id",notes = "")
+    @TableId
+    @JsonSerialize(using = LongtoStringSerialize.class)
+    private Long id ;
+    /** 姓名 */
+    @ApiModelProperty(value = "姓名",notes = "")
+    private String name ;
+    /** 性别 */
+    @ApiModelProperty(value = "性别",notes = "")
+    private String gender ;
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号",notes = "")
+    private String phone ;
+    /** 邮箱 */
+    @ApiModelProperty(value = "邮箱",notes = "")
+    private String email ;
+    /** 出生日期 */
+    @ApiModelProperty(value = "出生日期",notes = "")
+    private String birthDate ;
+
+    /** 主键id */
+    public Long getId(){
+        return this.id;
+    }
+    /** 主键id */
+    public void setId(Long id){
+        this.id=id;
+    }
+    /** 姓名 */
+    public String getName(){
+        return this.name;
+    }
+    /** 姓名 */
+    public void setName(String name){
+        this.name=name;
+    }
+    /** 性别 */
+    public String getGender(){
+        return this.gender;
+    }
+    /** 性别 */
+    public void setGender(String gender){
+        this.gender=gender;
+    }
+    /** 手机号 */
+    public String getPhone(){
+        return this.phone;
+    }
+    /** 手机号 */
+    public void setPhone(String phone){
+        this.phone=phone;
+    }
+    /** 邮箱 */
+    public String getEmail(){
+        return this.email;
+    }
+    /** 邮箱 */
+    public void setEmail(String email){
+        this.email=email;
+    }
+    /** 出生日期 */
+    public String getBirthDate(){
+        return this.birthDate;
+    }
+    /** 出生日期 */
+    public void setBirthDate(String birthDate){
+        this.birthDate=birthDate;
+    }
+}

+ 26 - 0
application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.java

@@ -0,0 +1,26 @@
+package com.ctsi.SysUserDetail.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+
+ /**
+ * 用户信息表;(sys_user_detail)表数据库访问层
+ * @author : machaoyi
+ * @date : 2024-1-10
+ */
+@Mapper
+public interface SysUserDetailMapper  extends BaseMapper<SysUserDetail>{
+    /** 
+     * 分页查询指定行数据
+     *
+     * @param page 分页参数
+     * @param wrapper 动态查询条件
+     * @return 分页对象列表
+     */
+    IPage<SysUserDetail> selectByPage(IPage<SysUserDetail> page , @Param(Constants.WRAPPER) Wrapper<SysUserDetail> wrapper);
+}

+ 8 - 0
application/src/main/java/com/ctsi/SysUserDetail/mapper/SysUserDetailMapper.xml

@@ -0,0 +1,8 @@
+<?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.ctsi.SysUserDetail.mapper.SysUserDetailMapper">
+     <select id="selectByPage" resultType="com.ctsi.SysUserDetail.entity.SysUserDetail">
+        select * from sys_user_detail ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 51 - 0
application/src/main/java/com/ctsi/SysUserDetail/service/SysUserDetailService.java

@@ -0,0 +1,51 @@
+package com.ctsi.SysUserDetail.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+
+ /**
+ * 用户信息表;(sys_user_detail)表服务接口
+ * @author : machaoyi
+ * @date : 2024-1-10
+ */
+public interface SysUserDetailService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    SysUserDetail queryById(Long id);
+    
+    /**
+     * 分页查询
+     *
+     * @param sysUserDetail 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<SysUserDetail> paginQuery(SysUserDetail sysUserDetail, long current, long size);
+    /** 
+     * 新增数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    SysUserDetail insert(SysUserDetail sysUserDetail);
+    /** 
+     * 更新数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    SysUserDetail update(SysUserDetail sysUserDetail);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long id);
+}

+ 119 - 0
application/src/main/java/com/ctsi/SysUserDetail/service/impl/SysUserDetailServiceImpl.java

@@ -0,0 +1,119 @@
+package com.ctsi.SysUserDetail.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+import com.ctsi.SysUserDetail.mapper.SysUserDetailMapper;
+import com.ctsi.SysUserDetail.service.SysUserDetailService;
+ /**
+ * 用户信息表;(sys_user_detail)表服务实现类
+ * @author : machaoyi
+ * @date : 2024-1-10
+ */
+@Service
+public class SysUserDetailServiceImpl implements SysUserDetailService{
+    @Autowired
+    private SysUserDetailMapper sysUserDetailMapper;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    public SysUserDetail queryById(Long id){
+        return sysUserDetailMapper.selectById(id);
+    }
+    
+    /**
+     * 分页查询
+     *
+     * @param sysUserDetail 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    public Page<SysUserDetail> paginQuery(SysUserDetail sysUserDetail, long current, long size){
+        //1. 构建动态查询条件
+        LambdaQueryWrapper<SysUserDetail> queryWrapper = new LambdaQueryWrapper<>();
+        if(StrUtil.isNotBlank(sysUserDetail.getName())){
+            queryWrapper.eq(SysUserDetail::getName, sysUserDetail.getName());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getGender())){
+            queryWrapper.eq(SysUserDetail::getGender, sysUserDetail.getGender());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getPhone())){
+            queryWrapper.eq(SysUserDetail::getPhone, sysUserDetail.getPhone());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getEmail())){
+            queryWrapper.eq(SysUserDetail::getEmail, sysUserDetail.getEmail());
+        }
+        //2. 执行分页查询
+        Page<SysUserDetail> pagin = new Page<>(current , size , true);
+        IPage<SysUserDetail> selectResult = sysUserDetailMapper.selectPage(pagin , queryWrapper);
+        pagin.setPages(selectResult.getPages());
+        pagin.setTotal(selectResult.getTotal());
+        pagin.setRecords(selectResult.getRecords());
+        //3. 返回结果
+        return pagin;
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    public SysUserDetail insert(SysUserDetail sysUserDetail){
+        sysUserDetailMapper.insert(sysUserDetail);
+        return sysUserDetail;
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param sysUserDetail 实例对象
+     * @return 实例对象
+     */
+    public SysUserDetail update(SysUserDetail sysUserDetail){
+        //1. 根据条件动态更新
+        LambdaUpdateChainWrapper<SysUserDetail> chainWrapper = new LambdaUpdateChainWrapper<SysUserDetail>(sysUserDetailMapper);
+        if(StrUtil.isNotBlank(sysUserDetail.getName())){
+            chainWrapper.set(SysUserDetail::getName, sysUserDetail.getName());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getGender())){
+            chainWrapper.set(SysUserDetail::getGender, sysUserDetail.getGender());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getPhone())){
+            chainWrapper.set(SysUserDetail::getPhone, sysUserDetail.getPhone());
+        }
+        if(StrUtil.isNotBlank(sysUserDetail.getEmail())){
+            chainWrapper.set(SysUserDetail::getEmail, sysUserDetail.getEmail());
+        }
+        //2. 设置主键,并更新
+        chainWrapper.eq(SysUserDetail::getId, sysUserDetail.getId());
+        boolean ret = chainWrapper.update();
+        //3. 更新成功了,查询最最对象返回
+        if(ret){
+            return queryById(sysUserDetail.getId());
+        }else{
+            return sysUserDetail;
+        }
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long id){
+        int total = sysUserDetailMapper.deleteById(id);
+        return total > 0;
+    }
+}

+ 1 - 1
application/src/main/java/com/ctsi/system/entity/UserForm.java

@@ -8,7 +8,7 @@ import lombok.Data;
 @Data
 public class UserForm {
     @ApiModelProperty(value = "用户名")
-    private String username;
+    private String userName;
     @ApiModelProperty(value = "密码")
     private String password;
 }

+ 1 - 1
application/src/main/java/com/ctsi/system/web/login.java

@@ -19,7 +19,7 @@ public class login {
     private SysUserService sysUserService;
     @PostMapping(value = "/login",name = "登录")
     public ApiResult auth(@RequestBody UserForm userForm){
-        SysUser User =  sysUserService.queryByUserName(userForm.getUsername());
+        SysUser User =  sysUserService.queryByUserName(userForm.getUserName());
         if(User == null){
             return ApiResult.failure("用户不存在",null);
         }

+ 28 - 9
application/src/main/java/com/ctsi/user/controller/SysUserController.java

@@ -1,14 +1,18 @@
 package com.ctsi.user.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+import com.ctsi.SysUserDetail.service.SysUserDetailService;
 import com.ctsi.entity.FramePage;
+import com.ctsi.user.entity.*;
 import com.ctsi.utils.ApiResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
-import com.ctsi.user.entity.SysUser;
 import com.ctsi.user.service.SysUserService;
 
 import javax.annotation.Resource;
@@ -24,6 +28,8 @@ import javax.annotation.Resource;
 public class SysUserController{
     @Resource
     private SysUserService sysUserService;
+    @Resource
+    private SysUserDetailService sysUserDetailService;
     private static final Logger log = LoggerFactory.getLogger(SysUserController.class);
     
     /** 
@@ -34,7 +40,7 @@ public class SysUserController{
      */
     @ApiOperation("通过ID查询单条数据")
     @GetMapping("{id}")
-    public ApiResult<SysUser> queryById(Long id){
+    public ApiResult<UserDetailPO> queryById(Long id){
         try {
             return ApiResult.success(sysUserService.queryById(id));
         } catch (Exception e) {
@@ -51,7 +57,7 @@ public class SysUserController{
      */
     @ApiOperation("分页查询")
     @GetMapping
-    public ApiResult<Page<SysUser>> paginQuery(SysUser sysUser, FramePage framePage){
+    public ApiResult<Page<UserDetailPO>> paginQuery(UserSearchVO sysUser, FramePage framePage){
         try {
             return ApiResult.success(sysUserService.paginQuery(sysUser, framePage.getPageNum(), framePage.getPageSize()));
         } catch (Exception e) {
@@ -63,14 +69,24 @@ public class SysUserController{
     /** 
      * 新增数据
      *
-     * @param sysUser 实例对象
+     * @param userAddVO 实例对象
      * @return 实例对象
      */
     @ApiOperation("新增数据")
     @PostMapping
-    public ApiResult<SysUser> add(@RequestBody SysUser sysUser){
+    @Transactional
+    public ApiResult<SysUserDetail> add(@RequestBody UserAddVO userAddVO){
         try {
-            return ApiResult.success(sysUserService.insert(sysUser));
+            if (sysUserService.queryByUserName(userAddVO.getUserName()) != null)
+                return ApiResult.failure("用户名已存在",null);
+            SysUser sysUser = new SysUser();
+            BeanUtils.copyProperties(userAddVO,sysUser);
+            sysUserService.insert(sysUser);
+            SysUserDetail sysUserDetail = new SysUserDetail();
+            BeanUtils.copyProperties(userAddVO,sysUserDetail);
+            sysUserDetail.setId(sysUser.getId());
+            sysUserDetailService.insert(sysUserDetail);
+            return ApiResult.success(sysUserDetail);
         } catch (Exception e) {
             log.error(e.getMessage());
             return ApiResult.failure("新增数据失败",null);
@@ -80,14 +96,17 @@ public class SysUserController{
     /** 
      * 更新数据
      *
-     * @param sysUser 实例对象
+     * @param userEditVO 实例对象
      * @return 实例对象
      */
     @ApiOperation("更新数据")
     @PutMapping
-    public ApiResult<SysUser> edit(@RequestBody SysUser sysUser){
+    @Transactional
+    public ApiResult<SysUserDetail> edit(@RequestBody UserEditVO userEditVO){
         try {
-            return ApiResult.success(sysUserService.update(sysUser));
+            SysUserDetail sysUserDetail = new SysUserDetail();
+            BeanUtils.copyProperties(userEditVO,sysUserDetail);
+            return ApiResult.success(sysUserDetailService.update(sysUserDetail));
         } catch (Exception e) {
             log.error(e.getMessage());
             return ApiResult.failure("更新数据失败",null);

+ 3 - 0
application/src/main/java/com/ctsi/user/entity/SysUser.java

@@ -1,6 +1,8 @@
 package com.ctsi.user.entity;
 
 import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -18,6 +20,7 @@ public class SysUser implements Serializable,Cloneable{
     /** 主键id */
     @ApiModelProperty(value = "主键id",notes = "")
     @TableId
+    @JsonSerialize(using = LongtoStringSerialize.class)
     private Long id ;
     /** 用户名 */
     @ApiModelProperty(value = "用户名",notes = "")

+ 33 - 0
application/src/main/java/com/ctsi/user/entity/UserAddVO.java

@@ -0,0 +1,33 @@
+package com.ctsi.user.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel("用户新增信息")
+@Data
+public class UserAddVO {
+    /** 用户名 */
+    @ApiModelProperty(value = "用户名",notes = "")
+    private String userName ;
+    /** 密码 */
+    @ApiModelProperty(value = "密码",notes = "")
+    private String password ;
+    /** 姓名 */
+    @ApiModelProperty(value = "姓名",notes = "")
+    private String name ;
+    /** 性别 */
+    @ApiModelProperty(value = "性别",notes = "")
+    private String gender ;
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号",notes = "")
+    private String phone ;
+    /** 邮箱 */
+    @ApiModelProperty(value = "邮箱",notes = "")
+    private String email ;
+    /** 出生日期 */
+    @ApiModelProperty(value = "出生日期",notes = "")
+    private String birthDate ;
+}

+ 99 - 0
application/src/main/java/com/ctsi/user/entity/UserDetailPO.java

@@ -0,0 +1,99 @@
+package com.ctsi.user.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+* 用户信息表;
+* @author : machaoyi
+* @date : 2024-1-10
+*/
+@ApiModel(value = "用户信息表PO",description = "")
+public class UserDetailPO implements Serializable,Cloneable{
+   /** 主键id */
+   @ApiModelProperty(value = "主键id",notes = "")
+   @TableId
+   @JsonSerialize(using = LongtoStringSerialize.class)
+   private Long id ;
+   /** 用户名 */
+   @ApiModelProperty(value = "用户名",notes = "")
+   private String userName ;
+   /** 姓名 */
+   @ApiModelProperty(value = "姓名",notes = "")
+   private String name ;
+   /** 性别 */
+   @ApiModelProperty(value = "性别",notes = "")
+   private String gender ;
+   /** 手机号 */
+   @ApiModelProperty(value = "手机号",notes = "")
+   private String phone ;
+   /** 邮箱 */
+   @ApiModelProperty(value = "邮箱",notes = "")
+   private String email ;
+   /** 出生日期 */
+   @ApiModelProperty(value = "出生日期",notes = "")
+   private String birthDate ;
+
+   /** 主键id */
+   public Long getId(){
+       return this.id;
+   }
+   /** 主键id */
+   public void setId(Long id){
+       this.id=id;
+   }
+   /** 用户名 */
+   public String getUserName(){
+      return this.userName;
+   }
+   /** 用户名 */
+   public void setUserName(String userName){
+      this.userName=userName;
+   }
+   /** 姓名 */
+   public String getName(){
+       return this.name;
+   }
+   /** 姓名 */
+   public void setName(String name){
+       this.name=name;
+   }
+   /** 性别 */
+   public String getGender(){
+       return this.gender;
+   }
+   /** 性别 */
+   public void setGender(String gender){
+       this.gender=gender;
+   }
+   /** 手机号 */
+   public String getPhone(){
+       return this.phone;
+   }
+   /** 手机号 */
+   public void setPhone(String phone){
+       this.phone=phone;
+   }
+   /** 邮箱 */
+   public String getEmail(){
+       return this.email;
+   }
+   /** 邮箱 */
+   public void setEmail(String email){
+       this.email=email;
+   }
+   /** 出生日期 */
+   public String getBirthDate(){
+       return this.birthDate;
+   }
+   /** 出生日期 */
+   public void setBirthDate(String birthDate){
+       this.birthDate=birthDate;
+   }
+}

+ 33 - 0
application/src/main/java/com/ctsi/user/entity/UserEditVO.java

@@ -0,0 +1,33 @@
+package com.ctsi.user.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("用户修改信息")
+@Data
+public class UserEditVO {
+    /** 主键id */
+    @ApiModelProperty(value = "主键id",notes = "")
+    @TableId
+    @JsonSerialize(using = LongtoStringSerialize.class)
+    private Long id ;
+    /** 姓名 */
+    @ApiModelProperty(value = "姓名",notes = "")
+    private String name ;
+    /** 性别 */
+    @ApiModelProperty(value = "性别",notes = "")
+    private String gender ;
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号",notes = "")
+    private String phone ;
+    /** 邮箱 */
+    @ApiModelProperty(value = "邮箱",notes = "")
+    private String email ;
+    /** 出生日期 */
+    @ApiModelProperty(value = "出生日期",notes = "")
+    private String birthDate ;
+}

+ 22 - 0
application/src/main/java/com/ctsi/user/entity/UserSearchVO.java

@@ -0,0 +1,22 @@
+package com.ctsi.user.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("用户查询条件")
+@Data
+public class UserSearchVO {
+    /** 用户名 */
+    @ApiModelProperty(value = "用户名",notes = "")
+    private String userName ;
+    /** 姓名 */
+    @ApiModelProperty(value = "姓名",notes = "")
+    private String name ;
+    /** 手机号 */
+    @ApiModelProperty(value = "手机号",notes = "")
+    private String phone ;
+}

+ 2 - 2
application/src/main/java/com/ctsi/user/mapper/SysUserMapper.java

@@ -1,9 +1,9 @@
 package com.ctsi.user.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.github.yulichang.base.MPJBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import com.ctsi.user.entity.SysUser;
@@ -14,7 +14,7 @@ import com.ctsi.user.entity.SysUser;
  * @date : 2024-1-10
  */
 @Mapper
-public interface SysUserMapper  extends BaseMapper<SysUser>{
+public interface SysUserMapper  extends MPJBaseMapper<SysUser> {
     /** 
      * 分页查询指定行数据
      *

+ 6 - 4
application/src/main/java/com/ctsi/user/service/SysUserService.java

@@ -2,8 +2,10 @@ package com.ctsi.user.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ctsi.user.entity.SysUser;
+import com.ctsi.user.entity.UserDetailPO;
+import com.ctsi.user.entity.UserSearchVO;
 
- /**
+/**
  * 用户表;(sys_user)表服务接口
  * @author : machaoyi
  * @date : 2024-1-10
@@ -16,7 +18,7 @@ public interface SysUserService{
      * @param id 主键
      * @return 实例对象
      */
-    SysUser queryById(Long id);
+    UserDetailPO queryById(Long id);
     
     /**
      * 分页查询
@@ -26,7 +28,7 @@ public interface SysUserService{
      * @param size  每页大小
      * @return
      */
-    Page<SysUser> paginQuery(SysUser sysUser, long current, long size);
+    Page<UserDetailPO> paginQuery(UserSearchVO sysUser, long current, long size);
     /** 
      * 新增数据
      *
@@ -40,7 +42,7 @@ public interface SysUserService{
      * @param sysUser 实例对象
      * @return 实例对象
      */
-    SysUser update(SysUser sysUser);
+    UserDetailPO update(SysUser sysUser);
     /** 
      * 通过主键删除数据
      *

+ 30 - 19
application/src/main/java/com/ctsi/user/service/impl/SysUserServiceImpl.java

@@ -1,7 +1,11 @@
 package com.ctsi.user.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.ctsi.SysUserDetail.entity.SysUserDetail;
+import com.ctsi.user.entity.UserDetailPO;
+import com.ctsi.user.entity.UserSearchVO;
 import com.ctsi.utils.PasswordEncoderUtil;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,8 +31,13 @@ public class SysUserServiceImpl implements SysUserService{
      * @param id 主键
      * @return 实例对象
      */
-    public SysUser queryById(Long id){
-        return sysUserMapper.selectById(id);
+    public UserDetailPO queryById(Long id){
+        MPJLambdaWrapper<SysUser> queryWrapper = new MPJLambdaWrapper<SysUser>();
+        queryWrapper.eq(SysUser::getId, id);
+        queryWrapper.selectAll(SysUserDetail.class);
+        queryWrapper.select(SysUser::getUserName);
+        queryWrapper.leftJoin(SysUserDetail.class, SysUserDetail::getId, SysUser::getId);
+        return sysUserMapper.selectJoinOne(UserDetailPO.class, queryWrapper);
     }
     
     /**
@@ -39,18 +48,24 @@ public class SysUserServiceImpl implements SysUserService{
      * @param size  每页大小
      * @return
      */
-    public Page<SysUser> paginQuery(SysUser sysUser, long current, long size){
+    public Page<UserDetailPO> paginQuery(UserSearchVO sysUser, long current, long size){
         //1. 构建动态查询条件
-        LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+        MPJLambdaWrapper<SysUser> queryWrapper = new MPJLambdaWrapper<SysUser>();
         if(StrUtil.isNotBlank(sysUser.getUserName())){
-            queryWrapper.eq(SysUser::getUserName, sysUser.getUserName());
+            queryWrapper.like(SysUser::getUserName, sysUser.getUserName());
         }
-        if(StrUtil.isNotBlank(sysUser.getPassword())){
-            queryWrapper.eq(SysUser::getPassword, sysUser.getPassword());
+        if(StrUtil.isNotBlank(sysUser.getName())){
+            queryWrapper.like(SysUserDetail::getName, sysUser.getName());
         }
+        if(StrUtil.isNotBlank(sysUser.getPhone())){
+            queryWrapper.like(SysUserDetail::getPhone, sysUser.getPhone());
+        }
+        queryWrapper.selectAll(SysUserDetail.class);
+        queryWrapper.select(SysUser::getUserName);
+        queryWrapper.leftJoin(SysUserDetail.class, SysUserDetail::getId, SysUser::getId);
         //2. 执行分页查询
-        Page<SysUser> pagin = new Page<>(current , size , true);
-        IPage<SysUser> selectResult = sysUserMapper.selectPage(pagin , queryWrapper);
+        Page<UserDetailPO> pagin = new Page<>(current , size , true);
+        IPage<UserDetailPO> selectResult = sysUserMapper.selectJoinPage(pagin , UserDetailPO.class, queryWrapper);
         pagin.setPages(selectResult.getPages());
         pagin.setTotal(selectResult.getTotal());
         pagin.setRecords(selectResult.getRecords());
@@ -76,24 +91,20 @@ public class SysUserServiceImpl implements SysUserService{
      * @param sysUser 实例对象
      * @return 实例对象
      */
-    public SysUser update(SysUser sysUser){
+    public UserDetailPO update(SysUser sysUser){
         //1. 根据条件动态更新
         LambdaUpdateChainWrapper<SysUser> chainWrapper = new LambdaUpdateChainWrapper<SysUser>(sysUserMapper);
         if(StrUtil.isNotBlank(sysUser.getUserName())){
-            chainWrapper.eq(SysUser::getUserName, sysUser.getUserName());
+            chainWrapper.set(SysUser::getUserName, sysUser.getUserName());
         }
         if(StrUtil.isNotBlank(sysUser.getPassword())){
-            chainWrapper.eq(SysUser::getPassword, sysUser.getPassword());
+            chainWrapper.set(SysUser::getPassword, sysUser.getPassword());
         }
         //2. 设置主键,并更新
-        chainWrapper.set(SysUser::getId, sysUser.getId());
-        boolean ret = chainWrapper.update();
+        chainWrapper.eq(SysUser::getId, sysUser.getId());
+        chainWrapper.update();
         //3. 更新成功了,查询最最对象返回
-        if(ret){
-            return queryById(sysUser.getId());
-        }else{
-            return sysUser;
-        }
+        return queryById(sysUser.getId());
     }
     
     /** 

+ 19 - 0
application/src/main/java/com/ctsi/utils/LongtoStringSerialize.java

@@ -0,0 +1,19 @@
+package com.ctsi.utils;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+
+/**
+ * @author zhaoliangliang
+ * @date 2021/9/14
+ */
+public class LongtoStringSerialize extends JsonSerializer<Long> {
+
+    @Override
+    public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+        gen.writeString(String.valueOf(value));
+    }
+}