From 522315ae42936583042fc08aabda7e3c9e7a7b5d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 12 五月 2020 15:37:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java |  705 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 587 insertions(+), 118 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 ad66192..7b497eb 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
@@ -3,6 +3,7 @@
 import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -13,21 +14,29 @@
 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.user.ThreeSaleFocusDTO;
 import com.yeshi.fanli.dto.vip.UserVIPLevel;
 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;
+import com.yeshi.fanli.entity.bus.user.TeamFansInfo;
 import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
+import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
 import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
 import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
 import com.yeshi.fanli.entity.bus.user.WeiXinUser;
+import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
+import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic;
+import com.yeshi.fanli.entity.bus.user.vip.TearcherInfo;
 import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
+import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
 import com.yeshi.fanli.entity.system.BusinessSystem;
 import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.system.SystemClientParams;
@@ -38,20 +47,29 @@
 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.order.CommonOrderCountService;
 import com.yeshi.fanli.service.inter.push.PushService;
 import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
+import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.invite.TeamFansInfoService;
 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.invite.UserInviteService;
 import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
 import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
+import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
+import com.yeshi.fanli.service.inter.user.vip.TeamDailyRecordService;
+import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService;
+import com.yeshi.fanli.service.inter.user.vip.TearcherService;
 import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
+import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.RedisKeyEnum;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
 import com.yeshi.fanli.util.user.UserLevelUtil;
@@ -93,23 +111,48 @@
 
 	@Resource
 	private SpreadImgService spreadImgService;
-	
+
 	@Resource
 	private SpreadUserImgService spreadUserImgService;
-	
+
 	@Resource
 	private SystemClientParamsService systemClientParamsService;
-	
+
 	@Resource
 	private UserInviteService userInviteService;
-	
+
 	@Resource
 	private UserInviteValidRecordService userInviteValidRecordService;
-	
+
 	@Resource
 	private UserInviteValidNumService userInviteValidNumService;
+
+	@Resource
+	private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
+
+	@Resource
+	private CommonOrderCountService commonOrderCountService;
+
+	@Resource
+	private TeamFansInfoService teamFansInfoService;
+
+	@Resource
+	private UserCustomSettingsService userCustomSettingsService;
+
+	@Resource
+	private TearcherService tearcherService;
+
+	@Resource
+	private TeamUserLevelStatisticService teamUserLevelStatisticService;
+
+	@Resource
+	private UserVIPPreInfoService userVIPPreInfoService;
+
+	@Resource
+	private TeamDailyRecordService teamDailyRecordService;
 	
 	
+
 	/**
 	 * 閭�璇风爜楠岃瘉
 	 * 
@@ -147,7 +190,8 @@
 			if (wxUnionId == null || wxUnionId.trim().length() == 0)
 				throw new UserInfoExtraException(1, "寰俊鎺堟潈澶辫触");
 
-			String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey, StringUtil.Md5("activeWX:" + weiXinUser.getUnionid()));
+			String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey,
+					StringUtil.Md5("activeWX:" + weiXinUser.getUnionid()));
 			redisManager.cacheCommonString(key, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20);
 
 			// 閭�璇峰叧绯荤敤鎴蜂俊鎭�
@@ -169,8 +213,7 @@
 	 * 
 	 * @param acceptData
 	 * @param uid
-	 * @param key
-	 *            楠岃瘉杩斿洖鐨刱ey
+	 * @param key        楠岃瘉杩斿洖鐨刱ey
 	 * @param out
 	 */
 	@RequestSerializableByKey(key = "'activeInviteWX-'+#uid")
