From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java |  405 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 288 insertions(+), 117 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
index 9871b27..8535fd5 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -40,22 +40,27 @@
 import com.yeshi.fanli.dto.HongBaoDTO;
 import com.yeshi.fanli.dto.money.AccountDetails;
 import com.yeshi.fanli.dto.order.OrderItem;
+import com.yeshi.fanli.dto.user.UserInviteLevelEnum;
 import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
 import com.yeshi.fanli.entity.AppVersionInfo;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.user.AccountMessage;
+import com.yeshi.fanli.entity.bus.user.BindRemind;
 import com.yeshi.fanli.entity.bus.user.BindingAccount;
 import com.yeshi.fanli.entity.bus.user.Extract;
 import com.yeshi.fanli.entity.bus.user.ExtractRecord;
 import com.yeshi.fanli.entity.bus.user.LostOrder;
+import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
 import com.yeshi.fanli.entity.bus.user.SMSHistory;
 import com.yeshi.fanli.entity.bus.user.ThreeSale;
 import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
 import com.yeshi.fanli.entity.bus.user.UserActiveLog;
 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.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum;
+import com.yeshi.fanli.entity.bus.user.WeiXinUser;
+import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
+import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
 import com.yeshi.fanli.entity.common.AdminUser;
 import com.yeshi.fanli.entity.common.Config;
 import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
@@ -63,6 +68,7 @@
 import com.yeshi.fanli.entity.money.UserMoneyDetail;
 import com.yeshi.fanli.entity.order.HongBaoOrder;
 import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
 import com.yeshi.fanli.exception.goods.CollectionGoodsException;
@@ -74,6 +80,7 @@
 import com.yeshi.fanli.exception.user.UserInfoExtraException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.AdminUserService;
+import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
 import com.yeshi.fanli.service.inter.config.AppVersionService;
 import com.yeshi.fanli.service.inter.config.BusinessSystemService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
@@ -88,9 +95,13 @@
 import com.yeshi.fanli.service.inter.order.LostOrderService;
 import com.yeshi.fanli.service.inter.order.OrderService;
 import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
+import com.yeshi.fanli.service.inter.redpack.RedPackForbidService;
 import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
 import com.yeshi.fanli.service.inter.user.AccountMessageService;
+import com.yeshi.fanli.service.inter.user.BindRemindService;
 import com.yeshi.fanli.service.inter.user.MaskKeyService;
+import com.yeshi.fanli.service.inter.user.PreviewInfoService;
 import com.yeshi.fanli.service.inter.user.ShamUserService;
 import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
 import com.yeshi.fanli.service.inter.user.UserAccountService;
@@ -99,11 +110,19 @@
 import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
 import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserRankService;
 import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
+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.vip.GiveVIPApplyInfoService;
+import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
+import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
+import com.yeshi.fanli.service.manger.user.UserLevelManager;
 import com.yeshi.fanli.util.AESUtil;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.FilePathEnum;
 import com.yeshi.fanli.util.GsonUtil;
 import com.yeshi.fanli.util.HongBaoUtil;
 import com.yeshi.fanli.util.RedisManager;
@@ -122,6 +141,7 @@
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
 import com.yeshi.fanli.util.wx.WXLoginUtil;
+import com.yeshi.fanli.vo.user.MineInfoVO;
 import com.yeshi.fanli.vo.user.UserInfoExtraVO;
 import com.yeshi.fanli.vo.user.UserSettingsVO;
 
@@ -222,9 +242,44 @@
 	@Resource
 	private UserInfoModifyRecordService userInfoModifyRecordService;
 
