diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/UserController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/UserController.java index 26c53ba..97fd078 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/UserController.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/UserController.java @@ -1,16 +1,22 @@ package com.yinlihupo.enlish.service.controller; +import cn.dev33.satoken.stp.StpUtil; import com.yinlihupo.enlish.service.domain.dataobject.UserDO; import com.yinlihupo.enlish.service.model.vo.user.FindUserInfoRspVO; +import com.yinlihupo.enlish.service.model.vo.user.UpdateUserInfoReqVO; import com.yinlihupo.enlish.service.service.UserService; +import com.yinlihupo.framework.biz.operationlog.aspect.ApiOperationLog; import com.yinlihupo.framework.common.response.Response; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/user/") +@Slf4j public class UserController { @Resource @@ -27,4 +33,23 @@ public class UserController { return Response.success(findUserInfoRspVO); } + + @PostMapping("update-user-info") + @ApiOperationLog(description = "修改密码") + public Response updatePassword(@RequestBody UpdateUserInfoReqVO updateUserInfoReqVO) { + try { + String code = updateUserInfoReqVO.getCode(); + String newPassword = updateUserInfoReqVO.getNewPassword(); + String phone = updateUserInfoReqVO.getPhone(); + String name = updateUserInfoReqVO.getName(); + userService.updateUserInfo(newPassword, code, phone, name); + + StpUtil.logout(); + + return Response.success(); + } catch (Exception e) { + log.error("修改密码失败 {}", e.getMessage()); + return Response.fail(e.getMessage()); + } + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/UserDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/UserDOMapper.java index 43e2b84..ce88946 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/UserDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/UserDOMapper.java @@ -11,6 +11,10 @@ public interface UserDOMapper { void insert(UserDO userDO); + void updatePassword(@Param("id") Long id, @Param("password") String password); + + void updateUserInfo(@Param("id") Long id, @Param("name") String name, @Param("password") String password, @Param("phone") String phone); + UserDO selectById(Long id); List selectUserDOList(@Param("name") String name, @Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize); diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/user/UpdateUserInfoReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/user/UpdateUserInfoReqVO.java new file mode 100644 index 0000000..273e3ca --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/user/UpdateUserInfoReqVO.java @@ -0,0 +1,18 @@ +package com.yinlihupo.enlish.service.model.vo.user; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class UpdateUserInfoReqVO { + + private String newPassword; + private String name; + private String phone; + private String code; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/UserService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/UserService.java index 7bf8ecd..2587f22 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/UserService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/UserService.java @@ -13,4 +13,6 @@ public interface UserService { Integer findUserTotal(); void createUser(UserDO userDO); + + void updateUserInfo(String password, String reqCode, String phone, String name); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/login/LoginServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/login/LoginServiceImpl.java index ab960cb..e0ba625 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/login/LoginServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/login/LoginServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.Duration; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Service @Slf4j @@ -83,7 +84,9 @@ public class LoginServiceImpl implements LoginService { @Override public void sendVerificationCode(String phone) { String code = RandomUtil.randomNumbers(6); - redisTemplate.opsForValue().set(UserRedisConstants.buildUserLoginCode(phone), code, Duration.ofSeconds(60)); + String key = UserRedisConstants.buildUserLoginCode(phone); + redisTemplate.opsForValue().set(key, code); + redisTemplate.expire(key, 5, TimeUnit.MINUTES); String signName = "短信测试"; String templateCode = "SMS_154950909"; String templateParam = String.format("{\"code\":\"%s\"}", code); diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/user/UserServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/user/UserServiceImpl.java index 87d2036..d2344bc 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/user/UserServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/user/UserServiceImpl.java @@ -1,14 +1,18 @@ package com.yinlihupo.enlish.service.service.user; import cn.dev33.satoken.stp.StpUtil; +import com.yinlihupo.enlish.service.constant.UserRedisConstants; import com.yinlihupo.enlish.service.domain.dataobject.UserDO; import com.yinlihupo.enlish.service.domain.mapper.UserDOMapper; import com.yinlihupo.enlish.service.service.UserService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; @Service @Slf4j @@ -17,8 +21,10 @@ public class UserServiceImpl implements UserService { @Resource private UserDOMapper userDOMapper; - - + @Resource + private RedisTemplate redisTemplate; + @Resource + private PasswordEncoder passwordEncoder; @Override public UserDO findUser() { @@ -43,4 +49,21 @@ public class UserServiceImpl implements UserService { userDOMapper.insert(userDO); } + @Override + public void updateUserInfo(String password, String reqCode, String phone, String name) { + long id = Integer.parseInt(String.valueOf(StpUtil.getLoginId())); + UserDO userDO = userDOMapper.selectById(id); + + String key = UserRedisConstants.buildUserLoginCode(userDO.getPhone()); + String code = Objects.requireNonNull(redisTemplate.opsForValue().get(key)).toString(); + if (code == null || !code.equals(reqCode)) { + throw new RuntimeException("验证码错误"); + } + + if (password != null) { + password = passwordEncoder.encode(password); + } + userDOMapper.updateUserInfo(id, name, password, phone); + } + } diff --git a/enlish-service/src/main/resources/config/application.yml b/enlish-service/src/main/resources/config/application.yml index 972b1a1..713ebb2 100644 --- a/enlish-service/src/main/resources/config/application.yml +++ b/enlish-service/src/main/resources/config/application.yml @@ -28,6 +28,6 @@ sa-token: is-share: true # 是否输出操作日志 is-log: true -logging: - level: - com.yinlihupo.enlish.service.domain.mapper: debug \ No newline at end of file +#logging: +# level: +# com.yinlihupo.enlish.service.domain.mapper: debug \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/UserDOMapper.xml b/enlish-service/src/main/resources/mapper/UserDOMapper.xml index 33653f0..6e4b9f9 100644 --- a/enlish-service/src/main/resources/mapper/UserDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/UserDOMapper.xml @@ -20,6 +20,28 @@ values (#{phone}, #{name}, #{password}) + + update user + set password = #{password} + where id = #{id} + + + + update user + + + password = #{password}, + + + `name` = #{name}, + + + phone = #{phone}, + + + where id = #{id} + +