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/v1/UserInfoController.java |  223 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 154 insertions(+), 69 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 9231859..226a0cc 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,9 +40,11 @@
 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.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;
@@ -53,6 +55,7 @@
 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.UserInfoModifyRecord.ModifyTypeEnum;
 import com.yeshi.fanli.entity.bus.user.WeiXinUser;
 import com.yeshi.fanli.entity.common.AdminUser;
 import com.yeshi.fanli.entity.common.Config;
@@ -63,10 +66,10 @@
 import com.yeshi.fanli.entity.system.BusinessSystem;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
-import com.yeshi.fanli.exception.BindingAccountException;
 import com.yeshi.fanli.exception.goods.CollectionGoodsException;
 import com.yeshi.fanli.exception.taobao.TaoKeApiException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
+import com.yeshi.fanli.exception.user.BindingAccountException;
 import com.yeshi.fanli.exception.user.UserCustomSettingsException;
 import com.yeshi.fanli.exception.user.UserInfoException;
 import com.yeshi.fanli.exception.user.UserInfoExtraException;
@@ -77,18 +80,20 @@
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
 import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce;
-import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
+import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
+import com.yeshi.fanli.service.inter.money.extract.ExtractRecordService;
+import com.yeshi.fanli.service.inter.money.extract.ExtractService;
 import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
+import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
 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.BindingAccountService;
-import com.yeshi.fanli.service.inter.user.ExtractRecordService;
-import com.yeshi.fanli.service.inter.user.ExtractService;
+import com.yeshi.fanli.service.inter.user.BindRemindService;
 import com.yeshi.fanli.service.inter.user.MaskKeyService;
 import com.yeshi.fanli.service.inter.user.ShamUserService;
 import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
@@ -96,9 +101,13 @@
 import com.yeshi.fanli.service.inter.user.UserActiveLogService;
 import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
 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.UserMoneyDetailService;
+import com.yeshi.fanli.service.inter.user.UserRankService;
 import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
+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.AESUtil;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.GsonUtil;
@@ -108,8 +117,10 @@
 import com.yeshi.fanli.util.ThreadUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.Utils;
+import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.util.account.UserUtil;
 import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
+import com.yeshi.fanli.util.annotation.UserActive;
 import com.yeshi.fanli.util.email.MailSenderUtil;
 import com.yeshi.fanli.util.factory.AccountDetailsFactory;
 import com.yeshi.fanli.util.factory.HongBaoFactory;
@@ -214,6 +225,24 @@
 	@Resource
 	private UserTaoLiJinDetailService userTaoLiJinDetailService;
 
+	@Resource
+	private UserInfoModifyRecordService userInfoModifyRecordService;
+
+	@Resource
+	private BindRemindService bindRemindService;
+
+	@Resource
+	private RedPackBalanceService redPackBalanceService;
+
+	@Resource
+	private UserRankService userRankService;
+
+	@Resource
+	private UserVIPInfoService userVIPInfoService;
+	
+	@Resource
+	private RedPackForbidService redPackForbidService;
+
 	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";
@@ -258,6 +287,8 @@
 				userActiveLog.setVersionCode(acceptData.getVersion());
 				userActiveLog.setOsVersion(acceptData.getOsVersion());
 				userActiveLog.setDeviceType(acceptData.getDeviceType());
+				userActiveLog.setDevice(acceptData.getDevice());
+
 				userActiveLogService.addUserActiveLog(userActiveLog);
 
 				outUserInfo(acceptData, out, remotIP, find, acceptData.getDevice());
@@ -286,7 +317,9 @@
 			int loginType = form.getLoginType();
 			// WeiXinUserParam wxParam = null;
 			// 濡傛灉鏄井淇$櫥闄嗭紝閭i渶瑕佸厛鑾峰彇鍒板井淇$殑unionid
-			WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+			WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+			WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
+					account.getAppSecret());
 			if (loginType == Constant.WEIXIN && StringUtil.isNullOrEmpty(form.getWxUnionId())) {
 				// wxParam = WXinUtil.getWxParam(code);
 				if (weiXinUser == null) {
@@ -381,7 +414,11 @@
 												 * StringUtil.isNullOrEmpty(form
 												 * .getWxOpenId())
 												 */) {
-				WeiXinUser xinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+
+				WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+
+				WeiXinUser xinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
+						account.getAppSecret());
 				if (xinUser == null) {
 					out.print(JsonUtil.loadFalseResult("鐧诲綍澶辫触"));
 					return;
@@ -640,7 +677,9 @@
 		}
 		int loginType = form.getLoginType();
 		if (loginType == Constant.WEIXIN) {
-			WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code);
+			WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
+			WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
+					account.getAppSecret());
 
 			if (weiXinUser == null) {
 				out.print(JsonUtil.loadFalseResult("缁戝畾澶辫触锛岀敤鎴峰紓甯歌閲嶈瘯锛�"));
@@ -1077,7 +1116,7 @@
 	 * @param type
 	 * @param out
 	 */
-	@RequestSerializableByKey(key = "uid")
+	@RequestSerializableByKey(key = "#uid")
 	@RequestMapping(value = "extractmoneynew", method = RequestMethod.POST)
 	public void extractMoneyNew(AcceptData acceptData, long uid, BigDecimal money, String vcode,
 			HttpServletRequest request, int type, PrintWriter out) {
@@ -1192,7 +1231,7 @@
 		} 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("鏈夌淮鏉冭鍗曞皻鏈墸娆�"));
 		}
