Commit aa70eac5 by giaogiao

修改手机号

parent 7fa83bef
......@@ -41,15 +41,35 @@ public class AppSmsController extends BaseController {
}
/**
* 获取修改手机号的验证码
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCode")
@OperationLog(name = "获取修改手机号的验证码", type = OperationLogType.INFO)
@ApiOperation(value = "获取修改手机号的验证码", response = Object.class, notes = "本地环境默认666666")
@OperationLog(name = "修改手机号,向旧手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向旧手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCode() throws Exception {
return appSmsService.updatePhoneCodeSendToOld();
}
/**
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCodeToNew")
@OperationLog(name = "修改手机号,向新手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向新手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCodeSendToNew(@RequestParam String phoneArea, @RequestParam String phone) throws Exception {
return appSmsService.updatePhoneCodeSendToNew(phoneArea, phone);
}
return appSmsService.updatePhoneCode();
/**
* 校验旧手机验证码
*/
@GetMapping("/checkPhoneCodeOld")
@OperationLog(name = "校验旧手机验证码", type = OperationLogType.INFO)
@ApiOperation(value = "校验旧手机验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Boolean> checkPhoneCodeOld(@RequestParam String code) throws Exception {
return appSmsService.checkPhoneCodeOld(code);
}
}
......@@ -81,7 +81,7 @@ public class AppUserController extends BaseController {
@ApiOperation(value = "修改手机号", response = ApiResult.class)
public ApiResult<Boolean> updatePhone(@RequestBody AppUserPhoneUpdateParam userPhoneUpdateParam) throws Exception {
return appUserApiService.updatePhone(userPhoneUpdateParam.getPhoneArea(), userPhoneUpdateParam.getPhone(), userPhoneUpdateParam.getCode());
return appUserApiService.updatePhone(userPhoneUpdateParam.getPhoneArea(), userPhoneUpdateParam.getPhone(), userPhoneUpdateParam.getCode(), userPhoneUpdateParam.getCodeNew());
}
// @GetMapping("/userInfoList")
......
......@@ -2,6 +2,7 @@ package com.sien.common.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
......@@ -17,7 +18,16 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "AppUserPhoneUpdateParam")
public class AppUserPhoneUpdateParam extends BaseEntity {
@ApiModelProperty("新手机区号")
private String phoneArea;
@ApiModelProperty("新手机号")
private String phone;
@ApiModelProperty("旧手机号的验证码")
private String code;
@ApiModelProperty("新手机号的验证码")
private String codeNew;
}
......@@ -5,14 +5,29 @@ import io.geekidea.springbootplus.framework.common.api.ApiResult;
public interface AppSmsService {
void deleteRegisterCode(String area, String number);
void deleteUpdatePhoneCode(String area, String number);
void deleteUpdatePhoneCodeNew(String area, String number);
/**
* 获取注册验证码
*/
ApiResult<Object> registerOrLoginCode(String phoneArea, String phone);
ApiResult<Object> updatePhoneCode() throws Exception;
ApiResult<Object> updatePhoneCodeSendToOld() throws Exception;
/**
* 修改手机号,向新手机号发验证码
*/
ApiResult<Object> updatePhoneCodeSendToNew(String phoneArea, String phone);
/**
* 修改手机号,校验旧手机验证码
*/
ApiResult<Boolean> checkPhoneCodeOld(String code) throws Exception;
/**
* 获取注册验证码
......@@ -28,7 +43,10 @@ public interface AppSmsService {
* @return
*/
boolean equalsRegisterCode(String area, String number, String code);
boolean equalsUpdatePhoneCode(String area, String number, String code);
boolean equalsUpdatePhoneCodeOld(String area, String number, String code);
boolean equalsUpdatePhoneCodeNew(String area, String number, String code);
/**
* 校验验登陆证码
......
package com.sien.common.service;
import com.sien.common.entity.AppUser;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.entity.AppUser;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import java.util.List;
......@@ -33,13 +33,14 @@ public interface AppUserApiService {
/**
* 修改手机号
*
* @param phoneArea
* @param phone
* @param code
* @return
* @throws Exception
*/
ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code) throws Exception;
ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code, String codeNew) throws Exception;
/**
......
package com.sien.common.service.impl;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sien.common.entity.AppUser;
import com.sien.common.service.AppSmsService;
import com.sien.common.service.AppUserService;
import com.sien.common.sms.SendSms;
......@@ -48,12 +50,18 @@ public class AppSmsServiceImpl implements AppSmsService {
* 注册 短信验证码redis的key值
*/
private static final String SMS_REGIEST = "sms:app:register:%s_%s";
/**
* 修改 短信验证码redis的key值
*/
private static final String SMS_UPDATE = "sms:app:update:%s_%s";
/**
* 修改 短信验证码redis的key值,新手机
*/
private static final String SMS_UPDATE_NEW = "sms:app:updateNew:%s_%s";
/**
* 短信验证码redis的key值
*/
private static final String SMS_LOGIN = "sms:app:login:%s_%s";
......@@ -65,9 +73,13 @@ public class AppSmsServiceImpl implements AppSmsService {
@Override
public void deleteUpdatePhoneCode(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE, area, number));
}
@Override
public void deleteUpdatePhoneCodeNew(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE_NEW, area, number));
}
......@@ -77,10 +89,46 @@ public class AppSmsServiceImpl implements AppSmsService {
}
@Override
public ApiResult<Object> updatePhoneCode() throws Exception {
public ApiResult<Object> updatePhoneCodeSendToOld() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
return getSmsCodeApiResult(String.format(SMS_UPDATE, appUserById.getPhoneArea(), appUserById.getPhone()), appUserById.getPhoneArea(), appUserById.getPhone());
// 向旧手机发送验证码
String key = String.format(SMS_UPDATE, appUserById.getPhoneArea(), appUserById.getPhone());
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, appUserById.getPhoneArea(), appUserById.getPhone());
return smsCodeApiResult;
}
@Override
public ApiResult<Object> updatePhoneCodeSendToNew(String phoneArea, String phone) {
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhoneArea, phoneArea)
.eq(AppUser::getPhone, phone));
if (one != null) {
return ApiResult.fail(ApiCode.UPDATA_PHONE_USE, null);
}
// 向新手机发送验证码
String key = String.format(SMS_UPDATE_NEW, phoneArea, phone);
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, phoneArea, phone);
return smsCodeApiResult;
}
@Override
public ApiResult<Boolean> checkPhoneCodeOld(String code) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
boolean equalsRegisterCode = this.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
return ApiResult.ok();
}
/**
......@@ -128,10 +176,17 @@ public class AppSmsServiceImpl implements AppSmsService {
}
@Override
public boolean equalsUpdatePhoneCode(String area, String number, String code) {
public boolean equalsUpdatePhoneCodeOld(String area, String number, String code) {
return equalsSms(SMS_UPDATE, area, number, code);
}
@Override
public boolean equalsUpdatePhoneCodeNew(String area, String number, String code) {
return equalsSms(SMS_UPDATE_NEW, area, number, code);
}
private boolean equalsSms(String type, String area, String number, String code) {
String formatKey = String.format(type, area, number);
......
......@@ -60,18 +60,27 @@ public class AppUserApiServiceImpl implements AppUserApiService {
}
@Override
public ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code) throws Exception {
public ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code, String codeNew) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 校验验证码
boolean equalsRegisterCode = appSmsService.equalsUpdatePhoneCode(appUserById.getPhoneArea(), appUserById.getPhone(), code);
// 校验旧手机验证码
boolean equalsRegisterCode = appSmsService.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
// 删除已使用的验证码
// 校验新手机验证码
boolean equalsRegisterCodeNew = appSmsService.equalsUpdatePhoneCodeNew(phoneArea, phone, codeNew);
if (!equalsRegisterCodeNew) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR_NEW);
}
// 删除已使用的旧手机验证码
appSmsService.deleteUpdatePhoneCode(appUserById.getPhoneArea(), appUserById.getPhone());
// 删除已使用的新手机验证码
appSmsService.deleteUpdatePhoneCodeNew(phoneArea, phone);
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
......
......@@ -76,6 +76,8 @@ api.response.code.JWTDECODE_EXCEPTION=Token解析异常
#*/
api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处理
api.response.code.user.PWD_OR_USERNAME_ERROR=账号或密码错误
api.response.code.user.SMS_CODE_ERROR=验证码错误
api.response.code.user.SMS_CODE_ERROR=旧手机号验证码错误
api.response.code.user.USER_NOT_FOUND=用户不存在
api.response.code.user.USER_WECHAT_CODE=微信code错误
api.response.code.user.SMS_CODE_ERROR_NEW=新手机号验证码错误
api.response.code.user.UPDATA_PHONE_USE=绑定手机已经被使用
......@@ -110,9 +110,16 @@ public enum ApiCode {
PWD_OR_USERNAME_ERROR(6001, "api.response.code.user.PWD_OR_USERNAME_ERROR"),
/**
* 验证码错误
* 旧手机号验证码错误
*/
SMS_CODE_ERROR(6002, "api.response.code.user.SMS_CODE_ERROR"),
SMS_CODE_ERROR(6005, "api.response.code.user.SMS_CODE_ERROR"),
/**
* 新手机号验证码错误
*/
SMS_CODE_ERROR_NEW(6002, "api.response.code.user.SMS_CODE_ERROR_NEW"),
/**
* 用户不存在
*/
......@@ -123,6 +130,11 @@ public enum ApiCode {
*/
USER_WECHAT_CODE(6004, "api.response.code.user.USER_WECHAT_CODE"),
/**
* 绑定手机已经被使用
*/
UPDATA_PHONE_USE(6006, "api.response.code.user.UPDATA_PHONE_USE"),
;
private final int code;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment