diff --git a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java index 00770d82bb..144e18d024 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java @@ -104,4 +104,16 @@ public class ThirdLoginController { return new Result().ok(""); } + /** + * @param formDTO + * @author sun + * @description 单客户-工作端微信小程序登录-发送验证码 + **/ + @PostMapping(value = "sendsmscode") + public Result sendSmsCode(@RequestBody ThirdSendSmsCodeFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO,ThirdSendSmsCodeFormDTO.AddUserShowGroup.class); + thirdLoginService.sendSmsCode(formDTO); + return new Result(); + } + } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/ThirdSendSmsCodeFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/ThirdSendSmsCodeFormDTO.java new file mode 100644 index 0000000000..d2588a27bb --- /dev/null +++ b/epmet-auth/src/main/java/com/epmet/dto/form/ThirdSendSmsCodeFormDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 单客户-工作端微信小程序登录-发送验证码 + * @Author sun + */ +@Data +public class ThirdSendSmsCodeFormDTO implements Serializable { + private static final long serialVersionUID = -1852541457359282018L; + /** + * 小程序appId + */ + @NotBlank(message = "appId不能为空", groups = {AddUserShowGroup.class}) + private String appId; + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class}) + private String mobile; + public interface AddUserShowGroup extends CustomerClientShowGroup {} +} diff --git a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java index 3d9c60cc64..c79a67d41c 100644 --- a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java @@ -1,9 +1,6 @@ package com.epmet.service; -import com.epmet.dto.form.GetResiWxPhoneFormDTO; -import com.epmet.dto.form.LoginFormDTO; -import com.epmet.dto.form.ThirdStaffOrgsFormDTO; -import com.epmet.dto.form.ThirdWxmpEnteOrgFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.StaffOrgsResultDTO; import com.epmet.dto.result.UserTokenResultDTO; @@ -62,4 +59,11 @@ public interface ThirdLoginService { * @description 单客户-获取微信用户手机号 **/ String getResiWxPhone(GetResiWxPhoneFormDTO formDTO); + + /** + * @param formDTO + * @author sun + * @description 单客户-工作端微信小程序登录-发送验证码 + **/ + void sendSmsCode(ThirdSendSmsCodeFormDTO formDTO); } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java index c9a6addb29..8dd958fe36 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java @@ -14,10 +14,13 @@ import com.epmet.commons.tools.security.dto.GovTokenDto; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.password.PasswordUtils; import com.epmet.commons.tools.utils.*; +import com.epmet.commons.tools.validator.PhoneValidatorUtils; import com.epmet.constant.AuthHttpUrlConstant; +import com.epmet.constant.SmsTemplateConstant; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.jwt.JwtTokenProperties; @@ -56,6 +59,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { private EpmetUserOpenFeignClient epmetUserOpenFeignClient; @Autowired private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; /** * @param formDTO @@ -589,4 +594,45 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { return phone; } + /** + * @param formDTO + * @author sun + * @description 单客户-工作端微信小程序登录-发送验证码 + **/ + @Override + public void sendSmsCode(ThirdSendSmsCodeFormDTO formDTO) { + String str = "发送短信验证码异常,手机号[%s],code[%s],msg[%s]"; + //1.校验手机号是否符合规范 + if (!PhoneValidatorUtils.isMobile(formDTO.getMobile())) { + logger.warn(String.format(str, formDTO.getMobile(), EpmetErrorCode.ERROR_PHONE.getCode(), EpmetErrorCode.ERROR_PHONE.getMsg())); + throw new RenException(EpmetErrorCode.ERROR_PHONE.getCode()); + } + //2.根据手机号校验用户是否存在 + //2-1.根据appId查询对应客户Id + PaCustomerDTO customer = this.getCustomerInfo(formDTO.getAppId()); + //2-2.根据手机号查询到用户信息 + ThirdCustomerStaffFormDTO dto = new ThirdCustomerStaffFormDTO(); + dto.setCustomerId(customer.getId()); + dto.setMobile(formDTO.getMobile()); + Result> customerStaffResult = epmetUserOpenFeignClient.getCustsomerStaffByIdAndPhone(dto); + if (!customerStaffResult.success()) { + logger.warn(String.format(str, formDTO.getMobile(), customerStaffResult.getCode(), customerStaffResult.getMsg())); + throw new RenException(customerStaffResult.getCode()); + } + //3.发送短信验证码 + SendVerificationCodeFormDTO sendVerificationCodeFormDTO = new SendVerificationCodeFormDTO(); + sendVerificationCodeFormDTO.setMobile(formDTO.getMobile()); + sendVerificationCodeFormDTO.setAliyunTemplateCode(SmsTemplateConstant.LGOIN_CONFIRM); + Result smsCodeResult = epmetMessageOpenFeignClient.sendVerificationCode(sendVerificationCodeFormDTO); + if (!smsCodeResult.success()) { + logger.warn(String.format(str, formDTO.getMobile(), smsCodeResult.getCode(), smsCodeResult.getMsg())); + throw new RenException(smsCodeResult.getCode()); + } + //4.保存短信验证码(删除现有短信验证码 将新的短信验证码存入Redis) + SendSmsCodeFormDTO sendSmsCodeFormDTO = new SendSmsCodeFormDTO(); + sendSmsCodeFormDTO.setMobile(formDTO.getMobile()); + captchaRedis.saveSmsCode(sendSmsCodeFormDTO, smsCodeResult.getData().getCode()); + logger.info(String.format("发送短信验证码成功,手机号[%s]", formDTO.getMobile())); + } + }