From aa552facf6d833acab0d3e3e29bda2a0fb826ffe Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期一, 25 十一月 2019 16:14:13 +0800 Subject: [PATCH] 品牌缓存生效 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java | 89 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 84 insertions(+), 5 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java index fca7030c..7d1d7d6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import javax.annotation.Resource; @@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; +import com.yeshi.fanli.dto.wx.WXAccountInfoDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.msg.UserSystemMsg; import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum; @@ -20,6 +22,8 @@ import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.bus.user.WeiXinUser; +import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.msg.UserSystemMsgService; @@ -28,8 +32,13 @@ import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.annotation.RequestSerializableByKey; +import com.yeshi.fanli.util.wx.WXLoginUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -37,6 +46,9 @@ @Controller @RequestMapping("api/v2/invite") public class InviteControllerV2 { + + @Resource + private RedisManager redisManager; @Resource private ConfigService configService; @@ -59,6 +71,9 @@ @Resource private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce; + @Resource + private UserVIPInfoService userVIPInfoService; + /** * 閭�璇风爜楠岃瘉 * @@ -79,22 +94,71 @@ } /** - * 閭�璇风爜寰俊 + * 閭�璇风爜寰俊楠岃瘉 * * @param out */ @RequestMapping(value = "verifyWX") public void verifyWX(AcceptData acceptData, Long uid, String code, PrintWriter out) { try { - UserInfo userInfo = userInfoExtraService.getInviterInfo( - Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()), uid, code); + WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); + // 鑾峰彇寰俊淇℃伅 + WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret()); + if (weiXinUser == null) + throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触"); + + String wxUnionId = weiXinUser.getUnionid(); + if (wxUnionId == null || wxUnionId.trim().length() == 0) + throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触"); + + String activeWX = StringUtil.Md5("activeWX:" + weiXinUser.getUnionid()); + redisManager.cacheCommonString(activeWX, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20); + + // 閭�璇峰叧绯荤敤鎴蜂俊鎭� + UserInfo userInfo = userInfoExtraService.getInviterInfo(uid, wxUnionId); + JSONObject data = new JSONObject(); data.put("nickName", userInfo.getNickName()); data.put("portrait", userInfo.getPortrait()); data.put("tips", "纭瑕佹垚涓篢A鐨勪竴绾ч槦鍛樺悧锛熼個璇峰叧绯讳竴鏃﹀缓绔嬩笉鍙洿鏀广��"); + data.put("key", activeWX); out.print(JsonUtil.loadTrueResult(data)); } catch (UserInfoExtraException e) { out.print(JsonUtil.loadFalseResult(e.getMsg())); + } + } + + /** + * 寰俊婵�娲� + * + * @param acceptData + * @param uid + * @param key + * 楠岃瘉杩斿洖鐨刱ey + * @param out + */ + @RequestSerializableByKey(key = "'activeInviteWX-'+#uid") + @RequestMapping(value = "activeInviteWX") + public void activeInviteWX(AcceptData acceptData, Long uid, String key, PrintWriter out) { + try { + String value = redisManager.getCommonString(key); + if (StringUtil.isNullOrEmpty(value)) + throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥"); + + WeiXinUser weiXinUser = JsonUtil.getSimpleGson().fromJson(value, WeiXinUser.class); + if (weiXinUser == null) + throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥"); + + userInfoExtraService.activeInviteWX(uid, weiXinUser); + // 鍒犻櫎缂撳瓨 + redisManager.removeCommonString(key); + + out.print(JsonUtil.loadTrueResult("閭�璇风爜婵�娲绘垚鍔�")); + } catch (UserInfoExtraException e) { + out.print(JsonUtil.loadFalseResult(e.getMsg())); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult("閭�璇风爜婵�娲诲け璐�")); + e.printStackTrace(); } } @@ -122,8 +186,12 @@ count = threeSaleSerivce.countSecondTeam(uid, 1); } + boolean needVIPInfo = false; + if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) + needVIPInfo = true; + // 缁勭粐鏁版嵁 - JSONObject resultData = organizeTeam(count, listTeam, uid, type); + JSONObject resultData = organizeTeam(count, listTeam, uid, type,needVIPInfo); // 绗竴椤靛垽鏂槸鍚︽縺娲� 鏄惁鏈夐槦鍛� if (type == 1 && page == 1) { @@ -148,7 +216,7 @@ * @param type * @return */ - private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type) { + private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type, boolean needVipInfo) { JSONObject result = new JSONObject(); JSONArray resultArray = new JSONArray(); @@ -157,6 +225,14 @@ SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatYears = new SimpleDateFormat("yyyy"); + List<Long> workerIdList = new ArrayList<>(); + Map<Long, Boolean> vipMap = null; + if (needVipInfo) { + for (ThreeSale threeSale : list) + workerIdList.add(threeSale.getWorker().getId()); + if (workerIdList.size() > 0) + vipMap = userVIPInfoService.listByUids(workerIdList); + } for (ThreeSale threeSale : list) { UserInfo worker = threeSale.getWorker(); if (worker == null) { @@ -172,6 +248,9 @@ Date inviteTime = new Date(threeSale.getCreateTime()); object.put("inviteTime", format.format(inviteTime) + " 鍔犲叆"); + // 娣诲姞鏄惁涓篤IP + if (vipMap != null && vipMap.get(worker.getId()) != null) + object.put("vip", vipMap.get(worker.getId())); String fontColor1 = "#888888"; JSONArray array = new JSONArray(); -- Gitblit v1.8.0