@@ -199,7 +242,7 @@
 	}
 
 	/**
-	 * 鐢ㄦ埛闃熷憳鍒楄〃鏌ヨ 1.5.3鏌ヨ鏈夋晥闃熷憳
+	 * 鐢ㄦ埛闃熷憳鍒楄〃鏌ヨ
 	 * 
 	 * @param acceptData
 	 * @param id
@@ -211,12 +254,6 @@
 			out.print(JsonUtil.loadFalseResult("绮変笣绫诲瀷涓嶆纭�"));
 			return;
 		}
-		
-		if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
-			getMyTeamNew(acceptData, page, uid, type, out);
-			return;
-		}
-
 		long count = 0;
 		List<ThreeSale> listTeam = null;
 		if (type == 1) {
@@ -227,14 +264,21 @@
 			count = threeSaleSerivce.countSecondTeam(uid);
 		}
 
-		boolean needVIPInfo = false;
-		if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
-			needVIPInfo = true;
+		// 鏁版嵁鍔犲伐
+		JSONArray array = null;
+		if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+			array = organizeTeamNew(acceptData, listTeam, uid, type, true);
+		} else {
+			boolean needVIPInfo = false;
+			if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
+				needVIPInfo = true;
+			array = organizeTeam(listTeam, uid, type, needVIPInfo);
+		}
 
-		// 缁勭粐鏁版嵁
-		JSONObject resultData = organizeTeam(count, listTeam, uid, type,needVIPInfo);
+		JSONObject result = new JSONObject();
+		result.put("count", count);
+		result.put("list", array);
 
-		// 绗竴椤靛垽鏂槸鍚︽縺娲� 鏄惁鏈夐槦鍛�
 		if (type == 1 && page == 1) {
 			boolean hasCode = false;
 			UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
@@ -242,10 +286,10 @@
 				if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
 					hasCode = true;
 			}
-			resultData.put("hasCode", hasCode);
-			resultData.put("hasTeam", count > 0 ? true : false);
+			result.put("hasCode", hasCode);
+			result.put("hasTeam", count > 0 ? true : false);
 		}
-		out.print(JsonUtil.loadTrueResult(resultData));
+		out.print(JsonUtil.loadTrueResult(result));
 	}
 
 	/**
@@ -257,10 +301,8 @@
 	 * @param type
 	 * @return
 	 */
-	private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type, boolean needVipInfo) {
-		JSONObject result = new JSONObject();
+	private JSONArray organizeTeam(List<ThreeSale> list, Long uid, int type, boolean needVipInfo) {
 		JSONArray resultArray = new JSONArray();
-
 		Date todayTime = new Date();
 		SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm");
 		SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
@@ -343,57 +385,20 @@
 			object.put("recentMsg", array);
 			resultArray.add(object);
 		}
-
-		result.put("count", count);
-		result.put("list", resultArray);
-		return result;
+		return resultArray;
 	}
 
-	
-	private void getMyTeamNew(AcceptData acceptData, long page, long uid, int type, PrintWriter out) {
-		if (type != 1 && type != 2) {
-			out.print(JsonUtil.loadFalseResult("绮変笣绫诲瀷涓嶆纭�"));
-			return;
-		}
-
-		long count = 0;
-		List<ThreeSale> listTeam = null;
-		if (type == 1) {
-			listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
-			count = threeSaleSerivce.countFirstTeam(uid);
-		} else if (type == 2) {
-			listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
-			count = threeSaleSerivce.countSecondTeam(uid);
-		}
-		
-		JSONObject result = new JSONObject();
-		result.put("count", count);
-		result.put("list", organizeTeamNew(count, listTeam, uid, type, true));
-		
-		// 绗竴椤靛垽鏂槸鍚︽縺娲� 鏄惁鏈夐槦鍛�
-		if (type == 1 && page == 1) {
-			boolean hasCode = false;
-			UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-			if (userInfoExtra != null) {
-				if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
-					hasCode = true;
-			}
-			result.put("hasCode", hasCode);
-			result.put("hasTeam", count > 0 ? true : false);
-		}
-		out.print(JsonUtil.loadTrueResult(result));
-	}
-	
 	/**
-	 *  鍔犲伐鏁版嵁
+	 * 鍔犲伐鏁版嵁
+	 * 
 	 * @param count
 	 * @param list
 	 * @param uid
-	 * @param type 鏌ヨ绮変笣绫诲瀷 1鐩存帴 2闂存帴
+	 * @param type  鏌ヨ绮変笣绫诲瀷 1鐩存帴 2闂存帴
 	 * @param wxtip 鏄渶瑕佸井淇℃彁绀�
 	 * @return
 	 */
