Commit aa70eac5 by giaogiao

修改手机号

parent 7fa83bef
...@@ -41,15 +41,35 @@ public class AppSmsController extends BaseController { ...@@ -41,15 +41,35 @@ public class AppSmsController extends BaseController {
} }
/** /**
* 获取修改手机号的验证码 * 修改手机号,向旧手机号发验证码
*/ */
@GetMapping("/updatePhoneCode") @GetMapping("/updatePhoneCode")
@OperationLog(name = "获取修改手机号的验证码", type = OperationLogType.INFO) @OperationLog(name = "修改手机号,向旧手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "获取修改手机号的验证码", response = Object.class, notes = "本地环境默认666666") @ApiOperation(value = "向旧手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCode() throws Exception { 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 { ...@@ -81,7 +81,7 @@ public class AppUserController extends BaseController {
@ApiOperation(value = "修改手机号", response = ApiResult.class) @ApiOperation(value = "修改手机号", response = ApiResult.class)
public ApiResult<Boolean> updatePhone(@RequestBody AppUserPhoneUpdateParam userPhoneUpdateParam) throws Exception { 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") // @GetMapping("/userInfoList")
......
...@@ -2,6 +2,7 @@ package com.sien.common.param.app; ...@@ -2,6 +2,7 @@ package com.sien.common.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity; import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -17,7 +18,16 @@ import lombok.experimental.Accessors; ...@@ -17,7 +18,16 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "AppUserPhoneUpdateParam") @ApiModel(value = "AppUserPhoneUpdateParam")
public class AppUserPhoneUpdateParam extends BaseEntity { public class AppUserPhoneUpdateParam extends BaseEntity {
@ApiModelProperty("新手机区号")
private String phoneArea; private String phoneArea;
@ApiModelProperty("新手机号")
private String phone; private String phone;
@ApiModelProperty("旧手机号的验证码")
private String code; private String code;
@ApiModelProperty("新手机号的验证码")
private String codeNew;
} }
...@@ -5,14 +5,29 @@ import io.geekidea.springbootplus.framework.common.api.ApiResult; ...@@ -5,14 +5,29 @@ import io.geekidea.springbootplus.framework.common.api.ApiResult;
public interface AppSmsService { public interface AppSmsService {
void deleteRegisterCode(String area, String number); void deleteRegisterCode(String area, String number);
void deleteUpdatePhoneCode(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> 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 { ...@@ -28,7 +43,10 @@ public interface AppSmsService {
* @return * @return
*/ */
boolean equalsRegisterCode(String area, String number, String code); 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; package com.sien.common.service;
import com.sien.common.entity.AppUser;
import com.sien.common.param.app.AppSmsRegisterParam; import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam; import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.vo.app.LoginAppUserTokenVo; import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.entity.AppUser;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import java.util.List; import java.util.List;
...@@ -33,13 +33,14 @@ public interface AppUserApiService { ...@@ -33,13 +33,14 @@ public interface AppUserApiService {
/** /**
* 修改手机号 * 修改手机号
*
* @param phoneArea * @param phoneArea
* @param phone * @param phone
* @param code * @param code
* @return * @return
* @throws Exception * @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; package com.sien.common.service.impl;
import cn.hutool.core.util.RandomUtil; 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.AppSmsService;
import com.sien.common.service.AppUserService; import com.sien.common.service.AppUserService;
import com.sien.common.sms.SendSms; import com.sien.common.sms.SendSms;
...@@ -48,12 +50,18 @@ public class AppSmsServiceImpl implements AppSmsService { ...@@ -48,12 +50,18 @@ public class AppSmsServiceImpl implements AppSmsService {
* 注册 短信验证码redis的key值 * 注册 短信验证码redis的key值
*/ */
private static final String SMS_REGIEST = "sms:app:register:%s_%s"; private static final String SMS_REGIEST = "sms:app:register:%s_%s";
/** /**
* 修改 短信验证码redis的key值 * 修改 短信验证码redis的key值
*/ */
private static final String SMS_UPDATE = "sms:app:update:%s_%s"; 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值 * 短信验证码redis的key值
*/ */
private static final String SMS_LOGIN = "sms:app:login:%s_%s"; private static final String SMS_LOGIN = "sms:app:login:%s_%s";
...@@ -65,9 +73,13 @@ public class AppSmsServiceImpl implements AppSmsService { ...@@ -65,9 +73,13 @@ public class AppSmsServiceImpl implements AppSmsService {
@Override @Override
public void deleteUpdatePhoneCode(String area, String number) { public void deleteUpdatePhoneCode(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE, area, 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 { ...@@ -77,10 +89,46 @@ public class AppSmsServiceImpl implements AppSmsService {
} }
@Override @Override
public ApiResult<Object> updatePhoneCode() throws Exception { public ApiResult<Object> updatePhoneCodeSendToOld() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal(); JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId()); 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 { ...@@ -128,10 +176,17 @@ public class AppSmsServiceImpl implements AppSmsService {
} }
@Override @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); 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) { private boolean equalsSms(String type, String area, String number, String code) {
String formatKey = String.format(type, area, number); String formatKey = String.format(type, area, number);
......
...@@ -60,18 +60,27 @@ public class AppUserApiServiceImpl implements AppUserApiService { ...@@ -60,18 +60,27 @@ public class AppUserApiServiceImpl implements AppUserApiService {
} }
@Override @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(); JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId()); 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) { if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR); 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.deleteUpdatePhoneCode(appUserById.getPhoneArea(), appUserById.getPhone());
// 删除已使用的新手机验证码
appSmsService.deleteUpdatePhoneCodeNew(phoneArea, phone);
// 判断手机号是否已经注册 // 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda() AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
......
...@@ -76,6 +76,8 @@ api.response.code.JWTDECODE_EXCEPTION=Token解析异常 ...@@ -76,6 +76,8 @@ api.response.code.JWTDECODE_EXCEPTION=Token解析异常
#*/ #*/
api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处理 api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处理
api.response.code.user.PWD_OR_USERNAME_ERROR=账号或密码错误 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_NOT_FOUND=用户不存在
api.response.code.user.USER_WECHAT_CODE=微信code错误 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 { ...@@ -110,9 +110,16 @@ public enum ApiCode {
PWD_OR_USERNAME_ERROR(6001, "api.response.code.user.PWD_OR_USERNAME_ERROR"), 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 { ...@@ -123,6 +130,11 @@ public enum ApiCode {
*/ */
USER_WECHAT_CODE(6004, "api.response.code.user.USER_WECHAT_CODE"), 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; 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