Parcourir la source

用户接口新增和自测完成

xucaiqin il y a 2 ans
Parent
commit
42f7431a11
12 fichiers modifiés avec 219 ajouts et 28 suppressions
  1. 0 2
      iot-framework/iot-starter-mybatis/src/main/java/com/middle/platform/mybatis/core/dataobject/BaseDO.java
  2. 2 0
      iot-module/iot-module-system/iot-module-system-api/src/main/java/com/middle/platform/system/api/enums/DictType.java
  3. 8 4
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/MenuController.java
  4. 13 1
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/UserController.java
  5. 14 3
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/mapper/SysUserMenuMapper.java
  6. 54 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/res/SysMenuVo.java
  7. 17 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/res/UserDetailVo.java
  8. 16 8
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysMenuService.java
  9. 36 3
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysUserMenuService.java
  10. 39 7
      iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysUserService.java
  11. 1 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysUserMapper.xml
  12. 19 0
      iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysUserMenuMapper.xml

+ 0 - 2
iot-framework/iot-starter-mybatis/src/main/java/com/middle/platform/mybatis/core/dataobject/BaseDO.java

@@ -39,7 +39,5 @@ public abstract class BaseDO implements Serializable {
     /**
      * 是否删除
      */
-    @TableLogic(delval = "1", value = "0")
     private Integer delFlag;
-
 }

+ 2 - 0
iot-module/iot-module-system/iot-module-system-api/src/main/java/com/middle/platform/system/api/enums/DictType.java

@@ -12,4 +12,6 @@ public interface DictType {
     String DATA_FORMAT_TYPE = "data_tormat_type";
     String AUTH_TYPE = "auth_type";//认证类型
     String SEX_TYPE = "sex_type";//性别
+    String MENU_TYPE = "menu_type";//菜单类别
+
 }

+ 8 - 4
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/MenuController.java

@@ -1,7 +1,7 @@
 package com.middle.platform.system.biz.controller;
 
 import com.middle.platform.common.utils.Result;