-	private JSONArray organizeTeamNew(long count, List<ThreeSale> list, Long uid, int type, boolean wxtip) {
+	private JSONArray organizeTeamNew(AcceptData acceptData, List<ThreeSale> list, Long uid, int type, boolean wxtip) {
 		JSONArray resultArray = new JSONArray();
 		if (list == null || list.size() == 0) {
 			return resultArray;
@@ -408,37 +413,37 @@
 		for (ThreeSale threeSale : list) {
 			listWid.add(threeSale.getWorker().getId());
 		}
-		
+
 		// 鏌ヨ鏈夋晥绮変笣id
 		int validType = UserInviteValidRecord.TYPE_TWO;
 		if (type == 1) {
 			validType = UserInviteValidRecord.TYPE_ONE;
 		}
-		
+
 		List<Long> listVid = userInviteValidRecordService.getValidWorkerIdsByUid(uid, listWid, validType);
-	
+
 		for (ThreeSale threeSale : list) {
 			UserInfo worker = threeSale.getWorker();
 			Long workerId = worker.getId();
 
 			// 閭�璇锋垚鍔熸椂闂�
-			Long succeedTime = threeSale.getSucceedTime(); 
+			Long succeedTime = threeSale.getSucceedTime();
 			if (succeedTime == null) {
 				succeedTime = threeSale.getCreateTime();
 			}
-			
+
 			// 鏈夋晥绮変笣
-			boolean validFans = false; 
+			boolean validFans = false;
 			if (listVid != null && listVid.size() > 0 && listVid.contains(workerId)) {
 				validFans = true;
 			}
-			
+
 			// 鏈�杩戠矇涓濈櫥褰曟椂闂�
 			Date lastLoginTime = new Date(threeSale.getCreateTime());
 			UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
 			if (userInfoExtra != null && userInfoExtra.getActiveTime() != null) {
 				lastLoginTime = userInfoExtra.getActiveTime();
-			} 
+			}
 			JSONObject loginJson = new JSONObject();
 			if (formatYears.format(todayTime).equals(formatYears.format(lastLoginTime))) {
 				loginJson.put("content", "鏈�杩戠櫥褰� " + sdf.format(lastLoginTime)); // 鏈勾
@@ -446,7 +451,7 @@
 				loginJson.put("content", "鏈�杩戠櫥褰� " + format.format(lastLoginTime)); // 寰�骞�
 			}
 			loginJson.put("color", "#888888");
-			
+
 			JSONArray array = new JSONArray();
 			array.add(loginJson);
 
@@ -456,11 +461,11 @@
 			if (vipLevel != null && vipLevel.getLevel() != null) {
 				level = UserLevelUtil.getByLevel(vipLevel.getLevel());
 			}
-			if(level == null) {
+			if (level == null) {
 				level = UserLevelEnum.daRen;
 			}
 			level = UserLevelUtil.getShowLevel(level);
-			
+
 			JSONObject object = new JSONObject();
 			object.put("workerId", workerId);
 			object.put("nickName", worker.getNickName());
@@ -471,7 +476,7 @@
 			object.put("recentMsg", array);
 			object.put("level", level.name());
 			object.put("validFans", validFans);
-			
+
 			if (wxtip && type == 1 && threeSale.getState() != null && threeSale.getState()) {
 				// 涓�绾ч槦鍛� 鏌ヨ鏄电О澶囨敞
 				String memoName = null;
@@ -482,19 +487,21 @@
 					}
 				}
 				object.put("memoName", memoName);
-				
-				// 娣诲姞寰俊淇℃伅
-				if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
-					object.put("weiXin", userInfoExtra.getWeiXin());
-					object.put("weiXinState", 3);
-					object.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鏁欐巿TA濡備綍閫氳繃鏉挎牀蹇渷璧氶挶鎶�宸с��");
-				} else {
-					if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
-						object.put("weiXinState", 1);
-						object.put("weiXinTip", "鐐瑰嚮鎻愰啋锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��");
+
+				if (!VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
+					// 娣诲姞寰俊淇℃伅
+					if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin())) {
+						object.put("weiXin", userInfoExtra.getWeiXin());
+						object.put("weiXinState", 3);
+						object.put("weiXinTip", "娣诲姞TA鐨勫井淇★紝浣犲彲鏁欐巿TA濡備綍閫氳繃鏉挎牀蹇渷璧氶挶鎶�宸с��");
 					} else {
-						object.put("weiXinState", 2);
-						object.put("weiXinTip", "绯荤粺宸插彂閫佹彁閱掞紝閭�璇蜂汉娣诲姞寰俊鍚庝綘鍙鍒讹紝濡傚鏂硅繜杩熶笉娣诲姞锛屼綘鍙仈绯讳汉宸ュ鏈嶅姹傚府鍔�");
+						if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
+							object.put("weiXinState", 1);
+							object.put("weiXinTip", "鐐瑰嚮鎻愰啋锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��");
+						} else {
+							object.put("weiXinState", 2);
+							object.put("weiXinTip", "绯荤粺宸插彂閫佹彁閱掞紝閭�璇蜂汉娣诲姞寰俊鍚庝綘鍙鍒讹紝濡傚鏂硅繜杩熶笉娣诲姞锛屼綘鍙仈绯讳汉宸ュ鏈嶅姹傚府鍔�");
+						}
 					}
 				}
 			}
