记得上下班打卡 | git大法好,push需谨慎

Commit b3744356 authored by jiangxiulong's avatar jiangxiulong

微信回调关注、取消关注;小程序登陆;的微信用户统一整理

parent 997b6382
package com.liquidnet.service.sweet.constant; package com.liquidnet.service.sweet.constant;
/** import com.google.common.collect.FluentIterable;
*
*/
public class SweetConstant { public class SweetConstant {
public final static String REDIS_KEY_SWEET_MANUAL_PUSH_LIST = "sweet:manual:pushList"; public final static String REDIS_KEY_SWEET_MANUAL_PUSH_LIST = "sweet:manual:pushList";
...@@ -20,7 +19,6 @@ public class SweetConstant { ...@@ -20,7 +19,6 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_LUCK_DRAW_ALL = "sweet:luckDraw:num:";//中奖总量 public final static String REDIS_KEY_SWEET_LUCK_DRAW_ALL = "sweet:luckDraw:num:";//中奖总量
public final static String REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE = "sweet:luckDraw:present:mobile:";//中奖库存 public final static String REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE = "sweet:luckDraw:present:mobile:";//中奖库存
public final static String REDIS_KEY_SWEET_MDSK_MANUAL_PUSH_LIST = "sweet:mdsk:manual:pushList"; public final static String REDIS_KEY_SWEET_MDSK_MANUAL_PUSH_LIST = "sweet:mdsk:manual:pushList";
public final static String REDIS_KEY_SWEET_MDSK_MANUAL_TIME_LIST = "sweet:mdsk:manual:timeList:manual:"; public final static String REDIS_KEY_SWEET_MDSK_MANUAL_TIME_LIST = "sweet:mdsk:manual:timeList:manual:";
public final static String REDIS_KEY_SWEET_MDSK_MANUAL_NOTIFY_LIST = "sweet:mdsk:manual:notify:manual:"; public final static String REDIS_KEY_SWEET_MDSK_MANUAL_NOTIFY_LIST = "sweet:mdsk:manual:notify:manual:";
...@@ -29,15 +27,25 @@ public class SweetConstant { ...@@ -29,15 +27,25 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_RELATION = "sweet:mdsk:artists:relation:uid:"; public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_RELATION = "sweet:mdsk:artists:relation:uid:";
public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:"; public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:";
public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:"; public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:";
// 积分活动
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LIST = "sweet:integralActivity:list"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LIST = "sweet:integralActivity:list";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_INFO = "sweet:integralActivity:activityId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_INFO = "sweet:integralActivity:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM = "sweet:integralActivity:prizeNum:activityId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM = "sweet:integralActivity:prizeNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM = "sweet:integralActivity:prizeWinnersNum:activityId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM = "sweet:integralActivity:prizeWinnersNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_ALL_LIST = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER = "sweet:integralActivity:DrawIn:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO = "sweet:integralActivity:DrawInfo:drawId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO = "sweet:integralActivity:DrawInfo:drawId:";
// 答题活动
public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:";
// 城市投票活动
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST=":StatList";
public final static String REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE=":cityCode:";
public final static String REDIS_KEY_SWEET_CITY_VOTE="sweet:cityVote";
public final static String REDIS_KEY_SWEET_CITY_VOTE_USER=":user:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME=":updateTime";
// 微信用户相关
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:zhengzai:unionId:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:zhengzai:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY="sweet:wechatUser:modernsky:unionId:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY="sweet:wechatUser:modernsky:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:zhengzai:openId:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:zhengzai:openId:";
...@@ -47,17 +55,8 @@ public class SweetConstant { ...@@ -47,17 +55,8 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID="sweet:wechatUser:zhengzai:uid:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID="sweet:wechatUser:zhengzai:uid:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID_MODERNSKY="sweet:wechatUser:modernsky:uid:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID_MODERNSKY="sweet:wechatUser:modernsky:uid:";
public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST=":StatList";
public final static String REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE=":cityCode:";
public final static String REDIS_KEY_SWEET_CITY_VOTE="sweet:cityVote";
public final static String REDIS_KEY_SWEET_CITY_VOTE_USER=":user:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME=":updateTime";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_ALL_LIST = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER = "sweet:integralActivity:DrawIn:activityId:";
public final static String REDIS_KEY_SWEET_WECHAT_USERS="sweet:wechatUsers:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USERS_TYPE="type:";
public final static String REDIS_KEY_SWEET_WECHAT_USERS_RELATION="sweet:wechatUsersRelation:mobile:";
} }
...@@ -4,6 +4,7 @@ import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoReq; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoReq;
import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto; import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
...@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.Pattern;
import java.util.List; import java.util.List;
@Component @Component
...@@ -32,4 +34,8 @@ public interface FeignAdamBaseClient { ...@@ -32,4 +34,8 @@ public interface FeignAdamBaseClient {
@PostMapping("rsc/inquire/cuinfo") @PostMapping("rsc/inquire/cuinfo")
ResponseDto<List<AdamChimeUinfoDto>> queryForChimeUserInfo(@RequestBody AdamChimeUinfoReq req); ResponseDto<List<AdamChimeUinfoDto>> queryForChimeUserInfo(@RequestBody AdamChimeUinfoReq req);
@PostMapping(value = {"rsc/reg/mobile"})
ResponseDto<AdamUserInfoVo> registerByMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@RequestParam String mobile);
} }
...@@ -42,7 +42,7 @@ public class SweetWechatActionCallbackController { ...@@ -42,7 +42,7 @@ public class SweetWechatActionCallbackController {
log.info("验签未通过"); log.info("验签未通过");
} }
} catch (Exception e) { } catch (Exception e) {
log.info(e.getMessage()); log.info("验签未通过 [e=[{}]]", e.getMessage());
} }
} }
......
...@@ -6,10 +6,10 @@ import com.liquidnet.commons.lang.util.IDGenerator; ...@@ -6,10 +6,10 @@ import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.config.WechatMpConfigure; import com.liquidnet.service.sweet.config.WechatMpConfigure;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl; import com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
...@@ -36,7 +36,7 @@ import java.util.Map; ...@@ -36,7 +36,7 @@ import java.util.Map;
@Slf4j @Slf4j
public class SubscribeHandler implements WxMpMessageHandler { public class SubscribeHandler implements WxMpMessageHandler {
@Autowired @Autowired
private RedisDataUtils redisDataUtils; private WechatUsersRedisUtils redisUtils;
@Autowired @Autowired
private QueueUtils queueUtils; private QueueUtils queueUtils;
@Autowired @Autowired
...@@ -55,78 +55,49 @@ public class SubscribeHandler implements WxMpMessageHandler { ...@@ -55,78 +55,49 @@ public class SubscribeHandler implements WxMpMessageHandler {
// 1、获取微信用户信息 // 1、获取微信用户信息
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxMessage.getFromUser()); WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxMessage.getFromUser());
if (null == wxMpUser) { if (null == wxMpUser) {
log.warn("从微信公众号获取用户(FromUser)信息:[{}]失败.", wxMessage.getFromUser()); log.error("从微信公众号获取用户(FromUser)信息:[{}]失败.", wxMessage.getFromUser());
return null; return null;
} }
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString()); log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
if (zhengzaiAppId.equals(otherAppId)) {
// 记录用户信息 // 记录用户信息
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(wxMpUser.getUnionId()); Integer type = 0;
SweetWechatUser sweetWechatUser = SweetWechatUser.getNew(); if (zhengzaiAppId.equals(otherAppId)) {// 正在服务号
sweetWechatUser.setOpenId(wxMpUser.getOpenId()); type = 1;
sweetWechatUser.setUnionId(wxMpUser.getUnionId()); } else {// 摩登服务号
sweetWechatUser.setNickname(wxMpUser.getNickname()); type = 2;
sweetWechatUser.setSexDesc(wxMpUser.getSexDesc());
sweetWechatUser.setSex(wxMpUser.getSex());
sweetWechatUser.setHeadImgUrl(wxMpUser.getHeadImgUrl());
sweetWechatUser.setLanguage(wxMpUser.getLanguage());
sweetWechatUser.setCountry(wxMpUser.getCountry());
sweetWechatUser.setProvince(wxMpUser.getProvince());
sweetWechatUser.setCity(wxMpUser.getCity());
sweetWechatUser.setSubscribeTime(DateUtil.ofEpochMilli(wxMpUser.getSubscribeTime()));
sweetWechatUser.setSubscribeScene(wxMpUser.getSubscribeScene());
if (null == userInfo) {
sweetWechatUser.setUserId(IDGenerator.nextSnowId());
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_user.insert"));
sqlsDataA.add(new Object[]{
sweetWechatUser.getUserId(), 1, sweetWechatUser.getOpenId(), sweetWechatUser.getUnionId(), sweetWechatUser.getNickname(),
sweetWechatUser.getSexDesc(), sweetWechatUser.getSex(), sweetWechatUser.getHeadImgUrl(), sweetWechatUser.getLanguage(),
sweetWechatUser.getCountry(), sweetWechatUser.getProvince(), sweetWechatUser.getCity(),
sweetWechatUser.getSubscribeTime(), sweetWechatUser.getSubscribeScene()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
// 入缓存
redisDataUtils.setSweetWechatUser(sweetWechatUser);
//发送模版消息
sweetWechatTemplateService.subscribeSend(wxMpService, sweetWechatUser);
} }
} else { SweetWechatUsersVo sweetWechatUsers = redisUtils.getSweetWechatUsers(wxMpUser.getUnionId(), type);
// 记录用户信息 if (null == sweetWechatUsers && type > 0) {
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUserModernsky(wxMpUser.getUnionId()); SweetWechatUsersVo sweetWechatUsersVo = SweetWechatUsersVo.getNew();
SweetWechatUser sweetWechatUser = SweetWechatUser.getNew(); sweetWechatUsersVo.setWechatId(IDGenerator.nextSnowId());
sweetWechatUser.setOpenId(wxMpUser.getOpenId()); sweetWechatUsersVo.setOpenId(wxMpUser.getOpenId());
sweetWechatUser.setUnionId(wxMpUser.getUnionId()); sweetWechatUsersVo.setUnionId(wxMpUser.getUnionId());
sweetWechatUser.setNickname(wxMpUser.getNickname()); sweetWechatUsersVo.setNickname(wxMpUser.getNickname());
sweetWechatUser.setSexDesc(wxMpUser.getSexDesc()); sweetWechatUsersVo.setSexDesc(wxMpUser.getSexDesc());
sweetWechatUser.setSex(wxMpUser.getSex()); sweetWechatUsersVo.setSex(wxMpUser.getSex());
sweetWechatUser.setHeadImgUrl(wxMpUser.getHeadImgUrl()); sweetWechatUsersVo.setHeadImgUrl(wxMpUser.getHeadImgUrl());
sweetWechatUser.setLanguage(wxMpUser.getLanguage()); sweetWechatUsersVo.setLanguage(wxMpUser.getLanguage());
sweetWechatUser.setCountry(wxMpUser.getCountry()); sweetWechatUsersVo.setCountry(wxMpUser.getCountry());
sweetWechatUser.setProvince(wxMpUser.getProvince()); sweetWechatUsersVo.setProvince(wxMpUser.getProvince());
sweetWechatUser.setCity(wxMpUser.getCity()); sweetWechatUsersVo.setCity(wxMpUser.getCity());
sweetWechatUser.setSubscribeTime(DateUtil.ofEpochMilli(wxMpUser.getSubscribeTime())); sweetWechatUsersVo.setSubscribeTime(DateUtil.ofEpochMilli(wxMpUser.getSubscribeTime()));
sweetWechatUser.setSubscribeScene(wxMpUser.getSubscribeScene()); sweetWechatUsersVo.setSubscribeScene(wxMpUser.getSubscribeScene());
if (null == userInfo) {
sweetWechatUser.setUserId(IDGenerator.nextSnowId());
LinkedList<String> sqls = CollectionUtil.linkedListString(); LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_user.insert")); sqls.add(SqlMapping.get("sweet_wechat_users_service.insert"));
sqlsDataA.add(new Object[]{ sqlsDataA.add(new Object[]{
sweetWechatUser.getUserId(), 2, sweetWechatUser.getOpenId(), sweetWechatUser.getUnionId(), sweetWechatUser.getNickname(), sweetWechatUsersVo.getWechatId(), type, sweetWechatUsersVo.getOpenId(), sweetWechatUsersVo.getUnionId(), sweetWechatUsersVo.getNickname(),
sweetWechatUser.getSexDesc(), sweetWechatUser.getSex(), sweetWechatUser.getHeadImgUrl(), sweetWechatUser.getLanguage(), sweetWechatUsersVo.getSexDesc(), sweetWechatUsersVo.getSex(), sweetWechatUsersVo.getHeadImgUrl(), sweetWechatUsersVo.getLanguage(),
sweetWechatUser.getCountry(), sweetWechatUser.getProvince(), sweetWechatUser.getCity(), sweetWechatUsersVo.getCountry(), sweetWechatUsersVo.getProvince(), sweetWechatUsersVo.getCity(),
sweetWechatUser.getSubscribeTime(), sweetWechatUser.getSubscribeScene() sweetWechatUsersVo.getSubscribeTime(), sweetWechatUsersVo.getSubscribeScene()
}); });
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(), queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA)); SqlMapping.gets(sqls, sqlsDataA));
// 入缓存 // 入缓存
redisDataUtils.setSweetWechatUserModernsky(sweetWechatUser); redisUtils.setSweetWechatUsers(sweetWechatUsersVo);
//发送模版消息 //发送模版消息
sweetWechatTemplateService.subscribeSend(wxMpService, sweetWechatUser); sweetWechatTemplateService.subscribeSend(wxMpService, sweetWechatUsersVo);
}
} }
return null; return null;
......
...@@ -4,9 +4,8 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -4,9 +4,8 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.config.WechatMpConfigure; import com.liquidnet.service.sweet.config.WechatMpConfigure;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
...@@ -18,7 +17,6 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser; ...@@ -18,7 +17,6 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Map; import java.util.Map;
...@@ -35,7 +33,7 @@ import java.util.Map; ...@@ -35,7 +33,7 @@ import java.util.Map;
public class UnsubscribeHandler implements WxMpMessageHandler { public class UnsubscribeHandler implements WxMpMessageHandler {
@Autowired @Autowired
private RedisDataUtils redisDataUtils; private WechatUsersRedisUtils redisUtils;
@Autowired @Autowired
private QueueUtils queueUtils; private QueueUtils queueUtils;
@Autowired @Autowired
...@@ -55,44 +53,24 @@ public class UnsubscribeHandler implements WxMpMessageHandler { ...@@ -55,44 +53,24 @@ public class UnsubscribeHandler implements WxMpMessageHandler {
return null; return null;
} }
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString()); log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
if (zhengzaiAppId.equals(otherAppId)) { Integer type = 0;
// 删除用户信息 if (zhengzaiAppId.equals(otherAppId)) {// 正在服务号
String sweetWechatUserUnionid = redisDataUtils.getSweetWechatUserUnionid(wxMpUser.getOpenId()); type = 1;
if (null != sweetWechatUserUnionid && !sweetWechatUserUnionid.isEmpty()) { } else {// 摩登服务号
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(sweetWechatUserUnionid); type = 2;
if (null != userInfo) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_user.update"));
sqlsDataA.add(new Object[]{
2, now, sweetWechatUserUnionid, 1
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.delSweetWechatUser(sweetWechatUserUnionid, wxMpUser.getOpenId());
}
} }
} else {
// 删除用户信息 // 删除用户信息
String sweetWechatUserUnionid = redisDataUtils.getSweetWechatUserUnionidModernsky(wxMpUser.getOpenId()); if (!wxMpUser.getUnionId().isEmpty()) {
if (null != sweetWechatUserUnionid && !sweetWechatUserUnionid.isEmpty()) { redisUtils.delSweetWechatUsers(wxMpUser.getUnionId(), type);
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUserModernsky(sweetWechatUserUnionid);
if (null != userInfo) {
LinkedList<String> sqls = CollectionUtil.linkedListString(); LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now(); sqls.add(SqlMapping.get("sweet_wechat_users.delete"));
sqls.add(SqlMapping.get("sweet_user.update"));
sqlsDataA.add(new Object[]{ sqlsDataA.add(new Object[]{
2, now, sweetWechatUserUnionid, 2 wxMpUser.getUnionId(), type
}); });
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(), queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA)); SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.delSweetWechatUserModernsky(sweetWechatUserUnionid, wxMpUser.getOpenId());
}
} }
}
return null; return null;
} }
} }
...@@ -3,25 +3,24 @@ package com.liquidnet.service.sweet.service.impl; ...@@ -3,25 +3,24 @@ package com.liquidnet.service.sweet.service.impl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo; import com.liquidnet.service.sweet.dto.vo.WechatTokenInfoVo;
import com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo; import com.liquidnet.service.sweet.dto.vo.WechatUserInfoVo;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetWechatUsersRelationVo;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo; import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -45,50 +44,81 @@ public class SweetWechatLoginServiceImpl { ...@@ -45,50 +44,81 @@ public class SweetWechatLoginServiceImpl {
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Value("${liquidnet.service.adam.url}") @Autowired
private String adamUrl; private WechatUsersRedisUtils redisUtils;
@Autowired
private FeignAdamBaseClient feignAdamBaseClient;
public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) { public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) {
log.info("\n参数code:[{}] ", code); log.info("小程序解密用户信息参数:[code=[{}], encryptedData=[{}], [iv=[{}], type=[{}]", code, encryptedData, iv, type);
log.info("\n参数encryptedData:[{}] ", encryptedData);
log.info("\n参数iv:[{}] ", iv);
log.info("\n参数type:[{}] ", type);
try { try {
// 获取unid openid
WxMaJscode2SessionResult sessionInfo = sweetWechatService.sessionInfo(code, type); WxMaJscode2SessionResult sessionInfo = sweetWechatService.sessionInfo(code, type);
log.info("\nWxMaJscode2SessionResult:[{}] ", JsonUtils.toJson(sessionInfo));
if (null == sessionInfo) { if (null == sessionInfo) {
return ResponseDto.failure("login handler error"); return ResponseDto.failure("login handler error");
} }
String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid();
// 解密手机号码信息 // 解密手机号码信息
WxMaPhoneNumberInfo wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type); WxMaPhoneNumberInfo wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type);
log.info("\nWxMaPhoneNumberInfo:[{}] ", wxMaPhoneNumberInfo.toString());
if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) { if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) {
return ResponseDto.failure("解密手机号码信息错误"); return ResponseDto.failure("解密手机信息失败");
} }
String wechatId = IDGenerator.nextSnowId();
String unionId = sessionInfo.getUnionid(); String phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber();
String openId = sessionInfo.getOpenid(); String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber();
String countryCode = wxMaPhoneNumberInfo.getCountryCode();
Integer userType = type + 20;
// 获取adam用户信息 自动注册
ResponseDto<AdamUserInfoVo> userInfoVo = feignAdamBaseClient.registerByMobile(wxMaPhoneNumberInfo.getPurePhoneNumber());
AdamUserInfoVo userInfoVoData = userInfoVo.getData();
String mobile = userInfoVoData.getMobile();
String userId = userInfoVoData.getUid();
// mysql redis
SweetWechatUsersVo sweetWechatUsers = redisUtils.getSweetWechatUsers(unionId, userType);
if (null == sweetWechatUsers) {
LinkedList<String> sqlsA = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsA.add(SqlMapping.get("sweet_wechat_users_applet.insert"));
sqlsDataA.add(new Object[]{
wechatId, openId, unionId, phoneNumber, purePhoneNumber, countryCode, userType
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqlsA, sqlsDataA));
SweetWechatUsersVo sweetWechatUsersVo = SweetWechatUsersVo.getNew();
sweetWechatUsersVo.setWechatId(wechatId);
sweetWechatUsersVo.setPhoneNumber(phoneNumber);
sweetWechatUsersVo.setPurePhoneNumber(purePhoneNumber);
sweetWechatUsersVo.setCountryCode(countryCode);
sweetWechatUsersVo.setType(userType);
redisUtils.setSweetWechatUsers(sweetWechatUsersVo);
}
SweetWechatUsersRelationVo sweetWechatUsersRelation = redisUtils.getSweetWechatUsersRelation(mobile);
if (null == sweetWechatUsersRelation) {
LinkedList<String> sqlsB = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataB = CollectionUtil.linkedListObjectArr();
sqlsB.add(SqlMapping.get("sweet_wechat_users_relation.insert"));
String wechatRelationId = IDGenerator.nextSnowId();
sqlsDataB.add(new Object[]{
wechatRelationId, unionId, userId, mobile
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_USER_INSERT.getKey(),
SqlMapping.gets(sqlsB, sqlsDataB));
SweetWechatUsersRelationVo usersRelationVo = SweetWechatUsersRelationVo.getNew();
usersRelationVo.setWechatRelationId(wechatRelationId);
usersRelationVo.setUnionId(unionId);
usersRelationVo.setUserId(userId);
usersRelationVo.setUserPhone(mobile);
redisUtils.setSweetWechatUsersRelation(usersRelationVo);
}
// 返回给前端数据
HashMap<String, Object> userInfo = CollectionUtil.mapStringObject(); HashMap<String, Object> userInfo = CollectionUtil.mapStringObject();
userInfo.put("unionId", unionId); userInfo.put("unionId", unionId);
userInfo.put("openId", openId); userInfo.put("openId", openId);
userInfo.put("getPhoneNumber", wxMaPhoneNumberInfo.getPhoneNumber()); userInfo.put("getPhoneNumber", wxMaPhoneNumberInfo.getPhoneNumber());
userInfo.put("getPurePhoneNumber", wxMaPhoneNumberInfo.getPurePhoneNumber()); userInfo.put("getPurePhoneNumber", wxMaPhoneNumberInfo.getPurePhoneNumber());
userInfo.put("getCountryCode", wxMaPhoneNumberInfo.getCountryCode()); userInfo.put("getCountryCode", wxMaPhoneNumberInfo.getCountryCode());
registerByMobile(wxMaPhoneNumberInfo.getPurePhoneNumber());
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_applet_user.insert"));
sqlsDataA.add(new Object[]{
IDGenerator.nextSnowId(), openId, unionId, wxMaPhoneNumberInfo.getPhoneNumber(), wxMaPhoneNumberInfo.getPurePhoneNumber()
, wxMaPhoneNumberInfo.getCountryCode(), type
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_APPLET_USER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
return ResponseDto.success(userInfo); return ResponseDto.success(userInfo);
} catch (Exception e) { } catch (Exception e) {
log.error("WechatUserInfoError Exception:{}", e); log.error("WechatUserInfoError Exception:{}", e);
...@@ -96,17 +126,6 @@ public class SweetWechatLoginServiceImpl { ...@@ -96,17 +126,6 @@ public class SweetWechatLoginServiceImpl {
} }
} }
@Async
public void registerByMobile(String mobile) {
try {
MultiValueMap<String, String> params = new LinkedMultiValueMap();
params.add("mobile", mobile);
HttpUtil.post(adamUrl.concat("/adam/rsc/reg/mobile"), params);
} catch (Exception e) {
log.error("registerByMobile失败 Exception:{}", e);
}
}
public ResponseDto<String> wxaCode2Session(String jsCode, Integer type) { public ResponseDto<String> wxaCode2Session(String jsCode, Integer type) {
try { try {
WxMaJscode2SessionResult wxMaJscode2SessionResult = sweetWechatService.sessionInfo(jsCode, type); WxMaJscode2SessionResult wxMaJscode2SessionResult = sweetWechatService.sessionInfo(jsCode, type);
......
...@@ -21,6 +21,7 @@ import com.liquidnet.service.sweet.mapper.SweetRemindMapper; ...@@ -21,6 +21,7 @@ import com.liquidnet.service.sweet.mapper.SweetRemindMapper;
import com.liquidnet.service.sweet.param.SweetOpenSendMsgParam; import com.liquidnet.service.sweet.param.SweetOpenSendMsgParam;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetWechatUsersVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
...@@ -164,7 +165,7 @@ public class SweetWechatTemplateServiceImpl { ...@@ -164,7 +165,7 @@ public class SweetWechatTemplateServiceImpl {
return ResponseDto.success(); return ResponseDto.success();
} }
public void subscribeSend(WxMpService wxMpService, SweetWechatUser sweetWechatUser) { public void subscribeSend(WxMpService wxMpService, SweetWechatUsersVo sweetWechatUser) {
String zhengzaiAppId = wechatMpConfigure.getWxMpService(1).getWxMpConfigStorage().getAppId(); String zhengzaiAppId = wechatMpConfigure.getWxMpService(1).getWxMpConfigStorage().getAppId();
String otherAppId = wxMpService.getWxMpConfigStorage().getAppId(); String otherAppId = wxMpService.getWxMpConfigStorage().getAppId();
if (zhengzaiAppId.equals(otherAppId)) { if (zhengzaiAppId.equals(otherAppId)) {
......
...@@ -41,8 +41,6 @@ sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WH ...@@ -41,8 +41,6 @@ sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WH
sweet_user.update2=UPDATE sweet_wechat_user SET adam_user_id = ?, adam_phone = ?, updated_at = ? WHERE unionId = ? and type = ? sweet_user.update2=UPDATE sweet_wechat_user SET adam_user_id = ?, adam_phone = ?, updated_at = ? WHERE unionId = ? and type = ?
# --------------------------提醒记录-------------------------- # --------------------------提醒记录--------------------------
sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?) sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
# --------------------------小程序登录记录用户解密后信息--------------------------
sweet_applet_user.insert=INSERT INTO sweet_applet_user (user_id,openId,unionId,getPhoneNumber,getPurePhoneNumber,getCountryCode,type) VALUES (?,?,?,?,?,?,?)
# --------------------------用户投票记录-------------------------- # --------------------------用户投票记录--------------------------
sweet_city_vote.insert=INSERT INTO sweet_city_vote (vote_id,phone,openId,unionId,type,city_code,city_name,day_time) VALUES (?,?,?,?,?,?,?,?) sweet_city_vote.insert=INSERT INTO sweet_city_vote (vote_id,phone,openId,unionId,type,city_code,city_name,day_time) VALUES (?,?,?,?,?,?,?,?)
sweet_city_vote_stat.insert=INSERT INTO sweet_city_vote_stat (stat_id,city_code,city_name,vote_num,type) VALUES (?,?,?,?,?) sweet_city_vote_stat.insert=INSERT INTO sweet_city_vote_stat (stat_id,city_code,city_name,vote_num,type) VALUES (?,?,?,?,?)
...@@ -52,3 +50,9 @@ sweet_antigenic_question.insert=INSERT INTO sweet_antigenic_question (question_i ...@@ -52,3 +50,9 @@ sweet_antigenic_question.insert=INSERT INTO sweet_antigenic_question (question_i
# ------------------------积分抽奖---------------------------- # ------------------------积分抽奖----------------------------
integral_activity_draw.insert=INSERT INTO sweet_integral_activity_draw (draw_id,integral_activity_id,activity_num,prize_id,prize_title,prize_type,prize_type_num,relation_id,user_id,nickname,receiving_status) VALUES (?,?,?,?,?,?,?,?,?,?,?) integral_activity_draw.insert=INSERT INTO sweet_integral_activity_draw (draw_id,integral_activity_id,activity_num,prize_id,prize_title,prize_type,prize_type_num,relation_id,user_id,nickname,receiving_status) VALUES (?,?,?,?,?,?,?,?,?,?,?)
integral_activity_draw.update=UPDATE sweet_integral_activity_draw SET receiving_addresses_id = ?, receiving_name = ?, receiving_phone = ?, receiving_address = ?, updated_at = ? WHERE draw_id = ? integral_activity_draw.update=UPDATE sweet_integral_activity_draw SET receiving_addresses_id = ?, receiving_name = ?, receiving_phone = ?, receiving_address = ?, updated_at = ? WHERE draw_id = ?
# --------------------------微信用户信息表包含小程序公众号--------------------------
sweet_wechat_users_applet.insert=INSERT INTO sweet_wechat_users (wechat_id,open_id,union_id,phone_number,pure_phone_number,country_code,type) VALUES (?,?,?,?,?,?,?)
sweet_wechat_users_service.insert=INSERT INTO sweet_wechat_users (wechat_id,type,open_id,union_id,nickname,sex_desc,sex,head_img_url,language,country,province,city,subscribe_time,subscribe_scene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_wechat_users.delete=DELETE FROM sweet_wechat_users WHERE unionId = ? and type = ?
sweet_wechat_users_relation.insert=INSERT INTO sweet_wechat_users_relation (wechat_relation_id,union_id,user_id,user_phone) VALUES (?,?,?,?)
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