yshop1.9.5,H5新增手机号绑定,账户信息管理等功能修复其他bug,明细请登陆演示后台查看

This commit is contained in:
hupeng
2020-02-07 19:27:28 +08:00
parent 2d743d23bf
commit 7e94789793
8 changed files with 195 additions and 27 deletions

View File

@ -410,6 +410,7 @@ public class AuthController {
public ApiResult<String> verify(@Validated @RequestBody VerityParam param) {
Boolean isTest = true;
YxUser yxUser = userService.findByName(param.getPhone());
if(param.getType() == null) param.setType("bind");
if (param.getType().equals("register") && ObjectUtil.isNotNull(yxUser)) {
return ApiResult.fail("手机号已注册");
}
@ -452,10 +453,12 @@ public class AuthController {
@PostMapping("/register")
@ApiOperation(value = "H5注册新用户", notes = "H5注册新用户")
public ApiResult<String> register(@Validated @RequestBody RegParam param) {
String code = redisUtils.get("code_" + param.getAccount()).toString();
if (StrUtil.isEmpty(code)) {
Object codeObj = redisUtils.get("code_" + param.getAccount());
if(codeObj == null){
return ApiResult.fail("请先获取验证码");
}
String code = codeObj.toString();
if (!StrUtil.equals(code, param.getCaptcha())) {
return ApiResult.fail("验证码错误");

View File

@ -7,7 +7,7 @@ import javax.validation.constraints.NotBlank;
/**
* @ClassName LoginParam
* @Author hupeng <610796224@qq.com>
* @Date 2020/02/15
* @Date 2020/01/15
**/
@Data
public class LoginParam {

View File

@ -14,6 +14,5 @@ public class VerityParam {
@NotBlank(message = "手机号必填")
private String phone;
@NotBlank
private String type;
}

View File

@ -7,10 +7,12 @@ import co.yixiang.common.web.controller.BaseController;
import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.shop.service.YxStoreProductRelationService;
import co.yixiang.modules.shop.service.YxSystemGroupDataService;
import co.yixiang.modules.user.entity.YxUser;
import co.yixiang.modules.user.service.YxSystemUserLevelService;
import co.yixiang.modules.user.service.YxUserBillService;
import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.modules.user.service.YxUserSignService;
import co.yixiang.modules.user.web.param.UserEditParam;
import co.yixiang.modules.user.web.vo.YxSystemUserLevelQueryVo;
import co.yixiang.modules.user.web.vo.YxUserQueryVo;
import co.yixiang.utils.SecurityUtils;
@ -21,6 +23,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.LinkedHashMap;
@ -219,6 +222,22 @@ public class UserController extends BaseController {
}
@PostMapping("/user/edit")
@ApiOperation(value = "用户修改信息",notes = "用修改信息")
public ApiResult<Object> edit(@Validated @RequestBody UserEditParam param){
int uid = SecurityUtils.getUserId().intValue();
YxUser yxUser = new YxUser();
yxUser.setAvatar(param.getAvatar());
yxUser.setNickname(param.getNickname());
yxUser.setUid(uid);
yxUserService.updateById(yxUser);
return ApiResult.ok("修改成功");
}
}

View File

@ -0,0 +1,21 @@
package co.yixiang.modules.user.web.param;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @ClassName UserEditParam
* @Author hupeng <610796224@qq.com>
* @Date 2020/02/07
**/
@Data
public class UserEditParam implements Serializable {
@NotBlank(message = "请上传头像")
private String avatar;
@NotBlank(message = "请填写昵称")
private String nickname;
}

View File

@ -1,47 +1,129 @@
package co.yixiang.modules.wechat.web.controller;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import co.yixiang.annotation.AnonymousAccess;
import co.yixiang.common.api.ApiResult;
import co.yixiang.exception.ErrorRequestException;
import co.yixiang.modules.notify.NotifyType;
import co.yixiang.modules.notify.SmsResult;
import co.yixiang.modules.security.rest.param.VerityParam;
import co.yixiang.modules.user.entity.YxUser;
import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.modules.user.service.YxWechatUserService;
import co.yixiang.modules.user.web.vo.YxUserQueryVo;
import co.yixiang.modules.wechat.web.param.BindPhoneParam;
import co.yixiang.modules.wechat.web.param.WxPhoneParam;
import co.yixiang.mp.utils.JsonUtils;
import co.yixiang.utils.RedisUtil;
import co.yixiang.utils.RedisUtils;
import co.yixiang.utils.SecurityUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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;
/**
* 微信小程序用户接口
*
* @author xuwenbo
* @author hupeng
* @date 2020/02/07
*/
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Api(value = "微信小程序", tags = "微信小程序", description = "微信小程序")
@Api(value = "微信其他", tags = "微信其他", description = "微信其他")
public class WxMaUserController {
private final WxMaService wxMaService;
private final YxWechatUserService wechatUserService;
private final YxUserService userService;
private final RedisUtils redisUtils;
// /**
// * <pre>
// * 获取用户绑定手机号信息
// * </pre>
// */
// @GetMapping("/phone")
// public String phone(String sessionKey, String signature,
// String rawData, String encryptedData, String iv) {
//
// // 用户信息校验
// if (!wxMaService.getUserService().checkUserInfo(sessionKey, rawData, signature)) {
// return "user check failed";
// }
//
// // 解密
// WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
//
// return JsonUtils.toJson(phoneNoInfo);
// }
@PostMapping("/binding")
@ApiOperation(value = "公众号绑定手机号", notes = "公众号绑定手机号")
public ApiResult<String> verify(@Validated @RequestBody BindPhoneParam param) {
Object codeObj = redisUtils.get("code_" + param.getPhone());
if(codeObj == null){
return ApiResult.fail("请先获取验证码");
}
String code = codeObj.toString();
if (!StrUtil.equals(code, param.getCaptcha())) {
return ApiResult.fail("验证码错误");
}
int uid = SecurityUtils.getUserId().intValue();
YxUserQueryVo userQueryVo = userService.getYxUserById(uid);
if(StrUtil.isNotBlank(userQueryVo.getPhone())){
return ApiResult.fail("您的账号已经绑定过手机号码");
}
YxUser yxUser = new YxUser();
yxUser.setPhone(param.getPhone());
yxUser.setUid(uid);
userService.updateById(yxUser);
return ApiResult.ok("绑定成功");
}
@PostMapping("/wxapp/binding")
@ApiOperation(value = "小程序绑定手机号", notes = "小程序绑定手机号")
public ApiResult<String> phone(@Validated @RequestBody WxPhoneParam param) {
int uid = SecurityUtils.getUserId().intValue();
YxUserQueryVo userQueryVo = userService.getYxUserById(uid);
if(StrUtil.isNotBlank(userQueryVo.getPhone())){
return ApiResult.fail("您的账号已经绑定过手机号码");
}
//读取redis配置
String appId = RedisUtil.get("wxapp_appId");
String secret = RedisUtil.get("wxapp_secret");
if (StrUtil.isBlank(appId) || StrUtil.isBlank(secret)) {
throw new ErrorRequestException("请先配置小程序");
}
WxMaDefaultConfigImpl wxMaConfig = new WxMaDefaultConfigImpl();
wxMaConfig.setAppid(appId);
wxMaConfig.setSecret(secret);
wxMaService.setWxMaConfig(wxMaConfig);
try {
WxMaJscode2SessionResult session = wxMaService.getUserService()
.getSessionInfo(param.getCode());
// 解密
WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService()
.getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
YxUser yxUser = new YxUser();
yxUser.setPhone(phoneNoInfo.getPhoneNumber());
yxUser.setUid(uid);
userService.updateById(yxUser);
} catch (WxErrorException e) {
e.printStackTrace();
}
return ApiResult.ok("绑定成功");
}

View File

@ -0,0 +1,21 @@
package co.yixiang.modules.wechat.web.param;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName BindPhoneParam
* @Author hupeng <610796224@qq.com>
* @Date 2020/2/7
**/
@Getter
@Setter
public class BindPhoneParam {
@NotBlank(message = "验证码必填")
private String captcha;
@NotBlank(message = "手机号必填")
private String phone;
}

View File

@ -0,0 +1,23 @@
package co.yixiang.modules.wechat.web.param;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName WxPhoneParam
* @Author hupeng <610796224@qq.com>
* @Date 2020/02/07
**/
@Getter
@Setter
public class WxPhoneParam {
@NotBlank(message = "code参数缺失")
private String code;
private String encryptedData;
private String iv;
}