فهرست منبع

获取用户信息、子账户列表

zhj 2 سال پیش
والد
کامیت
78e2df55b0

+ 84 - 0
src/main/java/com/welampiot/controller/UserController.java

@@ -1,6 +1,7 @@
 package com.welampiot.controller;
 
 import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.common.ResultEnum;
 import com.welampiot.dto.GlobalLocationDTO;
 import com.welampiot.dto.SectionDTO;
@@ -13,6 +14,7 @@ import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.GlobalLocationVO;
 import com.welampiot.vo.ListResponseVO;
 import com.welampiot.vo.LoginVO;
+import com.welampiot.vo.UserVO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -142,4 +145,85 @@ public class UserController {
         listResponseVO.setList(sectionDTOList);
         return BaseResult.success(listResponseVO);
     }
+
+    /**
+     * 获取用户信息
+     * @param request 用户id
+     * @return 返回用户信息
+     */
+    @RequestMapping(value = "info", method = RequestMethod.POST)
+    public BaseResult<?> info(HttpServletRequest request) {
+        int id = (int) toolUtils.getRequestContent(request,"id",1);
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        UserVO userVO = userService.getUserInfoById(id);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,userVO);
+    }
+
+    /**
+     * 获取子账号列表
+     * @param request 用户名username
+     * @return 返回子账号列表
+     */
+    @RequestMapping(value = "/userList", method = RequestMethod.POST)
+    public BaseResult<?> userList(HttpServletRequest request) {
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        String username = (String) toolUtils.getRequestContent(request,"username",2);
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        int role = (int) toolUtils.getRequestContent(request,"role",1);
+        int department = (int) toolUtils.getRequestContent(request,"department",1);
+        int companyId = (int) toolUtils.getRequestContent(request,"companyId",1);
+        String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
+        int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+
+        UserDTO dto = new UserDTO();
+        dto.setPage(count * (page - 1));
+        dto.setCount(count);
+        dto.setKeyword(keyword);
+        dto.setRole(role);
+        dto.setDepartment(department);
+        dto.setCompanyId(companyId);
+        dto.setUsername(username);
+        UserDTO dto1 = userService.queryUserIdByUsername(dto.getUsername());
+        if (dto1 == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        dto.setId(dto1.getId());
+        List<UserDTO> userList;
+        if (dto1.getRole() == 1) {
+            userList = userService.getAllUserListByUserVO(dto);
+        } else {
+            userList = userService.getUserListByUserVO(dto);
+        }
+        List<UserDTO> list = new ArrayList<>();
+        userList.forEach(userDTO -> {
+            if (userDTO.getRole() == 1) {
+                if (version == 0) {
+                    userDTO.setRoleStr("超级管理员");
+                } else if (version == 1) {
+                    userDTO.setRoleStr("Super Administrator");
+                } else {
+                    userDTO.setRoleStr("суперинтендант");
+                }
+            } else if (userDTO.getRole() == 2) {
+                if (version == 0) {
+                    userDTO.setRoleStr("单位管理员");
+                } else if (version == 1) {
+                    userDTO.setRoleStr("Unit Administrator");
+                } else {
+                    userDTO.setRoleStr("Администратор единицы");
+                }
+            } else if (userDTO.getRole() == 3){
+                if (version == 0) {
+                    userDTO.setRoleStr("公司子账号");
+                } else if (version == 1) {
+                    userDTO.setRoleStr("Company Sub Account");
+                } else {
+                    userDTO.setRoleStr("Субсчет компании");
+                }
+            }
+            list.add(userDTO);
+        });
+        return BaseResult.success(list);
+    }
 }

+ 7 - 0
src/main/java/com/welampiot/dao/UserDao.java

@@ -17,4 +17,11 @@ public interface UserDao {
     List<PathDTO> queryUserGrantUrl(@Param("username") String username);
     List<RoleDTO> queryUserRole(@Param("username") String username);
     List<UserDTO> getListByParentId(@Param("parentId") Integer parentId);
+    UserDTO getUserInfoById(@Param("id") Integer id);
+    Integer getUserCount();
+    Integer getUserCountByParentId(@Param("id") Integer id);
+    Integer getSectionCountByZoneList(@Param("zoneList") List<String> zoneList);
+    List<UserDTO> getUserListByUserVO(UserDTO dto);
+    UserDTO queryUserIdByUsername(@Param("username") String username);
+    List<UserDTO> getAllUserListByUserVO(UserDTO dto);
 }

+ 19 - 4
src/main/java/com/welampiot/dto/UserDTO.java

