skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/feign/IUserClient.java
@@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; /** * User Feign接口类 * @@ -45,6 +47,7 @@ String USER_INFO_BY_TYPE = API_PREFIX + "/user-info-by-type"; String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id"; String USER_INFO_BY_ACCOUNT = API_PREFIX + "/user-info-by-account"; String USER_INFO_BY_PHONE = API_PREFIX + "/user-info-by-phone"; String USER_AUTH_INFO = API_PREFIX + "/user-auth-info"; String SAVE_USER = API_PREFIX + "/save-user"; String REMOVE_USER = API_PREFIX + "/remove-user"; @@ -83,6 +86,16 @@ * 获取用户信息 * * @param tenantId 租户ID * @param phone 手机号 * @return */ @GetMapping(USER_INFO_BY_PHONE) R<List<User>> userInfoByPhone(@RequestParam("tenantId") String tenantId, @RequestParam("phone") String phone); /** * 获取用户信息 * * @param tenantId 租户ID * @param account 账号 * @param userType 用户平台 * @return skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
@@ -47,6 +47,11 @@ <version>3.0.1.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-user-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/entity/User.java
File was deleted skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsController.java
@@ -5,12 +5,17 @@ import cn.gistack.sm.sms.entity.SmsRecord; import cn.gistack.sm.sms.service.ISmsRecordService; import cn.gistack.sm.sms.util.SmsUtils; import cn.gistack.system.user.entity.User; import cn.gistack.system.user.feign.IUserClient; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import static cn.gistack.common.cache.CacheNames.PHONE_KEY; /** @@ -26,8 +31,9 @@ private final ISmsRecordService smsRecordService; private final BladeRedis bladeRedis; private final IUserClient userClient; @GetMapping("/test") public void setRedis(){ @@ -36,26 +42,64 @@ /** * 发送登录验证码 * request 必须包含手机号(多个手机号以英文逗号分隔) * request 必须包含手机号 * @param request * @return */ @PostMapping("/sendCode") public R test(@RequestBody SMSSendRequest request){ //设置模板相关信息 String templateId = "2431012205498"; String randNumber = SmsUtils.getRandNumber(); String content = "您的登录验证码是" + randNumber + ",5分钟内有效,请勿泄漏,如非本人操作,请忽略此信息"; request.setMessageContent(content); request.setTemplateId(templateId); // 发送操作 String sendMsg = SmsUtils.sendMsg(request); // 记录发送记录操作 saveSendRecord(request,sendMsg); // 保存验证码到 redis saveCodeForRedis(request.getUserNumber(),randNumber); // 手机号码校验 if(validatePhone(request.getUserNumber())) { //设置模板相关信息 String templateId = "2431012205498"; String randNumber = SmsUtils.getRandNumber(); String content = "您的登录验证码是" + randNumber + ",5分钟内有效,请勿泄漏,如非本人操作,请忽略此信息"; request.setMessageContent(content); request.setTemplateId(templateId); // 发送操作 String sendMsg = SmsUtils.sendMsg(request); // 记录发送记录操作 saveSendRecord(request, sendMsg); // 保存验证码到 redis saveCodeForRedis(request.getUserNumber(), randNumber); // 返回发送信息 return R.data(sendMsg); } // 返回发送信息 return R.data(sendMsg); return R.fail(400,"该手机号不存在!"); } /** * 校验手机号码正确性 * @param userNumber * @return */ private boolean validatePhone(String userNumber) { // 校验手机号码正确性 if (validator(userNumber)){ // 校验该账户是否已注册,通过手机号查询用户是否存在,tenantId 暂时写死,未登陆情况 tenantId 获取不到 R<List<User>> list = userClient.userInfoByPhone("000000", userNumber); if (list.getData().size()>0){ return true; } return false; } return false; } /** * 校验手机号码 */ public static boolean validator(String phone) { String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$"; if (phone.length() != 11) { return false; } else { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(phone); boolean isMatch = m.matches(); return isMatch; } } /** skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/util/SmsUtils.java
@@ -61,16 +61,13 @@ * @return */ public static String getRandNumber() { // 计算token // Date date = new Date(); // String dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date); Random random = new Random(); //把随机生成的数字转成字符串 String str = String.valueOf(random.nextInt(9)); for (int i = 0; i < 5; i++) { str += random.nextInt(9); } return String.valueOf(System.currentTimeMillis()) + str; return str; } /** skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/feign/UserClient.java
@@ -31,6 +31,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 用户服务Feign实现类 * @@ -62,6 +64,12 @@ } @Override @GetMapping(USER_INFO_BY_PHONE) public R<List<User>> userInfoByPhone(String tenantId, String phone) { return R.data(service.userInfoByPhone(tenantId, phone)); } @Override @GetMapping(USER_INFO_BY_TYPE) public R<UserInfo> userInfo(String tenantId, String account, String userType) { return R.data(service.userInfo(tenantId, account, UserEnum.of(userType))); skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java
@@ -207,4 +207,12 @@ UserVO platformDetail(User user); List<User> customizeGetList(UserVO user); /** * 根据手机号码查询用户信息 * @param tenantId * @param phone * @return */ List<User> userInfoByPhone(String tenantId, String phone); } skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -435,4 +435,14 @@ return baseMapper.customizeGetList(user); } /** * 根据手机号码查询用户信息 * @param tenantId * @param phone * @return */ @Override public List<User> userInfoByPhone(String tenantId, String phone) { return list(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getPhone, phone).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED)); } }