package com.ydtech.modules.admin.controller; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.constants.SysConstants; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.core.page.PageResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.components.UnionPayRequestApiComponent; import com.ydtech.modules.admin.components.request.UnionPayRequest; import com.ydtech.modules.admin.components.response.UnionPayResponse; import com.ydtech.modules.admin.constants.RoleConstants; import com.ydtech.modules.admin.constants.UserWorkStatus; import com.ydtech.modules.admin.model.*; import com.ydtech.modules.admin.model.dto.AgentUserDto; import com.ydtech.modules.admin.model.dto.QuTeamNumDto; import com.ydtech.modules.admin.model.dto.QuUserNumDto; import com.ydtech.modules.admin.model.dto.SysUserDto; import com.ydtech.modules.admin.model.po.SysUserBankCard; import com.ydtech.modules.admin.model.po.SysUserIsDial; import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel; import com.ydtech.modules.admin.model.vo.*; import com.ydtech.modules.admin.service.*; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.base.model.dto.BaseDto; import com.ydtech.modules.base.model.dto.PageDto; import com.ydtech.modules.base.model.vo.PageVo; import com.ydtech.modules.esm.model.EsmUserReferrer; import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo; import com.ydtech.modules.esm.service.EsmUserImageService; import com.ydtech.modules.esm.service.EsmUserReferrerService; import com.ydtech.modules.message.constants.MessageTypeConstants; import com.ydtech.modules.message.service.MessageSecretaryService; import com.ydtech.modules.order.entity.po.InsUploadFiles; import com.ydtech.modules.order.service.InsUploadFilesService; import com.ydtech.modules.protocol.utils.AssertionUtils; import com.ydtech.security.utils.PasswordUtils; import com.ydtech.utils.StringUtils; import com.ydtech.utils.idgen.IdGenerate; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Date; import java.util.List; import java.util.Objects; import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY; /** * 用户控制器 * * @author Yasepix * @date Oct 29, 2018 */ @RestController @Api(tags = "用户控制器") @RequestMapping("user") @RequiredArgsConstructor public class SysUserController extends BaseController { private final SysUserService sysUserService; private final SysUserRoleService sysUserRoleService; private final SysDeptService sysDeptService; private final SysUserInfoService sysUserInfoService; private final SysUserTreeShowLevelService sysUserTreeShowLevelService; private final EsmUserReferrerService esmUserReferrerService; private final SysRoleService sysRoleService; private final EsmUserImageService esmUserImageService; private final StringRedisTemplate redisTemplate; private final InsUploadFilesService insUploadFilesService; private final SysUserIsDialService sysUserIsDialService; private final MessageSecretaryService messageSecretaryService; private final SysUserTrackService sysUserTrackService; private final UnionPayRequestApiComponent unionPayRequestApiComponent; // @PreAuthorize("hasAuthority('sys:user:delete')") @ApiOperation(value = "逻辑删除") @PostMapping(value = "/deleteFlag") public HttpResult deleteFlag(@RequestBody List records) { for (SysUser record : records) { SysUser sysUser = sysUserService.getById(record.getId()); if (sysUser != null && SysConstants.ADMIN.equalsIgnoreCase(sysUser.getName())) { return HttpResult.error("超级管理员不允许删除!"); } } return HttpResult.ok(sysUserService.deleteFlag(records)); } // @PreAuthorize("hasAuthority('sys:user:view')") @GetMapping(value = "/findByName") public HttpResult findByUserName(@RequestParam String name) { return HttpResult.ok(sysUserService.getById(name)); } // @PreAuthorize("hasAuthority('sys:user:view')") @GetMapping(value = "/findPermissions") public HttpResult findPermissions(@RequestParam String name) { SysUser sysUser = new SysUser(); sysUser.setId(name); return HttpResult.ok(sysUserService.findPermissions(sysUser)); } // @PreAuthorize("hasAuthority('sys:user:view')") @GetMapping(value = "/findUserRoles") public HttpResult findUserRoles(@RequestParam Long userId) { return HttpResult.ok(sysUserService.findUserRoles(userId)); } /** * 用户角色分页查询 * * @param pageRequest * @return */ @PostMapping(value = "/queryPage") public HttpResult queryPage(@RequestBody PageRequest pageRequest) { String deptid = pageRequest.getColumnFilterValue(pageRequest, "deptid"); String name = pageRequest.getColumnFilterValue(pageRequest, "name"); String containsSubDept = pageRequest.getColumnFilterValue(pageRequest, "containsSubDept"); String mobile = pageRequest.getColumnFilterValue(pageRequest, "mobile"); SysUser sysUser = new SysUser(); sysUser.setDeptId(deptid); sysUser.setName(name); sysUser.setMobile(mobile); Page page = PageRequest.buildPageRequest(pageRequest); IPage pResult = sysUserService.selectUserPage(page, sysUser, containsSubDept); //传入查询条件 PageResult pageResult = PageResult.buildPageResult(pResult); return HttpResult.ok(pageResult); } /** * 保存用户角色信息 * * @param sysUserRoleVo 用户角色信息对象,包括用户ID、角色ID、展示级别、是否允许拨号、拨号用户名和密码 * @return 返回操作结果,成功返回ok */ @PostMapping(value = "/saveUserRole") @Transactional @ApiOperation(value = "保存用户角色信息") public HttpResult saveUserRole(@RequestBody SysUserRoleVo sysUserRoleVo) { String userId = sysUserRoleVo.getUserId(); String roleId = sysUserRoleVo.getRoleId(); String showLevel = sysUserRoleVo.getShowLevel(); String isDial = sysUserRoleVo.getIsDial(); String dialUserName = sysUserRoleVo.getDialUserName(); String dialPassWord = sysUserRoleVo.getDialPassWord(); //添加用户角色 SysUserRole userRole = new SysUserRole(); sysUserRoleService.deleteByUserId(userId); String userName = getUserName(); userRole = new SysUserRole(); userRole.setUserId(userId); userRole.setRoleId(Long.parseLong(roleId)); userRole.setCreateBy(userName); userRole.setCreateTime(new Date()); sysUserRoleService.save(userRole); //添加树权限 sysUserTreeShowLevelService.remove(new LambdaQueryWrapper().eq(SysUserTreeShowLevel::getUserId, userId)); SysUserTreeShowLevel sysUserTreeShowLevel = new SysUserTreeShowLevel(); sysUserTreeShowLevel.setUserId(userId); sysUserTreeShowLevel.setShowLevel(showLevel); sysUserTreeShowLevel.setCreateName(userName); sysUserTreeShowLevel.setCreateTime(new Date()); sysUserTreeShowLevelService.save(sysUserTreeShowLevel); //添加拨号权限 sysUserIsDialService.remove(new LambdaQueryWrapper().eq(SysUserIsDial::getUserId, userId)); SysUserIsDial sysUserIsDial = new SysUserIsDial(); sysUserIsDial.setUserId(userId); sysUserIsDial.setDialUserName(dialUserName); sysUserIsDial.setDialPassWord(dialPassWord); sysUserIsDial.setIsDial(isDial); sysUserIsDial.setCreateName(userName); sysUserIsDial.setCreateTime(new Date()); sysUserIsDialService.save(sysUserIsDial); return HttpResult.ok(); } @ApiOperation(value = "获取用户综合信息") @PostMapping(value = "/gainUserSynthesisInfo/{userId}") public HttpResult gainUserSynthesisInfo(@PathVariable String userId) { return HttpResult.ok(sysUserService.gainUserSynthesisInfo(userId)); } /** * Used * * @author: lig * @date: 2023年05月10日 0010 */ // @PreAuthorize("hasAuthority('sys:user:view')") @PostMapping(value = "/findPageUsed") @Deprecated public HttpResult findPageUsed(@RequestBody PageRequest pageRequest) { int pageNum = pageRequest.getPageNum(); int pageSize = pageRequest.getPageSize(); String name = pageRequest.getColumnFilterValue(pageRequest, "name"); //需要处理传入的部门 PageResult pageResult = sysUserService.selectPagingCustom(pageNum, pageSize, name, ""); sysUserService.findSysUseresmUserInternalVORoles(pageResult); return HttpResult.ok(pageResult); } /** * 密码修改 * * @param id * @param password * @return */ @PostMapping(value = "/updatePwd") public HttpResult updatePwd(@RequestParam String id, @RequestParam String password, @RequestParam String oldPassword) { if (StringUtils.isEmpty(id) || StringUtils.isEmpty(password)) { return HttpResult.error("ID和密码不能为空"); } SysUser sysUser = sysUserService.getById(id); if (sysUser == null) { return HttpResult.error("ID不存在"); } if (password.equals(oldPassword)) { return HttpResult.error("新密码不能与旧密码相同"); } if (!PasswordUtils.matches(sysUser.getSalt(), oldPassword, sysUser.getPassword())) { return HttpResult.error("旧密码输入不正确"); } //密码加密 String pwd = PasswordUtils.encode(password, sysUser.getSalt()); sysUser.setPassword(pwd); sysUserService.updateById(sysUser); StpUtil.logout(); return HttpResult.ok("修改成功,请重新登录"); } /** * 手机号更新 * * @param id * @param mobile * @return */ @PostMapping(value = "/updateMobile") public HttpResult updateMobile(@RequestParam String id, @RequestParam String mobile) { if (StringUtils.isEmpty(id) || StringUtils.isEmpty(mobile)) { return HttpResult.error("ID和手机号不能为空"); } SysUser sysUser = sysUserService.getById(id); if (sysUser == null) { return HttpResult.error("ID不存在"); } LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.ne(SysUser::getId, id); lqw.eq(SysUser::getMobile, mobile); List users = sysUserService.list(lqw); if (users != null && !users.isEmpty()) { return HttpResult.error("手机号已存在"); } sysUser.setMobile(mobile); sysUserService.updateById(sysUser); return HttpResult.ok("修改成功"); } /** * 根据工号查询推荐人信息 * * @param id * @return */ @GetMapping(value = "/findById") public HttpResult findByUserId(@RequestParam String id) { SysUserVO sysUserVO = sysUserService.gainUserInternal(id); if (sysUserVO != null) { return HttpResult.ok(sysUserVO); } throw new SystemException("没有推荐人"); } /** * 根据部门ID查询该部门的团队长信息 * * @param deptId * @return */ @GetMapping(value = "/selectByDeptId") public HttpResult selectByDeptId(String deptId) { return HttpResult.ok(sysUserService.gainUserInternalByDeptId(deptId)); } /** * 根据部门id查询该部门的推荐人信息 */ @GetMapping("/selectfindByreferrerId") public HttpResult findByReferrerId(@Valid String deptId) { return HttpResult.ok(sysUserService.findByReferrerId(deptId)); } /** * 根据部门id查询后线人员的所有人信息 */ @ApiOperation(value = "获取后线人员信息") @GetMapping("/findBackListByDeptId") public HttpResult findBackListByDeptId(String deptId) { return HttpResult.ok(sysUserService.findBackListByDeptId(deptId)); } /** * 根据部门id查询该部门的所有人信息 */ @PostMapping("/findListByDeptId") public HttpResult findListByDeptId(@RequestBody SysUser sysUser) { return HttpResult.ok(sysUserService.findListByDeptId(sysUser)); } /** * @author: lig * @date: 2023年06月30日 0030 */ @ApiOperation(value = "(重构)保存或更新") @PostMapping(value = "/saveOrUpdate") @Transactional public HttpResult saveOrUpdate(@RequestBody SysUser sysUser) { if (StringUtils.isNullOrEmpty(sysUser.getMobile())) { return HttpResult.error("手机不能为空"); } if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) { return HttpResult.error("机构ID不能为空"); } //处理密码 if (StringUtils.isNotEmpty(sysUser.getPassword())) { String salt = PasswordUtils.getSalt(); String pwd = PasswordUtils.encode(sysUser.getPassword(), salt); sysUser.setPassword(pwd); sysUser.setSalt(salt); } sysUserService.saveUser(sysUser); return HttpResult.ok(sysUser); } @ApiOperation(value = "(重构)逻辑删除") @PostMapping(value = "/logicDeleteBatch") public HttpResult logicDeleteBatch(@RequestBody List userIds) { if (null != userIds && !userIds.isEmpty()) { LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); luw.set(SysUser::getStatus, "0"); luw.in(SysUser::getId, userIds); sysUserService.update(luw); return HttpResult.ok(); } return HttpResult.error("请正确选择参数"); } @ApiOperation(value = "(重构)用户查询分页") @PostMapping(value = "/findPage") public HttpResult> findPage(@RequestBody PageDto pageDto) { //获取用户角色 SysUser user = getUser(); //如果查询后线人员 // if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) { // if (RoleConstants.R17.getCode().equals(user.getRoleId())) { // pageDto.getDto().setRoleId("18,22"); // } else if (RoleConstants.R18.getCode().equals(user.getRoleId())) { // pageDto.getDto().setRoleId("22"); // } // } if (RoleConstants.R22.getCode().equals(pageDto.getDto().getRoleId())) { pageDto.getDto().setRoleId("17,18,22,23,24,25,28,29,30,31,32,38"); } //设置登录用户的部门 if ("".equals(pageDto.getDto().getDeptId()) || null == pageDto.getDto().getDeptId()) { pageDto.getDto().setDeptId(user.getDeptId()); } return HttpResult.ok(sysUserService.gainUserPage(pageDto)); } @ApiOperation(value = "渠道、个代、电销 的用户查询分页") @PostMapping(value = "/findUserList") public HttpResult findUserList(@RequestBody PageDto pageDto) { if (pageDto.getDto().getDeptId() == null) { pageDto.getDto().setDeptId(BaseController.getDeptId()); } return HttpResult.ok(sysUserService.findUserList(pageDto)); } @ApiOperation(value = "后线用户查询分页") @PostMapping(value = "/findBackUserList") public HttpResult findBackUserList(@RequestBody SysUserDto sysUserDto) { if (sysUserDto.getDeptId() == null) { sysUserDto.setDeptId(BaseController.getDeptId()); } return HttpResult.ok(sysUserService.findBackUserList(sysUserDto)); } @ApiOperation(value = "后线用户查询不分页(编辑时查询领导人)") @PostMapping(value = "/findBackUserList1") public HttpResult findBackUserList1(@RequestBody SysUserDto sysUserDto) { if (sysUserDto.getDeptId() == null) { sysUserDto.setDeptId(BaseController.getDeptId()); } return HttpResult.ok(sysUserService.findBackUserList1(sysUserDto)); } @ApiOperation(value = "渠道数据统计") @PostMapping(value = "/quTeamNum") public HttpResult quTeamNum(@RequestBody QuTeamNumDto quTeamNumDto) { return HttpResult.ok("", sysUserService.quTeamNum(quTeamNumDto)); } @ApiOperation(value = "渠道数据统计详情") @PostMapping(value = "/quTeamNumDetail") public HttpResult quTeamNumDetail(@RequestBody QuTeamNumDto quTeamNumDto) { return HttpResult.ok("", sysUserService.getQuTeamByCompany(quTeamNumDto)); } @ApiOperation(value = "(重构)审批通过") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID") }) @GetMapping(value = "/approvalPass") public HttpResult approvalPass(@RequestParam String userId) { SysUser sysUser = sysUserService.getById(userId); if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_2.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_1.getCode()); } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_4.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_0.getCode()); } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_6.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_1.getCode()); } SysUserTrack sysUserTrack = new SysUserTrack(sysUser); sysUserTrackService.save(sysUserTrack); return HttpResult.ok(sysUserService.updateById(sysUser)); } @ApiOperation(value = "(重构)审批不通过") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID"), @ApiImplicitParam(name = "reason", value = "原因") }) @GetMapping(value = "/approvalNotPass") public HttpResult approvalNotPass(@RequestParam String userId, @RequestParam String reason) { SysUser sysUser = sysUserService.getById(userId); if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_2.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_3.getCode()); } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_4.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_5.getCode()); } else if (Objects.equals(sysUser.getStatus(), UserWorkStatus.UWS_6.getCode())) { sysUser.setStatus(UserWorkStatus.UWS_7.getCode()); } SysUserTrack sysUserTrack = new SysUserTrack(sysUser); sysUserTrack.setApproveMess(reason); sysUserTrackService.save(sysUserTrack); return HttpResult.ok(sysUserService.updateById(sysUser)); } @Autowired private SysUserBankCardService sysUserBankCardService; @ApiOperation(value = "(重构)获取用户") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", required = true, value = "用户ID") }) @GetMapping(value = "/{userId}") public HttpResult findUserById(@PathVariable String userId) { SysUserInfoQuery sysUserVo = new SysUserInfoQuery(); // 查询用户 SysUser sysUser = sysUserService.getById(userId); // 查询角色 SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId); // SysUserRole sysUserRole = sysUserRoleService.getById(userId); if (!ObjectUtils.isEmpty(sysUserRole)) { sysUser.setRoleId(StringUtils.toString(sysUserRole.getRoleId())); } //查询 机构的上级 SysDept sysDept = sysDeptService.getById(sysUser.getDeptId()); sysUser.setPdeptId(sysDept.getParentId()); if ("19".equals(sysUser.getRoleId())) { SysUser operator = sysUserService.getById(sysUser.getOperatorCode()); sysUser.setReferrerId(operator != null ? operator.getId() : ""); sysUser.setReferrerName(operator != null ? operator.getName() : ""); sysUserVo.setSysUser(sysUser); List esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId); sysUserVo.setEsmUserImageVo(esmUserImageQueryVo); return HttpResult.ok(sysUserVo); } // 查询推荐人 EsmUserReferrer referrer = esmUserReferrerService.getById(userId); if (ObjectUtils.isEmpty(referrer)) { sysUser.setReferrerId(null); sysUser.setReferrerName(null); } else { sysUser.setReferrerId(referrer.getReferrerId()); sysUser.setReferrerName(referrer.getReferrerName()); } //查询详情信息 SysUserInfo userInfo = sysUserInfoService.getById(userId); //查询用户绑定的银行卡信息 SysUserBankCard queryBank = new SysUserBankCard(); queryBank.setUserId(userId); queryBank.setAuditStatus("1"); HttpResult> userBankList = sysUserBankCardService.getUserBankListByQueryParam(queryBank); if (!Objects.isNull(userInfo)) { if (userBankList.getData().isEmpty()) { userInfo.setBankName(null); userInfo.setAccountno(null); } else { userInfo.setBankName(userBankList.getData().get(0).getBankAccount()); userInfo.setAccountno(userBankList.getData().get(0).getBankNumber()); } } List esmUserImageQueryVo = esmUserImageService.getEsmUserImageQueryVo(userId); sysUserVo.setSysUser(sysUser); sysUserVo.setSysUserInfo(userInfo); sysUserVo.setEsmUserImageVo(esmUserImageQueryVo); return HttpResult.ok(sysUserVo); } @ApiOperation(value = "(new)获取登录用户") @GetMapping(value = "/loginUser") public HttpResult loginUser() { SysUser sysUser = sysUserService.getById(getUserId()); SysRole sysRole = sysUserRoleService.gainRoleByUserId(sysUser.getId()); if (null != sysRole) { sysUser.setRoleId(StringUtils.toString(sysRole.getId())); sysUser.setRoleName(sysRole.getName()); } if (StringUtils.isNotEmpty(sysUser.getDeptId())) { SysDept sysDept = sysDeptService.getById(sysUser.getDeptId()); sysUser.setDeptName(sysDept.getName()); sysUser.setIsHasAddUser(sysDept.getManagementSource() != null ? 1 : 0); sysUser.setManagementSource(sysDept.getManagementSource()); } EsmUserReferrer eur = esmUserReferrerService.getById(sysUser.getId()); if (null != eur) { sysUser.setReferrerId(eur.getReferrerId()); sysUser.setReferrerName(eur.getReferrerName()); } InsUploadFiles insUploadFiles = insUploadFilesService.getById(sysUser.getHeadSculpture()); if (null != insUploadFiles) { sysUser.setHeadSculpture(insUploadFiles.getUrl()); } return HttpResult.ok(sysUser); } @ApiOperation(value = "获取可选业务员列表") @GetMapping(value = "/getAllUsers") public HttpResult getAllUsers(@RequestParam(required = false) String userId) { List userList = sysUserService.findAllAgentRoleUser(userId, "20"); return HttpResult.ok(userList); } @ApiOperation(value = "(new)是否绑定微信") @GetMapping(value = "/isBindWechat") public HttpResult isBindWechat() { SysUser sysUser = sysUserService.getById(getUserId()); String openid = sysUser.getOpenid(); AssertionUtils.isStringEmpty(openid, "未绑定微信"); return HttpResult.ok(); } /** * 个代注册、出单员注册 * * @author: lig * @date: 2023年07月03日 0003 */ @ApiOperation(value = "(new)个代/出单员注册") @PostMapping(value = "/agentRegist") @Transactional public HttpResult agentRegist(@RequestBody AgentUserDto dto) { int noCount = 3;//顺序号是几位的 List list = sysUserService.lambdaQuery().eq(SysUser::getMobile, dto.getMobile()).list(); if (!list.isEmpty()) { throw new SystemException("手机号已经被注册请重新跟换手机号。如有疑问请联系管理人员。"); } if (StringUtils.isNullOrEmpty(dto.getFlag())) { return HttpResult.error("个代、出单员标识不能为空"); } if (StringUtils.isNullOrEmpty(dto.getMobile()) || StringUtils.isNullOrEmpty(dto.getMobileMsg())) { return HttpResult.error("手机号、验证码不能为空"); } if (StringUtils.isNullOrEmpty(dto.getName())) { return HttpResult.error("姓名不能为空"); } if (StringUtils.isNullOrEmpty(dto.getPassword())) { return HttpResult.error("密码不能为空"); } if (StringUtils.isNullOrEmpty(dto.getReferrerId())) { return HttpResult.error("推荐人不能为空"); } String captcha_redis = (String) redisTemplate.opsForValue().get(PHONE_VERIFICATION_CODE_KEY + dto.getMobile()); redisTemplate.delete(PHONE_VERIFICATION_CODE_KEY + dto.getMobile()); if (captcha_redis == null) { return HttpResult.error("验证码已失效"); } if (!dto.getMobileMsg().equals(captcha_redis)) { return HttpResult.error("验证码错误"); } String recommenderid = dto.getReferrerId(); SysUser recommender = sysUserService.getById(recommenderid); if (recommender == null) { return HttpResult.error("推荐人信息不存在"); } SysUser reUser = sysUserService.getByUserId(recommenderid); //个代 UnionPayResponse response = new UnionPayResponse(); if ("2".equals(reUser.getManagementSource())) { if (StringUtils.isNullOrEmpty(dto.getIdentity())) { return HttpResult.error("机构来源为个代的证件号不能为空"); } UnionPayRequest request = new UnionPayRequest(); request.setName(dto.getName()); request.setPhoneNo(dto.getMobile()); request.setCertNo(dto.getIdentity()); response = unionPayRequestApiComponent.threeFactorVerifyRequest(request); if (response != null&&!"00".equals(response.getRespCode())) { return HttpResult.error("认证信息不一致:"+response.getDetailRespMsg()); } } //只有团队长和代理人才能邀请 by gws SysUserRole recommenderRole = sysUserRoleService.selectByUserId(recommenderid); if (!"20".equals(recommenderRole.getRoleId().toString()) && !"21".equals(recommenderRole.getRoleId().toString())) { return HttpResult.error("只有团队长和代理人才能推荐"); } SysUser sysUser = sysUserService.findByPhone(dto.getMobile()); if (sysUser != null) { return HttpResult.error("手机号已存在"); } else { sysUser = new SysUser(); } String nextPK; //根据机构号获取userid最大值,不需要加人员类型判断 从sys_user获取 String maxId = sysUserService.findMaxId(recommender.getDeptId()); if (StringUtils.isNullOrEmpty(maxId)) { nextPK = recommender.getDeptId() + "001"; } else { nextPK = IdGenerate.nextCode(maxId, noCount); } sysUser.setName(dto.getName()); sysUser.setMobile(dto.getMobile()); sysUser.setDeptId(recommender.getDeptId()); //密码加密 String salt = PasswordUtils.getSalt(); String password = PasswordUtils.encode(dto.getPassword(), salt); sysUser.setPassword(password); sysUser.setSalt(salt); sysUser.setStatus("2".equals(dto.getFlag()) ? 2 : 1);//1:正常 2:审批中 sysUser.setId(nextPK); sysUser.setCreateBy("admin"); if ("1".equals(dto.getFlag())) { sysUser.setOperatorCode(recommenderid); } sysUser.setIdentity(dto.getIdentity()); sysUser.setFactorVerify(response != null && "00".equals(response.getRespCode())? 1:0); sysUserService.save(sysUser); //角色配置 SysUserRole userRole = new SysUserRole(); userRole.setUserId(nextPK); userRole.setRoleId(dto.getFlag().equals("2") ? 20L : 19L); sysUserRoleService.save(userRole); //添加增员服务消息 //添加订单消息 messageSecretaryService.addMessage(MessageTypeConstants.M_6, dto.getReferrerId(), dto.getMobile() + "(" + dto.getName() + ")" + "进行注册,请立即审核."); if ("2".equals(dto.getFlag())) { esmUserReferrerService.addReferrer(dto.getReferrerId(), nextPK); } return HttpResult.ok("保存成功", sysUser.getId()); } @GetMapping(value = "/findUserInfo/{userId}") @ApiOperation(value = "获取用户信息") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String") }) //@SaCheckPermission("sys:menu:add") public HttpResult findUserInfo(@PathVariable String userId) { return HttpResult.ok(sysUserInfoService.getById(userId)); } @ApiOperation(value = "保存用户基本详情信息") @PostMapping(value = "/saveUserInfo") public HttpResult saveUserInfo(@RequestBody SysUser2Vo sysUserVo) { //by gws 21 团队长 20 代理人 必须归属团队 // 22 后线人员 必须归属部门 SysUser sysUser = sysUserVo.getSysUser(); if (StringUtils.isNullOrEmpty(sysUser)) { return HttpResult.error("用户信息不能为空"); } if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) { return HttpResult.error("机构ID不能为空"); } if (StringUtils.isNullOrEmpty(sysUser.getRoleId())) { throw new SystemException("角色id不能为空"); } //获取机构层级 int deptLevel = sysUserService.getDeptLevel(sysUserVo); if (!StringUtils.isNullOrEmpty(sysUser.getRoleId())) { if (RoleConstants.R21.getCode().equals(sysUser.getRoleId()) || RoleConstants.R20.getCode().equals(sysUser.getRoleId()) || RoleConstants.R19.getCode().equals(sysUser.getRoleId())) {//19 出单员 21 团队长 20 代理人 if (deptLevel != 6) { throw new SystemException("团队长、代理人、出单员只能归属团队中"); } //如果为团队长,判断是否已经存在团队长,存在不允许添加 add by hxl 2024-05-07 ============begin if (RoleConstants.R21.getCode().equals(sysUser.getRoleId())) { int count = sysUserService.getCountByDeptAndRoleId(sysUser); if (count > 0) { throw new SystemException("该机构已存在团队长,不允许再添加!!"); } } // =========================add by hxl end ==================== } else if (RoleConstants.R18.getCode().equals(sysUser.getRoleId())) { // 42 门店长 if (deptLevel != 5) { throw new SystemException("机构管理员只能归属机构中"); } } else if (RoleConstants.R17.getCode().equals(sysUser.getRoleId())) { if (deptLevel != 4) { throw new SystemException("部长只能归属于4级"); } } } return sysUserService.saveUserInfo(sysUserVo); } @ApiOperation(value = "修改用户详情信息") @PostMapping(value = "/updateUserInfo/{userId}") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户信息", required = true, dataType = "String") }) @Transactional public HttpResult updateUserInfo(@PathVariable String userId, @RequestBody SysUser2Vo sysUserVo) { return sysUserService.updateUserInfo(userId, sysUserVo); } @ApiOperation(value = "获取推荐人分页信息") @PostMapping(value = "/referrerFindPage") public HttpResult> referrerFindPage(@RequestBody PageDto pageDto) { return esmUserReferrerService.gainReferrerPage(pageDto); } @PostMapping(value = "/realNameAuth") @ApiOperation(value = "实名认证", notes = "参数1:姓名" + "
参数2:身份证号") public HttpResult realNameAuth(@RequestBody BaseDto dto) { SysUser sysUser = sysUserService.getById(getUserId()); sysUser.setName(dto.getParam1()); sysUser.setIdentity(dto.getParam2()); // sysUser.setStatus(1); return HttpResult.ok(sysUserService.updateById(sysUser)); } @PostMapping("/modifyingTheAvatar") @ApiOperation(value = "修改头像") public HttpResult modifyingTheAvatar(@RequestSingleParam("imagesId") String imagesId) { SysUser sysUser = sysUserService.getById(getUserId()); sysUser.setHeadSculpture(imagesId); sysUserService.updateById(sysUser); return HttpResult.ok(); } @ApiOperation(value = "根据传入机构,查询所有人员") @GetMapping(value = "/findUserList") public HttpResult findUserList(String deptId) { return HttpResult.ok(sysUserService.findUserList(deptId)); } @ApiOperation(value = "获取树结构") @GetMapping(value = "/findTree") public HttpResult> findTree() { List list = sysUserService.findTree(); return HttpResult.ok(list); } @ApiOperation(value = "渠道区域业绩管理") @PostMapping(value = "/quUserNum") public HttpResult quUserNum(@RequestBody QuUserNumDto quUserNumDto) { return HttpResult.ok("", sysUserService.quUserNum(quUserNumDto)); } @ApiOperation(value = "渠道区域业绩地区管理详情") @PostMapping(value = "/quUserNumDetail") public HttpResult quUserNumDetail(@RequestBody QuUserNumDto quUserNumDto) { return HttpResult.ok("", sysUserService.getQuUserByCompany(quUserNumDto)); } @ApiOperation(value = "个代区域业绩管理") @PostMapping(value = "quAgentAreaAdmin") public HttpResult quAgentAreaAdmin(@RequestBody QuUserNumDto quUserNumDto) { return HttpResult.ok("", sysUserService.quAgentAreaAdmin(quUserNumDto)); } @ApiOperation(value = "个代区域业绩地区管理详情") @PostMapping(value = "/quAgentAreaAdminDetail") public HttpResult quAgentAreaAdminDetail(@RequestBody QuUserNumDto quUserNumDto) { return HttpResult.ok("", sysUserService.quAgentAreaAdminDetail(quUserNumDto)); } /** * @version * @author: hxl * @Date: 2024/4/16 16:16 * @Description: 获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号 */ @ApiOperation(value = "获取待客录入可选业务员列表 通过工号、姓名、手机号、身份证号") @PostMapping(value = "/getAllUsersByHospitality") public HttpResult getAllUsersByHospitality(@RequestBody SysUserVOExt sysUserVOExt) { try { List userList = sysUserService.getAllUsersByHospitality(sysUserVOExt); return HttpResult.ok(userList); } catch (Exception e) { return HttpResult.error("查询失败" + e.getMessage()); } } /** * @version * @author: hxl * @Date: 2024/4/18 16:12 * @Description: 查询客服人员列表数据 */ @ApiOperation(value = "获取客服人员列表数据") @PostMapping(value = "/getCustomerUsers") public HttpResult getCustomerUsers() { try { List userList = sysUserService.getCustomerUsers(); return HttpResult.ok(userList); } catch (Exception e) { return HttpResult.error("查询失败" + e.getMessage()); } } /** * @version * @author: hxl * @Date: 2024/7/11 16:04 * @Description: 查询的所有的后线人员 */ @ApiOperation(value = "后线用户查询不分页(编辑时查询领导人)") @GetMapping(value = "/findHxUserList") public HttpResult findHxUserList() { return HttpResult.ok(sysUserService.findHxUserList()); } @ApiOperation(value = "离职申请") @PostMapping("/departApply") public HttpResult departApply(@RequestBody SysUser2Vo sysUserVO) { return sysUserService.departApply(sysUserVO) ? HttpResult.ok("离职申请提交成功") : HttpResult.error("离职申请提交失败"); } @ApiOperation(value = "离职恢复") @GetMapping("/separationReinstatement/{userId}") public HttpResult separationReinstatement(@PathVariable String userId) { sysUserService.separationReinstatement(userId); return HttpResult.ok("恢复成功"); } }