@@ -502,33 +509,33 @@
 		}
 		return resultArray;
 	}
-	
-	
+
 	/**
 	 * 鏌ョ湅涓嬬骇鐨勭洿鎺ョ矇涓�
+	 * 
 	 * @param acceptData
 	 * @param page
-	 * @param uid 褰撳墠UId
-	 * @param tid 涓嬬骇UId
+	 * @param uid        褰撳墠UId
+	 * @param tid        涓嬬骇UId
 	 * @param out
 	 */
 	@RequestMapping(value = "getOthersTeam", method = RequestMethod.POST)
-	public void getOthersTeam(AcceptData acceptData, long page, Long uid, Long tid,  PrintWriter out) {
+	public void getOthersTeam(AcceptData acceptData, long page, Long uid, Long tid, PrintWriter out) {
 		if (tid == null) {
 			out.print(JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘"));
 			return;
 		}
-		
-		List<ThreeSale> listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, tid);
+
+		List<ThreeSale> listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
+				tid);
 		long count = threeSaleSerivce.countFirstTeam(tid);
 
 		JSONObject result = new JSONObject();
 		result.put("count", count);
-		result.put("list", organizeTeamNew(count, listTeam, tid, 1, false));
+		result.put("list", organizeTeamNew(acceptData, listTeam, tid, 1, false));
 		out.print(JsonUtil.loadTrueResult(result));
 	}
