package com.jsl.oa.controllers; import com.jsl.oa.model.voData.UserAddVo; import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; import com.jsl.oa.model.voData.UserEditVo; import com.jsl.oa.services.UserService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import org.jetbrains.annotations.NotNull; import org.springframework.lang.Nullable; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.regex.Pattern; /** *

用户控制器

*
* 用户控制器,包含用户账号删除、用户账号锁定、用户编辑自己的信息接口 * * @version v1.1.0 * @see UserService * @see UserEditProfileVO * @since v1.0.0 */ @RestController @RequiredArgsConstructor public class UserController { private final UserService userService; /** * 用户账号删除 * * @param id 用户id * @return {@link BaseResponse} */ @PutMapping("/user/delete") public BaseResponse userDelete(HttpServletRequest request,@RequestParam Long id) { // 判断是否有参数错误 if (id == null) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR); } else return userService.userDelete(request,id); } /** * 用户账号锁定 * * @param id 用户id * @return {@link BaseResponse} */ @PutMapping("/user/lock") public BaseResponse userLock(HttpServletRequest request,@RequestParam Long id,@RequestParam Long isLock) { // 判断是否有参数错误 if (id == null) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR); } return userService.userLock(request,id,isLock); } /** * 用户编辑自己的信息 * * @param userEditProfileVO 用户编辑自己的信息 * @param bindingResult 参数校验结果 * @return {@link BaseResponse} */ @PutMapping("/user/profile/edit") public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, BindingResult bindingResult) { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } return userService.userEditProfile(userEditProfileVO); } /** *

获取当前用户信息

*
* 获取当前用户信息接口
* Admin接口 * * @param request 请求 * @param id 用户id * @param username 用户名 * @param email 邮箱 * @param phone 手机号 * @return {@link BaseResponse} */ @GetMapping("/user/current") public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) { // 判断是否有参数错误 if (id == null && username == null && email == null && phone == null) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR); } // 检查数据是否有问题 ArrayList arrayForError = new ArrayList<>(); if (id != null && !id.isEmpty()) { if (!Pattern.matches("^[0-9]+$", id)) { arrayForError.add("id 只能为数字"); } } if (username != null && !username.isEmpty()) { if (!Pattern.matches("^[0-9A-Za-z_]+$", username)) { arrayForError.add("username 只允许 0-9、A-Z、a-z、_"); } } if (email != null && !email.isEmpty()) { if (!Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) { arrayForError.add("email 格式不正确"); } } if (phone != null && !phone.isEmpty()) { if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) { arrayForError.add("手机格式不正确"); } } // 检查是否出现错误 if (arrayForError.isEmpty()) { return userService.userCurrent(request, id, username, email, phone); } else { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, arrayForError); } } /** *

获取全部的用户信息

*
* 获取全部的用户信息接口
* Admin接口 * * @return {@link BaseResponse} */ @PostMapping("/user/current/all") public BaseResponse userCurrentAll(@RequestBody @Validated UserAllCurrentVO userAllCurrentVO, HttpServletRequest request, @NotNull BindingResult bindingResult) { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } return userService.userCurrentAll(request, userAllCurrentVO); } /** * @Description: TODO 管理员添加用户 * @Date: 2024/1/18 * @Param userEditProfileVO: * @Param bindingResult: **/ @PostMapping("/user/add") public BaseResponse userAdd(@RequestBody @Validated UserAddVo userAddVo, BindingResult bindingResult, HttpServletRequest request){ // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } return userService.userAdd(userAddVo,request); } @PutMapping("/user/edit") public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request) { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } return userService.userEdit(userEditVo,request); } @GetMapping("/user/profile/get") public BaseResponse userProfileGet(HttpServletRequest request) { return userService.userProfileGet(request); } }