注册手机号码,升级会员

master
382696293@qq.com 2 years ago
parent 7b7f6d974c
commit 74918a1825

@ -70,4 +70,6 @@ public interface WxUserMemberMapper {
public void insertTouristUser(WxUserMember wxUserMember);
WxUserMember selectWxUserMemberByOpenId(@Param("openid") String openid);
void upgradeMember(@Param("phoneNumber") String phoneNumber, @Param("id") String id);
}

@ -182,6 +182,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</update>
<update id="upgradeMember">
UPDATE `wx_user_member`
SET `user_type` = 2,
`level` = 1,
`mobile` = #{phoneNumber},
`login_time` = sysdate(),
`update_time` = sysdate()
WHERE
`id` = #{id};
</update>
<delete id="deleteWxUserMemberById" parameterType="Long">
delete from wx_user_member where id = #{id}
</delete>

@ -34,5 +34,15 @@ public class UserMemberController extends BaseController {
return AjaxResult.success(wxUserMemberService.login(code, rawData, signature));
}
/**
*
* 1 wx.login
* 2getPhoneNumber code wx.login code
*
* @param code
* @return
*/
public AjaxResult upgradeMember(@RequestParam(value = "code") String code) throws Exception {
return wxUserMemberService.upgradeMember(code);
}
}

@ -0,0 +1,41 @@
package com.flossom.miniProgram.domain.vo;
public class PhoneInfo {
private String phoneNumber;
private String purePhoneNumber;
private String countryCode;
public PhoneInfo() {
}
public PhoneInfo(String phoneNumber, String purePhoneNumber, String countryCode) {
this.phoneNumber = phoneNumber;
this.purePhoneNumber = purePhoneNumber;
this.countryCode = countryCode;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getPurePhoneNumber() {
return purePhoneNumber;
}
public void setPurePhoneNumber(String purePhoneNumber) {
this.purePhoneNumber = purePhoneNumber;
}
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
}

@ -0,0 +1,44 @@
package com.flossom.miniProgram.domain.vo;
/**
*
*/
public class WxCode2PhoneRet {
private PhoneInfo phoneInfo;
private Integer errcode;
private String errmsg;
public WxCode2PhoneRet() {
}
public WxCode2PhoneRet(PhoneInfo phoneInfo, Integer errcode, String errmsg) {
this.phoneInfo = phoneInfo;
this.errcode = errcode;
this.errmsg = errmsg;
}
public PhoneInfo getPhoneInfo() {
return phoneInfo;
}
public void setPhoneInfo(PhoneInfo phoneInfo) {
this.phoneInfo = phoneInfo;
}
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
}

@ -1,5 +1,6 @@
package com.flossom.miniProgram.service;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.hzMapper.domain.WxUserMember;
import com.flossom.miniProgram.domain.vo.LoginUserVo;
@ -8,4 +9,6 @@ public interface IWxUserMemberService {
LoginUserVo obtainUserMemberInfo(Long userNo);
LoginUserVo login(String code, String rawData, String signature) throws Exception;
AjaxResult upgradeMember(String code) throws Exception;
}

@ -8,9 +8,11 @@ import com.flossom.common.core.domain.R;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.web.domain.AjaxResult;
import com.flossom.common.redis.service.RedisService;
import com.flossom.common.security.utils.SecurityUtils;
import com.flossom.hzMapper.domain.WxUserMember;
import com.flossom.hzMapper.mapper.WxUserMemberMapper;
import com.flossom.miniProgram.domain.vo.LoginUserVo;
import com.flossom.miniProgram.domain.vo.WxCode2PhoneRet;
import com.flossom.miniProgram.domain.vo.WxCode2SessionRet;
import com.flossom.miniProgram.service.IWxUserMemberService;
import com.flossom.miniProgram.utils.MiniProgramUtils;
@ -19,6 +21,7 @@ import com.flossom.system.api.RemoteUserService;
import com.flossom.system.api.domain.LoginBody;
import com.flossom.system.api.domain.RegisterBody;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@ -85,7 +88,7 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
public LoginUserVo login(String code, String rawData, String signature) throws Exception {
// 1、使用临时凭证 code 获取 appi + appsecret + code
WxCode2SessionRet wxCode2SessionRet = JSON.parseObject(MiniProgramUtils.getSessionKeyAndOpenId(code), WxCode2SessionRet.class);
if (0 != wxCode2SessionRet.getErrcode()) {
if (200 != wxCode2SessionRet.getErrcode()) {
logger.error(wxCode2SessionRet.getErrmsg());
return null;
}
@ -152,5 +155,22 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
return loginUserVo;
}
@Override
public AjaxResult upgradeMember(String code) throws Exception {
WxCode2PhoneRet wxCode2PhoneRet = JSON.parseObject(MiniProgramUtils.getPhone(code), WxCode2PhoneRet.class);
if (wxCode2PhoneRet.getErrcode() != 200) {
logger.error("用户手机号码获取失败");
return AjaxResult.error("手机号获取失败");
}
String username = SecurityUtils.getLoginUser().getUsername();
if (StringUtils.isBlank(username)) {
logger.error("获取用户信息失败");
return AjaxResult.error("获取用户信息失败");
}
String id = username.replace(UserConstants.WX_SYSTEM_USER_USERNAME, "");
wxUserMemberMapper.upgradeMember(wxCode2PhoneRet.getPhoneInfo().getPhoneNumber(), id);
return AjaxResult.success();
}
}

@ -12,32 +12,33 @@ public class MiniProgramUtils {
private static final String WX_SECRET = "";
private static final String loginUrl = "https://api.weixin.qq.com/sns/jscode2session";
private static final String getPhoneUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
public static String getSessionKeyAndOpenId(String jsCode) throws Exception {
return getSessionKeyAndOpenId(WX_APPID, WX_SECRET, jsCode, "authorization_code");
}
/**
* code openid session_key
* code openid session_key
*
* @param appid
* @param secret
* @param jsCode
* @param grant_type
*
*
* @return <p>
* {
* "openid":"xxxxxx",
* "session_key":"xxxxx",
* "unionid":"xxxxx",
* "errcode":0,
* "errmsg":"xxxxx"
* "openid":"xxxxxx",
* "session_key":"xxxxx",
* "unionid":"xxxxx",
* "errcode":0,
* "errmsg":"xxxxx"
* }
*
* <p>
* errcode
* 40029 code js_code
* 45011 api minute-quota reach limit mustslower retry next minute API
* 40226 code blocked
* -1 system error
* 40029 code js_code
* 45011 api minute-quota reach limit mustslower retry next minute API
* 40226 code blocked
* -1 system error
*/
public static String getSessionKeyAndOpenId(String appid, String secret, String jsCode, String grant_type) throws Exception {
Map<String, String> params = new HashMap<>();
@ -48,5 +49,22 @@ public class MiniProgramUtils {
return HttpClientUtils.getParameters(loginUrl, params);
}
/**
* @param code
* @return <p></p>
* errcode number
* errmsg string
* phone_info object
*
* phoneNumber string
* purePhoneNumber string
* countryCode string
*/
public static String getPhone(String code) throws Exception {
Map<String, String> params = new HashMap();
params.put("code", code);
return HttpClientUtils.postParameters(getPhoneUrl, params);
}
}

Loading…
Cancel
Save