feat[litemall-wx-api]: 增加注册码接口和账号更新接口
This commit is contained in:
@@ -25,10 +25,7 @@ import org.linlinjava.litemall.core.util.IpUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -171,9 +168,12 @@ public class WxAuthController {
|
||||
|
||||
|
||||
/**
|
||||
* 请求验证码
|
||||
* 请求注册验证码
|
||||
*
|
||||
* @param body 手机号码{mobile}
|
||||
* TODO
|
||||
* 这里需要一定机制防止短信验证码被滥用
|
||||
*
|
||||
* @param body 手机号码 { mobile }
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("regCaptcha")
|
||||
@@ -312,6 +312,49 @@ public class WxAuthController {
|
||||
return ResponseUtil.ok(result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 请求验证码
|
||||
*
|
||||
* TODO
|
||||
* 这里需要一定机制防止短信验证码被滥用
|
||||
*
|
||||
* @param body 手机号码 { mobile: xxx, type: xxx }
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("captcha")
|
||||
public Object captcha(@LoginUser Integer userId, @RequestBody String body) {
|
||||
if(userId == null){
|
||||
return ResponseUtil.unlogin();
|
||||
}
|
||||
String phoneNumber = JacksonUtil.parseString(body, "mobile");
|
||||
String captchaType = JacksonUtil.parseString(body, "type");
|
||||
if (StringUtils.isEmpty(phoneNumber)) {
|
||||
return ResponseUtil.badArgument();
|
||||
}
|
||||
if (!RegexUtil.isMobileExact(phoneNumber)) {
|
||||
return ResponseUtil.badArgumentValue();
|
||||
}
|
||||
if (StringUtils.isEmpty(captchaType)) {
|
||||
return ResponseUtil.badArgument();
|
||||
}
|
||||
|
||||
if (!notifyService.isSmsEnable()) {
|
||||
return ResponseUtil.fail(AUTH_CAPTCHA_UNSUPPORT, "小程序后台验证码服务不支持");
|
||||
}
|
||||
String code = CharUtil.getRandomNum(6);
|
||||
// TODO
|
||||
// 根据type发送不同的验证码
|
||||
notifyService.notifySmsTemplate(phoneNumber, NotifyType.CAPTCHA, new String[]{code});
|
||||
|
||||
boolean successful = CaptchaCodeManager.addToCache(phoneNumber, code);
|
||||
if (!successful) {
|
||||
return ResponseUtil.fail(AUTH_CAPTCHA_FREQUENCY, "验证码未超时1分钟,不能发送");
|
||||
}
|
||||
|
||||
return ResponseUtil.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号密码重置
|
||||
*
|
||||
@@ -328,7 +371,10 @@ public class WxAuthController {
|
||||
* 失败则 { errno: XXX, errmsg: XXX }
|
||||
*/
|
||||
@PostMapping("reset")
|
||||
public Object reset(@RequestBody String body, HttpServletRequest request) {
|
||||
public Object reset(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {
|
||||
if(userId == null){
|
||||
return ResponseUtil.unlogin();
|
||||
}
|
||||
String password = JacksonUtil.parseString(body, "password");
|
||||
String mobile = JacksonUtil.parseString(body, "mobile");
|
||||
String code = JacksonUtil.parseString(body, "code");
|
||||
@@ -363,6 +409,108 @@ public class WxAuthController {
|
||||
return ResponseUtil.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号手机号码重置
|
||||
*
|
||||
* @param body 请求内容
|
||||
* {
|
||||
* password: xxx,
|
||||
* mobile: xxx
|
||||
* code: xxx
|
||||
* }
|
||||
* 其中code是手机验证码,目前还不支持手机短信验证码
|
||||
* @param request 请求对象
|
||||
* @return 登录结果
|
||||
* 成功则 { errno: 0, errmsg: '成功' }
|
||||
* 失败则 { errno: XXX, errmsg: XXX }
|
||||
*/
|
||||
@PostMapping("resetPhone")
|
||||
public Object resetPhone(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {
|
||||
if(userId == null){
|
||||
return ResponseUtil.unlogin();
|
||||
}
|
||||
String password = JacksonUtil.parseString(body, "password");
|
||||
String mobile = JacksonUtil.parseString(body, "mobile");
|
||||
String code = JacksonUtil.parseString(body, "code");
|
||||
|
||||
if (mobile == null || code == null || password == null) {
|
||||
return ResponseUtil.badArgument();
|
||||
}
|
||||
|
||||
//判断验证码是否正确
|
||||
String cacheCode = CaptchaCodeManager.getCachedCaptcha(mobile);
|
||||
if (cacheCode == null || cacheCode.isEmpty() || !cacheCode.equals(code))
|
||||
return ResponseUtil.fail(AUTH_CAPTCHA_UNMATCH, "验证码错误");
|
||||
|
||||
List<LitemallUser> userList = userService.queryByMobile(mobile);
|
||||
LitemallUser user = null;
|
||||
if (userList.size() > 1) {
|
||||
return ResponseUtil.fail(AUTH_MOBILE_REGISTERED, "手机号已注册");
|
||||
}
|
||||
user = userService.findById(userId);
|
||||
|
||||
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
|
||||
if (!encoder.matches(password, user.getPassword())) {
|
||||
return ResponseUtil.fail(AUTH_INVALID_ACCOUNT, "账号密码不对");
|
||||
}
|
||||
|
||||
user.setMobile(mobile);
|
||||
if (userService.updateById(user) == 0) {
|
||||
return ResponseUtil.updatedDataFailed();
|
||||
}
|
||||
|
||||
return ResponseUtil.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号信息更新
|
||||
*
|
||||
* @param body 请求内容
|
||||
* {
|
||||
* password: xxx,
|
||||
* mobile: xxx
|
||||
* code: xxx
|
||||
* }
|
||||
* 其中code是手机验证码,目前还不支持手机短信验证码
|
||||
* @param request 请求对象
|
||||
* @return 登录结果
|
||||
* 成功则 { errno: 0, errmsg: '成功' }
|
||||
* 失败则 { errno: XXX, errmsg: XXX }
|
||||
*/
|
||||
@PostMapping("profile")
|
||||
public Object profile(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {
|
||||
if(userId == null){
|
||||
return ResponseUtil.unlogin();
|
||||
}
|
||||
String avatar = JacksonUtil.parseString(body, "avatar");
|
||||
Byte gender = JacksonUtil.parseByte(body, "gender");
|
||||
String nickname = JacksonUtil.parseString(body, "nickname");
|
||||
|
||||
LitemallUser user = userService.findById(userId);
|
||||
if(!StringUtils.isEmpty(avatar)){
|
||||
user.setAvatar(avatar);
|
||||
}
|
||||
if(gender != null){
|
||||
user.setGender(gender);
|
||||
}
|
||||
if(!StringUtils.isEmpty(nickname)){
|
||||
user.setNickname(nickname);
|
||||
}
|
||||
|
||||
if (userService.updateById(user) == 0) {
|
||||
return ResponseUtil.updatedDataFailed();
|
||||
}
|
||||
|
||||
return ResponseUtil.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信手机号码绑定
|
||||
*
|
||||
* @param userId
|
||||
* @param body
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("bindPhone")
|
||||
public Object bindPhone(@LoginUser Integer userId, @RequestBody String body) {
|
||||
if (userId == null) {
|
||||
@@ -387,4 +535,20 @@ public class WxAuthController {
|
||||
}
|
||||
return ResponseUtil.ok();
|
||||
}
|
||||
|
||||
@GetMapping("info")
|
||||
public Object info(@LoginUser Integer userId) {
|
||||
if (userId == null) {
|
||||
return ResponseUtil.unlogin();
|
||||
}
|
||||
|
||||
LitemallUser user = userService.findById(userId);
|
||||
Map<Object, Object> data = new HashMap<Object, Object>();
|
||||
data.put("nickName", user.getNickname());
|
||||
data.put("avatar", user.getAvatar());
|
||||
data.put("gender", user.getGender());
|
||||
data.put("mobile", user.getMobile());
|
||||
|
||||
return ResponseUtil.ok(data);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user