-import com.middle.platform.system.biz.entity.SysUser;
+import com.middle.platform.system.biz.entity.SysMenu;
 import com.middle.platform.system.biz.service.SysMenuService;
 import jakarta.annotation.Resource;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -21,9 +21,13 @@ public class MenuController {
     @Resource
     private SysMenuService sysMenuService;
 
-
+    /**
+     * 菜单列表
+     *
+     * @return
+     */
     @PostMapping("/list")
-    public Result<List<SysUser>> list() {
-        return Result.ok();
+    public Result<List<SysMenu>> list() {
+        return Result.ok(sysMenuService.list());
     }
 }

+ 13 - 1
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/controller/UserController.java

@@ -47,16 +47,28 @@ public class UserController {
         return Result.ok(sysUserService.pageQuery(basePara), "查询成功");
     }
 
+    /**
+     * 用户详情
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/detail")
+    public Result<Object> detail(@Validated @NotNull(message = "用户id不能为空") Long id) {
+        return Result.ok(sysUserService.detail(id), "查询成功");
+    }
+
     /**
      * 删除用户
      *
      * @param id
      * @return
      */
-    @PostMapping("/remove/{id}")
+    @DeleteMapping("/remove/{id}")
     public Result<Object> list(@Validated @PathVariable("id") @NotNull(message = "用户id不能为空") Long id) {
         return Result.ok(sysUserService.remove(id), "删除成功");
     }
+
     /**
      * 修改用户
      *

+ 14 - 3
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/mapper/SysUserMenuMapper.java

@@ -2,12 +2,23 @@ package com.middle.platform.system.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.middle.platform.system.biz.entity.SysUserMenu;
+import com.middle.platform.system.biz.pojo.res.SysMenuVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
-* @date 2023-12-18 15:17:33
-* @author xucaiqin
-*/
+ * @author xucaiqin
+ * @date 2023-12-18 15:17:33
+ */
 @Mapper
 public interface SysUserMenuMapper extends BaseMapper<SysUserMenu> {
+    /**
+     * 根据用户id查询关联的菜单详情
+     *
+     * @param id 用户id
+     * @return
+     */
+    List<SysMenuVo> queryUserMenu(@Param("id") Long id);
 }

+ 54 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/res/SysMenuVo.java

@@ -0,0 +1,54 @@
+package com.middle.platform.system.biz.pojo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 菜单权限表
+* @date 2023-12-18 15:17:33
+* @author xucaiqin
+*/
+@Getter
+@Setter
+public class SysMenuVo  {
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 父菜单ID
+     */
+    private Long pid;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 权限标识
+     */
+    private String permission;
+
+    /**
+     * 菜单类型 1-菜单 2-功能 menu_type
+     */
+    private Integer type;
+    private String typeLabel;
+
+    /**
+     * 显示顺序
+     */
+    private Integer sort;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 17 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/pojo/res/UserDetailVo.java

@@ -0,0 +1,17 @@
+package com.middle.platform.system.biz.pojo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author xucaiqin
+ * @date 2023-12-22 10:20:02
+ */
+@Getter
+@Setter
+public class UserDetailVo {
+    private SysUserVo sysUserVo;
+    private List<SysMenuVo> menuList;
+}

+ 16 - 8
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysMenuService.java

@@ -1,16 +1,24 @@
 package com.middle.platform.system.biz.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.middle.platform.common.constant.Global;
+import com.middle.platform.system.biz.entity.SysMenu;
+import com.middle.platform.system.biz.mapper.SysMenuMapper;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
-import jakarta.annotation.Resource;
+
 import java.util.List;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.middle.platform.system.biz.mapper.SysMenuMapper;
-import com.middle.platform.system.biz.entity.SysMenu;
+
 /**
-* @date 2023-12-18 15:17:33
-* @author xucaiqin
-*/
+ * @author xucaiqin
+ * @date 2023-12-18 15:17:33
+ */
 @Service
-public class SysMenuService extends ServiceImpl<SysMenuMapper, SysMenu> {
+@RequiredArgsConstructor
+public class SysMenuService {
+    private final SysMenuMapper sysMenuMapper;
 
+    public List<SysMenu> list() {
+        return sysMenuMapper.selectList(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDelFlag, Global.UN_DEL));
+    }
 }

+ 36 - 3
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysUserMenuService.java

@@ -1,12 +1,20 @@
 package com.middle.platform.system.biz.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.middle.platform.common.constant.Global;
+import com.middle.platform.system.api.enums.DictType;
+import com.middle.platform.system.api.feign.DictApi;
 import com.middle.platform.system.biz.entity.SysUserMenu;
 import com.middle.platform.system.biz.mapper.SysUserMenuMapper;
+import com.middle.platform.system.biz.pojo.res.SysMenuVo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author xucaiqin
@@ -16,6 +24,7 @@ import java.util.List;
 @RequiredArgsConstructor
 public class SysUserMenuService {
     private final SysUserMenuMapper sysUserMenuMapper;
+    private final DictApi dictApi;
 
     /**
      * 保存用户关联的菜单权限
@@ -40,8 +49,32 @@ public class SysUserMenuService {
      */
     public void removeMenu(Long userId) {
         SysUserMenu sysUserMenu = new SysUserMenu();
-        sysUserMenu.setUserId(userId);
-        sysUserMenu.setDelFlag(Global.UN_DEL);
-        sysUserMenuMapper.deleteById(sysUserMenu);
+        sysUserMenu.setDeleteTime(LocalDateTime.now());
+        sysUserMenu.setDelFlag(Global.DEL);
+        sysUserMenuMapper.update(sysUserMenu, new LambdaQueryWrapper<SysUserMenu>().eq(SysUserMenu::getUserId, userId).eq(SysUserMenu::getDelFlag, Global.UN_DEL));
+    }
+
+    /**
+     * 查询用户关联菜单
+     *
+     * @param id 用户id
+     */
+    public List<SysUserMenu> query(Long id) {
+        return sysUserMenuMapper.selectList(new LambdaQueryWrapper<SysUserMenu>().eq(SysUserMenu::getUserId, id).eq(SysUserMenu::getDelFlag, Global.UN_DEL));
+    }
+
+    /**
+     * 查询用户关联的菜单
+     *
+     * @param id 用户id
+     * @return
+     */
+    public List<SysMenuVo> queryUserMenu(Long id) {
+        List<SysMenuVo> sysMenuVos = sysUserMenuMapper.queryUserMenu(id);
+        if (CollectionUtils.isEmpty(sysMenuVos)) {
+            return new ArrayList<>();
+        }
+        sysMenuVos.forEach(a -> Optional.ofNullable(dictApi.query(DictType.MENU_TYPE, String.valueOf(a.getType()))).ifPresent(m -> a.setTypeLabel(m.getLabel())));
+        return sysMenuVos;
     }
 }

+ 39 - 7
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/service/SysUserService.java

@@ -17,14 +17,18 @@ import com.middle.platform.system.biz.mapper.SysUserMapper;
 import com.middle.platform.system.biz.pojo.req.SysUserPagePara;
 import com.middle.platform.system.biz.pojo.req.SysUserPara;
 import com.middle.platform.system.biz.pojo.req.SysUserUpdPara;
+import com.middle.platform.system.biz.pojo.res.SysMenuVo;
 import com.middle.platform.system.biz.pojo.res.SysUserVo;
+import com.middle.platform.system.biz.pojo.res.UserDetailVo;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -128,7 +132,7 @@ public class SysUserService {
      * @return
      */
     private void checkUser(String username) {
-        SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username).last("limit 1"));
+        SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username).eq(SysUser::getDelFlag, Global.UN_DEL).last("limit 1"));
         if (Objects.nonNull(sysUser)) {
             throw new BusinessException("账号已存在");
         }
