fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -25,6 +25,7 @@ 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.ThreeSaleDetail; import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; @@ -55,6 +56,7 @@ import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.invite.TeamDailyRecordService; import com.yeshi.fanli.service.inter.user.invite.TeamFansInfoService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService; 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; @@ -151,8 +153,9 @@ @Resource private TeamDailyRecordService teamDailyRecordService; @Resource private ThreeSaleDetailService threeSaleDetailService; /** * 邀请码验证 @@ -868,7 +871,7 @@ listId.add(focusInfo.getWorkerId()); } } if (listId != null && listId.size() > 0) { if (type == 1) { listTeam = threeSaleSerivce.listFirstTeam(0, Constant.PAGE_SIZE, uid, listId); @@ -880,36 +883,36 @@ 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 || focus.getMinJoinTime() != null || focus.getMaxJoinTime() != null || focus.getMinFansNum() != null || focus.getMinFansNum() != null || focus.getMinActiveTime() != null || focus.getMaxActiveTime() != null || focus.getMinIncome() != null || focus.getMaxIncome() != null || focus.getMinJoinTime() != null || focus.getMaxJoinTime() != null || !StringUtil.isNullOrEmpty(focus.getKey()) || !StringUtil.isNullOrEmpty(focus.getLevel())) return true; return true; return false; } @@ -998,7 +1001,6 @@ highVIP.put("total", statistic.getHighFirstCount() + statistic.getHighSecondCount()); superVIP.put("total", statistic.getSuperFirstCount() + statistic.getSuperSecondCount()); } int darenToday = 0; int highVIPToday = 0; @@ -1006,10 +1008,10 @@ String createId = teamDailyRecordService.createId(uid, new Date()); TeamDailyRecord record = teamDailyRecordService.getById(createId); if (record != null) { if (record.getFirstDaRen() != null) if (record.getFirstDaRen() != null) darenToday += record.getFirstDaRen(); if (record.getSecondDaRen() != null) darenToday += record.getSecondDaRen(); darenToday += record.getSecondDaRen(); if (record.getFirstHighVIP() != null) highVIPToday += record.getFirstHighVIP(); if (record.getSecondHighVIP() != null) @@ -1019,24 +1021,23 @@ if (record.getSecondSuperVIP() != null) superVIPToday += record.getSecondSuperVIP(); } // 获取当月第一天和最后一天 // 获取当月第一天和最后一天 Calendar cale = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String firstday, lastday; // 获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); firstday = format.format(cale.getTime()); // 获取前月的最后一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); lastday = format.format(cale.getTime()); int darenMonth = 0; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String firstday, lastday; // 获取前月的第一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); firstday = format.format(cale.getTime()); // 获取前月的最后一天 cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); lastday = format.format(cale.getTime()); int darenMonth = 0; int highVIPMonth = 0; int superVIPMonth = 0; Date date = new Date(); @@ -1045,10 +1046,10 @@ List<TeamDailyRecord> listMonth = teamDailyRecordService.sumGroupByYearMonth(uid, minTime, maxTime); if (listMonth != null && listMonth.size() > 0) { TeamDailyRecord teamRecord = listMonth.get(0); if (teamRecord.getFirstDaRen() != null) if (teamRecord.getFirstDaRen() != null) darenMonth += teamRecord.getFirstDaRen(); if (teamRecord.getSecondDaRen() != null) darenMonth += teamRecord.getSecondDaRen(); darenMonth += teamRecord.getSecondDaRen(); if (teamRecord.getFirstHighVIP() != null) highVIPMonth += teamRecord.getFirstHighVIP(); if (teamRecord.getSecondHighVIP() != null) @@ -1064,10 +1065,10 @@ // 高级会会员 highVIP.put("today", highVIPToday); highVIP.put("month", highVIPMonth); // 统计超级会员数量 // 统计超级会员数量 superVIP.put("today", superVIPToday); superVIP.put("month", superVIPMonth); json.put("daren", daren); json.put("highVIP", highVIP); json.put("superVIP", superVIP); @@ -1114,9 +1115,7 @@ bossNickName = boss.getNickName(); } } JSONArray tagArray = new JSONArray(); String memoName = user.getNickName(); Long succeedTime = threeSale.getSucceedTime(); @@ -1159,11 +1158,11 @@ 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)); @@ -1203,19 +1202,197 @@ 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+"笔)"); 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 = "fansSearch") public void fansSearch(String callback, AcceptData acceptData, Long uid, String key, PrintWriter out) { if (uid == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); return; } if (StringUtil.isNullOrEmpty(key)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请输入筛选信息")); return; } List<TeamFansInfo> listfocus = teamFansInfoService.queryByUserInfo(key); if (listfocus == null || listfocus.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "暂无相关信息")); return; } Long fansId = null; for (TeamFansInfo teamFansInfo : listfocus) { Long workerId = teamFansInfo.getWorkerId(); ThreeSaleDetail threeDetail = threeSaleDetailService.getByBossUidAndWorkerUid(uid, workerId); if (threeDetail != null) { fansId = workerId; break; } } if (fansId == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "暂无相关信息")); return; } ThreeSale threeSale = threeSaleSerivce.getByWorkerId(fansId); if (threeSale == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "暂无相关信息")); return; } UserInfo user = userInfoService.selectByPKey(fansId); if (user == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "暂无相关信息")); return; } JSONObject data = new JSONObject(); JSONObject inviteBoss = getInviteBoss(threeSale.getBoss().getId()); data.put("boss", inviteBoss); String phone = user.getPhone(); boolean phoneCopy = true; if (StringUtil.isNullOrEmpty(phone)) { phone = ""; } else { if (!userCustomSettingsService.validateDisplayPhoneByUid(fansId)) { phoneCopy = false; phone = phone.substring(0, 7) + "****"; } } data.put("fansId", fansId); data.put("nickName", user.getNickName()); data.put("portrait", user.getPortrait()); data.put("phone", phone); data.put("phoneCopy", phoneCopy); data.put("joinTime", TimeUtil.formatDate(threeSale.getSucceedTime() == null ? threeSale.getCreateTime() : threeSale.getSucceedTime())); Date activeTime = null; String weixin = null; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(fansId); 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(fansId); if (userExtraTaoBaoInfo != null && !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getRelationId()) && !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getSpecialId())) { data.put("taobao", true); } else { data.put("taobao", false); } UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(fansId); if (userVIPPreInfo != null) { String levelName = null; Integer process = userVIPPreInfo.getProcess(); 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 && levelName != null) { if (sourceType == UserVIPPreInfo.SOURCE_TYPE_ORDER) { data.put("level", levelName += "(自购分享型)"); } else if (sourceType == UserVIPPreInfo.SOURCE_TYPE_TEAM) { data.put("level", levelName += "(邀请团队型)"); } } } // 粉丝统计 long indirectNum = 0; long directNum = threeSaleSerivce.countFirstTeam(fansId); if (directNum > 0) { indirectNum = threeSaleSerivce.countSecondTeam(fansId); } // 订单统计 long countTB = commonOrderCountService.countOrderBySourceAndNearDay(fansId, Constant.SOURCE_TYPE_TAOBAO, 60); long countJD = commonOrderCountService.countOrderBySourceAndNearDay(fansId, Constant.SOURCE_TYPE_JD, 60); long countPDD = commonOrderCountService.countOrderBySourceAndNearDay(fansId, Constant.SOURCE_TYPE_PDD, 60); data.put("fansNum", "直接粉丝: " + directNum + "人\n" + "间接粉丝: " + indirectNum + "人"); data.put("orderInfo", "淘宝 (" + countTB + "笔)\n" + "京东 (" + countJD + "笔)\n" + "拼多多 (" + countPDD + "笔)"); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } private JSONObject getInviteBoss(Long bossId) { 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) + "****"; } } // 微信号 String weixin = ""; UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(bossId); if (extra != null) { 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); JSONObject bossObject = new JSONObject(); bossObject.put("nickName", userInfo.getNickName()); bossObject.put("portrait", userInfo.getPortrait()); bossObject.put("phone", phone); bossObject.put("phoneCopy", phoneCopy); bossObject.put("weixin", weixin); bossObject.put("level", level.name()); return bossObject; } /** * 保存粉丝信息 * * @param acceptData * @param uid @@ -1257,9 +1434,8 @@ out.print(JsonUtil.loadTrueResult("保存成功")); } /** * 队员数量统计 * 队员数量统计 * * @param acceptData * @param id @@ -1271,53 +1447,55 @@ Date minDate = null; Date maxDate = null; long timeStamp = System.currentTimeMillis(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeStamp); // 今日预估 calendar.add(Calendar.DAY_OF_YEAR, -1); minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); TeamDailyRecord todayRecord = createVO(teamDailyRecordService.sumTeamNumGroupByCountDay(uid, minDate, null)); TeamDailyRecord todayRecord = createVO( teamDailyRecordService.sumTeamNumGroupByCountDay(uid, minDate, null)); // 昨日预估 calendar.add(Calendar.DAY_OF_YEAR, -1); maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); minDate = DateUtil.reduceDay(1, maxDate); TeamDailyRecord yesterdayRecord = createVO(teamDailyRecordService.sumTeamNumGroupByCountDay(uid, minDate, maxDate)); TeamDailyRecord yesterdayRecord = createVO( teamDailyRecordService.sumTeamNumGroupByCountDay(uid, minDate, maxDate)); // 本月预估 maxDate = new Date(timeStamp); calendar = Calendar.getInstance(); minDate = new Date(TimeUtil .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); minDate = new Date(TimeUtil.convertToTimeTemp( calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); calendar.add(Calendar.MONTH, -1); TeamDailyRecord monthRecord = createVO(teamDailyRecordService.sumTeamNumGroupByYearMonth(uid, minDate, maxDate)); TeamDailyRecord monthRecord = createVO( teamDailyRecordService.sumTeamNumGroupByYearMonth(uid, minDate, maxDate)); // 累计 TeamDailyRecord totalityRecord = createVO(teamDailyRecordService.sumTeamNumGroupByUid(uid, null, null)); 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); @@ -1329,24 +1507,22 @@ e.printStackTrace(); } } private TeamDailyRecord createVO(List<TeamDailyRecord> list) { TeamDailyRecord totalityRecord = new TeamDailyRecord(0,0,0); TeamDailyRecord totalityRecord = new TeamDailyRecord(0, 0, 0); if (list != null && list.size() > 0) { for (TeamDailyRecord record: list) { for (TeamDailyRecord record : list) { totalityRecord.setFirstNum(totalityRecord.getFirstNum() + record.getFirstNum()); totalityRecord.setSecondNum(totalityRecord.getSecondNum() + record.getSecondNum()); totalityRecord.setBeyondNum(totalityRecord.getBeyondNum() + record.getBeyondNum()); } } } return totalityRecord; } /** * 邀请排行榜 * * @param callback * @param acceptData * @param uid @@ -1359,14 +1535,14 @@ JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数缺失")); return; } try { Date minDate = null; Date maxDate = null; long timeStamp = System.currentTimeMillis(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(timeStamp); if (dateType == 1) { // 今日 calendar.add(Calendar.DAY_OF_YEAR, -1); @@ -1380,21 +1556,20 @@ // 本月 maxDate = new Date(timeStamp); calendar = Calendar.getInstance(); minDate = new Date(TimeUtil .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); minDate = new Date(TimeUtil.convertToTimeTemp( calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M")); calendar.add(Calendar.MONTH, -1); } List<OrderRankingVO> list = teamDailyRecordService.getRankingByFirstNum(uid, minDate, maxDate); if (list.size() > 0) { for (OrderRankingVO vo: list) { for (OrderRankingVO vo : list) { UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid()); vo.setNickName(user.getNickName()); vo.setPortrait(user.getPortrait()); } } JSONObject json = new JSONObject(); json.put("list", list); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); @@ -1403,5 +1578,5 @@ e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -558,9 +558,9 @@ * @param out */ @RequestMapping(value = "getTeamDividendStatistic") public void getTeamDividendStatistic(AcceptData acceptData, Long uid, PrintWriter out) { public void getTeamDividendStatistic(String callback, AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); return; } @@ -593,7 +593,7 @@ object.put("subsidy", subsidy.setScale(2).toString()); object.put("today", gson.toJson(todayVO)); object.put("month", gson.toJson(monthVO)); out.print(JsonUtil.loadTrueResult(object)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); } private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) { @@ -628,15 +628,15 @@ * @param out */ @RequestMapping(value = "getTeamDividendHistory") public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype, public void getTeamDividendHistory(String callback, AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) { if (uid == null || uid == 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录")); return; } if (StringUtil.isNullOrEmpty(date) || datetype == null) { out.print(JsonUtil.loadFalseResult(1, "参数不完整")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不完整")); return; } @@ -728,9 +728,10 @@ JSONObject object = new JSONObject(); object.put("count", list.size()); object.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(object)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); } catch (ParseException e) { e.printStackTrace(); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败")); } } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserOrderControllerV2.java
@@ -1,13 +1,17 @@ package com.yeshi.fanli.controller.client.v2; import java.io.PrintWriter; import java.lang.reflect.Type; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.annotation.Resource; @@ -19,18 +23,27 @@ import org.yeshi.utils.NumberUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.yeshi.fanli.dto.order.UserTeamLevel; import com.yeshi.fanli.dto.user.UserInviteLevelEnum; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum; import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.CommonOrderGoods; import com.yeshi.fanli.entity.order.ESOrder; import com.yeshi.fanli.entity.order.HongBaoOrder; import com.yeshi.fanli.entity.order.UserOrderWeiQuanRecord; import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrder; import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrderUserMap; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; @@ -46,12 +59,16 @@ import com.yeshi.fanli.service.inter.order.HongBaoV2Service; import com.yeshi.fanli.service.inter.order.OrderHongBaoMapService; import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService; import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderService; import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService; import com.yeshi.fanli.service.inter.user.PreviewInfoService; 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.UserSystemCouponRecordService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService; 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.UserVIPInfoService; @@ -59,6 +76,7 @@ import com.yeshi.fanli.util.MoneyBigDecimalUtil; 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.account.UserUtil; import com.yeshi.fanli.util.user.UserLevelUtil; @@ -67,6 +85,7 @@ import com.yeshi.fanli.vo.order.HongBaoCountVO; import com.yeshi.fanli.vo.order.OrderCountVO; import com.yeshi.fanli.vo.order.OrderRebateVO; import com.yeshi.fanli.vo.order.TeamOrderVO; import com.yeshi.fanli.vo.user.MineInfoVO; import com.yeshi.fanli.vo.user.UserInfoExtraVO; import com.yeshi.fanli.vo.user.UserSettingsVO; @@ -119,6 +138,7 @@ @Resource private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService; @Resource private JumpDetailV2Service jumpDetailV2Service; @@ -136,6 +156,19 @@ @Resource private PreviewInfoService previewInfoService; @Resource private TeamDividentsSourceOrderService teamDividentsSourceOrderService; @Resource private TeamDividentsSourceOrderUserMapService teamDividentsSourceOrderUserMapService; @Resource private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService; @Resource private ThreeSaleDetailService threeSaleDetailService; /** @@ -759,4 +792,164 @@ JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } /** * 用户订单统计 * * @param acceptData * @param uid * 用户id * type 类型:0全部、1淘宝 2京东、拼多多 * @param out */ @RequestMapping(value = "teamOrderSearch", method = RequestMethod.POST) public void teamOrderSearch(String callback, AcceptData acceptData, Long uid, String key, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } List<TeamOrderVO> resultList = new ArrayList<>(); if (StringUtil.isNullOrEmpty(key)) { JSONObject data = new JSONObject(); data.put("list", resultList); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); return; } try { // 查询此单是否存在分红 List<TeamOrderVO> tempList = new ArrayList<>(); List<TeamDividentsSourceOrder> listSourceOrder = teamDividentsSourceOrderService.listByOrderNo(key); if (listSourceOrder != null && listSourceOrder.size() > 0) { for (TeamDividentsSourceOrder sourceOrder: listSourceOrder) { List<TeamDividentsSourceOrderUserMap> listDividents = teamDividentsSourceOrderUserMapService.listBySourceOrderIdAndTargetUid(sourceOrder.getId(), uid); if (listDividents != null && listDividents.size() > 0) { Integer state = null; Date sendTime = null; BigDecimal money = BigDecimal.ZERO; for (TeamDividentsSourceOrderUserMap teamDividents: listDividents) { money = money.add(teamDividents.getMoney()); state = teamDividents.getState(); sendTime = teamDividents.getSendTime(); } TeamOrderVO teamOrderVO = new TeamOrderVO(); teamOrderVO.setSourceType(sourceOrder.getSourceType()); teamOrderVO.setOrderNo(sourceOrder.getOrderNo()); teamOrderVO.setDivMoney(money); teamOrderVO.setDivState(state); if (sendTime != null) teamOrderVO.setAccountTime(TimeUtil.formatDate(sendTime)); tempList.add(teamOrderVO); } } } if (tempList.size() > 0) { List<CommonOrder> listOrder = commonOrderService.listByOrderNo(key); if(listOrder != null && listOrder.size() > 0) { Map<String, TeamOrderVO> map = new HashMap<String, TeamOrderVO>(); for (CommonOrder order: listOrder) { Integer sourceType = order.getSourceType(); String orderNo = order.getOrderNo(); String mapKey = orderNo + "##" + sourceType; TeamOrderVO teamVO = map.get(mapKey); if (teamVO != null) { teamVO.setPayment(teamVO.getPayment().add(order.getPayment())); } else { Long orderUid = order.getUserInfo().getId(); teamVO = new TeamOrderVO(); teamVO.setUid(orderUid); teamVO.setOrderNo(orderNo); teamVO.setSourceType(sourceType); teamVO.setSourceName(order.getChildSourceType()); teamVO.setPayment(order.getPayment()); teamVO.setDownTime(TimeUtil.formatDate(order.getThirdCreateTime())); // 下单时等级 UserLevelEnum userLevel = UserLevelUtil.getByOrderRank(order.getUrank()); if (userLevel == null) userLevel = UserLevelEnum.daRen; teamVO.setUserRank(UserLevelUtil.getShowLevel(userLevel).name()); // 粉丝基本信息 UserInfo userInfo = userInfoService.getUserByIdWithMybatis(orderUid); if (userInfo == null) { continue; } teamVO.setUid(orderUid); teamVO.setNickName(userInfo.getNickName()); teamVO.setPortrait(userInfo.getPortrait()); // 粉丝代数 ThreeSaleDetail threeDetail = threeSaleDetailService.getByBossUidAndWorkerUid(uid, orderUid); if (threeDetail == null) { continue; } teamVO.setTeamGrade(threeDetail.getLevel()); } // 结算时间 Date settleTime = order.getSettleTime(); if (settleTime != null) teamVO.setSettleTime(TimeUtil.formatDate(settleTime)); // 分红信息 for (TeamOrderVO teamOrderVO: tempList) { if (teamOrderVO.getSourceType() == sourceType) { teamVO.setDivMoney(teamOrderVO.getDivMoney()); teamVO.setDivState(teamOrderVO.getDivState()); teamVO.setAccountTime(teamOrderVO.getAccountTime()); break; } } // 维权信息 Integer orderState = order.getState(); if (!StringUtil.isNullOrEmpty(teamVO.getServiceTime()) && CommonOrder.STATE_WQ == orderState) { if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { UserOrderWeiQuanRecord record = userOrderWeiQuanRecordService.selectByOrderInfoAndUid(uid, order.getTradeId(), sourceType); if (record != null) { teamVO.setServiceTime(TimeUtil.formatDate(record.getCreateTime())); } } } map.put(mapKey, teamVO); } // 遍历放入数组 Iterator<Entry<String, TeamOrderVO>> entries = map.entrySet().iterator(); while(entries.hasNext()){ Entry<String, TeamOrderVO> entry = entries.next(); resultList.add(entry.getValue()); } } } GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); gsonBuilder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { @Override public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { if (value == null) { return new JsonPrimitive(""); } else { // 保留2位小数 return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value) + ""); } } }); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("list", gson.toJson(resultList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在")); return; } } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java
@@ -423,4 +423,10 @@ */ String getNewestOrderNoByTaoBao(); /** * 根据订单号进行sous * @param orderNo * @return */ List<CommonOrder> listByOrderNo(@Param("orderNo") String orderNo); } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/dividents/TeamDividentsSourceOrderMapper.java
@@ -77,5 +77,13 @@ List<TeamDividentsSourceOrder> listByOrderNoOrSourceUid(@Param("orderNo") String orderNo, @Param("uid") Long uid, @Param("start") long start, @Param("count") int count); /** * 根据订单号进行查询 * @param orderNo * @param uid * @return */ List<TeamDividentsSourceOrder> listByOrderNo(@Param("orderNo") String orderNo); } fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamFansInfoDao.java
@@ -90,7 +90,7 @@ public List<TeamFansInfo> query(int start, int count, int type, Long uid, ThreeSaleFocusDTO focusDTO) { Query query = createQuery(type, uid, focusDTO); query.skip(start).limit(count); query.with(new Sort(Sort.Direction.DESC, "weight")); query.with(new Sort(Sort.Direction.DESC, "joinTime")); return findList(query); } @@ -213,4 +213,34 @@ return query; } /** * 根据用户信息匹配 * @param key * @return */ public List<TeamFansInfo> queryByUserInfo(String key) { if (StringUtil.isNullOrEmpty(key)) return null; Long workerId = null; try { workerId = Long.parseLong(key); } catch (Exception e) { } Criteria criteria = null; if (workerId == null) { criteria = new Criteria().orOperator(Criteria.where("phone").is(key), new Criteria().orOperator(Criteria.where("inviteCode").is(key))); } else { criteria = new Criteria().orOperator(Criteria.where("phone").is(key), new Criteria().orOperator(Criteria.where("inviteCode").is(key)), new Criteria().orOperator(Criteria.where("workerId").is(workerId))); } Query query = new Query(criteria); return findList(query); } } fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -1213,4 +1213,9 @@ LIMIT 1 </select> <select id="listByOrderNo" resultMap="BaseResultMap"> SELECT * FROM `yeshi_ec_common_order` d WHERE d.`co_order_no` = #{orderNo} GROUP BY d.`co_order_no`,d.`co_source_type` </select> </mapper> fanli/src/main/java/com/yeshi/fanli/mapping/order/dividents/TeamDividentsSourceOrderMapper.xml
@@ -160,6 +160,9 @@ tdo_order_no=#{orderNo} or tdo_uid=#{uid} limit #{start},#{count} </select> <select id="listByOrderNo" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from yeshi_ec_team_dividents_source_order where tdo_order_no=#{orderNo} </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -2201,4 +2201,10 @@ return commonOrderMapper.getNewestOrderNoByTaoBao(); } @Override public List<CommonOrder> listByOrderNo(String orderNo) { return commonOrderMapper.listByOrderNo(orderNo); } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/dividents/TeamDividentsSourceOrderServiceImpl.java
@@ -128,4 +128,9 @@ return null; } @Override public List<TeamDividentsSourceOrder> listByOrderNo(String orderNo) { return teamDividentsSourceOrderMapper.listByOrderNo(orderNo); } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/dividents/TeamDividentsSourceOrderUserMapServiceImpl.java
@@ -162,4 +162,11 @@ } } @Override public List<TeamDividentsSourceOrderUserMap> listBySourceOrderIdAndTargetUid(Long sourceOrderId, Long targetUid) { return teamDividentsSourceOrderUserMapMapper.list(sourceOrderId, null, targetUid, null, null, null, 0, 10000); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java
@@ -390,4 +390,9 @@ public TeamFansInfo getbyWorkerId(Long workerId) { return teamFansInfoDao.getbyWorkerId(workerId); } @Override public List<TeamFansInfo> queryByUserInfo(String key) { return teamFansInfoDao.queryByUserInfo(key); } } fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -440,4 +440,11 @@ */ public String getNewestOrderNoByTaoBao(); /** * 根据订单号查询 * @param orderNo * @return */ public List<CommonOrder> listByOrderNo(String orderNo); } fanli/src/main/java/com/yeshi/fanli/service/inter/order/dividents/TeamDividentsSourceOrderService.java
@@ -113,4 +113,11 @@ */ public void updateMoney(String orderNo, int sourceType, BigDecimal money); /** * 根据订单号查询 * @param orderNo * @return */ public List<TeamDividentsSourceOrder> listByOrderNo(String orderNo); } fanli/src/main/java/com/yeshi/fanli/service/inter/order/dividents/TeamDividentsSourceOrderUserMapService.java
@@ -152,4 +152,12 @@ */ public void updateMoney(Long sourceOrderId, BigDecimal income); /** * 查询分红信息 * @param sourceOrderId * @param targetUid * @return */ public List<TeamDividentsSourceOrderUserMap> listBySourceOrderIdAndTargetUid(Long sourceOrderId, Long targetUid); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java
@@ -137,4 +137,11 @@ */ public void addFansInfo(Long workerId, Long bossId, Date successTime); /** * 根据用户信息匹配 * @param key * @return */ public List<TeamFansInfo> queryByUserInfo(String key); }