Commit 9b73ae56 by chongli

微信小程序

parent eb0d269b
...@@ -144,6 +144,15 @@ public class VoucherController { ...@@ -144,6 +144,15 @@ public class VoucherController {
return response; return response;
} }
@ResponseBody
@RequestMapping(value = "/sendVoucherForMiniAppRegister", method = RequestMethod.POST)
public Response<String> sendVoucherForMiniAppRegister(@RequestBody Request<VoucherQueryDto> request) {
Response<String> response = new Response<String>();
response.setBody(voucherService.sendVoucherForMiniAppRegister(request.getBody()));
response.setStatusEnum(ResponseStatusEnum.SUCCESS);
return response;
}
@ResponseBody @ResponseBody
@RequestMapping(value = "/queryListForMiniApps", method = RequestMethod.POST) @RequestMapping(value = "/queryListForMiniApps", method = RequestMethod.POST)
......
...@@ -167,7 +167,7 @@ public class UserController { ...@@ -167,7 +167,7 @@ public class UserController {
response.setBody(userService.register(request.getBody())); response.setBody(userService.register(request.getBody()));
return response; return response;
} }
//小程序授权登录,返回token,如果为空表示未关联
@ResponseBody @ResponseBody
@RequestMapping(value = "/loginMiniApp", method = RequestMethod.POST) @RequestMapping(value = "/loginMiniApp", method = RequestMethod.POST)
public Response<MiniAppLoginResultBean> loginMiniApp(@RequestBody Request<WeChatAppLoginReq> request) throws Exception { public Response<MiniAppLoginResultBean> loginMiniApp(@RequestBody Request<WeChatAppLoginReq> request) throws Exception {
...@@ -178,24 +178,24 @@ public class UserController { ...@@ -178,24 +178,24 @@ public class UserController {
return response; return response;
} }
//小程序没有手机号
@ResponseBody @ResponseBody
@RequestMapping(value = "/getUserInfoForMiniApp", method = RequestMethod.POST) @RequestMapping(value = "/miniAppLoginByDynamicPassword", method = RequestMethod.POST)
public Response<Map<String,String>> getUserInfoForMiniApp(@RequestBody Request<String> request) throws Exception { public Response<MiniAppLoginResultBean> miniAppLoginByDynamicPassword(@RequestBody Request<WeChatAppLoginReq> request) throws Exception {
Response<Map<String,String>> response = new Response<Map<String,String>>(); Response<MiniAppLoginResultBean> response = new Response<MiniAppLoginResultBean>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue()); response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg()); response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
response.setBody(userService.getUserInfoForMiniApp(request.getBody())); response.setBody(userService.miniAppLoginByDynamicPassword(request.getBody()));
return response; return response;
} }
//小程序没有手机号
@ResponseBody @ResponseBody
@RequestMapping(value = "/miniAppLoginByDynamicPassword", method = RequestMethod.POST) @RequestMapping(value = "/getUserInfoForMiniApp", method = RequestMethod.POST)
public Response<MiniAppLoginResultBean> miniAppLoginByDynamicPassword(@RequestBody Request<MiniAppLoginBean> request) throws Exception { public Response<Map<String,String>> getUserInfoForMiniApp(@RequestBody Request<String> request) throws Exception {
Response<MiniAppLoginResultBean> response = new Response<MiniAppLoginResultBean>(); Response<Map<String,String>> response = new Response<Map<String,String>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue()); response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg()); response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
response.setBody(userService.miniAppLoginByDynamicPassword(request.getBody())); response.setBody(userService.getUserInfoForMiniApp(request.getBody()));
return response; return response;
} }
......
...@@ -1149,6 +1149,14 @@ public class UserExtDao extends GenericHibernateDao<UserExt, Integer> { ...@@ -1149,6 +1149,14 @@ public class UserExtDao extends GenericHibernateDao<UserExt, Integer> {
} }
public int updateHasMPRegisterVoucher(String uid) {
String sql = "update UserExt set hasMPRegisterVoucher=1 where uid=:uid";
Query query = getSession().createQuery(sql);
query.setParameter("uid", uid);
return query.executeUpdate();
}
public PagedResponseBean<UserExtBean> getUserExtByName(UserExtQuery qu) { public PagedResponseBean<UserExtBean> getUserExtByName(UserExtQuery qu) {
Session session = this.getSession(); Session session = this.getSession();
String queryByName = ""; String queryByName = "";
...@@ -1195,12 +1203,12 @@ public class UserExtDao extends GenericHibernateDao<UserExt, Integer> { ...@@ -1195,12 +1203,12 @@ public class UserExtDao extends GenericHibernateDao<UserExt, Integer> {
} }
public int updateWeiXinInfoMore(UserExt userext2) { public int updateWeiXinInfoMore(UserExt userext2) {
String sql = "update UserExt set unionId=:unionId,miniAppOpenId=:miniAppOpenId,miniAppSessionKey=:miniAppSessionKey,nickName=:nickName,headImgUrl=:headImgUrl where extID=:extID"; String sql = "update UserExt set inviterUid=:inviterUid,unionId=:unionId,miniAppOpenId=:miniAppOpenId,miniAppSessionKey=:miniAppSessionKey,headImgUrl=:headImgUrl where extID=:extID";
Query query = getSession().createQuery(sql); Query query = getSession().createQuery(sql);
query.setParameter("inviterUid", userext2.getInviterUid());
query.setParameter("unionId", userext2.getUnionId()); query.setParameter("unionId", userext2.getUnionId());
query.setParameter("miniAppOpenId", userext2.getMiniAppOpenId()); query.setParameter("miniAppOpenId", userext2.getMiniAppOpenId());
query.setParameter("miniAppSessionKey", userext2.getMiniAppSessionKey()); query.setParameter("miniAppSessionKey", userext2.getMiniAppSessionKey());
query.setParameter("nickName", userext2.getNickName());
query.setParameter("headImgUrl", userext2.getHeadImgUrl()); query.setParameter("headImgUrl", userext2.getHeadImgUrl());
query.setParameter("extID", userext2.getExtID()); query.setParameter("extID", userext2.getExtID());
return query.executeUpdate(); return query.executeUpdate();
......
...@@ -352,6 +352,9 @@ public class UserExt implements java.io.Serializable { ...@@ -352,6 +352,9 @@ public class UserExt implements java.io.Serializable {
/** 爱好 */ /** 爱好 */
private String hobby; private String hobby;
private String inviterUid;//邀请人uid
private Integer hasMPRegisterVoucher;//小程序注册是否已经送券
...@@ -375,6 +378,11 @@ public class UserExt implements java.io.Serializable { ...@@ -375,6 +378,11 @@ public class UserExt implements java.io.Serializable {
this.uid = uid; this.uid = uid;
} }
@Column(name = "hasMPRegisterVoucher")
public Integer getHasMPRegisterVoucher() {
return hasMPRegisterVoucher;
}
@Column(name = "PrePayCardAmount", nullable = false, precision = 10) @Column(name = "PrePayCardAmount", nullable = false, precision = 10)
public BigDecimal getPrePayCardAmount() { public BigDecimal getPrePayCardAmount() {
return this.prePayCardAmount; return this.prePayCardAmount;
...@@ -716,6 +724,11 @@ public class UserExt implements java.io.Serializable { ...@@ -716,6 +724,11 @@ public class UserExt implements java.io.Serializable {
this.unionId = unionId; this.unionId = unionId;
} }
@Column(name = "inviterUid", length = 50)
public String getInviterUid() {
return inviterUid;
}
@Column(name = "openId", length = 128) @Column(name = "openId", length = 128)
public String getOpenId() { public String getOpenId() {
return openId; return openId;
...@@ -1007,7 +1020,12 @@ public class UserExt implements java.io.Serializable { ...@@ -1007,7 +1020,12 @@ public class UserExt implements java.io.Serializable {
this.hobby = hobby; this.hobby = hobby;
} }
public void setInviterUid(String inviterUid) {
this.inviterUid = inviterUid;
}
public void setHasMPRegisterVoucher(Integer hasMPRegisterVoucher) {
this.hasMPRegisterVoucher = hasMPRegisterVoucher;
}
} }
package com.ctrip.fun.golf.service.basic; package com.ctrip.fun.golf.service.basic;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
...@@ -12,10 +13,18 @@ import java.util.List; ...@@ -12,10 +13,18 @@ import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import com.alibaba.fastjson.JSONObject;
import com.ctrip.fun.common.core.exceptions.service.ServiceException; import com.ctrip.fun.common.core.exceptions.service.ServiceException;
import com.ctrip.fun.common.core.util.BeanConverter; import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil; import com.ctrip.fun.common.core.util.DateUtil;
...@@ -50,18 +59,23 @@ import com.ctrip.fun.golf.dao.basic.VoucherDao; ...@@ -50,18 +59,23 @@ import com.ctrip.fun.golf.dao.basic.VoucherDao;
import com.ctrip.fun.golf.dao.basic.VoucherGetLogDao; import com.ctrip.fun.golf.dao.basic.VoucherGetLogDao;
import com.ctrip.fun.golf.dao.basic.VoucherRuleDao; import com.ctrip.fun.golf.dao.basic.VoucherRuleDao;
import com.ctrip.fun.golf.dao.basic.VoucherShareLogDao; import com.ctrip.fun.golf.dao.basic.VoucherShareLogDao;
import com.ctrip.fun.golf.dao.client.ClientConfigDao;
import com.ctrip.fun.golf.dao.membership.ConfigDao;
import com.ctrip.fun.golf.dao.order.EventActivityOrderItemDao; import com.ctrip.fun.golf.dao.order.EventActivityOrderItemDao;
import com.ctrip.fun.golf.dao.order.OrderDao; import com.ctrip.fun.golf.dao.order.OrderDao;
import com.ctrip.fun.golf.dao.product.CourseResourceDao; import com.ctrip.fun.golf.dao.product.CourseResourceDao;
import com.ctrip.fun.golf.dao.tour.TourBasicDao; import com.ctrip.fun.golf.dao.tour.TourBasicDao;
import com.ctrip.fun.golf.dao.user.UserExtDao;
import com.ctrip.fun.golf.domain.basic.OperationMessage; import com.ctrip.fun.golf.domain.basic.OperationMessage;
import com.ctrip.fun.golf.domain.basic.Sms; import com.ctrip.fun.golf.domain.basic.Sms;
import com.ctrip.fun.golf.domain.basic.Voucher; import com.ctrip.fun.golf.domain.basic.Voucher;
import com.ctrip.fun.golf.domain.basic.VoucherGetLog; import com.ctrip.fun.golf.domain.basic.VoucherGetLog;
import com.ctrip.fun.golf.domain.basic.VoucherRule; import com.ctrip.fun.golf.domain.basic.VoucherRule;
import com.ctrip.fun.golf.domain.basic.VoucherShareLog; import com.ctrip.fun.golf.domain.basic.VoucherShareLog;
import com.ctrip.fun.golf.domain.client.ClientConfig;
import com.ctrip.fun.golf.domain.product.CourseResource; import com.ctrip.fun.golf.domain.product.CourseResource;
import com.ctrip.fun.golf.domain.tour.TourBasic; import com.ctrip.fun.golf.domain.tour.TourBasic;
import com.ctrip.fun.golf.domain.user.UserExt;
import com.ctrip.fun.golf.exceptions.VoucherException; import com.ctrip.fun.golf.exceptions.VoucherException;
import com.ctrip.fun.golf.vo.PagedEntityBean; import com.ctrip.fun.golf.vo.PagedEntityBean;
import com.ctrip.fun.mall.vo.LabelValueBean; import com.ctrip.fun.mall.vo.LabelValueBean;
...@@ -84,6 +98,11 @@ public class VoucherService { ...@@ -84,6 +98,11 @@ public class VoucherService {
private OrderDao orderDao = null; private OrderDao orderDao = null;
private TourBasicDao tourBasicDao; private TourBasicDao tourBasicDao;
@Autowired
private ClientConfigDao clientConfigDao = null;
@Autowired
private UserExtDao userExtDao = null;
private int remindExpireVoucherDay = 7; private int remindExpireVoucherDay = 7;
public VoucherDao getVoucherDao() { public VoucherDao getVoucherDao() {
...@@ -660,6 +679,51 @@ public class VoucherService { ...@@ -660,6 +679,51 @@ public class VoucherService {
} }
public void executeOrderActive(String uid,String voucherSendType){
ClientConfig clientConfig = clientConfigDao.getByType(voucherSendType);
//社员订单赠送优惠券配置:431_sendBeginTime_sendEndTime(规则id_开始发送时间_结束发送方式)
String commune_voucher = clientConfig.getMessage();
JSONObject jsobj = JSONObject.parseObject(commune_voucher);
try {
Date sendBeginTime = DateUtil.parseDateTime(jsobj.getString("sendBeginTime"));
Date sendEndTime = DateUtil.parseDateTime(jsobj.getString("sendEndTime"));
Date now = new Date();
if(sendBeginTime.getTime()<now.getTime()&&now.getTime()<sendEndTime.getTime()){
String[] ids = jsobj.getString("id").split(",");
for(String id:ids){
VoucherRule voucherRule = this.getVoucherRuleDao().findById(Integer.parseInt(id));
this.getVoucherDao().sendVoucherToSpecificUsers(voucherRule, "'"+uid+"'", voucherRule.getQuantity());
}
}
} catch (ParseException e) {
e.printStackTrace();
}
}
public String sendVoucherForMiniAppRegister(VoucherQueryDto queryBean) {
ClientConfig clientConfig = clientConfigDao.getByType("sendVoucherConfig");
String miniAppRegisterControl = clientConfig.getMessage();
JSONObject jsobj = JSONObject.parseObject(miniAppRegisterControl);
UserExt userext = userExtDao.getByUid(queryBean.getUid());
Integer hasMPRegisterVoucher = userext.getHasMPRegisterVoucher();
if(hasMPRegisterVoucher==null||hasMPRegisterVoucher==0){
int isOpen = jsobj.getIntValue("isOpen");
if(isOpen==1){
userExtDao.updateHasMPRegisterVoucher(userext.getUid());
if("1".equals(queryBean.getIsCommune())){
this.executeOrderActive(queryBean.getUid(), "sendVoucherToCommune");
return jsobj.getString("communeMessage");
}else if("0".equals(queryBean.getIsCommune())){
this.executeOrderActive(queryBean.getUid(), "sendVoucherToNonCommune");
return jsobj.getString("nonCommuneMessage");
}
}
}
return "";
}
public PagedResponseBean<VoucherItemDTO> queryListForMiniApps(VoucherQueryDto queryBean) { public PagedResponseBean<VoucherItemDTO> queryListForMiniApps(VoucherQueryDto queryBean) {
return voucherDao.queryListForMiniApps(queryBean); return voucherDao.queryListForMiniApps(queryBean);
} }
......
...@@ -806,59 +806,80 @@ public class UserService { ...@@ -806,59 +806,80 @@ public class UserService {
return registerResultBean; return registerResultBean;
} }
//根据微信相关信息,获取系统token
public MiniAppLoginResultBean loginMiniApp(WeChatAppLoginReq req) throws Exception { public MiniAppLoginResultBean loginMiniApp(WeChatAppLoginReq req) throws Exception {
MiniAppLoginResultBean miniAppLoginResultBean = new MiniAppLoginResultBean(); MiniAppLoginResultBean miniAppLoginResultBean = new MiniAppLoginResultBean();
Request<String> request11 = new Request<String>(); JSONObject weiXinInfoJSON = this.getWeiXinInfoJSON(req);
request11.setBody(req.getCode()); String unionid = weiXinInfoJSON.getString("unionId");
HttpEntity<Request<String>> entity = new HttpEntity<Request<String>>(request11);
String uri = this.prop.getProperty("uri.weiXin.jscodeToSessionPath");
Response<String> response = this.exchange(uri, HttpMethod.POST, entity, new ParameterizedTypeReference<Response<String>>() {}).getBody();
JSONObject jsonObj = JSON.parseObject(response.getBody());
String openId = jsonObj.getString("openid");
String sessionKey = jsonObj.getString("session_key");
String userInfo = "";
try {
byte[] resultByte = AES.decrypt(Base64.decodeBase64(req.getEncryptedData()),Base64.decodeBase64(sessionKey),Base64.decodeBase64(req.getIv()));
userInfo = new String(resultByte, "UTF-8");
}catch (Exception e) {
e.printStackTrace();
}
JSONObject userInfoObj = JSON.parseObject(userInfo);
String unionid = userInfoObj.getString("unionId");
String token = "";
UserExt userExt = userExtDao.getUserExtInfoByWeChatUnionId(unionid); UserExt userExt = userExtDao.getUserExtInfoByWeChatUnionId(unionid);
String token = "";
//用户是否已经注册 //用户是否已经注册
if(userExt!=null){ if(userExt!=null){
if(userExt.getMobilePhone()==null || "".equals(userExt.getMobilePhone())){ if(userExt.getMiniAppOpenId()==null){
miniAppLoginResultBean.setUserMobilePhone(""); userExt.setInviterUid(req.getInviterUid());
token = this.genericToken(unionid, TokenTypeEnum.ACCESS.getKey()); this.updateUserExtWeiXinInfo(userExt, weiXinInfoJSON);
}else{ }
miniAppLoginResultBean.setUserMobilePhone(userExt.getMobilePhone()); token = this.genericToken(userExt.getUid(), TokenTypeEnum.ACCESS.getKey());
token = this.genericToken(userExt.getMobilePhone(), TokenTypeEnum.ACCESS.getKey()); }
} miniAppLoginResultBean.setToken(token);
//更新用户的昵称和 if(userExt!=null){
userExt.setUnionId(unionid); miniAppLoginResultBean.setUserId(userExt.getUid());
userExt.setMiniAppOpenId(openId); }
userExt.setMiniAppSessionKey(sessionKey); return miniAppLoginResultBean;
userExt.setNickName(userInfoObj.getString("nickName")); }
userExt.setHeadImgUrl(userInfoObj.getString("avatarUrl"));
userExtDao.updateWeiXinInfoMore(userExt);
/**
* 动态密码登录
*
* @param request
* @return
*/
public MiniAppLoginResultBean miniAppLoginByDynamicPassword(WeChatAppLoginReq req) {
MiniAppLoginResultBean miniAppLoginResultBean = new MiniAppLoginResultBean();
this.checkMobileNo(req.getUserMobilePhone());
UserVerifyCode userVerifyCode = this.userVerifyCodeDao.checkVerifyCode(
req.getUserMobilePhone(), VerifyType.VERIFY_CODE.getValue(),
Integer.parseInt(req.getVerifyCode()));
if (userVerifyCode == null) {
throw new UserException(302, "验证码不正确或验证码过期");
}
if (userVerifyCode.getVerifyTimes() == maxTimes) {
throw new UserException(301, "验证码验证错误次数超过限制");
}
String token = "";
UserExt userext = userExtDao.getUserInfoForMiniApp(req.getUserMobilePhone());
JSONObject weiXinInfoJSON = this.getWeiXinInfoJSON(req);
//如果验证的手机号已经注册,则设置该手机号对应的微信信息
if(userext!=null){
if(userext.getMiniAppOpenId()==null){
userext.setInviterUid(req.getInviterUid());
this.updateUserExtWeiXinInfo(userext, weiXinInfoJSON);
}
}else{ }else{
miniAppLoginResultBean.setUserMobilePhone(""); //否则生成新的用户信息
UserExt newUserExt = new UserExt(); BasicUser basicUser = new BasicUser();
newUserExt.setUnionId(unionid); basicUser.setUid(req.getUserMobilePhone());
newUserExt.setMiniAppOpenId(openId); String randomPassword = EncryptUtil.getRandomString(6);
newUserExt.setMiniAppSessionKey(sessionKey); String encryptMD5 = EncryptUtil.getMD5Str(randomPassword).toUpperCase();
newUserExt.setGender(userInfoObj.getString("gender")); byte[] saltByte = EncryptUtil.generateSalt();
newUserExt.setCity(userInfoObj.getString("city")); basicUser.setPassword(EncryptUtil.toHex(EncryptUtil.getEncryptedPassword(encryptMD5,saltByte)));
newUserExt.setProvince(userInfoObj.getString("province")); basicUser.setSalt(EncryptUtil.toHex(saltByte));
newUserExt.setNickName(userInfoObj.getString("nickName")); basicUser.setMobilePhone(req.getUserMobilePhone());
newUserExt.setHeadImgUrl(userInfoObj.getString("avatarUrl")); this.basicUserDao.save(basicUser);
userext = new UserExt();
newUserExt.setUid(""); userext.setInviterUid(req.getInviterUid());
newUserExt.setPrePayCardAmount(BigDecimal.valueOf(0)); userext.setUid(req.getUserMobilePhone());
newUserExt.setLockedPrePayCardAmount(BigDecimal.valueOf(0)); userext.setUnionId(weiXinInfoJSON.getString("unionId"));
userext.setMiniAppOpenId(weiXinInfoJSON.getString("openId") );
userext.setMiniAppSessionKey(weiXinInfoJSON.getString("session_key"));
userext.setGender(weiXinInfoJSON.getString("gender"));
userext.setCity(weiXinInfoJSON.getString("city"));
userext.setProvince(weiXinInfoJSON.getString("province"));
userext.setNickName(weiXinInfoJSON.getString("nickName"));
userext.setHeadImgUrl(weiXinInfoJSON.getString("avatarUrl"));
userext.setPrePayCardAmount(BigDecimal.valueOf(0));
userext.setLockedPrePayCardAmount(BigDecimal.valueOf(0));
String strCode = EncryptUtil.getRandomString(8); String strCode = EncryptUtil.getRandomString(8);
int i = 0; int i = 0;
// 设置推荐码 // 设置推荐码
...@@ -872,44 +893,77 @@ public class UserService { ...@@ -872,44 +893,77 @@ public class UserService {
strCode = ""; strCode = "";
} }
} }
newUserExt.setRecommendCode(strCode); userext.setRecommendCode(strCode);
newUserExt.setRecommendByCode(""); userext.setRecommendByCode("");
newUserExt.setUseVersion(""); userext.setUseVersion("");
newUserExt.setUseTerminalType(10); userext.setUseTerminalType(10);
newUserExt.setTerminalType(10); userext.setTerminalType(10);
newUserExt.setLng(""); userext.setLng("");
newUserExt.setLat(""); userext.setLat("");
newUserExt.setDeviceID(""); userext.setDeviceID("");
newUserExt.setOsVersion(""); userext.setOsVersion("");
newUserExt.setCanUseRecommendCode(1); userext.setCanUseRecommendCode(1);
newUserExt.setFirstLoginTime(null); userext.setFirstLoginTime(null);
newUserExt.setLastLoginTime(null); userext.setLastLoginTime(null);
newUserExt.setRegisterTime(new Date()); userext.setRegisterTime(new Date());
newUserExt.setIsSendAmt(0); userext.setIsSendAmt(0);
newUserExt.setSendAmt(BigDecimal.valueOf(0)); userext.setSendAmt(BigDecimal.valueOf(0));
newUserExt.setSourceId("golf"); userext.setSourceId("golf");
newUserExt.setUserName(""); userext.setUserName("");
newUserExt.setUmNickName(""); userext.setUmNickName("");
newUserExt.setMobilePhone(""); userext.setMobilePhone(req.getUserMobilePhone());
newUserExt.setEmail(""); userext.setEmail("");
newUserExt.setBindedEmail(""); userext.setBindedEmail("");
newUserExt.setBindedMobilePhone(""); userext.setBindedMobilePhone(req.getUserMobilePhone());
newUserExt.setBirth(""); userext.setBirth("");
newUserExt.setUserGrade(0); userext.setUserGrade(0);
newUserExt.setChannelNo(""); userext.setChannelNo("");
newUserExt.setLoginTimes(0L); userext.setLoginTimes(0L);
newUserExt.setVipGrade(0); userext.setVipGrade(0);
newUserExt.setCommuneYears(0); userext.setCommuneYears(0);
newUserExt.setHandicap(23); userext.setHandicap(23);
userExtDao.save(newUserExt); userExtDao.save(userext);
token = this.genericToken(unionid, TokenTypeEnum.ACCESS.getKey()); }
} token = this.genericToken(userext.getUid(), TokenTypeEnum.ACCESS.getKey());
miniAppLoginResultBean.setToken(token); miniAppLoginResultBean.setToken(token);
miniAppLoginResultBean.setUserId(userext.getUid());
return miniAppLoginResultBean; return miniAppLoginResultBean;
} }
//更新用户的微信相关的信息
private void updateUserExtWeiXinInfo(UserExt userExt,JSONObject weiXinJson){
userExt.setUnionId(weiXinJson.getString("unionId"));
userExt.setMiniAppOpenId(weiXinJson.getString("openId"));
userExt.setMiniAppSessionKey(weiXinJson.getString("session_key"));
userExt.setHeadImgUrl(weiXinJson.getString("avatarUrl"));
userExtDao.updateWeiXinInfoMore(userExt);
}
//获取微信相关信息
private JSONObject getWeiXinInfoJSON(WeChatAppLoginReq req){
Request<String> request11 = new Request<String>();
request11.setBody(req.getCode());
HttpEntity<Request<String>> entity = new HttpEntity<Request<String>>(request11);
String uri = this.prop.getProperty("uri.weiXin.jscodeToSessionPath");
Response<String> response = this.exchange(uri, HttpMethod.POST, entity, new ParameterizedTypeReference<Response<String>>() {}).getBody();
JSONObject jsonObj = JSON.parseObject(response.getBody());
String sessionKey = jsonObj.getString("session_key");
String userInfo = "";
try {
byte[] resultByte = AES.decrypt(Base64.decodeBase64(req.getEncryptedData()),Base64.decodeBase64(sessionKey),Base64.decodeBase64(req.getIv()));
userInfo = new String(resultByte, "UTF-8");
}catch (Exception e) {
e.printStackTrace();
}
JSONObject weiXinJson = JSON.parseObject(userInfo);
return weiXinJson;
}
public Map<String,String> getUserInfoForMiniApp(String mobilePhone) throws Exception { public Map<String,String> getUserInfoForMiniApp(String mobilePhone) throws Exception {
Map<String,String> map =new HashMap<String,String>(); Map<String,String> map =new HashMap<String,String>();
UserExt ext = userExtDao.getUserInfoForMiniApp(mobilePhone); UserExt ext = userExtDao.getUserInfoForMiniApp(mobilePhone);
...@@ -1228,65 +1282,6 @@ public class UserService { ...@@ -1228,65 +1282,6 @@ public class UserService {
this.userErrorLoginDao.save(userErrorLogin); this.userErrorLoginDao.save(userErrorLogin);
} }
/**
* 动态密码登录
*
* @param request
* @return
*/
public MiniAppLoginResultBean miniAppLoginByDynamicPassword(MiniAppLoginBean request) {
this.checkMobileNo(request.getUserMobilePhone());
UserVerifyCode userVerifyCode = this.userVerifyCodeDao.checkVerifyCode(
request.getUserMobilePhone(), VerifyType.VERIFY_CODE.getValue(),
Integer.parseInt(request.getVerifyCode()));
if (userVerifyCode == null) {
throw new UserException(302, "验证码不正确或验证码过期");
}
if (userVerifyCode.getVerifyTimes() == maxTimes) {
throw new UserException(301, "验证码验证错误次数超过限制");
}
UserToken userToken = userTokenDao.getUserTokenByToken(request.getToken(),TokenTypeEnum.ACCESS.getKey());
String unionid = userToken.getUserId();
UserExt userext1 = userExtDao.getUserExtInfoByWeChatUnionId(unionid);
UserExt userext2 = userExtDao.GetUserExtInfoByPhone(request.getUserMobilePhone());
//如果验证的手机号已经注册,则设置该手机号对应的union,并删除之前用unionid添加的userext;否则注册到登录用户表,完善userext1信息
if(userext2!=null){
userext2.setUnionId(unionid);
userext2.setMiniAppOpenId(userext1.getMiniAppOpenId());
userext2.setMiniAppSessionKey(userext1.getMiniAppSessionKey());
userExtDao.updateWeiXinInfo(userext2);
userExtDao.deleteByExtID(userext1.getExtID());
}else{
BasicUser basicUser = new BasicUser();
basicUser.setUid(request.getUserMobilePhone());
String randomPassword = EncryptUtil.getRandomString(6);
String encryptMD5 = EncryptUtil.getMD5Str(randomPassword).toUpperCase();
byte[] saltByte = EncryptUtil.generateSalt();
basicUser.setPassword(EncryptUtil.toHex(EncryptUtil.getEncryptedPassword(encryptMD5,
saltByte)));
basicUser.setSalt(EncryptUtil.toHex(saltByte));
basicUser.setMobilePhone(request.getUserMobilePhone());
this.basicUserDao.save(basicUser);
userext1.setMobilePhone(request.getUserMobilePhone());
userext1.setUid(request.getUserMobilePhone());
userext1.setBindedMobilePhone(request.getUserMobilePhone());
userExtDao.updateUserExtByUnionid(userext1);
}
//使用token实现了手机号绑定微信,更新token的手机号
userTokenDao.updateUserIdByToken(request.getToken(), request.getUserMobilePhone());
userToken.setUserId(request.getUserMobilePhone());
MiniAppLoginResultBean miniAppLoginResultBean = new MiniAppLoginResultBean();
miniAppLoginResultBean.setToken(request.getToken());
miniAppLoginResultBean.setUserMobilePhone(request.getUserMobilePhone());
return miniAppLoginResultBean;
}
/** /**
* 动态密码登录 * 动态密码登录
......
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 sign in to comment