@@ -5,26 +5,41 @@ import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
 @Data
-public class UserDTO implements UserDetails{
-    private int id;
+public class UserDTO implements UserDetails, Serializable {
+    private Integer id;
     private String username;
     private String password;
-    private int status;
+    private Integer status;
     private String privilegeList;
     private String zoneList;
-    private int role;
+    private Integer role;
     private String company;
     private String address;
     private String emerUser;
     private String emerPassword;
     private String token;
     private String privilege;
+    private String avatar;
+    private String name;
+    private String phone;
+    private Integer companyId;
+    private String email;
+    private Integer sex;
+    private String remark;
+    private Integer department;
+    private String roleStr;
+    private Integer page;
+    private Integer count;
+    private String keyword;
+    private Integer version;
+    private static final long serialVersionUID = 1L;
 
     @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {

+ 7 - 0
src/main/java/com/welampiot/service/UserService.java

@@ -4,6 +4,7 @@ import com.welampiot.dto.MenuDTO;
 import com.welampiot.dto.PathDTO;
 import com.welampiot.dto.UserDTO;
 import com.welampiot.vo.LoginVO;
+import com.welampiot.vo.UserVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -16,4 +17,10 @@ public interface UserService {
     UserDTO findUserByUserName(String username);
     List<PathDTO> queryUserGrantUrl(String username);
     List<UserDTO> getListByParentId(@Param("parentId") Integer parentId);
+    UserVO getUserInfoById(Integer id);
+    Integer getUserCount();
+    Integer getUserCountByParentId(Integer id);
+    List<UserDTO> getUserListByUserVO(UserDTO dto);
+    UserDTO queryUserIdByUsername(String username);
+    List<UserDTO> getAllUserListByUserVO(UserDTO dto);
 }

+ 48 - 0
src/main/java/com/welampiot/service/impl/UserServiceImpl.java

@@ -6,9 +6,12 @@ import com.welampiot.dto.PathDTO;
 import com.welampiot.dto.UserDTO;
 import com.welampiot.service.UserService;
 import com.welampiot.vo.LoginVO;
+import com.welampiot.vo.UserVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.List;
 
 @Service
@@ -51,4 +54,49 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public List<UserDTO> getListByParentId(Integer parentId) {return userDao.getListByParentId(parentId);}
+
+    @Override
+    public UserVO getUserInfoById(Integer id) {
+        UserVO userVO = new UserVO();
+        UserDTO userDTO = userDao.getUserInfoById(id);
+        BeanUtils.copyProperties(userDTO,userVO);
+        if (userDTO.getRole() == 1) {
+            userVO.setUserCount(this.getUserCount());
+        } else {
+            userVO.setUserCount(this.getUserCountByParentId(id));
+        }
+        if (userDTO.getZoneList() != null && userDTO.getZoneList().length() != 0) {
+            List<String> list = Arrays.asList(userDTO.getZoneList().split(","));
+            Integer sectionCount = userDao.getSectionCountByZoneList(list);
+            userVO.setSectionCount(sectionCount);
+        } else {
+            userVO.setSectionCount(0);
+        }
+        return userVO;
+    }
+
+    @Override
+    public Integer getUserCount() {
+        return userDao.getUserCount();
+    }
+
+    @Override
+    public Integer getUserCountByParentId(Integer id) {
+        return userDao.getUserCountByParentId(id);
+    }
+
+    @Override
+    public List<UserDTO> getUserListByUserVO(UserDTO dto) {
+        return userDao.getUserListByUserVO(dto);
+    }
+
+    @Override
+    public UserDTO queryUserIdByUsername(String username) {
+        return userDao.queryUserIdByUsername(username);
+    }
+
+    @Override
+    public List<UserDTO> getAllUserListByUserVO(UserDTO dto) {
+        return userDao.getAllUserListByUserVO(dto);
+    }
 }

+ 39 - 0
src/main/java/com/welampiot/vo/UserVO.java

@@ -0,0 +1,39 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.UserDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: UserVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/18 - 10:48
+ * @Version: v1.0
+ */
+@Data
+public class UserVO implements Serializable {
+    private Integer id;
+    private String username;
+    private String password;
+    private Integer status;
+    private String company;
+    private String address;
+    private String avatar;
+    private String name;
+    private String phone;
+    private Integer companyId;
+    private String email;
+    private Integer sex;
+    private Integer role;
+    private String remark;
+    private Integer department;
+    private Integer userCount;
+    private Integer sectionCount;
+    private List<UserDTO> list;
+    private static final long serialVersionUID = 1L;
+}

+ 153 - 0
src/main/resources/mapper/UserMapper.xml

@@ -66,4 +66,157 @@
         WHERE
         u.username = #{username,jdbcType=VARCHAR};
     </select>
+    
+    <select id="getUserInfoById" resultType="UserDTO">
+        select u.id,u.avatar,u.name,u.username,u.company,u.company_id companyId,u.role,
+               u.email,u.sex,u.remark,u.status,u.department,u.mobile as phone,u.address,u.zone_list zoneList
+        from user u
+        where u.id = #{id}
+    </select>
+
+    <!-- role为1查询所有用户的数量 -->
+    <select id="getUserCount" resultType="Integer">
+        select count(u.id)
+        from user u 
+    </select>
+
+    <!-- role为2查询下级账号数量 -->
+    <select id="getUserCountByParentId" resultType="Integer">
+        select count(u.id)
+        from user u
+        where u.parent_id = #{id}
+    </select>
+
+    <!-- 查询用户的区域权限数量 -->
+    <select id="getSectionCountByZoneList" resultType="Integer">
+        select count(*)
+        from section s
+        <if test="zoneList != null and !zoneList.isEmpty()">
+             where s.id in
+            <foreach collection="zoneList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <!-- role为2查询它的所有子账号 -->
+    <select id="getUserListByUserVO" resultType="com.welampiot.dto.UserDTO">
+        select u.id,u.name,u.avatar,u.username,u.company,u.role,u.department
+        from user u
+        where u.parent_id = #{id}
+        <if test="keyword != null and keyword != ''">
+            and u.username like '%${keyword}%'
+        </if>
+        <if test="companyId != 0">
+            and u.company_id = #{companyId}
+        </if>
+        <choose>
+            <when test="role == 1">
+                and u.role = 1
+            </when>
+            <when test="role == 2">
+                and u.role = 2
+            </when>
+            <when test="role == 3">
+                and u.role = 3
+            </when>
+        </choose>
+        <choose>
+            <when test="department == 1">
+                and u.department = 1
+            </when>
+            <when test="department == 2">
+                and u.department = 2
+            </when>
+            <when test="department == 3">
+                and u.department = 3
+            </when>
+            <when test="department == 4">
+                and u.department = 4
+            </when>
+            <when test="department == 5">
+                and u.department = 5
+            </when>
+            <when test="department == 6">
+                and u.department = 6
+            </when>
+            <when test="department == 7">
+                and u.department = 7
+            </when>
+            <when test="department == 8">
+                and u.department = 8
+            </when>
+            <when test="department == 9">
+                and u.department = 9
+            </when>
+        </choose>
+        order by u.id desc
+        <if test="page >= 0 and count > 0">
+            limit #{page},#{count}
+        </if>
+    </select>
+
+    <!-- role为1查询所有账号 -->
+    <select id="getAllUserListByUserVO" resultType="com.welampiot.dto.UserDTO">
+        select u.id,u.name,u.avatar,u.username,u.company,u.role,u.department
+        from user u
+        where 1=1
+        <if test="keyword != null and keyword != ''">
+            and u.username like '%${keyword}%'
+        </if>
+        <if test="companyId != 0">
+            and u.company_id = #{companyId}
+        </if>
+        <choose>
+            <when test="role == 1">
+                and u.role = 1
+            </when>
+            <when test="role == 2">
+                and u.role = 2
+            </when>
+            <when test="role == 3">
+                and u.role = 3
+            </when>
+        </choose>
+        <choose>
+            <when test="department == 1">
+                and u.department = 1
+            </when>
+            <when test="department == 2">
+                and u.department = 2
+            </when>
+            <when test="department == 3">
+                and u.department = 3
+            </when>
+            <when test="department == 4">
+                and u.department = 4
+            </when>
+            <when test="department == 5">
+                and u.department = 5
+            </when>
+            <when test="department == 6">
+                and u.department = 6
+            </when>
+            <when test="department == 7">
+                and u.department = 7
+            </when>
+            <when test="department == 8">
+                and u.department = 8
+            </when>
+            <when test="department == 9">
+                and u.department = 9
+            </when>
+        </choose>
+        order by u.id desc
+        <if test="page >= 0 and count > 0">
+            limit #{page},#{count}
+        </if>
+    </select>
+
+    <select id="queryUserIdByUsername" resultType="UserDTO">
+        select u.id,u.role
+        from user u
+        where u.username = #{username}
+    </select>
+    
 </mapper>