yujian
2020-05-21 ccc87b5ac3d6271f95bb8bd89d2f38d765365702
团队订单搜索 + 粉丝搜索
16个文件已修改
651 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java 333 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserOrderControllerV2.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/dividents/TeamDividentsSourceOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamFansInfoDao.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/dividents/TeamDividentsSourceOrderMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/dividents/TeamDividentsSourceOrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/dividents/TeamDividentsSourceOrderUserMapServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/dividents/TeamDividentsSourceOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/dividents/TeamDividentsSourceOrderUserMapService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
}