package com.nanjing.water.host.controller.admin; import com.nanjing.water.common.ConstantFactory; import com.nanjing.water.common.ExecutedResult; import com.nanjing.water.common.PagerResult; import com.nanjing.water.common.jwt.LoginUserDTO; import com.nanjing.water.common.util.IPUtils; import com.nanjing.water.common.util.ParameterUtil; import com.nanjing.water.common.validator.ParameterValidateResult; import com.nanjing.water.common.validator.ParameterValidator; import com.nanjing.water.entity.enums.EState; import com.nanjing.water.entity.enums.EUserType; import com.nanjing.water.entity.request.ReqChangePassword; import com.nanjing.water.entity.request.adminuser.ReqAdminLogin; import com.nanjing.water.entity.request.adminuser.ReqCreateAdminUser; import com.nanjing.water.entity.request.adminuser.ReqModifyAdminUser; import com.nanjing.water.entity.response.admin.ResAdminLogin; import com.nanjing.water.entity.response.admin.ResAdminPower; import com.nanjing.water.entity.search.SearchAdminUser; import com.nanjing.water.host.BasicController; import com.nanjing.water.host.api.MustAdmin; import com.nanjing.water.host.api.NonLogin; import com.nanjing.water.repository.vo.AdminUserVO; import com.nanjing.water.service.AdminPowerService; import com.nanjing.water.service.AdminService; import com.nanjing.water.service.dto.ResAdminDetail; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * 40.管理员用户相关接口 * * @author lin.liu * @date 2023/02/17 * @order 40 */ @RestController @RequestMapping("admin/user") public class AdminUserController extends BasicController { @Autowired private AdminService service; @Autowired private AdminPowerService adminPowerService; /** * 添加后台管理员 * * @param request 请求参数 * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping("add") public ExecutedResult add(@RequestBody ReqCreateAdminUser request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addMustEnum(ParameterUtil.named("用户类型"), request.getUserType(), EUserType.class) .addNotNullOrEmpty(ParameterUtil.named("用户名"), request.getUserName()) .addLengthMax(ParameterUtil.named("用户名"), request.getUserName(), ConstantFactory.LENGTH_MAX100) .addNotNullOrEmpty(ParameterUtil.named("密码"), request.getPassword()) .addLengthMax(ParameterUtil.named("密码"), request.getPassword(), ConstantFactory.LENGTH_MAX50) .addLengthMax(ParameterUtil.named("昵称"), request.getNickName(), ConstantFactory.LENGTH_MAX50) .addLengthMax(ParameterUtil.named("头像"), request.getHeadImg(), ConstantFactory.LENGTH_MAX500) .addLengthMax(ParameterUtil.named("联系方式"), request.getContact(), ConstantFactory.LENGTH_MAX50) .addLengthMax(ParameterUtil.named("联系邮箱"), request.getEmail(), ConstantFactory.LENGTH_MAX50); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.createAdmin(request); } /** * 修改后台管理员 * * @param request 请求参数 * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping("modify") public ExecutedResult modify(@RequestBody ReqModifyAdminUser request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addGreater(ParameterUtil.named("用户id"), request.getId(), 0L) .addMustEnum(ParameterUtil.named("用户类型"), request.getUserType(), EUserType.class) .addMustEnum(ParameterUtil.named("状态"), request.getStatus(), EState.class) .addLengthMax(ParameterUtil.named("昵称"), request.getNickName(), ConstantFactory.LENGTH_MAX50) .addLengthMax(ParameterUtil.named("头像"), request.getHeadImg(), ConstantFactory.LENGTH_MAX500) .addLengthMax(ParameterUtil.named("联系方式"), request.getContact(), ConstantFactory.LENGTH_MAX50) .addLengthMax(ParameterUtil.named("联系邮箱"), request.getEmail(), ConstantFactory.LENGTH_MAX50); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.modify(request); } /** * 获取指定管理员详情 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @GetMapping("detail/{userId}") public ExecutedResult detail(@PathVariable Long userId) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addGreater(ParameterUtil.named("用户id"), userId, 0L); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.detail(userId); } /** * 分页查询所有管理员 * * @param request 查询参数 * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping("search") public ExecutedResult> search(@RequestBody SearchAdminUser request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator(); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.search(request); } /** * 管理员登录 * * @param request 请求参数 * @author lin.liu * @date 2023/02/17 */ @PostMapping("login") @NonLogin public ExecutedResult adminLogin(@RequestBody ReqAdminLogin request) throws Exception { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addNotNullOrEmpty(ParameterUtil.named("验证码已过期,请重新获取"), request.getUuid()) .addNotNullOrEmpty(ParameterUtil.named("验证码不允许为空"), request.getCode()) .addNotNullOrEmpty(ParameterUtil.named("用户名"), request.getUserName()) .addNotNullOrEmpty(ParameterUtil.named("密码"), request.getPassword()) .addNotNullOrEmpty(ParameterUtil.named("设备码"), request.getMachineCode()); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.adminLogin(request); } /** * 获取登录设备ip地址 * * @param request 获取登录设备ip地址 * @author lin.liu * @date 2023/02/17 */ @GetMapping("/getIpAddress") @NonLogin public ExecutedResult getIpAddress(HttpServletRequest request) { return ExecutedResult.success(IPUtils.getIpAddress(request)); } /** * 保存前端登录验证码 * * @param uuid 请求参数 * @author lin.liu * @date 2023/02/17 */ @GetMapping("/generate") @NonLogin public ExecutedResult generate(@RequestParam String uuid) { //#endregion return service.generate(uuid); } /** * 获取管理员权限列表 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @GetMapping("getPower/{userId}") public ExecutedResult getPower(@PathVariable Long userId) { return service.getPower(userId); } /** * 修改密码 * * @param request 请求参数 * @author lin.liu * @date 2023/02/17 */ @PostMapping("changePassword") public ExecutedResult changePassword(@RequestBody ReqChangePassword request) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addNotNullOrEmpty(ParameterUtil.named("旧密码"), request.getOldPassword()) .addNotNullOrEmpty(ParameterUtil.named("新密码"), request.getNewPassword()) .addLengthMax(ParameterUtil.named("新密码"), request.getNewPassword(), ConstantFactory.LENGTH_MAX50); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion LoginUserDTO user = super.getTokenUser(); return service.changePassword(user, request); } /** * 重置管理员密码 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping("resetPassword/{userId}") public ExecutedResult resetPassword(@PathVariable Long userId) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addGreater(ParameterUtil.named("用户id"), userId, 0L); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.resetPassword(userId); } /** * 停用管理员帐号 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping(value = "stop/{userId}") public ExecutedResult stop(@PathVariable Long userId) { return this.service.stop(userId); } /** * 启用管理员帐号 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping(value = "enable/{userId}") public ExecutedResult enable(@PathVariable Long userId) { return this.service.enable(userId); } /** * 删除管理员 * * @param userId 用户id * @author lin.liu * @date 2023/02/17 */ @MustAdmin @PostMapping("remove/{userId}") public ExecutedResult remove(@PathVariable Long userId) { //#region 参数验证 ParameterValidator validator = new ParameterValidator() .addGreater(ParameterUtil.named("用户id"), userId, 0L); ParameterValidateResult result = validator.validate(); if (result.getIsFiled()) { return ExecutedResult.failed(result.getErrorMsg()); } //#endregion return service.remove(userId); } }