From 7e7db2fa55a9a3af46d4fd8ede0dee147f101d64 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 09 五月 2020 21:41:27 +0800 Subject: [PATCH] 2.1需求 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java | 823 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 740 insertions(+), 83 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 063fd5e..21596a0 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; @@ -16,16 +17,27 @@ 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.ThreeSale; import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; +import com.yeshi.fanli.entity.bus.user.ThreeSaleFocusInfo; +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.UserInviteSeparate; +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.TeamLevelDailyRecord; +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; @@ -36,20 +48,33 @@ 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.UserInviteSeparateService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleFocusInfoService; 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.TeamLevelDailyRecordService; +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; import com.yeshi.fanli.util.wx.WXLoginUtil; import net.sf.json.JSONArray; @@ -85,21 +110,54 @@ @Resource private UserVIPInfoService userVIPInfoService; - - @Resource - private UserInviteSeparateService userInviteSeparateService; @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 ThreeSaleFocusInfoService threeSaleFocusInfoService; + + @Resource + private UserCustomSettingsService userCustomSettingsService; + + @Resource + private TearcherService tearcherService; + + @Resource + private TeamUserLevelStatisticService teamUserLevelStatisticService; + + @Resource + private UserVIPPreInfoService userVIPPreInfoService; + + @Resource + private TeamLevelDailyRecordService teamLevelDailyRecordService; + + @Resource + private TeamDailyRecordService teamDailyRecordService; - + /** * 閭�璇风爜楠岃瘉 * @@ -137,7 +195,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); // 閭�璇峰叧绯荤敤鎴蜂俊鎭� @@ -159,8 +218,7 @@ * * @param acceptData * @param uid - * @param key - * 楠岃瘉杩斿洖鐨刱ey + * @param key 楠岃瘉杩斿洖鐨刱ey * @param out */ @RequestSerializableByKey(key = "'activeInviteWX-'+#uid") @@ -189,7 +247,7 @@ } /** - * 鐢ㄦ埛闃熷憳鍒楄〃鏌ヨ 1.5.3鏌ヨ鏈夋晥闃熷憳 + * 鐢ㄦ埛闃熷憳鍒楄〃鏌ヨ * * @param acceptData * @param id @@ -201,25 +259,31 @@ 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, 1); - count = threeSaleSerivce.countFirstTeam(uid, 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, 1); - count = threeSaleSerivce.countSecondTeam(uid, 1); + listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid); + 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); @@ -227,10 +291,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)); } /** @@ -242,10 +306,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"); @@ -277,35 +339,6 @@ // 娣诲姞鏄惁涓篤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(); @@ -345,7 +378,7 @@ } else { if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) { object.put("weiXinState", 1); - object.put("weiXinTip", "鐐瑰嚮鎻愰啋TA锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��"); + object.put("weiXinTip", "鐐瑰嚮鎻愰啋锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��"); } else { object.put("weiXinState", 2); object.put("weiXinTip", "绯荤粺宸插彂閫佹彁閱掞紝閭�璇蜂汉娣诲姞寰俊鍚庝綘鍙鍒讹紝濡傚鏂硅繜杩熶笉娣诲姞锛屼綘鍙仈绯讳汉宸ュ鏈嶅姹傚府鍔�"); @@ -357,10 +390,155 @@ object.put("recentMsg", array); resultArray.add(object); } + return resultArray; + } + /** + * 鍔犲伐鏁版嵁 + * + * @param count + * @param list + * @param uid + * @param type 鏌ヨ绮変笣绫诲瀷 1鐩存帴 2闂存帴 + * @param wxtip 鏄渶瑕佸井淇℃彁绀� + * @return + */ + 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; + } + + Date todayTime = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm"); + SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + SimpleDateFormat formatYears = new SimpleDateFormat("yyyy"); + + List<Long> listWid = new ArrayList<>(); + 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(); + if (succeedTime == null) { + succeedTime = threeSale.getCreateTime(); + } + + // 鏈夋晥绮変笣 + 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)); // 鏈勾 + } else { + loginJson.put("content", "鏈�杩戠櫥褰� " + format.format(lastLoginTime)); // 寰�骞� + } + loginJson.put("color", "#888888"); + + JSONArray array = new JSONArray(); + array.add(loginJson); + + // 鏌ヨ绮変笣绛夌骇 + UserLevelEnum level = null; + UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(workerId); + if (vipLevel != null && vipLevel.getLevel() != null) { + level = UserLevelUtil.getByLevel(vipLevel.getLevel()); + } + if (level == null) { + level = UserLevelEnum.daRen; + } + level = UserLevelUtil.getShowLevel(level); + + JSONObject object = new JSONObject(); + object.put("workerId", workerId); + object.put("nickName", worker.getNickName()); + object.put("portrait", worker.getPortrait()); + object.put("inviteId", threeSale.getId()); + object.put("inviteTime", format.format(new Date(succeedTime)) + " 鍔犲叆"); + object.put("state", 1); + 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; + ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo(); + if (threeSaleExtraInfo != null) { + if (!StringUtil.isNullOrEmpty(threeSaleExtraInfo.getNickname())) { + memoName = threeSaleExtraInfo.getNickname(); + } + } + object.put("memoName", memoName); + + 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 { + if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) { + object.put("weiXinState", 1); + object.put("weiXinTip", "鐐瑰嚮鎻愰啋锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��"); + } else { + object.put("weiXinState", 2); + object.put("weiXinTip", "绯荤粺宸插彂閫佹彁閱掞紝閭�璇蜂汉娣诲姞寰俊鍚庝綘鍙鍒讹紝濡傚鏂硅繜杩熶笉娣诲姞锛屼綘鍙仈绯讳汉宸ュ鏈嶅姹傚府鍔�"); + } + } + } + } + resultArray.add(object); + } + return resultArray; + } + + /** + * 鏌ョ湅涓嬬骇鐨勭洿鎺ョ矇涓� + * + * @param acceptData + * @param page + * @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) { + if (tid == null) { + out.print(JsonUtil.loadFalseResult("浼犻�掑弬鏁颁笉姝g‘")); + return; + } + + 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", resultArray); - return result; + result.put("list", organizeTeamNew(acceptData, listTeam, tid, 1, false)); + out.print(JsonUtil.loadTrueResult(result)); } /** @@ -375,13 +553,14 @@ JSONObject bossData = getBossInfo(uid, threeSaleSerivce.getMyBoss(uid)); JSONObject resultData = new JSONObject(); - long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1); + long firstTeam = threeSaleSerivce.countFirstTeam(uid); + long countSecond = threeSaleSerivce.countSecondTeam(uid); resultData.put("boss", bossData); - resultData.put("helpLink", configService.get(ConfigKeyEnum.teamHelpUrl.getKey())); resultData.put("firstTeam", firstTeam); - resultData.put("firstTeamTotal", threeSaleSerivce.countFirstTeam(uid, null)); - resultData.put("secondTeam", threeSaleSerivce.countSecondTeam(uid, 1)); - resultData.put("secondTeamTotal", threeSaleSerivce.countSecondTeam(uid, null)); + resultData.put("firstTeamTotal", firstTeam); + resultData.put("secondTeam", countSecond); + resultData.put("secondTeamTotal", countSecond); + resultData.put("helpLink", configService.get(ConfigKeyEnum.teamHelpUrl.getKey())); boolean hasTeam = true; if (firstTeam <= 0) { @@ -426,6 +605,7 @@ /** * 鑾峰彇鐢ㄦ埛淇℃伅 + * * @param acceptData * @param uid * @param out @@ -439,8 +619,7 @@ JSONObject bossData = getBossInfo(uid, threeSaleSerivce.getMyBoss(uid)); out.print(JsonUtil.loadTrueResult(bossData)); } - - + /** * 涓婄骇淇℃伅缁勭粐 * @@ -469,7 +648,7 @@ } else { if (!threeSaleExtraInfoSerivce.isRemindBoss(boss.getId(), uid)) { bossData.put("weiXinState", 1); - bossData.put("weiXinTip", "鐐瑰嚮鎻愰啋TA锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��"); + bossData.put("weiXinTip", "鐐瑰嚮鎻愰啋锛岀郴缁熶細鍙戦�佷竴灏佺珯鍐呬俊锛屾彁閱掑叾娣诲姞寰俊鍙枫��"); } else { bossData.put("weiXinState", 2); bossData.put("weiXinTip", "绯荤粺宸插彂閫佹彁閱掞紝閭�璇蜂汉娣诲姞寰俊鍚庝綘鍙鍒讹紝濡傚鏂硅繜杩熶笉娣诲姞锛屼綘鍙仈绯讳汉宸ュ鏈嶅姹傚府鍔�"); @@ -580,11 +759,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; @@ -592,33 +771,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), "鎴愬姛")); @@ -627,7 +807,7 @@ out.print(JsonUtil.loadFalseResult("閭�璇蜂俊鎭幏鍙栧け璐�")); } } - + /** * 绔欏唴淇℃彁閱掗槦鍛樻坊鍔犲井淇″彿 * @@ -643,12 +823,489 @@ return; } + // 鏈夋晥绮変笣 + int doneFirst = 0; + UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); + if (userInviteValidNum != null) { + doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); + } + JSONObject data = new JSONObject(); - data.put("num", threeSaleSerivce.countFirstTeam(uid, 1)); + 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<ThreeSaleFocusInfo> listfocus = threeSaleFocusInfoService.query((page - 1) * Constant.PAGE_SIZE, + Constant.PAGE_SIZE, type, uid, focus); + if (listfocus != null && listfocus.size() > 0) { + listId = new ArrayList<Long>(); + for (ThreeSaleFocusInfo 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 = threeSaleFocusInfoService.count(1, uid, focus); + countSecond = threeSaleFocusInfoService.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; + List<TeamLevelDailyRecord> list = teamLevelDailyRecordService.getbyUidAndType(uid, UserLevelEnum.highVIP, minTime); + if (list == null || list.size() > 0) { + for (TeamLevelDailyRecord record: list) { + if (today.equals(sd.format(record.getUpdateTime()))) { + highVIPToday = record.getFirstCount() + record.getSecondCount(); + } + highVIPMonth = highVIPMonth + record.getFirstCount() + record.getSecondCount(); + } + } + highVIP.put("today", highVIPToday); + highVIP.put("month", highVIPMonth); + + + int superVIPToday = 0; + int superVIPMonth = 0; + List<TeamLevelDailyRecord> listSuper = teamLevelDailyRecordService.getbyUidAndType(uid, UserLevelEnum.superVIP, minTime); + if (listSuper == null || listSuper.size() > 0) { + for (TeamLevelDailyRecord record: listSuper) { + if (today.equals(sd.format(record.getUpdateTime()))) { + superVIPToday = record.getFirstCount() + record.getSecondCount(); + } + superVIPMonth = superVIPMonth + record.getFirstCount() + record.getSecondCount(); + } + } + 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; + } + + 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("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); + } + + threeSaleFocusInfoService.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.getStatisticDay(); + if (todayStr.equals(sdf.format(statisticDay))) { + todayRecord = record; + } + + if (reduceDay.equals(sdf.format(statisticDay))) { + yesterdayRecord = record; + } + + if (monthStr.equals(sdf1.format(statisticDay))) { + monthRecord.setFirstCount(monthRecord.getFirstCount() + record.getFirstCount()); + monthRecord.setSecondCount(monthRecord.getSecondCount() + record.getSecondCount()); + monthRecord.setSecondBeyond(monthRecord.getSecondBeyond() + record.getSecondBeyond()); + } + + totalityRecord.setFirstCount(totalityRecord.getFirstCount() + record.getFirstCount()); + totalityRecord.setSecondCount(totalityRecord.getSecondCount() + record.getSecondCount()); + totalityRecord.setSecondBeyond(totalityRecord.getSecondBeyond() + record.getSecondBeyond()); + } + } + + + JSONObject today = new JSONObject(); + today.put("direct", todayRecord.getFirstCount()); + today.put("indirect", todayRecord.getSecondCount()); + today.put("beyond", todayRecord.getSecondBeyond()); + + JSONObject yesterday = new JSONObject(); + yesterday.put("direct", yesterdayRecord.getFirstCount()); + yesterday.put("indirect", yesterdayRecord.getSecondCount()); + yesterday.put("beyond", yesterdayRecord.getSecondBeyond()); + + JSONObject month = new JSONObject(); + month.put("direct", monthRecord.getFirstCount()); + month.put("indirect", monthRecord.getSecondCount()); + month.put("beyond", monthRecord.getSecondBeyond()); + + JSONObject totality = new JSONObject(); + totality.put("direct", totalityRecord.getFirstCount()); + totality.put("indirect", totalityRecord.getSecondCount()); + totality.put("beyond", totalityRecord.getSecondBeyond()); + + + 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