@@ -1387,7 +1426,6 @@
 		}
 	}
 
-	
 	/**
 	 * h5鏀惰棌
 	 * 
@@ -1727,15 +1765,10 @@
 					bossData = new JSONObject();
 					UserInfo boss = threeSale.getBoss();
 					if (boss != null) {
-						bossData.put("bossId", boss.getId());
 						bossData.put("nickName", boss.getNickName());
 						bossData.put("portrait", boss.getPortrait());
-						UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(boss.getId());
-						if (userInfoExtra != null) 
-							bossData.put("weiXin", userInfoExtra.getWeiXin());
 					}
 
-					
 					SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
 					Long createTime = threeSale.getCreateTime();
 					Date inviteTime = new Date(createTime);
@@ -1832,7 +1865,6 @@
 			out.print(JsonUtil.loadFalseResult("缁熻澶辫触"));
 			e.printStackTrace();
 		}
-
 	}
 
 	/**
@@ -1847,48 +1879,35 @@
 	 */
 	@RequestMapping(value = "setextrainfo", method = RequestMethod.POST)
 	public void setExtraInfo(AcceptData acceptData, long uid, long inviteId, String memoName, PrintWriter out) {
-
-		try {
-			List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, null);
-			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;
-			}
-
-			List<ThreeSaleExtraInfo> list = threeSaleExtraInfoSerivce.listbyBossIdAndWorkerId(uid, worker.getId());
-			if (list == null || list.size() == 0) {
-
-				ThreeSaleExtraInfo extraInfo = new ThreeSaleExtraInfo();
-				extraInfo.setWorker(worker);
-				extraInfo.setNickname(memoName);
-				extraInfo.setCreateTime(new Date());
-				extraInfo.setUpdateTime(new Date());
-
-				UserInfo boss = new UserInfo(uid);
-				extraInfo.setBoss(boss);
-
-				threeSaleExtraInfoSerivce.insert(extraInfo);
-
-			} else {
-				ThreeSaleExtraInfo extraInfo = list.get(0);
-				extraInfo.setNickname(memoName);
-				extraInfo.setUpdateTime(new Date());
-				threeSaleExtraInfoSerivce.updateByPrimaryKey(extraInfo);
-			}
-
-			out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
-
-		} catch (Exception e) {
-			out.print(JsonUtil.loadFalseResult("淇濆瓨澶辫触"));
-			e.printStackTrace();
+		List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, null);
+		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;
+		}
+
+		ThreeSaleExtraInfo extraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, worker.getId());
+		if (extraInfo == null) {
+			extraInfo = new ThreeSaleExtraInfo();
+			extraInfo.setWorker(worker);
+			extraInfo.setNickname(memoName);
+			extraInfo.setCreateTime(new Date());
+			extraInfo.setUpdateTime(new Date());
+			extraInfo.setBoss(new UserInfo(uid));
+			threeSaleExtraInfoSerivce.insertSelective(extraInfo);
+		} else {
+			ThreeSaleExtraInfo updateInfo = new ThreeSaleExtraInfo();
+			updateInfo.setId(extraInfo.getId());
+			updateInfo.setNickname(memoName);
+			updateInfo.setUpdateTime(new Date());
+			threeSaleExtraInfoSerivce.updateByPrimaryKeySelective(updateInfo);
+		}
+		out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
 	}
 
 	/**
@@ -2051,6 +2070,7 @@
 	 * @param requst
 	 * @param out
 	 */