-	private static final String PASSWORD_MAX_ERROR = "password_max_error";
-	private static final String EXTRACT_MIN_MONEY = "extract_min_money";
-	private static final String EXTRACT_MAX_MONEY = "extract_max_money";
+	@Resource
+	private BindRemindService bindRemindService;
+
+	@Resource
+	private RedPackBalanceService redPackBalanceService;
+
+	@Resource
+	private UserRankService userRankService;
+
+	@Resource
+	private UserVIPInfoService userVIPInfoService;
+
+	@Resource
+	private UserVipConfigService userVipConfigService;
+
+	@Resource
+	private RedPackForbidService redPackForbidService;
+
+	@Resource
+	private UserInviteService userInviteService;
+
+	@Resource
+	private TeamFansInfoService teamFansInfoService;
+
+	@Resource
+	private UserLevelManager userLevelManager;
+
+	@Resource
+	private JumpDetailV2Service jumpDetailV2Service;
+
+	@Resource
+	private GiveVIPApplyInfoService giveVIPApplyInfoService;
+
+	@Resource
+	private PreviewInfoService previewInfoService;
+
+	private static final String EXTRACT_MIN_MONEY = ConfigKeyEnum.extractMoneyMin.getKey();
+	private static final String EXTRACT_MAX_MONEY = ConfigKeyEnum.extractMoneyMAX.getKey();
 
 	/**
 	 * 鑾峰彇鐢ㄦ埛淇℃伅
@@ -267,7 +322,7 @@
 				userActiveLog.setOsVersion(acceptData.getOsVersion());
 				userActiveLog.setDeviceType(acceptData.getDeviceType());
 				userActiveLog.setDevice(acceptData.getDevice());
-				
+
 				userActiveLogService.addUserActiveLog(userActiveLog);
 
 				outUserInfo(acceptData, out, remotIP, find, acceptData.getDevice());
@@ -338,7 +393,7 @@
 				form.setPortrait(weiXinUser.getHeadimgurl());
 				String wxHeadImg = COSManager.getInstance()
 						.uploadFile(HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()),
-								Constant.WXHEADURL + UUID.randomUUID().toString())
+								FilePathEnum.userPortrait.getPath() + UUID.randomUUID().toString())
 						.getUrl();
 				form.setWxPic(wxHeadImg);
 				form.setNickName(weiXinUser.getNickname());
@@ -409,7 +464,7 @@
 				form.setWxName(xinUser.getNickname());
 				String wxHeadImg = COSManager.getInstance()
 						.uploadFile(HttpUtil.getAsInputStream(xinUser.getHeadimgurl()),
-								Constant.WXHEADURL + UUID.randomUUID().toString())
+								FilePathEnum.userPortrait + UUID.randomUUID().toString())
 						.getUrl();
 				form.setWxPic(wxHeadImg);
 			} else if (formLoginType == Constant.TAOBAO) {
@@ -571,7 +626,7 @@
 			data.put("inviteList", String.format("http://%s/%s/client/share/friends_new_online.html",
 					Constant.systemCommonConfig.getProjectHost(), Constant.systemCommonConfig.getProjectName()));
 		else
-			data.put("inviteList", configService.get("team_list"));
+			data.put("inviteList", configService.get(ConfigKeyEnum.teamList.getKey()));
 
 		// 鐣岄潰鐘舵��
 		UserSettingsVO mySettings = null;
@@ -610,7 +665,9 @@
 				welfareCenterNews = userInfoExtra.getCouponNews();
 			}
 
-			if (userInfoExtra.getInviteCode() != null && userInfoExtra.getInviteCode().trim().length() > 0) {
+			if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCodeVip())) {
+				invitCode = userInfoExtra.getInviteCodeVip();
+			} else {
 				invitCode = userInfoExtra.getInviteCode();
 			}
 		}
@@ -624,13 +681,8 @@
 		final UserInfo uuser = user;
 		ThreadUtil.run(new Runnable() {
 			public void run() {
-
-				try {
-					// 鑾峰彇閭�璇风爜锛氳嫢鏃犻個璇风爜涓斿瓨鍦ㄦ湁鏁堢殑闃熷憳鍏崇郴 鍒欒嚜鍔ㄧ敓鎴愰個璇风爜
-					userInfoExtraService.getUserInviteCode(uuser.getId());
-				} catch (UserInfoExtraException e) {
-					e.printStackTrace();
-				}
+				// 鑾峰彇閭�璇风爜锛氳嫢鏃犻個璇风爜涓斿瓨鍦ㄦ湁鏁堢殑闃熷憳鍏崇郴 鍒欒嚜鍔ㄧ敓鎴愰個璇风爜
+				userInfoExtraService.getInviteCodeByUid(uuser.getId());
 
 				LogHelper.userInfo(GsonUtil.toJsonExpose(uuser));
 				uuser.setLastLoginIp(remotIP);
@@ -679,7 +731,7 @@
 			find.setWxUnionId(weiXinUser.getUnionid());
 			String wxHeadImg = COSManager.getInstance()
 					.uploadFile(HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()),
-							Constant.WXHEADURL + UUID.randomUUID().toString())
+							FilePathEnum.userPortrait.getPath() + UUID.randomUUID().toString())
 					.getUrl();
 			find.setWxPic(wxHeadImg);
 		} else { // 缁戝畾娣樺疂
@@ -771,8 +823,8 @@
 		data.put("maxError", 1);
 		String minMoney = configService.get(EXTRACT_MIN_MONEY); // 鍗曠瑪鎻愮幇鐨勬渶灏忛噾棰�
 		String maxMoney = configService.get(EXTRACT_MAX_MONEY); // 鍗曠瑪鎻愮幇鐨勬渶灏忛噾棰�
-		String maxDayMoney = configService.get("extract_money_day"); // 姣忔棩鏈�澶ф彁鐜伴噾棰�
-		int maxDayCount = Integer.parseInt(configService.get("extract_count_day"));
+		String maxDayMoney = configService.get(ConfigKeyEnum.extractMoneyDay.getKey()); // 姣忔棩鏈�澶ф彁鐜伴噾棰�
+		int maxDayCount = Integer.parseInt(configService.get(ConfigKeyEnum.extractDayCount.getKey()));
 		ExtractRecord extractRecord = extractRecordService.getExtractRecordByUid(uid);
 		boolean canExtract = true;
 		String errorMsg = "";
@@ -833,8 +885,8 @@
 		}
 
 		String minMoney = configService.get(EXTRACT_MIN_MONEY); // 鍗曠瑪鎻愮幇鐨勬渶灏忛噾棰�
-		String maxDayMoney = configService.get("extract_money_day"); // 姣忔棩鏈�澶ф彁鐜伴噾棰�
-		int maxDayCount = Integer.parseInt(configService.get("extract_count_day"));
+		String maxDayMoney = configService.get(ConfigKeyEnum.extractMoneyDay.getKey()); // 姣忔棩鏈�澶ф彁鐜伴噾棰�
+		int maxDayCount = Integer.parseInt(configService.get(ConfigKeyEnum.extractDayCount.getKey()));
 		ExtractRecord extractRecord = extractRecordService.getExtractRecordByUid(uid);
 		boolean canExtract = true;
 		String errorMsg = "";
@@ -1116,11 +1168,13 @@
 			return;
 		}
 
-		// 鍒ゆ柇鎵嬫満楠岃瘉鐮佺殑姝g‘鎬�
-		String oldCode = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN);
-		if (StringUtil.isNullOrEmpty(oldCode) || !oldCode.equalsIgnoreCase(vcode)) {
-			out.print(JsonUtil.loadFalseResult(90001, "楠岃瘉鐮侀敊璇�"));
-			return;
+		if (!Constant.IS_TEST) {
+			// 鍒ゆ柇鎵嬫満楠岃瘉鐮佺殑姝g‘鎬�
+			String oldCode = redisManager.getSMSVCode(user.getPhone(), SMSHistory.TYPE_LOGIN);
+			if (StringUtil.isNullOrEmpty(oldCode) || !oldCode.equalsIgnoreCase(vcode)) {
+				out.print(JsonUtil.loadFalseResult(90001, "楠岃瘉鐮侀敊璇�"));
+				return;
+			}
 		}
 
 		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
@@ -1191,7 +1245,7 @@
 					}
 
 					long[] targetUids = new long[] { 3L, 4L };
-					Config config = configService.getConfig("extract_code_email_from");
+					Config config = configService.getConfig(ConfigKeyEnum.extractCodeEmailFrom.getKey());
 					String[] sts = config.getValue().split(",");
 					String account = sts[0];
 					String pwd = sts[1];
@@ -1210,9 +1264,9 @@
 		} else if (etype == 3) {
 			out.print(JsonUtil.loadFalseResult("鎻愮幇閲戦澶т簬鎴戠殑绾㈠寘"));
 		} else if (etype == 111) {
-			out.print(JsonUtil.loadFalseResult("鏇存崲浜嗘墜鏈哄彿鍚�7澶╁唴涓嶅厑璁告彁鐜�"));
+			out.print(JsonUtil.loadFalseResult("淇敼鎵嬫満鍙峰悗锛�7澶╁唴鏃犳硶鎻愮幇"));
 		} else if (etype == 110) {
-			out.print(JsonUtil.loadFalseResult("鏈夌淮鏉冭鍗曞皻鏈墸娆�"));
+			out.print(JsonUtil.loadFalseResult("鏈夊敭鍚庤鍗曞皻鏈墸娆�"));
 		}
 
 	}
@@ -1649,19 +1703,17 @@
 
 			JSONObject resultData = new JSONObject();
 			if (type == 1) {
-				resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid, null);
+				resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid);
 			} else if (type == 2) {
-				resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid, null);
+				resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid);
 			}
 
 			// 瀹夊崜绯荤粺杩斿洖鎵�鏈夋暟鎹�
 			String platform = acceptData.getPlatform();
 			if ("android".equalsIgnoreCase(platform)) {
-				long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
-				long firstTeamTotal = threeSaleSerivce.countFirstTeam(uid, null);
+				long firstTeam = threeSaleSerivce.countFirstTeam(uid);
 
-				long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
-				long secondTeamTotal = threeSaleSerivce.countSecondTeam(uid, null);
+				long secondTeam = threeSaleSerivce.countSecondTeam(uid);
 
 				JSONObject bossData = null;
 				ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
@@ -1679,31 +1731,29 @@
 					bossData.put("inviteTime", "閭�璇锋椂闂�: " + sdf.format(inviteTime));
 				}
 
-				String helpLink = configService.get("team_help_url");
+				String helpLink = configService.get(ConfigKeyEnum.teamHelpUrl.getKey());
 				if (helpLink == null) {
 					helpLink = "";
 				}
 
 				boolean hasCode = false;
-				String inviteCode = userInfoExtraService.getUserInviteCode(uid);
+				String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
 				if (inviteCode != null && inviteCode.trim().length() > 0) {
 					hasCode = true; // 宸叉湁閭�璇风爜
 				} else {
 					// 閭�璇锋縺娲婚摼鎺�
-					resultData.put("activationlink", configService.get("invite_activation_url"));
+					resultData.put("activationlink", configService.get(ConfigKeyEnum.inviteActivationUrl.getKey()));
 				}
 				resultData.put("hasCode", hasCode);
 
 				resultData.put("helpLink", helpLink);
 				resultData.put("firstTeam", firstTeam);
-				resultData.put("firstTeamTotal", firstTeamTotal);
+				resultData.put("firstTeamTotal", firstTeam);
 				resultData.put("secondTeam", secondTeam);
-				resultData.put("secondTeamTotal", secondTeamTotal);
+				resultData.put("secondTeamTotal", secondTeam);
 				resultData.put("boss", bossData);
 			}
 			out.print(JsonUtil.loadTrueResult(resultData));
-		} catch (UserInfoExtraException e) {
-			out.print(JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			out.print(JsonUtil.loadFalseResult("缁熻澶辫触"));
 			e.printStackTrace();
@@ -1726,17 +1776,17 @@
 
 			JSONObject resultData = new JSONObject();
 			if (type == 1) {
-				resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid, 1);
+				resultData = threeSaleSerivce.getMyFirstTeam((page - 1) * pageSize, pageSize, uid);
 			} else if (type == 2) {
-				resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid, 1);
+				resultData = threeSaleSerivce.getMySecondTeam((page - 1) * pageSize, pageSize, uid);
 			}
 
 			// 瀹夊崜绯荤粺杩斿洖鎵�鏈夋暟鎹�
 			String platform = acceptData.getPlatform();
 			if ("android".equalsIgnoreCase(platform)) {
-				long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
+				long firstTeam = threeSaleSerivce.countFirstTeam(uid);
 
-				long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
+				long secondTeam = threeSaleSerivce.countSecondTeam(uid);
 
 				JSONObject bossData = null;
 				ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
@@ -1754,18 +1804,18 @@
 					bossData.put("inviteTime", "閭�璇锋椂闂�: " + sdf.format(inviteTime));
 				}
 
-				String helpLink = configService.get("team_help_url");
+				String helpLink = configService.get(ConfigKeyEnum.teamHelpUrl.getKey());
 				if (helpLink == null) {
 					helpLink = "";
 				}
 
 				boolean hasCode = false;
-				String inviteCode = userInfoExtraService.getUserInviteCode(uid);
+				String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
 				if (inviteCode != null && inviteCode.trim().length() > 0) {
 					hasCode = true; // 宸叉湁閭�璇风爜
 				} else {
 					// 閭�璇锋縺娲婚摼鎺�
-					resultData.put("activationlink", configService.get("invite_activation_url"));
+					resultData.put("activationlink", configService.get(ConfigKeyEnum.inviteActivationUrl.getKey()));
 				}
 				resultData.put("hasCode", hasCode);
 
@@ -1775,8 +1825,6 @@
 				resultData.put("boss", bossData);
 			}
 			out.print(JsonUtil.loadTrueResult(resultData));
-		} catch (UserInfoExtraException e) {
-			out.print(JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			out.print(JsonUtil.loadFalseResult("缁熻澶辫触"));
 			e.printStackTrace();
@@ -1793,11 +1841,9 @@
 	@RequestMapping(value = "countMyTeam", method = RequestMethod.POST)
 	public void countMyTeam(AcceptData acceptData, long uid, PrintWriter out) {
 		try {
-			long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
-			long firstTeamTotal = threeSaleSerivce.countFirstTeam(uid, null);
+			long firstTeam = threeSaleSerivce.countFirstTeam(uid);
 
-			long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
-			long secondTeamTotal = threeSaleSerivce.countSecondTeam(uid, null);
+			long secondTeam = threeSaleSerivce.countSecondTeam(uid);
 			JSONObject bossData = new JSONObject();
 			ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
 			if (threeSale != null) {
@@ -1815,31 +1861,29 @@
 
 			JSONObject resultData = new JSONObject();
 
-			String helpLink = configService.get("team_help_url");
+			String helpLink = configService.get(ConfigKeyEnum.teamHelpUrl.getKey());
 			if (helpLink == null) {
 				helpLink = "";
 			}
 			resultData.put("helpLink", helpLink);
 			resultData.put("firstTeam", firstTeam);
-			resultData.put("firstTeamTotal", firstTeamTotal);
+			resultData.put("firstTeamTotal", firstTeam);
 			resultData.put("secondTeam", secondTeam);
-			resultData.put("secondTeamTotal", secondTeamTotal);
+			resultData.put("secondTeamTotal", secondTeam);
 			resultData.put("boss", bossData);
 
 			boolean hasCode = false;
-			String inviteCode = userInfoExtraService.getUserInviteCode(uid);
+			String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
 			if (inviteCode != null && inviteCode.trim().length() > 0) {
 				hasCode = true; // 宸叉湁閭�璇风爜
 			} else {
 				// 閭�璇锋縺娲婚摼鎺�
-				resultData.put("activationlink", configService.get("invite_activation_url"));
+				resultData.put("activationlink", configService.get(ConfigKeyEnum.inviteActivationUrl.getKey()));
 			}
 			resultData.put("hasCode", hasCode);
 
 			out.print(JsonUtil.loadTrueResult(resultData));
 
-		} catch (UserInfoExtraException e) {
-			out.print(JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			out.print(JsonUtil.loadFalseResult("缁熻澶辫触"));
 			e.printStackTrace();
@@ -1858,21 +1902,33 @@
 	 */
 	@RequestMapping(value = "setextrainfo", method = RequestMethod.POST)
 	public void setExtraInfo(AcceptData acceptData, long uid, long inviteId, String memoName, PrintWriter out) {
-		List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, null);
-		if (listThreeSale == null || listThreeSale.size() == 0) {
+		ThreeSale threeSale = threeSaleSerivce.selectByPrimaryKey(inviteId);
+		if (threeSale == null) {
 			out.print(JsonUtil.loadFalseResult("璇ヨ褰曚笉瀛樺湪"));
 			return;
 		}
 
-		UserInfo worker = listThreeSale.get(0).getWorker();
+		UserInfo worker = threeSale.getWorker();
 		if (worker == null) {
 			out.print(JsonUtil.loadFalseResult("璇ヨ褰曚笉瀛樺湪"));
 			return;
 		}
 
+		int type = 1;
+		if (threeSale.getBoss().getId() != uid) {
+			type = 2;
+		}
+
 		ThreeSaleExtraInfo extraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, worker.getId());
 		if (extraInfo == null) {
 			extraInfo = new ThreeSaleExtraInfo();
+			Long bossUid = threeSale.getBoss().getId();
+			if (uid == bossUid) {
+				extraInfo.setType(1); // 鐩存帴
+			} else {
+				extraInfo.setType(2); // 闂存帴
+			}
+
 			extraInfo.setWorker(worker);
 			extraInfo.setNickname(memoName);
 			extraInfo.setCreateTime(new Date());
@@ -1886,43 +1942,11 @@
 			updateInfo.setUpdateTime(new Date());
 			threeSaleExtraInfoSerivce.updateByPrimaryKeySelective(updateInfo);
 		}
