1.创建用户实体UserTreeVo

public class UserTreeVo {

    private String id;

    private List<UserTreeVo> children;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public List<UserTreeVo> getChildren() {
        return children;
    }

    public void setChildren(List<UserTreeVo> children) {
        this.children = children;
    }
}

 2.查询该用户下的所有子孙用户 xml:

<resultMap type="com.ssish.saas.constant.db.vo.UserTreeVo" id="userIdTree">
		<id property="id" column="id"/>
		<association property="children" column="{id=id}" select="selectChildren"/>
	</resultMap>

	<select id="selectChillersByUserId" resultMap="userIdTree" >
		SELECT u.id
		FROM hip.`core_user` u
		WHERE u.`PARENT_ID` =#{userId}  AND
		 (SELECT COUNT(1) FROM core_channel c WHERE c.status ='1' AND c.ny_ae = u.id  ) > 0
	</select>

	<select id="selectChildren" parameterType="java.util.Map" resultMap="userIdTree">
        SELECT u.id
		FROM hip.`core_user` u
		WHERE u.`PARENT_ID` =#{id} AND
		 (SELECT COUNT(1) FROM core_channel c WHERE c.status ='1' AND c.ny_ae = u.id  ) > 0
    </select>

 dao层:

List<UserTreeVo> selectChillersByUserId(@Param("userId") Integer userId);

service层:

//内部用户:查询 归属于该内部用户(南燕 AE)及 挂在下级内部用户(可能有多级) 的渠道
            List<String> idlist = new ArrayList<>();
           List<UserTreeVo> userIdlist = coreProductCorrelationMapper.selectChillersByUserId(userId);
                if(userIdlist!=null && userIdlist.size()>0){
                    List<String> idlist2 = getUserIds(userIdlist); //递归获取用户id
                    if(idlist2!=null && idlist2.size()>0){
                        idlist.addAll(idlist2);
                    }
                }
                String userIds = String.join(",",idlist);
                map.put("userIds",userIds);

//递归出所有用户id
    private List<String> getUserIds(List<UserTreeVo> userIdlist){
        List<String> ids = new ArrayList<>();
        if(userIdlist!=null && userIdlist.size()>0){
            for(UserTreeVo vo:userIdlist){
                ids.add(vo.getId());
                ids.addAll(getUserIds(vo.getChildren()));
            }
        }
        return ids;
    }

 

 

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