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.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; 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.QueryChannel; import com.ydtech.modules.esm.model.QueryChannelParam; 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.in(SysUserRole::getRoleId,20,21); 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()); Page page = new Page(dto.getPageNum(), dto.getPageSize()); Page pageData = esmUserReferrerService.getUserPage(page,dto); //用户ID 代理人角色 //Page pageData = sysUserRoleService.page(page, userRoleLqw); List longs = new ArrayList<>(); pageData.getRecords().forEach(x ->{ longs.add(x.getId()); }); List userList = new ArrayList<>(); userList = pageData.getRecords(); 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); }); vo.setLevel1num(oneList.size()); vo.setLevel2num(twoList.size()); //临时人数 vo.setTempnum(oneTempList.size() + twoTempList.size() ); //我的团队数 vo.setTeamnum(vo.getTempnum() + oneList.size() + twoList.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); }); pageData.setRecords(userList); Page resultData = new Page(); resultData.setCurrent(pageData.getCurrent()); resultData.setSize(pageData.getSize()); resultData.setTotal(pageData.getTotal()); resultData.setPages(pageData.getPages()); resultData.setRecords(teamList); return HttpResult.ok(resultData); } @ApiOperation(value = "查询渠道人数") @PostMapping(value = "/queryChannelNum") public HttpResult queryChannelNum(@RequestBody QueryChannelParam queryChannelParam){ Page page = new Page(queryChannelParam.getPageNum(), queryChannelParam.getPageSize()); QueryChannel queryChannel = new QueryChannel().convert(queryChannelParam); Page pageData = esmUserReferrerService.getQueryChannelPage(page,queryChannel); return HttpResult.ok(pageData); } /** * 团队业绩统计 * * @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("只有团队长和代理角色可以查询"); } // 修改时间查询问题 record.setStartdate(record.getStartdate() + " 00:00:00"); record.setEnddate(record.getEnddate() + " 23:59:59"); 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); } /** * 团队业绩统计-指定用户查询 * * @param record * @return */ @PostMapping("/queryUserCountForUser") public HttpResult> queryUserCountForUser(@RequestBody TeamUserQryVO record){ if (StringUtils.isNullOrEmpty(record.getId()) || StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) { return HttpResult.error("起止时间/用户id不能为空!"); } return HttpResult.ok(esmUserReferrerService.queryUserCountForUser(record)); } }