From 2442c923fd35ef864be1cfe07e039eebfaf24ffc Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 03 十二月 2019 11:48:21 +0800
Subject: [PATCH] 新人红包功能
---
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java | 97 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 88 insertions(+), 9 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 144762e..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,16 +22,23 @@
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.hongbao.ThreeSaleExtraInfoSerivce;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
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();
@@ -207,7 +286,7 @@
if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
object.put("weiXin", userInfoExtra.getWeiXin());
object.put("weiXinState", 3);
- object.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鏁欐巿TA濡備綍閫氳繃杩斿埄鍒歌禋閽辨妧宸с��");
+ object.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鏁欐巿TA濡備綍閫氳繃鏉挎牀蹇渷璧氶挶鎶�宸с��");
} else {
if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
object.put("weiXinState", 1);
@@ -314,7 +393,7 @@
if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
bossData.put("weiXin", userInfoExtra.getWeiXin());
bossData.put("weiXinState", 3);
- bossData.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鍚慣A瀛︿範濡備綍閫氳繃杩斿埄鍒歌禋閽便��");
+ bossData.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鍚慣A瀛︿範濡備綍閫氳繃鏉挎牀蹇渷璧氶挶銆�");
} else {
if (!threeSaleExtraInfoSerivce.isRemindBoss(boss.getId(), uid)) {
bossData.put("weiXinState", 1);
--
Gitblit v1.8.0