From af509b2bdedff3f119162e961e1dd8fc585a4e0d Mon Sep 17 00:00:00 2001 From: licc <lichuchuan@jtep.com.cn> Date: Fri, 18 Jun 2021 16:51:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E7=9B=B4?= =?UTF-8?q?=E8=BF=9E=E6=A0=91=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/wisenergy/mapper/UsersMapper.java | 10 ++- .../src/main/resources/mapper/UsersMapper.xml | 11 ++++ .../java/cn/wisenergy/model/vo/UserVo.java | 9 +++ .../cn/wisenergy/service/app/UserService.java | 7 ++ .../service/app/impl/UserServiceImpl.java | 65 +++++++++++++++++++ .../admin/controller/app/UserController.java | 7 ++ .../src/main/resources/application.yml | 2 +- 7 files changed, 108 insertions(+), 3 deletions(-) diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java index a5e5e47..d1dd00b 100644 --- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java +++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java @@ -75,12 +75,18 @@ public interface UsersMapper extends BaseMapper<Users> { * 获å–用户 åŸºæœ¬æ•°æ® * * @param startNumber å¼€å§‹ç¼–å· - * @param endNo 结æŸç¼–å· + * @param endNo 结æŸç¼–å· * @return 列表 */ List<UserDto> getAllUserData(@Param("startNo") Integer startNumber, @Param("endNo") Integer endNo); - + /** + * 获å–用户 åŸºæœ¬æ•°æ® + * + * @param list 用户ids + * @return 用户 基本数æ®åˆ—表 + */ + List<UserVo> getUserData(@Param("list") List<Long> list); /*************** chenqi****************/ diff --git a/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml b/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml index 393be8e..e229aae 100644 --- a/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml +++ b/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml @@ -243,4 +243,15 @@ GROUP BY user_id limit #{startNo},#{endNo} </select> + <select id="getUserData" resultType="cn.wisenergy.model.vo.UserVo"> + select u.id as userId,u.parent_id as parentId,a.real_name as realName + from users u left join actives a + on u.id=a.user_id + where u.id IN + <foreach collection="list" index="index" item="id" separator="," open="(" close=")"> + #{id} + </foreach> + order by u.id + </select> + </mapper> diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/vo/UserVo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/UserVo.java index 9891a0f..020df0e 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/vo/UserVo.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/UserVo.java @@ -1,8 +1,11 @@ package cn.wisenergy.model.vo; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * @author 86187 */ @@ -12,16 +15,22 @@ public class UserVo { /** * 用户id */ + @ApiModelProperty(value = "用户id", name = "userId") private Long userId; /** * 父id */ + @ApiModelProperty(value = "父id", name = "parentId") private Integer parentId; /** * 用户真实åå— */ + @ApiModelProperty(value = "用户真实åå—", name = "realName") private String realName; + @ApiModelProperty(value = "å节点数æ®", name = "childrens") + List<UserVo> children; + } diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/UserService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/UserService.java index 5f2a6cb..d1c5ecf 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/UserService.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/UserService.java @@ -41,5 +41,12 @@ public interface UserService { */ R<UsersInfoDto> getByUserInfoById(Long userId); + /** + * 获å–ç”¨æˆ·ç›´çº¿æ ‘ç»“æž„ + * @param userId 用户id + * @return ç”¨æˆ·ç›´çº¿æ ‘ç»“æž„ + */ + R<List<UserVo>> getLinkTree(Long userId); + } diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java index dc534e3..86a1a83 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package cn.wisenergy.service.app.impl; import cn.wisenergy.common.utils.R; +import cn.wisenergy.common.utils.StringUtil; import cn.wisenergy.mapper.*; import cn.wisenergy.model.app.*; import cn.wisenergy.model.dto.UsersInfoDto; @@ -8,6 +9,8 @@ import cn.wisenergy.model.vo.UserVo; import cn.wisenergy.service.app.UserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -94,4 +97,66 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, Users> implements return R.ok(userDto); } + @Override + public R<List<UserVo>> getLinkTree(Long userId) { + if (null == userId) { + return R.error("å…¥å‚ä¸èƒ½ä¸ºç©º!"); + } + + List<UserVo> userVos = new ArrayList<>(); + //获å–ç”¨æˆ·ä¿¡æ¯ + Users user = usersMapper.getById(userId); + if (null != user && StringUtils.isNotBlank(user.getPath())) { + String path = user.getPath(); + List<Long> userIds = StringUtil.strToLongArray(path); + + //获å–用户信æ¯åˆ—表 + List<UserVo> list = usersMapper.getUserData(userIds); + + //é€’å½’ç”Ÿæˆæ ‘结构 + if (CollectionUtils.isNotEmpty(list)) { + userVos = getChildren(list); + } + } + return R.ok(userVos); + } + + private List<UserVo> getChildren(List<UserVo> list) { + List<UserVo> rootList = new ArrayList<>(); + List<UserVo> childrenList = new ArrayList<>(); + + for (UserVo userVo : list) { + if (userVo.getParentId() == 0) { + rootList.add(userVo); + } else { + childrenList.add(userVo); + } + } + + //éåŽ†åæ•°ç»„ï¼Œè®¾ç½®åæ ‘ + for (UserVo userVo : rootList) { + List<UserVo> children = setChildren(userVo.getUserId(), childrenList); + userVo.setChildren(children); + } + return rootList; + } + + private List<UserVo> setChildren(Long userId, List<UserVo> list) { + + List<UserVo> children = new ArrayList<>(); + for (UserVo userVo : list) { + Long parentId = userVo.getParentId().longValue(); + if (userId.equals(parentId)) { + children.add(userVo); + } + } + + for (int i = 0; i < children.size(); i++) { + Long autoId = children.get(i).getUserId(); + List<UserVo> childrenList = setChildren(autoId, list); + children.get(i).setChildren(childrenList); + } + return children; + } + } diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UserController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UserController.java index 72fdb4c..e713aa7 100644 --- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UserController.java +++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UserController.java @@ -75,4 +75,11 @@ public class UserController extends BaseController { public R<UsersInfoDto> getUserInfo(Long userId) { return userService.getByUserInfoById(userId); } + + @ApiOperation(value = "获å–ç”¨æˆ·ç›´è¿žæ ‘ç»“æž„", notes = "获å–ç”¨æˆ·ç›´è¿žæ ‘ç»“æž„", httpMethod = "GET") + @ApiImplicitParam(name = "userId", value = "用户id", dataType = "int") + @GetMapping("/user/getLinkTree") + public R<List<UserVo>> getLinkTree(Long userId) { + return userService.getLinkTree(userId); + } } diff --git a/wisenergy-web-admin/src/main/resources/application.yml b/wisenergy-web-admin/src/main/resources/application.yml index 7205c27..afa1d5b 100644 --- a/wisenergy-web-admin/src/main/resources/application.yml +++ b/wisenergy-web-admin/src/main/resources/application.yml @@ -17,7 +17,7 @@ spring: allow-bean-definition-overriding: true # 环境 dev|test|prod profiles: - active: dev + active: prod # jacksonæ—¶é—´æ ¼å¼åŒ– jackson: time-zone: GMT+8 -- 2.18.1