+
+		// 鏇存柊绮変笣璁板綍淇℃伅
+		teamFansInfoService.updateMemoName(worker.getId(), type, memoName);
+
 		out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
-	}
-
-	/**
-	 * 鍒犻櫎闃熷憳鍏崇郴
-	 * 
-	 * @param acceptData
-	 * @param uid
-	 * @param inviteId
-	 *            閭�璇穒d
-	 * @param out
-	 */
-	@RequestMapping(value = "removethreesale", method = RequestMethod.POST)
-	public void removethreesale(AcceptData acceptData, long uid, long inviteId, PrintWriter out) {
-		try {
-			List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, 1);
-			if (listThreeSale == null || listThreeSale.size() == 0) {
-				out.print(JsonUtil.loadFalseResult("鎿嶄綔鏁版嵁鏃犳晥"));
-				return;
-			}
-
-			UserInfo worker = listThreeSale.get(0).getWorker();
-			if (worker == null) {
-				out.print(JsonUtil.loadFalseResult("鎿嶄綔鏁版嵁鏃犳晥"));
-				return;
-			}
-
-			// 鍒犻櫎鍏崇郴
-			threeSaleSerivce.deleteByPrimaryKey(inviteId);
-			// 鍒犻櫎澶囨敞
-			threeSaleExtraInfoSerivce.deleteByBossIdAndWorkerId(uid, worker.getId());
-
-			out.print(JsonUtil.loadTrueResult("鍒犻櫎鎴愬姛"));
-		} catch (Exception e) {
-			out.print(JsonUtil.loadFalseResult("鍒犻櫎澶辫触"));
-			e.printStackTrace();
-		}
 	}
 
 	/**
@@ -2015,17 +2039,17 @@
 
 		try {
 
-			String inviteCode = userInfoExtraService.getUserInviteCode(uid);
+			String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
 
 			JSONObject inviteData = new JSONObject();
 			if (inviteCode == null || inviteCode.trim().length() == 0) {
 				// 鏃犻個璇风爜
 				inviteData.put("content", "閭�璇锋縺娲�");
-				inviteData.put("link", configService.get("invite_activation_url"));
+				inviteData.put("link", configService.get(ConfigKeyEnum.inviteActivationUrl.getKey()));
 			} else {
 				// 宸叉湁閭�璇风爜
 				inviteData.put("content", "閭�璇风爜");
-				inviteData.put("link", configService.get("invite_activation_success_url"));
+				inviteData.put("link", configService.get(ConfigKeyEnum.inviteActivationSuccessUrl.getKey()));
 			}
 
 			JSONObject data = new JSONObject();
@@ -2033,8 +2057,6 @@
 
 			out.print(JsonUtil.loadTrueResult(data));
 
-		} catch (UserInfoExtraException e) {
-			out.print(JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			out.print(JsonUtil.loadFalseResult("鑾峰彇澶辫触"));
 			e.printStackTrace();
@@ -2075,6 +2097,7 @@
 			userActiveLog.setVersionCode(acceptData.getVersion());
 			userActiveLog.setOsVersion(acceptData.getOsVersion());
 			userActiveLog.setDeviceType(acceptData.getDeviceType());
+			userActiveLog.setDevice(acceptData.getDevice());
 			userActiveLogService.addUserActiveLog(userActiveLog);
 
 			// 澶勭悊鐢ㄦ埛淇℃伅
@@ -2107,6 +2130,10 @@
 				mySettings.setNoInvitationBonus(0);
 			}
 
+			if (mySettings.getNoDisplayPhoneNum() == null) {
+				mySettings.setNoDisplayPhoneNum(0);
+			}
+
 			if (mySettings.getOpenSpreadHongBao() == null) {
 				if (userTaoLiJinDetailService.countDetail(uid) > 0) {
 					mySettings.setOpenSpreadHongBao(1);
@@ -2116,6 +2143,7 @@
 			}
 			data.put("moduleState", mySettings);
 
+			boolean tailor = false;
 			int welfareCenterNews = 0;
 			String invitCode = null;
 			UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
@@ -2123,8 +2151,11 @@
 				if (userInfoExtra.getCouponNews() != null) {
 					welfareCenterNews = userInfoExtra.getCouponNews();
 				}
-
-				if (userInfoExtra.getInviteCode() != null && userInfoExtra.getInviteCode().trim().length() > 0) {
+				// vip閭�璇风爜浼樺厛
+				if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCodeVip())) {
+					invitCode = userInfoExtra.getInviteCodeVip();
+				} else if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
+					tailor = true;
 					invitCode = userInfoExtra.getInviteCode();
 				}
 
@@ -2146,25 +2177,142 @@
 					if (!StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin()))
 						userInfo.setWeiXin(userInfoExtra.getWeiXin());
 				}
+
+				// 浜岀淮鐮�
+				userInfo.setErCode(userInfoExtra.getErCode());
 			}
+			// 鏄剧ず閭�璇风爜鐗瑰埗鍏ュ彛
+			data.put("tailor", tailor);
+
 			// 1.6.5 涔嬪悗杩斿洖 寰俊鍙锋彁绀�
 			if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
-				userInfo.setWeiXinTip("娣诲姞寰俊鍙峰悗锛屼綘鐨勯個璇蜂汉鍜屼竴绾ч槦鍛樺彲浠ラ�氳繃寰俊涓庝綘寤虹珛鑱旂郴銆�");
+				userInfo.setWeiXinTip("娣诲姞寰俊鍙峰悗锛屼綘鐨勯個璇蜂汉鍜岀洿鎺ョ矇涓濆彲浠ラ�氳繃寰俊涓庝綘寤虹珛鑱旂郴銆�");
+
+			// 鏌ヨ鏄惁涓篤IP
+			if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
+				userInfo.setVip(userVIPInfoService.isVIP(uid));
+
+				boolean verifyForbid = redPackForbidService.verifyForbid(uid);
+				data.put("redPackLock", verifyForbid);
+			}
 
 			data.put("user", JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(userInfo));
 			data.put("invitCode", invitCode); // 閭�璇风爜
+			if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCodeVip()))
+				data.put("invitCodeUpdated", true);// 閭�璇风爜鏄惁宸茬粡淇敼杩�
+			else
+				data.put("invitCodeUpdated", false);
 			data.put("welfareCenterNews", welfareCenterNews);// 绂忓埄涓績娑堟伅
+			data.put("vipLink", userVipConfigService.getValueByKey("vip_link"));// 瓒呯骇浼氬憳鍗囩骇閾炬帴
+
+			// 2.0.1涔嬪悗缁戝畾鎵嬫満鍙�
+			if (VersionUtil.greaterThan_2_0_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				boolean bindPhone = false;
+				if (StringUtil.isNullOrEmpty(userInfo.getPhone()))
+					bindPhone = bindRemindService.bindRemind(uid, BindRemind.TYPE_PHONE);
+				data.put("bindPhone", bindPhone);
+			}
+
+			if (!StringUtil.isNullOrEmpty(invitCode)) {
+				// 2.0.6 杩斿洖閭�璇蜂汉
+				if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
+					String bossName = "";
+					ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
+					if (threeSale != null && threeSale.getBoss() != null) {
+						bossName = threeSale.getBoss().getNickName();
+					}
+					data.put("bossName", bossName);
+				}
+			}
+
+			if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) {
+				UserInviteLevelEnum level = null;
+				// VIP棰勮淇℃伅
+				if (VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
+					String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.mineInfo);
+					if (!StringUtil.isNullOrEmpty(redisContent)) {
+						MineInfoVO vo = new Gson().fromJson(redisContent, MineInfoVO.class);
+						if (vo != null) {
+							if (!StringUtil.isNullOrEmpty(vo.getBalance()))
+								userInfo.setMyHongBao(new BigDecimal(vo.getBalance()));
+
+							if (!StringUtil.isNullOrEmpty(vo.getLevel()))
+								for (UserInviteLevelEnum levelEnum : UserInviteLevelEnum.values()) {
+									if (levelEnum.name().equals(vo.getLevel())) {
+										level = levelEnum;
+										break;
+									}
+								}
+						}
+					}
+				}
+
+				if (level == null) {
+					if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+						level = userInviteService.getUserInviteLevelNew(uid);
+					} else {
+						level = userInviteService.getUserInviteLevel(uid);
+					}
+				}
+				JSONObject inviteLevel = new JSONObject();
+				inviteLevel.put("level", level.name());
+				inviteLevel.put("link", level.getLink());
+				data.put("inviteLevel", inviteLevel);
+			}
+
+			if (VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				data.put("fansCountLink", configService.get(ConfigKeyEnum.teamStatisticsLink.getKey()));
+				// 浼氬憳鍔ㄤ綔
+				// 鏌ヨ鏄惁涓鸿秴绾т細鍛橈紝鏄殑璇濊繑鍥炶秴浼氱鐞嗛摼鎺�
+				UserLevelEnum level = userLevelManager.getUserLevel(uid);
+
+				JSONObject vipAction = null;
+				String managerLink = userVipConfigService.getValueByKey("vip_manager_link");
+				if ((level == UserLevelEnum.superVIP || level == UserLevelEnum.tearcher)
+						&& !StringUtil.isNullOrEmpty(managerLink)) {
+					vipAction = new JSONObject();
+					vipAction.put("name", "瓒呬細绠$悊");
+					vipAction.put("jumpDetail",
+							jumpDetailV2Service.getByTypeCache("web",
+									acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2,
+									Integer.parseInt(acceptData.getVersion())));
+					JSONObject params = new JSONObject();
+					params.put("url", userVipConfigService.getValueByKey("vip_manager_link"));
+					vipAction.put("params", params);
+				} else {
+					// 鏌ヨ鏄惁鍙互鎻愪氦浼氬憳鐢宠锛屾槸鐨勮瘽杩斿洖璧勬枡濉啓椤甸潰
+					List<GiveVIPApplyInfo> list = giveVIPApplyInfoService.listByStateAndTargetUid(uid,
+							GiveVIPApplyInfo.STATE_NO_INFO, 1, 20);
+					if (list != null && list.size() > 0) {
+						String link = userVipConfigService.getValueByKey("apply_vip_upload_info_link");
+						if (!StringUtil.isNullOrEmpty(link)) {
+							vipAction = new JSONObject();
+							vipAction.put("name", "鐢宠浼氬憳");
+							vipAction.put("jumpDetail",
+									jumpDetailV2Service.getByTypeCache("web",
+											acceptData.getPlatform().equalsIgnoreCase("android") ? 1 : 2,
+											Integer.parseInt(acceptData.getVersion())));
+							JSONObject params = new JSONObject();
+							params.put("url", link.replace("[ID]", list.get(0).getId()));
+							vipAction.put("params", params);
+						}
+					}
+				}
+
+				if (vipAction != null)
+					data.put("vipAction", vipAction);
+
+			}
+			
+			data.put("user", JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(userInfo));
+
 			out.print(JsonUtil.loadTrueResult(data));
 
 			final UserInfo uuser = userInfo;
 			ThreadUtil.run(new Runnable() {
 				public void run() {
-					try {
-						// 鑾峰彇閭�璇风爜锛氳嫢鏃犻個璇风爜涓斿瓨鍦ㄦ湁鏁堢殑闃熷憳鍏崇郴 鍒欒嚜鍔ㄧ敓鎴愰個璇风爜
-						userInfoExtraService.getUserInviteCode(uuser.getId());
-					} catch (UserInfoExtraException e) {
-						e.printStackTrace();
-					}
+					// 鑾峰彇閭�璇风爜锛氳嫢鏃犻個璇风爜涓斿瓨鍦ㄦ湁鏁堢殑闃熷憳鍏崇郴 鍒欒嚜鍔ㄧ敓鎴愰個璇风爜
+					userInfoExtraService.getInviteCodeByUid(uuser.getId());
 
 					// 鏇存柊鐢ㄦ埛闄勫姞淇℃伅锛岃�佺敤鎴蜂笉瀛樺湪鐨勯渶瑕佹坊鍔�
 					try {
@@ -2179,7 +2327,7 @@
 			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
 		} catch (Exception e) {
 			out.print(JsonUtil.loadFalseResult("鑾峰彇澶辫触"));
-			e.printStackTrace();
+			LogHelper.errorDetailInfo(e);
 		}
 	}
 
@@ -2270,7 +2418,7 @@
 	 */
 	@RequestMapping(value = "saveInfo")
 	public void saveInfo(AcceptData acceptData, String nickName, String weiXin, Integer sex, Long uid,
-			PrintWriter out) {
+			String inviteCode, MultipartFile qrCodeFile, HttpServletRequest request, PrintWriter out) {
 		try {
 			if (uid == null) {
 				out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
@@ -2323,6 +2471,29 @@
 					userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.gender, sex + "");
 				}
 			}
+
+			// 淇敼閭�璇风爜
+			if (!StringUtil.isNullOrEmpty(inviteCode)) {// 閭�璇风爜涓嶄负绌�
+				inviteCode = inviteCode.trim();
+				if (inviteCode.length() >= 4 && inviteCode.length() <= 12) {
+					try {
+						userInfoExtraService.updateInviteCodeVip(inviteCode, uid);
+						out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
+						return;
+					} catch (UserInfoExtraException e) {
+						out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage()));
+					}
+				} else {
+					out.print(JsonUtil.loadFalseResult(1, "閭�璇风爜蹇呴』涓�4鍒�12浣�"));
+					return;
+				}
+			}
+
+			// 浜岀淮鐮�
+			if (qrCodeFile != null) {
+				userInfoExtraService.uploadERCode(qrCodeFile, uid);
+			}
+
 			out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
 		} catch (UserInfoException e) {
 			out.print(JsonUtil.loadFalseResult(e.getMsg()));

--
Gitblit v1.8.0