diff --git a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/consonant/PassengerConsonant.java b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/consonant/PassengerConsonant.java new file mode 100644 index 0000000..8a35810 --- /dev/null +++ b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/consonant/PassengerConsonant.java @@ -0,0 +1,11 @@ +package mashibing.online.text.consonant; + +public class PassengerConsonant { + + public static final String phoneNumberCodePreKey = "smsCode_"; + + public static final String PassengerIdendity = "1"; + + public static final String DriverIdendity = "2"; + +} diff --git a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/controller/PassengerController.java b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/controller/PassengerController.java index ddcf070..8549a04 100644 --- a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/controller/PassengerController.java +++ b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/controller/PassengerController.java @@ -1,23 +1,40 @@ package mashibing.online.text.controller; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.mashibing.dto.PassengerRequestDto; import com.mashibing.dto.ResponseResult; +import com.mashibing.util.JwtUtils; +import mashibing.online.text.consonant.PassengerConsonant; +import mashibing.online.text.dto.UserInfo; +import mashibing.online.text.feign.SendSMSCodeService; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + /** * @author zxx * @Description * @date 2022/10/5 */ @RestController + public class PassengerController { + @Resource + private SendSMSCodeService sendSMSCodeService; + + @Resource + private StringRedisTemplate stringRedisTemplate; + + @PostMapping("/getPhoneNumberCode") public ResponseResult getPhoneNumberCode(@RequestBody PassengerRequestDto passengerRequestDto){ // 校验参数 @@ -27,9 +44,11 @@ public class PassengerController { } // 调服务获取验证码 - - - // 存入redis 有限时间 + String smsCode = sendSMSCodeService.getSmsCode(6,passengerRequestDto.getPhoneNumber()); + System.out.println(""+ JSON.toJSONString(smsCode)); + // 存入redis 有限时间 + stringRedisTemplate.opsForValue().set(PassengerConsonant.phoneNumberCodePreKey+passengerRequestDto.getPhoneNumber(), + smsCode,2, TimeUnit.MINUTES); return ResponseResult.success("成功!"); @@ -39,15 +58,29 @@ public class PassengerController { @PostMapping("/checkPhoneNumberCode") public ResponseResult checkPhoneNumberCode(@RequestBody PassengerRequestDto passengerRequestDto){ // 校验参数 - - // 校验验证码高大上地方 - + if(ObjectUtil.isNull(passengerRequestDto)||ObjectUtil.isEmpty(passengerRequestDto.getPhoneNumber())||ObjectUtil.isEmpty(passengerRequestDto.getPhoneNumberCode())){ + throw new RuntimeException("手机号码 和短信验证码必填"); + + } + + // 校验验证码 + String phone=passengerRequestDto.getPhoneNumber(); + String redisCode = stringRedisTemplate.opsForValue().get(PassengerConsonant.phoneNumberCodePreKey + phone); + if(StringUtils.isBlank(redisCode)){ + throw new RuntimeException("短信验证码已过期!"); + } + String reqCode=passengerRequestDto.getPhoneNumberCode(); + if(!reqCode.equals(redisCode)){ + throw new RuntimeException("短信验证码错误!"); + } // 用户注册 - + System.out.println("phone 短信验证码正确"); // 返回token - - - return ResponseResult.success("成功!"); + String token = JwtUtils.genaroteToken(phone, PassengerConsonant.PassengerIdendity); + UserInfo userInfo =new UserInfo(); + userInfo.setPhoneNumber(phone); + userInfo.setToken(token); + return ResponseResult.success(userInfo); } } diff --git a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/dto/UserInfo.java b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/dto/UserInfo.java new file mode 100644 index 0000000..803a231 --- /dev/null +++ b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/dto/UserInfo.java @@ -0,0 +1,11 @@ +package mashibing.online.text.dto; + +import lombok.Data; + +@Data +public class UserInfo { + + private String phoneNumber; + + private String token; +} diff --git a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/SendSMSCodeService.java b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/SendSMSCodeService.java index b0175c1..c7099c2 100644 --- a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/SendSMSCodeService.java +++ b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/SendSMSCodeService.java @@ -22,5 +22,5 @@ public interface SendSMSCodeService { @GetMapping("/send/acquireSMSCode") - public ResponseResult getSmsCode(@RequestParam("size") int size); + public String getSmsCode(@RequestParam("size") int size,@RequestParam(name = "phoneNumber") String phoneNumber); } diff --git a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/fallback/SendSMSCodeServiceImpl.java b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/fallback/SendSMSCodeServiceImpl.java index 3252210..0b8797c 100644 --- a/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/fallback/SendSMSCodeServiceImpl.java +++ b/oneLineTxt/v1/onelinetextplublic/api-passinger/src/main/java/mashibing/online/text/feign/fallback/SendSMSCodeServiceImpl.java @@ -5,6 +5,7 @@ import com.mashibing.dto.ResponseResult; import lombok.extern.slf4j.Slf4j; import mashibing.online.text.feign.SendSMSCodeService; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; /** * Copyright© 2020.10.20 by 博纳德集团有限公司.All rights reserved. @@ -26,8 +27,8 @@ public class SendSMSCodeServiceImpl implements SendSMSCodeService { @Override - public ResponseResult getSmsCode(int size) { + public String getSmsCode(int size, String phoneNumber) { log.info("获取短信验证码失败"); - return ResponseResult.fail(CommonStatusEnum.FAIL.getCode(), "获取短信验证码失败"); + return "";//ResponseResult.fail(CommonStatusEnum.FAIL.getCode(), "获取短信验证码失败"); } } diff --git a/oneLineTxt/v1/onelinetextplublic/pom.xml b/oneLineTxt/v1/onelinetextplublic/pom.xml index cbe5cd1..21c6cbd 100644 --- a/oneLineTxt/v1/onelinetextplublic/pom.xml +++ b/oneLineTxt/v1/onelinetextplublic/pom.xml @@ -52,6 +52,16 @@ java-jwt 3.10.3 + + org.apache.commons + commons-pool2 + 2.6.2 + + + org.springframework.boot + spring-boot-starter-data-redis + 2.2.1.RELEASE + diff --git a/oneLineTxt/v1/onelinetextplublic/send-server/src/main/java/com/mashibing/sendserver/controller/SendSmsCodeController.java b/oneLineTxt/v1/onelinetextplublic/send-server/src/main/java/com/mashibing/sendserver/controller/SendSmsCodeController.java index af7ce25..f61695b 100644 --- a/oneLineTxt/v1/onelinetextplublic/send-server/src/main/java/com/mashibing/sendserver/controller/SendSmsCodeController.java +++ b/oneLineTxt/v1/onelinetextplublic/send-server/src/main/java/com/mashibing/sendserver/controller/SendSmsCodeController.java @@ -75,11 +75,11 @@ public class SendSmsCodeController { * @return */ @GetMapping("/acquireSMSCode") - public String acquireSMSCode(@RequestParam(name = "size") int size){ + public String acquireSMSCode(@RequestParam(name = "size") int size,@RequestParam(name = "phoneNumber") String phoneNumber){ int radom = (int)(((Math.random()*9)+1) * Math.pow(10,(size-1))); String msg="【我来啦】尊敬的用户,您的验证码为:"+radom+",2分钟有效"; - Map params = prepareParams(smsAccount.getAccount(), smsAccount.getPassword(), "13710620759", msg, null, null, + Map params = prepareParams(smsAccount.getAccount(), smsAccount.getPassword(), phoneNumber, msg, null, null, UUID.randomUUID().toString()); String rutlet=post(smsAccount.getUrl() + PATH_SEND_SMS, params); log.info("==="+rutlet);