-	
-	
+
 	/**
 	 * 鐢ㄦ埛闃熷憳缁熻- IOS
 	 * 
@@ -593,6 +600,7 @@
 
 	/**
 	 * 鑾峰彇鐢ㄦ埛淇℃伅
+	 * 
 	 * @param acceptData
 	 * @param uid
 	 * @param out
@@ -606,8 +614,7 @@
 		JSONObject bossData = getBossInfo(uid, threeSaleSerivce.getMyBoss(uid));
 		out.print(JsonUtil.loadTrueResult(bossData));
 	}
-	
-	
+
 	/**
 	 * 涓婄骇淇℃伅缁勭粐
 	 * 
@@ -747,11 +754,11 @@
 			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) {
+	public void getInviteImgs(AcceptData acceptData, Long uid, Integer page, PrintWriter out,
+			HttpServletRequest request) {
 		if (uid == null || uid <= 0) {
 			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
@@ -759,33 +766,34 @@
 
 		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) 
+			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");
-			
+			SystemClientParams values = systemClientParamsService.getSystemClientParamsBySystemAndKey(system,
+					"inviteRules");
+
 			JSONObject data = new JSONObject();
 			data.put("count", spreadImgService.countAll());
 			data.put("inviteCode", inviteCode);
 			data.put("helpLink", configService.get(ConfigKeyEnum.inviteHelpLink.getKey()));
-			data.put("inviteRules",  values.getValue().replace("\n", "<br><br>"));
+			data.put("inviteRules", values.getValue().replace("\n", "<br><br>"));
 			data.put("imgUrlList", JsonUtil.getSimpleGsonWithDate().toJson(imgList));
 			data.put("inviteLink", Constant.YINGYONGBAO_LINK);
 			out.print(JsonUtil.loadTrue(0, JsonUtil.getSimpleGson().toJson(data), "鎴愬姛"));
@@ -794,7 +802,7 @@
 			out.print(JsonUtil.loadFalseResult("閭�璇蜂俊鎭幏鍙栧け璐�"));
 		}
 	}
-	
+
 	/**
 	 * 绔欏唴淇℃彁閱掗槦鍛樻坊鍔犲井淇″彿
 	 * 
@@ -816,11 +824,472 @@
 		if (userInviteValidNum != null) {
 			doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst();
 		}
-				
+
 		JSONObject data = new JSONObject();
 		data.put("num", doneFirst);
 		data.put("limit", Constant.INVITE_CODRE_TAILOR_LIMIT);
 		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
 	}
+
+	/**
+	 * 鐢ㄦ埛闃熷憳鍒楄〃鏌ヨ
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "getMyTeamV2", method = RequestMethod.POST)
+	public void getMyTeamV2(AcceptData acceptData, int page, long uid, int type, ThreeSaleFocusDTO focus,
+			PrintWriter out) {
+		if (type != 1 && type != 2) {
+			out.print(JsonUtil.loadFalseResult("绮変笣绫诲瀷涓嶆纭�"));
+			return;
+		}
+
+		long firstTeam = 0;
+		long countSecond = 0;
+		List<ThreeSale> listTeam = null;
+		if (!existScreen(focus)) { // 鏅�氭煡璇�
+			if (type == 1) {
+				listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
+			} else if (type == 2) {
+				listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
+			}
+			firstTeam = threeSaleSerivce.countFirstTeam(uid);
+			countSecond = threeSaleSerivce.countSecondTeam(uid);
+		} else { // 绛涢�夋潯浠�
+			List<Long> listId = null;
+			List<TeamFansInfo> listfocus = teamFansInfoService.query((page - 1) * Constant.PAGE_SIZE,
+					Constant.PAGE_SIZE, type, uid, focus);
+			if (listfocus != null && listfocus.size() > 0) {
+				listId = new ArrayList<Long>();
+				for (TeamFansInfo focusInfo : listfocus) {
+					listId.add(focusInfo.getWorkerId());
+				}
+			}
+			
+			if (listId != null && listId.size() > 0) {
+				if (type == 1) {
+					listTeam = threeSaleSerivce.listFirstTeam(0, Constant.PAGE_SIZE, uid, listId);
+				} else if (type == 2) {
+					listTeam = threeSaleSerivce.listSecondTeam(0, Constant.PAGE_SIZE, uid, listId);
+				}
+			}
+			firstTeam = teamFansInfoService.count(1, uid, focus);
+			countSecond = teamFansInfoService.count(2, uid, focus);
+		}
+		JSONArray array = organizeTeamNew(acceptData, listTeam, uid, type, true);
+		
+		long count = (type == 1) ? firstTeam : countSecond;
+		
+		JSONObject result = new JSONObject();
+		result.put("firstTeam", firstTeam);
+		result.put("secondTeam", countSecond);
+		result.put("count", count);
+		result.put("list", array);
+		
+		// 缁熻H5閾炬帴
+		if (page == 1) {
+			result.put("link", configService.get(ConfigKeyEnum.teamStatisticsLink.getKey()));
+		}
+		out.print(JsonUtil.loadTrueResult(result));
+	}
 	
+	/**
+	 * 楠岃瘉鏄惁瀛樺湪绛涢�夋潯浠�
+	 * @param focus
+	 * @return
+	 */
+	private boolean existScreen(ThreeSaleFocusDTO focus) {
+		if (focus.getStateValid() != null || focus.getTaobaoBind() != null || focus.getWeixinBind() != null
+				|| focus.getMinFansNum() != null || focus.getMinFansNum() != null
+				|| focus.getMinActiveTime() != null || focus.getMaxActiveTime() != null
+				|| focus.getMinIncome() != null  || focus.getMaxIncome() != null || !StringUtil.isNullOrEmpty(focus.getKey()))
+			 return true;
+	
+		return false;
+	}
+
+	/**
+	 * 鐢ㄦ埛闃熷憳缁熻
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "countMyTeamV2")
+	public void countMyTeamV2(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		try {
+			JSONObject bossObject = new JSONObject();
+			ThreeSale threeSale = threeSaleSerivce.getByWorkerId(uid);
+			if (threeSale == null) {
+				bossObject.put("exist", false);
+				bossObject.put("desc", "鎭枩浣狅紒鏉挎牀蹇渷浼樿川鐢ㄦ埛锛沑r\n\r\n浣犲苟娌℃湁閭�璇蜂汉锛屼絾浣犵殑閭�璇疯兘鍔涢粯璁ゆ槸寮�鍚殑锛沑r\n浣犳嫢鏈夌嫭鐗圭殑鏃犻個璇蜂汉婵�娲荤爜銆�");
+			} else {
+				// 涓婄骇鍩烘湰淇℃伅
+				Long bossId = threeSale.getBoss().getId();
+				UserInfo userInfo = userInfoService.selectByPKey(bossId);
+				boolean phoneCopy = true;
+				String phone = userInfo.getPhone();
+				if (StringUtil.isNullOrEmpty(phone)) {
+					phone = "";
+				} else {
+					if (!userCustomSettingsService.validateDisplayPhoneByUid(bossId)) {
+						phoneCopy = false;
+						phone = phone.substring(0, 7) + "****";
+					}
+				}
+
+				// 寰俊鍙�
+				UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(bossId);
+				if (extra != null) {
+					bossObject.put("weixin", StringUtil.isNullOrEmpty(extra.getWeiXin()) ? "" : extra.getWeiXin());
+				}
+
+				// 褰撳墠绛夌骇
+				UserLevelEnum level = null;
+				UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(bossId);
+				if (vipLevel != null && vipLevel.getLevel() != null) {
+					level = UserLevelUtil.getByLevel(vipLevel.getLevel());
+				}
+				if (level == null) {
+					level = UserLevelEnum.daRen;
+				}
+				level = UserLevelUtil.getShowLevel(level);
+
+				bossObject.put("exist", true);
+				bossObject.put("nickName", userInfo.getNickName());
+				bossObject.put("portrait", userInfo.getPortrait());
+				bossObject.put("phone", phone);
+				bossObject.put("phoneCopy", phoneCopy);
+				bossObject.put("level", level.name());
+			}
+
+			JSONObject json = new JSONObject();
+			json.put("boss", bossObject);
+
+			TearcherInfo tearcherInfo = tearcherService.selectByUid(uid);
+			if (tearcherInfo != null) {
+				JSONObject tearcherObject = new JSONObject();
+				tearcherObject.put("nickName", tearcherInfo.getNickName());
+				tearcherObject.put("portrait", tearcherInfo.getPortrait());
+				tearcherObject.put("phone", tearcherInfo.getPhone());
+				tearcherObject.put("weixin", tearcherInfo.getWxID());
+				tearcherObject.put("level", UserLevelEnum.tearcher);
+				json.put("tearcher", tearcherObject);
+			}
+
+			JSONObject daren = new JSONObject();
+			JSONObject highVIP = new JSONObject();
+			JSONObject superVIP = new JSONObject();
+
+			TeamUserLevelStatistic statistic = teamUserLevelStatisticService.selectByUid(uid);
+			if (statistic == null) {
+				daren.put("total", 0);
+				highVIP.put("total", 0);
+				superVIP.put("total", 0);
+			} else {
+				int totalDaren = statistic.getDaRenFirstCount() + statistic.getDaRenSecondCount()
+						+ statistic.getNormalFirstCount() + statistic.getNormalSecondCount();
+				daren.put("total", totalDaren);
+				highVIP.put("total", statistic.getHighFirstCount() + statistic.getHighSecondCount());
+				superVIP.put("total", statistic.getSuperFirstCount() + statistic.getSuperSecondCount());
+			}
+			// 缁熻杈句汉
+			long darenToday = threeSaleSerivce.countFirstTeamByDate(uid, 1)	+ threeSaleSerivce.countSecondTeamByDate(uid, 1);
+			long darenMonth = threeSaleSerivce.countFirstTeamByDate(uid, 2)	+ threeSaleSerivce.countSecondTeamByDate(uid, 2);
+			daren.put("today", darenToday);
+			daren.put("month", darenMonth);
+
+			SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+			String today = sd.format(new Date());
+			// 褰撴湀1鍙�
+			Calendar calendar1 = Calendar.getInstance();
+			calendar1.set(Calendar.DAY_OF_MONTH, 1);
+			Date minTime = sd.parse(sd.format(calendar1.getTime()));
+
+			int highVIPToday = 0;
+			int highVIPMonth = 0;
+			 // TODO 缁熻楂樼骇浼氬憳鏁伴噺
+			highVIP.put("today", highVIPToday);
+			highVIP.put("month", highVIPMonth);
+			
+			
+			int superVIPToday = 0;
+			int superVIPMonth = 0;
+			 // 缁熻瓒呯骇浼氬憳鏁伴噺
+			superVIP.put("today", superVIPToday);
+			superVIP.put("month", superVIPMonth);
+			
+			json.put("daren", daren);
+			json.put("highVIP", highVIP);
+			json.put("superVIP", superVIP);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触"));
+			e.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * 鑾峰彇绮変笣淇℃伅
+	 * 
+	 * @param acceptData
+	 * @param uid
+	 * @param workerId
+	 * @param out
+	 */
+	@RequestMapping(value = "getFansInfo")
+	public void getFansInfo(AcceptData acceptData, Long uid, Long workerId, PrintWriter out) {
+		if (uid == null || workerId == null) {
+			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛id缂哄け"));
+			return;
+		}
+
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
+		if (threeSale == null) {
+			out.print(JsonUtil.loadFalseResult("閭�璇峰叧绯讳笉瀛樺湪"));
+			return;
+		}
+
+		UserInfo user = userInfoService.selectByPKey(workerId);
+		if (user == null) {
+			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛涓嶅瓨鍦�"));
+			return;
+		}
+
+		// 涓婄骇
+		UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId());
+		 
+		
+		JSONArray tagArray = new JSONArray();
+		String memoName = user.getNickName();
+		Long succeedTime = threeSale.getSucceedTime();
+
+		JSONObject data = new JSONObject();
+		String phone = user.getPhone();
+		boolean phoneCopy = true;
+		if (StringUtil.isNullOrEmpty(phone)) {
+			phone = "";
+		} else {
+			if (!userCustomSettingsService.validateDisplayPhoneByUid(workerId)) {
+				phoneCopy = false;
+				phone = phone.substring(0, 7) + "****";
+			}
+		}
+
+		data.put("bossNickName", boss.getNickName());
+		data.put("nickName", user.getNickName());
+		data.put("phone", phone);
+		data.put("phoneCopy", phoneCopy);
+		data.put("joinTime", TimeUtil.formatDate(succeedTime == null ? threeSale.getCreateTime() : succeedTime));
+
+		ThreeSaleExtraInfo saleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, workerId);
+		if (saleExtraInfo != null) {
+			if (!StringUtil.isNullOrEmpty(saleExtraInfo.getNickname())) {
+				memoName = saleExtraInfo.getNickname();
+			}
+			String tags = saleExtraInfo.getTags();
+			if (!StringUtil.isNullOrEmpty(tags)) {
+				tagArray = JSONArray.fromObject(tags);
+			}
+		}
+		data.put("memoName", memoName);
+		data.put("tags", tagArray);
+
+		Date activeTime = null;
+		String weixin = null;
+		UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
+		if (userInfoExtra != null) {
+			weixin = userInfoExtra.getWeiXin();
+			activeTime = userInfoExtra.getActiveTime();
+		}
+		
+		if (activeTime == null) {
+			activeTime = new Date(user.getCreatetime());
+		}
+		
+		data.put("weixin", StringUtil.isNullOrEmpty(weixin) ? "" : weixin);
+		data.put("loginTime", TimeUtil.formatDate(activeTime));
+
+		UserExtraTaoBaoInfo userExtraTaoBaoInfo = userExtraTaoBaoInfoService.getByUid(workerId);
+		if (userExtraTaoBaoInfo != null && !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getRelationId())
+				&& !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getSpecialId())) {
+			data.put("taobao", true);
+		} else {
+			data.put("taobao", false);
+		}
+
+		String levelName = null;
+		UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(workerId);
+		if (userVIPPreInfo != null) {
+			Integer process = userVIPPreInfo.getProcess();
+			if (process == UserVIPPreInfo.PROCESS_1) {
+				levelName = "蹇渷杈句汉";
+			} else if (process == UserVIPPreInfo.PROCESS_2) {
+				levelName = "楂樼骇浼氬憳";
+			} else if (process == UserVIPPreInfo.PROCESS_3) {
+				levelName = "瓒呯骇浼氬憳";
+			} else if (process == UserVIPPreInfo.PROCESS_4) {
+				levelName = "璧勬繁瀵煎笀";
+			}
+
+			Integer sourceType = userVIPPreInfo.getSourceType();
+			if (sourceType != null) {
+				if (sourceType == UserVIPPreInfo.SOURCE_TYPE_ORDER) {
+					levelName += "(鑷喘鍒嗕韩鍨�)";
+				} else {
+					levelName += "(閭�璇峰洟闃熷瀷)";
+				}
+			}
+		}
+		if (StringUtil.isNullOrEmpty(levelName)) {
+			levelName = "蹇渷杈句汉";
+		}
+		data.put("level", levelName);
+
+		// 绮変笣缁熻
+		long indirectNum = 0;
+		long directNum = threeSaleSerivce.countFirstTeam(workerId);
+		if (directNum > 0) {
+			indirectNum = threeSaleSerivce.countSecondTeam(workerId);
+		}
+		// 璁㈠崟缁熻
+		long countTB = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_TAOBAO, 60);
+		long countJD = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_JD, 60);
+		long countPDD = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_PDD, 60);
+
+		data.put("fansNum", "鐩存帴绮変笣锛� "+directNum+"浜篭n" + "闂存帴绮変笣锛� "+indirectNum+"浜�");
+		data.put("orderInfo", "娣樺疂 ("+countTB+"绗�)\n" + "浜笢 ("+countJD+"绗�)\n" + "鎷煎澶� ("+countPDD+"绗�)");
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鑾峰彇绮変笣淇℃伅
+	 * 
+	 * @param acceptData
+	 * @param uid
+	 * @param workerId
+	 * @param out
+	 */
+	@RequestMapping(value = "saveTags")
+	public void saveTags(AcceptData acceptData, Long uid, Long workerId, String tags, PrintWriter out) {
+		if (uid == null || workerId == null) {
+			out.print(JsonUtil.loadFalseResult("鐢ㄦ埛id缂哄け"));
+			return;
+		}
+
+		int type = 1;
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
+		if (threeSale == null) {
+			type = 2;
+		}
+
+		ThreeSaleExtraInfo saleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, workerId);
+		if (saleExtraInfo != null) {
+			ThreeSaleExtraInfo upObject = new ThreeSaleExtraInfo();
+			upObject.setTags(tags);
+			upObject.setId(saleExtraInfo.getId());
+			upObject.setUpdateTime(new Date());
+			threeSaleExtraInfoSerivce.updateByPrimaryKeySelective(upObject);
+		} else {
+			saleExtraInfo = new ThreeSaleExtraInfo();
+			saleExtraInfo.setBoss(new UserInfo(uid));
+			saleExtraInfo.setWorker(new UserInfo(workerId));
+			saleExtraInfo.setTags(tags);
+			saleExtraInfo.setType(type);
+			saleExtraInfo.setCreateTime(new Date());
+			threeSaleExtraInfoSerivce.insertSelective(saleExtraInfo);
+		}
+
+		teamFansInfoService.updateTags(workerId, type, tags);
+		out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
+	}
+
+	
+	
+	/**
+	 * 鐢ㄦ埛闃熷憳缁熻-h5
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param out
+	 */
+	@RequestMapping(value = "countTeamH5")
+	public void countTeamH5(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		try {
+			Date now = new Date();
+			SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			// 浠婃棩
+			String todayStr = sdf.format(now);
+			// 鏄ㄦ棩
+			Date reduceDay = DateUtil.reduceDay(1, now);
+			// 鏈湀
+			String monthStr = sdf1.format(now);
+			
+			TeamDailyRecord todayRecord = new TeamDailyRecord(0,0,0);
+			TeamDailyRecord yesterdayRecord = new TeamDailyRecord(0,0,0);
+			TeamDailyRecord monthRecord = new TeamDailyRecord(0,0,0);
+			TeamDailyRecord totalityRecord = new TeamDailyRecord(0,0,0);
+			
+			List<TeamDailyRecord> list = teamDailyRecordService.getbyUid(uid);
+			if (list != null && list.size() > 0) {
+				for (TeamDailyRecord record: list) {
+					Date statisticDay = record.getCountDay();
+					if (todayStr.equals(sdf.format(statisticDay))) {
+						todayRecord = record;
+					}
+					
+					if (sdf.format(reduceDay).equals(sdf.format(statisticDay))) {
+						yesterdayRecord = record;
+					}
+					
+					if (monthStr.equals(sdf1.format(statisticDay))) {
+						monthRecord.setFirstNum(monthRecord.getFirstNum() + record.getFirstNum());
+						monthRecord.setSecondNum(monthRecord.getSecondNum() + record.getSecondNum());
+						monthRecord.setBeyondNum(monthRecord.getBeyondNum() + record.getBeyondNum());
+					}
+					
+					totalityRecord.setFirstNum(totalityRecord.getFirstNum() + record.getFirstNum());
+					totalityRecord.setSecondNum(totalityRecord.getSecondNum() + record.getSecondNum());
+					totalityRecord.setBeyondNum(totalityRecord.getBeyondNum() + record.getBeyondNum());
+				}
+			}  
+			
+			
+			JSONObject today = new JSONObject();
+			today.put("direct", todayRecord.getFirstNum());
+			today.put("indirect", todayRecord.getSecondNum());
+			today.put("beyond", todayRecord.getBeyondNum());
+			
+			JSONObject yesterday = new JSONObject();
+			yesterday.put("direct", yesterdayRecord.getFirstNum());
+			yesterday.put("indirect", yesterdayRecord.getSecondNum());
+			yesterday.put("beyond", yesterdayRecord.getBeyondNum());
+			
+			JSONObject month = new JSONObject();
+			month.put("direct", monthRecord.getFirstNum());
+			month.put("indirect", monthRecord.getSecondNum());
+			month.put("beyond", monthRecord.getBeyondNum());
+			
+			JSONObject totality = new JSONObject();
+			totality.put("direct", totalityRecord.getFirstNum());
+			totality.put("indirect", totalityRecord.getSecondNum());
+			totality.put("beyond", totalityRecord.getBeyondNum());
+			
+			
+			JSONObject json = new JSONObject();
+			json.put("today", today);
+			json.put("yesterday", yesterday);
+			json.put("month", month);
+			json.put("totality", totality);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触"));
+			e.printStackTrace();
+		}
+
+	}
 }

--
Gitblit v1.8.0