+	@UserActive(uid = "#uid")
 	@RequestMapping(value = "getuserinfoNew", method = RequestMethod.POST)
 	public void getuserinfoNew(AcceptData acceptData, Long uid, HttpServletRequest requst, PrintWriter out) {
 		try {
@@ -2076,6 +2096,7 @@
 			userActiveLog.setVersionCode(acceptData.getVersion());
 			userActiveLog.setOsVersion(acceptData.getOsVersion());
 			userActiveLog.setDeviceType(acceptData.getDeviceType());
+			userActiveLog.setDevice(acceptData.getDevice());
 			userActiveLogService.addUserActiveLog(userActiveLog);
 
 			// 澶勭悊鐢ㄦ埛淇℃伅
@@ -2138,14 +2159,49 @@
 					userInfo.setRankNamePicture(null);
 					userInfo.setRankIcon(null);
 				}
-				
-				userInfo.setSex(userInfoExtra.getSex());
-				userInfo.setWeiXin(userInfoExtra.getWeiXin());
+
+				// 1.6.5 涔嬪悗杩斿洖鎬у埆銆佸井淇″彿
+				if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
+					if (userInfoExtra.getSex() != null)
+						userInfo.setSex(userInfoExtra.getSex());
+
+					if (!StringUtil.isNullOrEmpty(userInfoExtra.getWeiXin()))
+						userInfo.setWeiXin(userInfoExtra.getWeiXin());
+				}
+			}
+			// 1.6.5 涔嬪悗杩斿洖 寰俊鍙锋彁绀�
+			if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
+				userInfo.setWeiXinTip("娣诲姞寰俊鍙峰悗锛屼綘鐨勯個璇蜂汉鍜屼竴绾ч槦鍛樺彲浠ラ�氳繃寰俊涓庝綘寤虹珛鑱旂郴銆�");
+
+			// 鏌ヨ鏄惁涓篤IP
+			if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				userInfo.setVip(userVIPInfoService.isVIP(uid));
 			}
 
 			data.put("user", JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(userInfo));
 			data.put("invitCode", invitCode); // 閭�璇风爜
+			if (userInfoExtra.getInviteCodeState() != null
+					&& userInfoExtra.getInviteCodeState() == UserInfoExtra.INVITE_CODE_SATTE_VALID_UPDATED)
+				data.put("invitCodeUpdated", true);// 閭�璇风爜鏄惁宸茬粡淇敼杩�
+			else
+				data.put("invitCodeUpdated", false);
 			data.put("welfareCenterNews", welfareCenterNews);// 绂忓埄涓績娑堟伅
+			data.put("vipLink", configService.get("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);
+			}
+
+			// 2.0.2 鐗堟湰
+			if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				boolean verifyForbid = redPackForbidService.verifyForbid(uid);
+				data.put("redPackLock", verifyForbid);
+			}
+
 			out.print(JsonUtil.loadTrueResult(data));
 
 			final UserInfo uuser = userInfo;
@@ -2261,7 +2317,8 @@
 	 * @param out
 	 */
 	@RequestMapping(value = "saveInfo")
-	public void saveInfo(AcceptData acceptData, String nickName, String weiXin, Integer sex, Long uid, PrintWriter out) {
+	public void saveInfo(AcceptData acceptData, String nickName, String weiXin, Integer sex, Long uid,
+			String inviteCode, PrintWriter out) {
 		try {
 			if (uid == null) {
 				out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
@@ -2274,30 +2331,34 @@
 					out.print(JsonUtil.loadFalseResult("鏄电О杩囬暱"));
 					return;
 				}
-				
+
 				if (maskKeyService.examineContent(nickName)) {
 					out.print(JsonUtil.loadFalseResult("涓嶈兘鍖呭惈鏁忔劅璇嶆眹"));
 					return;
 				}
 				userInfoService.saveUserInfo(nickName, uid);
+
+				userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.nickName, nickName);
 			}
-			
+
 			// 淇敼寰俊鍙�
 			if (!StringUtil.isNullOrEmpty(weiXin)) {
 				if (weiXin.length() > 32) {
 					out.print(JsonUtil.loadFalseResult("寰俊鍙疯繃闀�"));
 					return;
 				}
-				
+
 				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
 				if (userInfoExtra != null) {
 					UserInfoExtra extra = new UserInfoExtra();
 					extra.setId(userInfoExtra.getId());
 					extra.setWeiXin(weiXin);
 					userInfoExtraService.saveUserInfoExtra(extra);
+
+					userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.setWeiXinNum, weiXin);
 				}
 			}
-			
+
 			// 淇敼鎬у埆
 			if (sex != null && sex > 0 && sex < 3) {
 				UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
@@ -2306,6 +2367,30 @@
 					extra.setId(userInfoExtra.getId());
 					extra.setSex(sex);
 					userInfoExtraService.saveUserInfoExtra(extra);
+
+					userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.gender, sex + "");
+				}
+			}
+
+			if (!StringUtil.isNullOrEmpty(inviteCode)) {// 閭�璇风爜涓嶄负绌�
+				inviteCode = inviteCode.trim();
+				if (inviteCode.length() >= 6 && inviteCode.length() <= 12) {
+
+					if (!userVIPInfoService.isVIP(uid)) {
+						out.print(JsonUtil.loadFalseResult(20, "鍙湁瓒呯骇浼氬憳鎵嶈兘淇敼"));
+						return;
+					}
+
+					try {
+						userInfoExtraService.updateInviteCode(inviteCode, uid);
+						out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
+						return;
+					} catch (UserInfoExtraException e) {
+						out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMessage()));
+					}
+				} else {
+					out.print(JsonUtil.loadFalseResult(1, "閭�璇风爜蹇呴』涓�6鍒�12浣�"));
+					return;
 				}
 			}
 			out.print(JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));

--
Gitblit v1.8.0