@@ -145,6 +149,8 @@ public class SysUserService {
         if (Objects.isNull(sysUser)) {
             throw new BusinessException("用户不存在");
         }
+        sysUser.setUpdateBy(null);
+        sysUser.setUpdateTime(null);
         return sysUser;
     }
 
@@ -167,7 +173,10 @@ public class SysUserService {
     @Transactional(rollbackFor = Exception.class)
     public Object remove(Long id) {
         //删除用户
-        sysUserMapper.deleteById(id);
+        SysUser sysUser = new SysUser();
+        sysUser.setDeleteTime(LocalDateTime.now());
+        sysUser.setDelFlag(Global.DEL);
+        sysUserMapper.update(sysUser, new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, id).eq(SysUser::getDelFlag, Global.UN_DEL));
         //删除用户关联菜单
         sysUserMenuService.removeMenu(id);
         return true;
@@ -179,22 +188,45 @@ public class SysUserService {
      * @param sysUserPara
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public Object update(SysUserUpdPara sysUserPara) {
         SysUser sysUser = checkUser(sysUserPara.getId());
         sysUser.setName(sysUserPara.getName());
         sysUser.setSex(sysUserPara.getSex());
         sysUser.setPhone(sysUserPara.getPhone());
-        if(StringUtils.isNotBlank(sysUserPara.getPassword())){
+        if (StringUtils.isNotBlank(sysUserPara.getPassword())) {
             sysUser.setPassword(Optional.of(sysUserPara.getPassword()).map(HashUtil::argon2).orElseGet(() -> HashUtil.argon2(defaultPass)));
         }
-        sysUser.setStatus(Global.USE);
         sysUser.setRemark(sysUserPara.getRemark());
         sysUserMapper.updateById(sysUser);
-        //用户id主键
-        Long id = sysUser.getId();
+        //先删除,再新增
+        sysUserMenuService.removeMenu(sysUser.getId());
         if (!CollectionUtils.isEmpty(sysUserPara.getMenu())) {
-            sysUserMenuService.save(id, sysUserPara.getMenu());
+            sysUserMenuService.save(sysUser.getId(), sysUserPara.getMenu());
         }
         return true;
     }
+
+    /**
+     * 查询详情
+     *
+     * @param id 用户id
+     * @return
+     */
+    public Object detail(Long id) {
+        SysUser sysUser = sysUserMapper.selectById(id);
+        if (Objects.isNull(sysUser)) {
+            throw new BusinessException("用户不存在");
+        }
+        SysUserVo sysUserVo = new SysUserVo();
+        BeanUtils.copyProperties(sysUser, sysUserVo);
+        Optional.of(sysUserVo).ifPresent(u -> Optional.ofNullable(dictApi.query(DictType.SEX_TYPE, String.valueOf(u.getSex()))).ifPresent(d -> u.setSexLabel(d.getLabel())));
+        UserDetailVo userDetailVo = new UserDetailVo();
+        userDetailVo.setSysUserVo(sysUserVo);
+
+        //查询用户菜单
+        List<SysMenuVo> query = sysUserMenuService.queryUserMenu(id);
+        userDetailVo.setMenuList(query);
+        return userDetailVo;
+    }
 }

+ 1 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysUserMapper.xml

@@ -32,6 +32,7 @@
           <if test="name != null and name != ''">
               and su.name like concat('%', #{name,jdbcType=VARCHAR}, '%')
           </if>
+          and su.del_flag = 0
       </where>
   </select>
 

+ 19 - 0
iot-module/iot-module-system/iot-module-system-biz/src/main/resources/mapper/SysUserMenuMapper.xml

@@ -19,4 +19,23 @@
     id, user_id, menu_id, create_by, create_time, update_by, update_time, delete_time,
     del_flag
   </sql>
+
+  <select id="queryUserMenu" resultType="com.middle.platform.system.biz.pojo.res.SysMenuVo">
+      select sm.id,
+             sm.pid,
+             sm.name,
+             sm.code,
+             sm.permission,
+             sm.type,
+             sm.sort,
+             sm.sort
+      from sys_user_menu sum
+               left join sys_menu sm on sum.menu_id = sm.id and sm.del_flag = 0
+      <where>
+          <if test="id != null">
+              and sum.user_id = #{id,jdbcType=BIGINT}
+          </if>
+          and sum.del_flag = 0
+      </where>
+  </select>
 </mapper>