From f74a79b32526d27e3dad5bbf9e73c99c4ac18a5a Mon Sep 17 00:00:00 2001 From: wanggeng888 <450292408@qq.com> Date: Sat, 1 May 2021 23:25:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=99=BB=E5=BD=95=E3=80=81?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/api/RegisterController.java | 20 ++++++++++++-- .../base/service/IRegisterService.java | 12 ++++++++- .../service/impl/RegisterServiceImpl.java | 27 ++++++++++++++++--- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/register-base/src/main/java/ink/wgink/register/base/controller/app/api/RegisterController.java b/register-base/src/main/java/ink/wgink/register/base/controller/app/api/RegisterController.java index 25e1cbb4..bc85cee3 100644 --- a/register-base/src/main/java/ink/wgink/register/base/controller/app/api/RegisterController.java +++ b/register-base/src/main/java/ink/wgink/register/base/controller/app/api/RegisterController.java @@ -1,8 +1,11 @@ package ink.wgink.register.base.controller.app.api; import ink.wgink.annotation.CheckRequestBodyAnnotation; +import ink.wgink.exceptions.DependencyException; import ink.wgink.exceptions.ParamsException; +import ink.wgink.exceptions.PropertiesException; import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.interfaces.sms.ISmsBaseService; import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.SuccessResult; import ink.wgink.register.base.pojo.vos.RegisterDefaultVO; @@ -35,6 +38,8 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping(ISystemConstant.APP_PREFIX + "/register") public class RegisterController { + @Autowired(required = false) + private ISmsBaseService smsBaseService; @Autowired private IRegisterService registerService; @@ -42,7 +47,7 @@ public class RegisterController { @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PostMapping("default") @CheckRequestBodyAnnotation - public synchronized SuccessResult defaultRegister(@RequestBody RegisterDefaultVO registerDefaultVO) { + public synchronized SuccessResult defaultRegister(@RequestBody RegisterDefaultVO registerDefaultVO) throws Exception { if (!RegexUtil.isUsername(registerDefaultVO.getUsername())) { throw new ParamsException("用户名只能包含字母、数字、-_!@#%."); } @@ -60,7 +65,18 @@ public class RegisterController { @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PostMapping("phone") @CheckRequestBodyAnnotation - public synchronized SuccessResult phone(@RequestBody RegisterPhoneVO registerPhoneVO) { + public synchronized SuccessResult phone(@RequestBody RegisterPhoneVO registerPhoneVO) throws Exception { + if (smsBaseService == null) { + throw new DependencyException("短信依赖未引入"); + } + String verifyCode = smsBaseService.getVerifyCode(registerPhoneVO.getPhone()); + if (StringUtils.isBlank(verifyCode)) { + throw new ParamsException("验证码无效"); + } + if (!StringUtils.equals(verifyCode, registerPhoneVO.getVerifyCode())) { + throw new ParamsException("验证码错误"); + } + registerService.phoneRegister(registerPhoneVO); return new SuccessResult(); } diff --git a/register-base/src/main/java/ink/wgink/register/base/service/IRegisterService.java b/register-base/src/main/java/ink/wgink/register/base/service/IRegisterService.java index 1c7b90cc..0e54d449 100644 --- a/register-base/src/main/java/ink/wgink/register/base/service/IRegisterService.java +++ b/register-base/src/main/java/ink/wgink/register/base/service/IRegisterService.java @@ -1,6 +1,7 @@ package ink.wgink.register.base.service; import ink.wgink.register.base.pojo.vos.RegisterDefaultVO; +import ink.wgink.register.base.pojo.vos.RegisterPhoneVO; /** * When you feel like quitting. Think about why you started @@ -18,6 +19,15 @@ public interface IRegisterService { * 默认,用户名密码注册 * * @param registerDefaultVO + * @throws Exception */ - void defaultRegister(RegisterDefaultVO registerDefaultVO); + void defaultRegister(RegisterDefaultVO registerDefaultVO) throws Exception; + + /** + * 手机注册 + * + * @param registerPhoneVO + * @throws Exception + */ + void phoneRegister(RegisterPhoneVO registerPhoneVO) throws Exception; } diff --git a/register-base/src/main/java/ink/wgink/register/base/service/impl/RegisterServiceImpl.java b/register-base/src/main/java/ink/wgink/register/base/service/impl/RegisterServiceImpl.java index 95634631..0c45e702 100644 --- a/register-base/src/main/java/ink/wgink/register/base/service/impl/RegisterServiceImpl.java +++ b/register-base/src/main/java/ink/wgink/register/base/service/impl/RegisterServiceImpl.java @@ -1,13 +1,21 @@ package ink.wgink.register.base.service.impl; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.exceptions.base.SystemException; +import ink.wgink.interfaces.expand.register.IRegisterHandler; import ink.wgink.register.base.pojo.vos.RegisterDefaultVO; +import ink.wgink.register.base.pojo.vos.RegisterPhoneVO; import ink.wgink.register.base.service.IRegisterService; import ink.wgink.service.user.enums.UserStateEnum; import ink.wgink.service.user.enums.UserTypeEnum; import ink.wgink.service.user.pojo.vos.UserVO; import ink.wgink.service.user.service.IUserService; +import ink.wgink.util.UUIDUtil; +import ink.wgink.util.string.WStringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; /** * When you feel like quitting. Think about why you started @@ -19,24 +27,37 @@ import org.springframework.beans.factory.annotation.Autowired; * @Date: 2021/5/1 10:33 上午 * @Version: 1.0 */ +@Service public class RegisterServiceImpl extends DefaultBaseService implements IRegisterService { + private static final Logger LOG = LoggerFactory.getLogger(RegisterServiceImpl.class); + @Autowired(required = false) + private IRegisterHandler registerHandler; @Autowired private IUserService userService; @Override - public void defaultRegister(RegisterDefaultVO registerDefaultVO) { + public void defaultRegister(RegisterDefaultVO registerDefaultVO) throws Exception { register(registerDefaultVO.getUsername(), registerDefaultVO.getPassword()); } - private void register(String username, String password) { + @Override + public void phoneRegister(RegisterPhoneVO registerPhoneVO) throws Exception { + // 生成8位随机密码 + register(registerPhoneVO.getPhone(), WStringUtil.randomSubStr(UUIDUtil.get32UUID(), 8)); + } + + private void register(String username, String password) throws Exception { UserVO userVO = new UserVO(); userVO.setUserUsername(username); userVO.setUserPassword(password); userVO.setUserName(username); userVO.setUserState(UserStateEnum.NORMAL.getValue()); userVO.setUserType(UserTypeEnum.NORMAL.getValue()); - userService.register(userVO); + String userId = userService.saveAndReturnId(userVO, true); + if (registerHandler == null) { + registerHandler.handler(userId); + } }