From b7e4a2ea35af9aab2482c616571215390c629941 Mon Sep 17 00:00:00 2001 From: none Date: Thu, 2 Mar 2023 17:13:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E5=91=98=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/UserController.java | 90 +++---------------- .../api/request/backend/UserRequest.java | 37 +++----- .../xyz/playedu/api/service/UserService.java | 4 + .../api/service/impl/UserServiceImpl.java | 80 ++++++++++++++++- .../internal/UserDepartmentServiceImpl.java | 25 +++++- .../internal/UserDepartmentService.java | 4 + 6 files changed, 134 insertions(+), 106 deletions(-) diff --git a/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/src/main/java/xyz/playedu/api/controller/backend/UserController.java index 32b88d1..5341242 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -116,48 +116,16 @@ public class UserController { @BackendPermissionMiddleware(slug = BPermissionConstant.USER_STORE) @PostMapping("/create") - @Transactional - public JsonResponse store(@RequestBody @Validated UserRequest request) { - if (userService.emailIsExists(request.getEmail())) { + public JsonResponse store(@RequestBody @Validated UserRequest req) { + String email = req.getEmail(); + if (userService.emailIsExists(email)) { return JsonResponse.error("邮箱已存在"); } - - String salt = HelperUtil.randomString(6); - String password = HelperUtil.MD5(request.getPassword() + salt); - - User user = new User(); - user.setEmail(request.getEmail()); - user.setNickname(request.getNickname()); - user.setName(request.getName()); - user.setAvatar(request.getAvatar()); - user.setPassword(password); - user.setSalt(salt); - user.setIdCard(request.getIdCard()); - user.setCredit1(request.getCredit1()); - user.setIsActive(request.getIsActive()); - user.setIsLock(request.getIsLock()); - user.setIsVerify(request.getIsVerify()); - user.setVerifyAt(request.getVerifyAt()); - user.setIsSetPassword(request.getIsSetPassword()); - - user.setCreateIp(SystemConstant.INTERNAL_IP); - user.setCreateCity(SystemConstant.INTERNAL_IP_AREA); - user.setCreatedAt(new Date()); - user.setUpdatedAt(new Date()); - - userService.save(user); - - if (request.getDepIds() != null && request.getDepIds().length > 0) { - List userDepartments = new ArrayList<>(); - for (int i = 0; i < request.getDepIds().length; i++) { - UserDepartment userDepartment = new UserDepartment(); - userDepartment.setUserId(user.getId()); - userDepartment.setDepId(request.getDepIds()[i]); - userDepartments.add(userDepartment); - } - userDepartmentService.saveBatch(userDepartments); + String password = req.getPassword(); + if (password.length() == 0) { + return JsonResponse.error("请输入密码"); } - + userService.createWithDepIds(email, req.getName(), req.getAvatar(), req.getPassword(), req.getIdCard(), req.getDepIds()); return JsonResponse.success(); } @@ -175,51 +143,15 @@ public class UserController { @BackendPermissionMiddleware(slug = BPermissionConstant.USER_UPDATE) @PutMapping("/{id}") @Transactional - public JsonResponse update(@PathVariable(name = "id") Integer id, @RequestBody @Validated UserRequest request) throws NotFoundException { + public JsonResponse update(@PathVariable(name = "id") Integer id, @RequestBody @Validated UserRequest req) throws NotFoundException { User user = userService.findOrFail(id); - if (!request.getEmail().equals(user.getEmail()) && userService.emailIsExists(request.getEmail())) { + String email = req.getEmail(); + if (!email.equals(user.getEmail()) && userService.emailIsExists(email)) { return JsonResponse.error("邮箱已存在"); } - User newUser = new User(); - newUser.setId(user.getId()); - newUser.setEmail(request.getEmail()); - newUser.setNickname(request.getNickname()); - newUser.setName(request.getName()); - newUser.setAvatar(request.getAvatar()); - newUser.setIdCard(request.getIdCard()); - newUser.setCredit1(request.getCredit1()); - newUser.setIsActive(request.getIsActive()); - newUser.setIsLock(request.getIsLock()); - newUser.setIsVerify(request.getIsVerify()); - newUser.setVerifyAt(request.getVerifyAt()); - newUser.setIsSetPassword(request.getIsSetPassword()); - - if (request.getPassword() != null && request.getPassword().length() > 0) {//更新密码 - String salt = HelperUtil.randomString(6); - String password = HelperUtil.MD5(request.getPassword()); - - newUser.setPassword(password); - newUser.setSalt(salt); - } - - userService.updateById(newUser); - - //先删除关联关系 - userService.removeRelateDepartmentsByUserId(user.getId()); - - if (request.getDepIds() != null && request.getDepIds().length > 0) { //重新建立关系 - List userDepartments = new ArrayList<>(); - for (int i = 0; i < request.getDepIds().length; i++) { - UserDepartment userDepartment = new UserDepartment(); - userDepartment.setUserId(user.getId()); - userDepartment.setDepId(request.getDepIds()[i]); - userDepartments.add(userDepartment); - } - userDepartmentService.saveBatch(userDepartments); - } - + userService.updateWithDepIds(user, email, req.getNickname(), req.getName(), req.getAvatar(), req.getPassword(), req.getIdCard(), req.getDepIds()); return JsonResponse.success(); } diff --git a/src/main/java/xyz/playedu/api/request/backend/UserRequest.java b/src/main/java/xyz/playedu/api/request/backend/UserRequest.java index 8d17df2..0c3e1ba 100644 --- a/src/main/java/xyz/playedu/api/request/backend/UserRequest.java +++ b/src/main/java/xyz/playedu/api/request/backend/UserRequest.java @@ -2,6 +2,7 @@ package xyz.playedu.api.request.backend; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -15,42 +16,30 @@ import java.util.Date; @Data public class UserRequest { - @NotNull(message = "请输入邮箱") - @Email(message = "请输入合法邮箱") + @NotBlank(message = "请输入邮箱") + @NotNull(message = "email参数不存在") + @Email(message = "请输入正确的邮箱") private String email; - @NotNull(message = "请输入昵称") - private String nickname; - + @NotNull(message = "name参数不存在") + @NotBlank(message = "请输入姓名") @Length(min = 1, max = 20, message = "姓名长度在1-20个字符之间") private String name; - @NotNull(message = "请上传头像") + @Length(min = 1, max = 20, message = "昵称长度在1-20个字符之间") + private String nickname; + + @NotNull(message = "avatar参数不存在") + @NotBlank(message = "请上传头像") private String avatar; - @NotNull(message = "请输入密码") + @NotNull(message = "password参数不存在") + @Length(min = 6, max = 16, message = "密码长度在6-16个字符之间") private String password; @JsonProperty("id_card") private String idCard; - private Integer credit1; - - @JsonProperty("is_active") - private Integer isActive; - - @JsonProperty("is_lock") - private Integer isLock; - - @JsonProperty("is_verify") - private Integer isVerify; - - @JsonProperty("verify_at") - private Date verifyAt; - - @JsonProperty("is_set_password") - private Integer isSetPassword; - @JsonProperty("dep_ids") private Integer[] depIds; diff --git a/src/main/java/xyz/playedu/api/service/UserService.java b/src/main/java/xyz/playedu/api/service/UserService.java index 9c8b870..1c7afe6 100644 --- a/src/main/java/xyz/playedu/api/service/UserService.java +++ b/src/main/java/xyz/playedu/api/service/UserService.java @@ -23,4 +23,8 @@ public interface UserService extends IService { void removeRelateDepartmentsByUserId(Integer userId); User findOrFail(Integer id) throws NotFoundException; + + User createWithDepIds(String email, String name, String avatar, String password, String idCard, Integer[] depIds); + + User updateWithDepIds(User user, String email, String nickname, String name, String avatar, String password, String idCard, Integer[] depIds); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java index ca76c0c..d676850 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserServiceImpl.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import xyz.playedu.api.constant.SystemConstant; import xyz.playedu.api.domain.User; import xyz.playedu.api.domain.UserDepartment; import xyz.playedu.api.exception.NotFoundException; @@ -14,9 +16,10 @@ import xyz.playedu.api.mapper.UserMapper; import org.springframework.stereotype.Service; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserPaginateFilter; +import xyz.playedu.api.util.HelperUtil; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -115,6 +118,81 @@ public class UserServiceImpl extends ServiceImpl implements Us } return user; } + + @Override + @Transactional + public User createWithDepIds(String email, String name, String avatar, String password, String idCard, Integer[] depIds) { + String salt = HelperUtil.randomString(6); + String passwordHashed = HelperUtil.MD5(password + salt); + + User user = new User(); + user.setEmail(email); + user.setName(name); + user.setNickname(name); + user.setAvatar(avatar); + user.setPassword(passwordHashed); + user.setSalt(salt); + user.setIdCard(idCard); + user.setCredit1(0); + user.setIsSetPassword(0); + user.setIsActive(1); + user.setIsLock(0); + user.setCreateIp(SystemConstant.INTERNAL_IP); + user.setCreateCity(SystemConstant.INTERNAL_IP_AREA); + user.setCreatedAt(new Date()); + user.setUpdatedAt(new Date()); + + if (idCard != null && idCard.length() > 0) { + user.setVerifyAt(new Date()); + user.setIsVerify(1); + } + + save(user); + userDepartmentService.storeDepIds(user.getId(), depIds); + return user; + } + + @Override + @Transactional + public User updateWithDepIds(User user, String email, String nickname, String name, String avatar, String password, String idCard, Integer[] depIds) { + User newUser = new User(); + newUser.setId(user.getId()); + + if (!user.getEmail().equals(email)) { + newUser.setEmail(email); + } + if (!user.getNickname().equals(nickname)) { + newUser.setNickname(nickname); + } + if (!user.getName().equals(name)) { + newUser.setName(name); + } + if (!user.getAvatar().equals(avatar)) { + newUser.setAvatar(avatar); + } + if (password != null && password.length() > 0) { + newUser.setPassword(HelperUtil.MD5(password + user.getSalt())); + } + if (!user.getIdCard().equals(idCard)) { + newUser.setIdCard(idCard); + } + + if (newUser.getName() != null && newUser.getName().length() > 0 && newUser.getIdCard() != null && newUser.getIdCard().length() > 0) { + if (user.getVerifyAt() == null) { + newUser.setIsVerify(1); + newUser.setVerifyAt(new Date()); + } + } else { + if (user.getIsVerify() == 1) { + newUser.setIsVerify(0); + newUser.setVerifyAt(null); + } + } + + updateById(newUser); + userDepartmentService.resetStoreDepIds(newUser.getId(), depIds); + return newUser; + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java index 666f891..cb31955 100644 --- a/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/internal/UserDepartmentServiceImpl.java @@ -1,6 +1,7 @@ package xyz.playedu.api.service.impl.internal; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; import xyz.playedu.api.domain.UserDepartment; import xyz.playedu.api.service.internal.UserDepartmentService; import xyz.playedu.api.mapper.UserDepartmentMapper; @@ -16,8 +17,7 @@ import java.util.List; * @createDate 2023-02-23 15:08:38 */ @Service -public class UserDepartmentServiceImpl extends ServiceImpl - implements UserDepartmentService { +public class UserDepartmentServiceImpl extends ServiceImpl implements UserDepartmentService { @Override public List getUserIdsByDepIds(Integer[] depIds) { @@ -30,6 +30,27 @@ public class UserDepartmentServiceImpl extends ServiceImpl userDepartments = new ArrayList<>(); + for (int i = 0; i < depIds.length; i++) { + UserDepartment userDepartment = new UserDepartment(); + userDepartment.setUserId(userId); + userDepartment.setDepId(depIds[i]); + userDepartments.add(userDepartment); + } + saveBatch(userDepartments); + } + + @Override + public void resetStoreDepIds(Integer userId, Integer[] depIds) { + remove(query().getWrapper().eq("user_id", userId)); + storeDepIds(userId, depIds); + } } diff --git a/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java b/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java index f7dda74..87afd77 100644 --- a/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java +++ b/src/main/java/xyz/playedu/api/service/internal/UserDepartmentService.java @@ -12,4 +12,8 @@ import java.util.List; */ public interface UserDepartmentService extends IService { List getUserIdsByDepIds(Integer[] depIds); + + void storeDepIds(Integer userId, Integer[] depIds); + + void resetStoreDepIds(Integer userId, Integer[] depIds); }