package com.example.civilizedcity.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.civilizedcity.common.BaseController; import com.example.civilizedcity.common.Constants; import com.example.civilizedcity.common.ResponseBean; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import com.example.civilizedcity.common.StringUtils; import com.example.civilizedcity.entity.SysResource; import com.example.civilizedcity.entity.SysRole; import com.example.civilizedcity.service.*; import com.example.civilizedcity.vo.ChangePassword; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.example.civilizedcity.entity.SysUser; /** * 用户表;(sys_user)表控制层 * * @author : http://njyunzhi.com * @date : 2022-12-12 */ @Api(tags = "用户表对象功能接口") @RestController @RequestMapping("/") public class SysUserController extends BaseController { @Autowired SysRoleService sysRoleService; @Autowired SysResourceService sysResourceService; @Autowired SysUserDutyService sysUserDutyService; @Autowired SysLoginService sysLoginService; @Autowired SysOrgService sysOrgService; /** * 通过ID查询单条数据 * * @param userId 主键 * @return 实例对象 */ @ApiOperation("通过ID查询单条数据") @GetMapping("/sysUser/{id}") public ResponseBean queryById(@ApiParam("对象ID") @PathVariable String id) throws Exception { SysUser sysUser = sysUserService.getById(id); if (null == sysUser || sysUser.getStatus() == Constants.STATUS_DELETE) { return ResponseBean.error("用户不存在"); } return ResponseBean.success(getPermissions(sysUser)); } /** * 查询当前人员 * * @param * @return 实例对象 */ @ApiOperation("查询当前人员") @GetMapping("/sysUser/current") public ResponseBean current() throws Exception { SysUser sysUser = currentUser(); return ResponseBean.success(getPermissions(sysUser)); } private SysUser getPermissions(SysUser sysUser) { List rolesList = sysRoleService.getByUser(sysUser.getUserId()); List resourcesList = sysResourceService.getByUser(sysUser.getUserId()); List dutyList = sysUserDutyService.getListByUser(sysUser.getUserId()); sysUser.setRolesList(rolesList); sysUser.setResourcesList(resourcesList); sysUser.setDutyList(dutyList); sysUser.setOrg(sysOrgService.getById(sysUser.getOrgId())); return sysUser; } /** * 分页查询 * * @param pageNum 当前页码 * @param pageSize 每页条数 * @return 查询结果 */ @ApiOperation("分页查询") @GetMapping("/sysUser") public ResponseBean list(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @ApiParam("姓名") @RequestParam(value = "name", required = false) String name, @ApiParam("机构") @RequestParam(value = "orgId", required = false) String orgId, @ApiParam("手机号") @RequestParam(value = "phone", required = false) String phone) throws Exception { IPage pg = new Page<>(pageNum, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.like(!StringUtils.isEmpty(name), "name", name); queryWrapper.eq(!StringUtils.isEmpty(orgId), "org_id", orgId); queryWrapper.like(!StringUtils.isEmpty(phone), "phone", phone); queryWrapper.eq("is_user", 1); queryWrapper.gt("status", Constants.STATUS_DELETE); queryWrapper.ne("user_id", Constants.ROOT_ID); queryWrapper.orderByDesc("create_date"); IPage result = sysUserService.page(pg, queryWrapper); return ResponseBean.success(result); } /** * 小程序端分页查询 * * @param pageNum 当前页码 * @param pageSize 每页条数 * @return 查询结果 */ @ApiOperation("小程序端分页查询") @GetMapping("/ma/sysUser") public ResponseBean maList(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception { IPage pg = new Page<>(pageNum, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("org_id", currentUser().getOrgId()); queryWrapper.eq("is_from_wx", 1); queryWrapper.gt("status", Constants.STATUS_DELETE); queryWrapper.orderByDesc("create_date"); IPage result = sysUserService.page(pg, queryWrapper); List list = result.getRecords(); if (null != list || list.size() > 0) { for (SysUser sysUser : list) { sysUser.setDutyList(sysUserDutyService.getListByUser(sysUser.getUserId())); } } return ResponseBean.success(result); } /** * 新增数据 * * @param sysUser 实例对象 * @return 实例对象 */ @ApiOperation("新增数据") @PostMapping("/sysUser") public ResponseBean add(@ApiParam("对象实体") @RequestBody SysUser sysUser) throws Exception { if (null == sysUser.getOrgId()) { sysUser.setOrgId(currentUser().getOrgId()); } sysUserService.mergeData(sysUser); return ResponseBean.success(sysUser); } /** * 小程序端新增数据 * * @param sysUser 实例对象 * @return 实例对象 */ @ApiOperation("小程序端新增数据") @PostMapping("/ma/sysUser") public ResponseBean addMa(@ApiParam("对象实体") @RequestBody SysUser sysUser) throws Exception { if (StringUtils.isEmpty(sysUser.getPhone())) { return ResponseBean.error("请填写手机号"); } if (StringUtils.isEmpty(sysUser.getName())) { return ResponseBean.error("请填写名称"); } SysUser user = currentUser(); SysUser origin = sysUserService.getByPhone(sysUser.getPhone(), user.getOrgId()); if (null != origin) { if (StringUtils.isNotEmpty(sysUser.getUserId()) && !sysUser.getUserId().equals(origin.getUserId())) { return ResponseBean.error("当前人员已存在"); } sysUser.setUserId(origin.getUserId()); if (null != sysUser.getStatus() && Constants.STATUS_DELETE == sysUser.getStatus()) { // 如果这个人被删除了, 则重置为正常状态 sysUser.setStatus(Constants.STATUS_NORMAL); } } sysUserService.createMaUser(sysUser, user); return ResponseBean.success(sysUser); } /** * 更新数据 * * @param id 实例ID * @return 实例对象 */ @ApiOperation("更新数据") @PutMapping("/sysUser/{id}/status") public ResponseBean edit(@ApiParam("对象ID") @PathVariable String id, @ApiParam("页码") @RequestParam(value = "status") Integer status) throws Exception { SysUser sysUser = sysUserService.getById(id); sysUser.setStatus(status); sysUserService.updateById(sysUser); return ResponseBean.success(sysUser); } // /** // * 更新数据 // * // * @param sysUser 实例对象 // * @return 实例对象 // */ // @ApiOperation("更新数据") // @PutMapping("/sysUser/{id}") // public ResponseBean edit(@ApiParam("对象实体") @RequestBody SysUser sysUser, // @ApiParam("对象ID") @PathVariable String id ) throws Exception { // sysUserService.updateById(sysUser); // return ResponseBean.success(sysUser); // } @PutMapping("/ma/sysUser/change-password") @ApiOperation(value="小程序端修改密码", notes = "修改密码", httpMethod = "PUT", response = ResponseBean.class) public ResponseBean changePassword(@ApiParam("修改密码参数") @RequestBody ChangePassword param) throws Exception { if (StringUtils.isEmpty(param.getOriginPassword()) || StringUtils.isEmpty(param.getNewPassword())) { return ResponseBean.error("原始密码或新密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS); } SysUser user = currentUser(); boolean isOk = sysUserService.changePassword(user, param); if (!isOk) { ResponseBean.error("修改失败, 请重试", ResponseBean.ERROR_UNAVAILABLE); } return ResponseBean.success("密码修改成功"); } /** * 通过主键删除数据 * * @param userId 主键 * @return 是否成功 */ @ApiOperation("通过主键删除数据") @DeleteMapping("/sysUser/{id}") public ResponseBean deleteById(@ApiParam("对象ID") @PathVariable String id) { sysUserService.removeLogicById(id); return ResponseBean.success("success"); } /** * 小程序端通过主键删除数据 * * @param userId 主键 * @return 是否成功 */ @ApiOperation("小程序端通过主键删除数据") @DeleteMapping("/ma/sysUser/{id}") public ResponseBean deleteMaById(@ApiParam("对象ID") @PathVariable String id) throws Exception { SysUser user = sysUserService.getById(id); if (null == user || Constants.STATUS_DELETE == user.getStatus()) { return ResponseBean.error("人员不存在"); } SysUser sysUser = currentUser(); if (!sysUser.getOrgId().equals(user.getOrgId())) { return ResponseBean.error("暂无权限"); } // 删除登录信息 sysLoginService.removeByUser(sysUser.getUserId()); sysUserService.removeLogicById(id); return ResponseBean.success("success"); } }