From d587e55bae358002155b74b28f27b7d216a3e988 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 18 十二月 2019 09:53:31 +0800
Subject: [PATCH] 统计

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java |  197 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 188 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..1bc7d53 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,14 +5,18 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.yeshi.utils.DateUtil;
 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 +24,31 @@
 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.UserInviteSeparate;
+import com.yeshi.fanli.entity.bus.user.WeiXinUser;
+import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.system.SystemClientParams;
+import com.yeshi.fanli.exception.user.UserAccountException;
 import com.yeshi.fanli.exception.user.UserInfoExtraException;
+import com.yeshi.fanli.log.LogHelper;
 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.config.SpreadImgService;
+import com.yeshi.fanli.service.inter.config.SystemClientParamsService;
 import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
 import com.yeshi.fanli.service.inter.push.PushService;
+import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserInviteSeparateService;
+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 +56,9 @@
 @Controller
 @RequestMapping("api/v2/invite")
 public class InviteControllerV2 {
+
+	@Resource
+	private RedisManager redisManager;
 
 	@Resource
 	private ConfigService configService;
@@ -59,6 +81,23 @@
 	@Resource
 	private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
 
+	@Resource
+	private UserVIPInfoService userVIPInfoService;
+	
+	@Resource
+	private UserInviteSeparateService userInviteSeparateService;
+
+	@Resource
+	private SpreadImgService spreadImgService;
+	
+	@Resource
+	private SpreadUserImgService spreadUserImgService;
+	
+	@Resource
+	private SystemClientParamsService systemClientParamsService;
+	
+	
+	
 	/**
 	 * 閭�璇风爜楠岃瘉
 	 * 
@@ -79,22 +118,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 +210,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 +240,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 +249,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,7 +272,39 @@
 
 			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()));
+				if (vipMap.get(worker.getId())) {
+					UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(worker.getId(), uid);
+					if (separate != null && separate.getEndTime() != null) {
+						try {
+							
+						
+							JSONObject contentJson1 = new JSONObject();
+							contentJson1.put("color", "#888888");
+							contentJson1.put("content", "灏嗕簬");
 
+							JSONObject contentJson2 = new JSONObject();
+							contentJson2.put("color", "#F14242");
+							contentJson2.put("content", DateUtil.dateDiff4(new Date(), separate.getEndTime()));
+
+							JSONObject contentJson3 = new JSONObject();
+							contentJson3.put("color", "#888888");
+							contentJson3.put("content", "鍚庤劚绂婚個璇峰叧绯�");
+							
+							JSONArray array = new JSONArray();
+							array.add(contentJson1);
+							array.add(contentJson2);
+							array.add(contentJson3);
+							object.put("vipBreakTime",array);
+						
+						} catch (Exception e) {
+							e.printStackTrace();
+						}
+					}
+				}
+			}
 			String fontColor1 = "#888888";
 			JSONArray array = new JSONArray();
 			if (threeSale.getState()) {
@@ -207,7 +339,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 +446,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);
@@ -429,4 +561,51 @@
 			out.print(JsonUtil.loadFalseResult("鎻愰啋澶辫触"));
 		}
 	}
+	
+	
+	@RequestSerializableByKey(key = "'getInviteImgs-'+#uid")
+	@RequestMapping(value = "/getInviteImgs", method = RequestMethod.POST)
+	public void getInviteImgs(AcceptData acceptData, Long uid, Integer page, PrintWriter out, HttpServletRequest request) {
+		if (uid == null || uid <= 0) {
+			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+
+		if (page == null || page < 1)
+			page = 1;
+		
+		try {
+			String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
+			if (StringUtil.isNullOrEmpty(inviteCode)) {
+				out.print(JsonUtil.loadFalseResult("閭�璇风爜鏈縺娲�"));
+				return;
+			}
+			
+			int count = 3;
+			if (page > 1) 
+				count = Integer.MAX_VALUE;
+			
+			// 閭�璇峰浘
+			List<String> imgList = spreadUserImgService.getUserSpreadImgToPage(uid, page, count, request);
+		
+			// 閭�璇疯鍒�
+			BusinessSystem system = new BusinessSystem();
+			system.setId(4L);
+			system.setPlatform(1);
+			system.setCreatetime(java.lang.System.currentTimeMillis());
+			SystemClientParams values = systemClientParamsService.getSystemClientParamsBySystemAndKey(system, "inviteRules");
+			
+			JSONObject data = new JSONObject();
+			data.put("count", spreadImgService.countAll());
+			data.put("inviteCode", inviteCode);
+			data.put("helpLink", configService.get("invite_help_link"));
+			data.put("inviteRules",  values.getValue().replace("\n", "<br><br>"));
+			data.put("imgUrlList", JsonUtil.getSimpleGsonWithDate().toJson(imgList));
+			data.put("inviteLink", "http://a.app.qq.com/o/simple.jsp?pkgname=com.yeshi.ec.rebate");
+			out.print(JsonUtil.loadTrue(0, JsonUtil.getSimpleGson().toJson(data), "鎴愬姛"));
+		} catch (Exception e) {
+			LogHelper.errorDetailInfo(e);
+			out.print(JsonUtil.loadFalseResult("閭�璇蜂俊鎭幏鍙栧け璐�"));
+		}
+	}
 }

--
Gitblit v1.8.0