package com.ydtech.modules.esm.controller; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.SysUserRole; import com.ydtech.modules.admin.model.dto.SysUserDto; import com.ydtech.modules.admin.service.SysDeptService; import com.ydtech.modules.admin.service.SysUserRoleService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.esm.model.EsmUserReferrer; import com.ydtech.modules.esm.model.vo.*; import com.ydtech.modules.esm.service.EsmUserReferrerService; import com.ydtech.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @RestController @Api(tags = "业务用户控制器") @RequestMapping("esm/user") public class EsmUserController extends BaseController { @Resource private SysUserService sysUserService; @Resource private EsmUserReferrerService esmUserReferrerService; @Resource private SysDeptService sysDeptService; @Resource private SysUserRoleService sysUserRoleService; /** * 查询团队人数:我的团队人数,一级团队人数,二级团队人数,三级团队人数,临时用户人数 * * @author: lig * @date: 2023年07月03日 0003 */ @ApiOperation(value = "查询团队人数") @PostMapping("/queryTeamNum") public HttpResult queryTeamNum(@RequestBody SysUserDto dto) { List teamList = new ArrayList<>(); LambdaQueryWrapper userRoleLqw = new LambdaQueryWrapper<>(); userRoleLqw.select(SysUserRole::getUserId); userRoleLqw.eq(SysUserRole::getRoleId,20); userRoleLqw.eq(StringUtils.isNotEmpty(dto.getUserId()),SysUserRole::getUserId,dto.getUserId()); // List userRoleList = sysUserRoleService.list(userRoleLqw); // List strings = userRoleList.stream().map(x -> x.getUserId() + "").collect(Collectors.toList()); //用户ID 代理人角色 List longs = sysUserRoleService.listObjs(userRoleLqw, Object::toString); if(CollUtil.isNotEmpty(longs)){ //获取团队长 LambdaQueryWrapper lqwUser = new LambdaQueryWrapper<>(); lqwUser.in(SysUser::getId,longs); lqwUser.eq(SysUser::getStatus,1); lqwUser.ne(SysUser::getId,"admin"); lqwUser.eq(StringUtils.isNotEmpty(dto.getName()),SysUser::getName,dto.getName()); lqwUser.eq(StringUtils.isNotEmpty(dto.getMobile()),SysUser::getMobile,dto.getMobile()); List userList= sysUserService.list(lqwUser); userList.forEach(a ->{ TeamUserVO vo = new TeamUserVO(); List oneList = new ArrayList<>(); List oneTempList = new ArrayList<>(); List twoList = new ArrayList<>(); List twoTempList = new ArrayList<>(); List threeList = new ArrayList<>(); List threeTempList = new ArrayList<>(); //一级 esmUserReferrerService.buildLevelList(a,oneList,oneTempList); oneList.forEach(b ->{ //二级 esmUserReferrerService.buildLevelList(b,twoList,twoTempList); twoList.forEach(c ->{ //三级 esmUserReferrerService.buildLevelList(c,threeList,threeTempList); }); }); vo.setLevel1num(oneList.size()); vo.setLevel2num(twoList.size()); vo.setLevel3num(threeList.size()); //临时人数 vo.setTempnum(oneTempList.size() + twoTempList.size() + threeTempList.size()); //我的团队数 vo.setTeamnum(vo.getTempnum() + oneList.size() + twoList.size() + threeList.size()); vo.setId(a.getId()); vo.setName(a.getName()); vo.setMobile(a.getMobile()); // vo.setSex(a.getSex()); SysDept sysDept = sysDeptService.getById(a.getDeptId()); if(null != sysDept){ vo.setDeptId(sysDept.getId()); vo.setDeptName(sysDept.getName()); } teamList.add(vo); }); } return HttpResult.ok(teamList); } /** * 团队业绩统计 * * @param record * @return */ @PostMapping("/queryUserCount") public HttpResult queryUserCount(@RequestBody TeamUserQryVO record){ if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) { return HttpResult.error("起止时间不能为空!"); } String userid =getUserId();//获取登录用户 record.setId(userid); SysUserRole sysUser=sysUserRoleService.query().eq("user_id",userid).list().get(0); if(!"20".equals(String.valueOf(sysUser.getRoleId()))&&!"21".equals(String.valueOf(sysUser.getRoleId()))){ return HttpResult.error("只有团队长和代理角色可以查询"); } EsmUserCountVO esmUserCountVO = esmUserReferrerService.queryUserCount(record); return HttpResult.ok(esmUserCountVO); } /** * 团队业绩统计 * * @param record * @return */ @PostMapping("/queryTeamPolicy") public HttpResult queryTeamPolicy(@RequestBody TeamUserQryVO record){ StringBuffer whereStr = new StringBuffer(); ArrayList params = new ArrayList(); if (StringUtils.isNullOrEmpty(record.getId())) { return HttpResult.error("用户ID不能为空!"); } if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) { return HttpResult.error("起止时间不能为空!"); } params.add(record.getId()); params.add(record.getId()); params.add(record.getId()); params.add(record.getStartdate()); params.add(record.getEnddate()); List list = esmUserReferrerService.countTeamPolicy(whereStr.toString(), params.toArray()); return HttpResult.ok(list); } /** * 人员业绩统计 * * @param record * @return */ @PostMapping("/queryUserPolicy") public HttpResult countUserPolicy(@RequestBody TeamUserQryVO record){ StringBuffer whereStr = new StringBuffer(); ArrayList params = new ArrayList(); if (StringUtils.isNullOrEmpty(record.getId())) { return HttpResult.error("用户ID不能为空!"); } if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) { return HttpResult.error("起止时间不能为空!"); } params.add(record.getStartdate()); params.add(record.getEnddate()); params.add(record.getId()); List list = esmUserReferrerService.countUserPolicy(whereStr.toString(), params.toArray()); return HttpResult.ok(list); } }