yujian
2020-05-18 76bbafa1a559978d1dee000034608b4934551a33
统计
12个文件已修改
687 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/ThreeSaleDetailDao.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushGoodsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
@@ -4,8 +4,11 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
@@ -15,20 +18,26 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.dto.push.PushContentDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.PreviewInfo;
import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.config.push.PushMsgFactory;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
import com.yeshi.fanli.exception.push.PushException;
import com.yeshi.fanli.exception.user.PreviewInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.PreviewInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
@@ -61,6 +70,13 @@
    
    @Resource
    private OrderMoneyDailyCountService orderMoneyDailyCountService;
    @Resource
    private CommonOrderService commonOrderService;
    @Resource
    private PushService pushService;
    
    
    /**
@@ -357,6 +373,8 @@
        try {
            previewInfoService.saveMineInfo(infoVO);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
        } catch (PreviewInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败"));
@@ -366,13 +384,14 @@
    @RequestMapping(value = "getMineInfo")
    public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
        PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.mineInfo);
        if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
        MineInfoVO dto = null;
        if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) {
            dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class);
        }
        
        MineInfoVO dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dto));
        if (dto == null)
            dto = new MineInfoVO();
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(dto)));
    }
    /**
@@ -411,12 +430,12 @@
    @RequestMapping(value = "getMoneyArrivalImg")
    public void getMoneyArrivalImg(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
        PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo);
        if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
        String link = null;
        if (previewInfo != null && StringUtil.isNullOrEmpty(previewInfo.getContent())) {
            link = previewInfo.getContent();
        }
        JSONObject object = new JSONObject();
        object.put("link", previewInfo.getContent());
        object.put("link", link);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
    }
@@ -435,11 +454,67 @@
            return;
        }
        
        if (type == null || num == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请完善数据"));
        if (type == null || type < 1 || type > 2) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择订单类型"));
            return;
        }
         
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功"));
        if (num == null || num <= 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请填写推送数量"));
            return;
        }
        if (num > 50) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("最多支持50条"));
            return;
        }
        // 获取最新订单号
        String orderNo = commonOrderService.getNewestOrderNoByTaoBao();
        // 随机订单号
        List<String> list = getRandomOrderNo(orderNo, num);
        for (String orderId: list) {
            PushContentDTO dto = PushMsgFactory.createFanLiOrderStatisticed(Constant.SOURCE_TYPE_TAOBAO,
                    orderId, BigDecimal.ZERO);
            try {
                pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (PushException e) {
                e.printStackTrace();
            }
        }
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
    }
    private List<String> getRandomOrderNo(String orderNo, int count) {
        String newNo = orderNo.substring(0, 3);
        long lenth = orderNo.length() - 3;
        long tempNum = 1;
        for (long i = 0; i < lenth - 1; i++) {
            tempNum = tempNum * 10;
        }
        Set<String> set = new HashSet<>();
        for (int i = 0; i < count; i++) {
            int temp = set.size();
            while (set.size() <= temp) {
                long randomNum = (long) ((Math.random() * 9 + 1) * tempNum);
                set.add(newNo + randomNum);
            }
        }
        // 转换list
        List<String> list = new ArrayList<>();
        for (String s : set) {
            list.add(s);
        }
        // 排序
        Collections.sort(list);
        return list;
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -27,7 +27,6 @@
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.PreviewInfo;
import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.money.TeamEincomeRecord;
@@ -734,4 +733,92 @@
        }
    }
    /**
     * 订单统计-h5
     *
     * @param acceptData
     * @param id
     * @param out
     */
    @RequestMapping(value = "countTeamOrderNum")
    public void countTeamOrderNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
        try {
            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)));
            OrderMoneyDailyCount todayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, null));
            // 昨日预估
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
            minDate = DateUtil.reduceDay(1, maxDate);
            OrderMoneyDailyCount yesterdayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(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"));
            calendar.add(Calendar.MONTH, -1);
            OrderMoneyDailyCount monthRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByYearMonth(uid, minDate, maxDate));
            // 累计
            OrderMoneyDailyCount totalityRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByUid(uid, null, null));
            JSONObject today = new JSONObject();
            today.put("direct", todayRecord.getDirectOrderNum());
            today.put("indirect", todayRecord.getInDirectOrderNum());
            today.put("beyond", todayRecord.getBeyondOrderNum());
            JSONObject yesterday = new JSONObject();
            yesterday.put("direct", yesterdayRecord.getDirectOrderNum());
            yesterday.put("indirect", yesterdayRecord.getInDirectOrderNum());
            yesterday.put("beyond", yesterdayRecord.getBeyondOrderNum());
            JSONObject month = new JSONObject();
            month.put("direct", monthRecord.getDirectOrderNum());
            month.put("indirect", monthRecord.getInDirectOrderNum());
            month.put("beyond", monthRecord.getBeyondOrderNum());
            JSONObject totality = new JSONObject();
            totality.put("direct", totalityRecord.getDirectOrderNum());
            totality.put("indirect", totalityRecord.getInDirectOrderNum());
            totality.put("beyond", totalityRecord.getBeyondOrderNum());
            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();
        }
    }
    private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) {
        OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0,0,0);
        if (list != null && list.size() > 0) {
            for (OrderMoneyDailyCount record: list) {
                totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum());
                totalityRecord.setInDirectOrderNum(totalityRecord.getInDirectOrderNum() + record.getInDirectOrderNum());
                totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum());
            }
        }
        return totalityRecord;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
@@ -523,4 +523,204 @@
        return results;
    }
    
    private String getTeamOrderNumReduce() {
        StringBuilder builder = new StringBuilder();
        builder.append("function(doc, aggr){ ");
        builder.append(" aggr.directOrderNum += doc.directOrderNum;");
        builder.append(" aggr.inDirectOrderNum += doc.inDirectOrderNum;");
        builder.append(" aggr.beyondOrderNum += doc.beyondOrderNum;");
        builder.append(" }");
        return builder.toString();
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("countDay", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<OrderMoneyDailyCount> results = new ArrayList<>();
        if (objects != null) {
            SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("countDay");
                if (object == null) {
                    continue;
                }
                try {
                    String date = object.toString();
                    Date dtime = sdf.parse(date);
                    OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                    dailyCount.setCountDay(dtime);
                    dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                    dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                    dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                    results.add(dailyCount);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return results;
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("yearMonth", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<OrderMoneyDailyCount> results = new ArrayList<>();
        if (objects != null) {
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("yearMonth");
                if (object == null) {
                    continue;
                }
                OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                dailyCount.setYearMonth(object.toString());
                dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                results.add(dailyCount);
            }
        }
        return results;
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("uid", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamOrderNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<OrderMoneyDailyCount> results = new ArrayList<>();
        if (objects != null) {
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("uid");
                if (object == null) {
                    continue;
                }
                OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                dailyCount.setDirectOrderNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                dailyCount.setInDirectOrderNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                dailyCount.setBeyondOrderNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                results.add(dailyCount);
            }
        }
        return results;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -1,10 +1,12 @@
package com.yeshi.fanli.dao.user.invite;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.data.mongodb.core.query.Criteria;
@@ -12,8 +14,11 @@
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.yeshi.fanli.dao.MongodbBaseDao;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
@@ -170,4 +175,205 @@
        }
        return listDailyCount;
    }
    private String getTeamNumReduce() {
        StringBuilder builder = new StringBuilder();
        builder.append("function(doc, aggr){ ");
        builder.append(" aggr.directOrderNum += doc.firstNum;");
        builder.append(" aggr.inDirectOrderNum += doc.secondNum;");
        builder.append(" aggr.beyondOrderNum += doc.beyondNum;");
        builder.append(" }");
        return builder.toString();
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("countDay", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<TeamDailyRecord> results = new ArrayList<>();
        if (objects != null) {
            SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("countDay");
                if (object == null) {
                    continue;
                }
                try {
                    String date = object.toString();
                    Date dtime = sdf.parse(date);
                    TeamDailyRecord dailyCount = new TeamDailyRecord();
                    dailyCount.setCountDay(dtime);
                    dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                    dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                    dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                    results.add(dailyCount);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return results;
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("yearMonth", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<TeamDailyRecord> results = new ArrayList<>();
        if (objects != null) {
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("yearMonth");
                if (object == null) {
                    continue;
                }
                TeamDailyRecord dailyCount = new TeamDailyRecord();
                dailyCount.setYearMonth(object.toString());
                dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                results.add(dailyCount);
            }
        }
        return results;
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDate, Date maxDate) {
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        Map<String, Object> map = new HashMap<>();
        map.put("directOrderNum", 0);
        map.put("inDirectOrderNum", 0);
        map.put("beyondOrderNum", 0);
        BasicDBObject initial = new BasicDBObject(map);
        // 进行按天、周、月分组
        BasicDBObject agg = new BasicDBObject("uid", "");
        DBCollection collection = mongoTemplate.getCollection(collectionName);
        GroupCommand xx = new GroupCommand(collection, agg, query.getQueryObject(), initial, getTeamNumReduce(), null);
        BasicDBList objects = (BasicDBList) collection.group(xx);
        List<TeamDailyRecord> results = new ArrayList<>();
        if (objects != null) {
            for (int i = 0; i < objects.size(); i++) {
                BasicDBObject dbObject = (BasicDBObject) objects.get(i);
                if (dbObject == null) {
                    continue;
                }
                Object object = dbObject.get("uid");
                if (object == null) {
                    continue;
                }
                TeamDailyRecord dailyCount = new TeamDailyRecord();
                dailyCount.setFirstNum(new BigDecimal(dbObject.get("directOrderNum").toString()).intValue());
                dailyCount.setSecondNum(new BigDecimal(dbObject.get("inDirectOrderNum").toString()).intValue());
                dailyCount.setBeyondNum(new BigDecimal(dbObject.get("beyondOrderNum").toString()).intValue());
                results.add(dailyCount);
            }
        }
        return results;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/ThreeSaleDetailDao.java
@@ -73,5 +73,5 @@
        query.addCriteria(Criteria.where("workerUid").is(uid));
        return findList(query);
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java
@@ -80,6 +80,16 @@
    private Integer inDirectOrderNum;// 间接订单数量
    @Field
    private Integer beyondOrderNum;// 二级外订单数量
    public OrderMoneyDailyCount() {}
    public OrderMoneyDailyCount(Integer directOrderNum, Integer inDirectOrderNum, Integer beyondOrderNum) {
        this.directOrderNum = directOrderNum;
        this.inDirectOrderNum = inDirectOrderNum;
        this.beyondOrderNum = beyondOrderNum;
    }
    public Integer getDirectOrderNum() {
        return directOrderNum;
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
@@ -79,6 +79,11 @@
    }
    @Override
    public List<OrderMoneyDailyCount> getByUid(Long uid) {
        return orderMoneyDailyCountDao.query(uid, null, null);
    }
    @Override
    public List<OrderMoneyDailyCount> query(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.query(uid, minDay, maxDay);
    }
@@ -112,4 +117,21 @@
    public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamGroupByYearMonth(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamOrderNumGroupByCountDay(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamOrderNumGroupByYearMonth(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamOrderNumGroupByUid(uid, minDay, maxDay);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushGoodsServiceImpl.java
@@ -248,7 +248,7 @@
         
        
        // 定时时间
        if (StringUtil.isNullOrEmpty(record.getControlTime_str())) {
        if (!StringUtil.isNullOrEmpty(record.getControlTime_str())) {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            record.setControlTime(format.parse(record.getControlTime_str().replaceAll("T", " ")));
        }
fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java
@@ -150,7 +150,11 @@
                Comparator<Extract> cm = new Comparator<Extract>() {
                    @Override
                    public int compare(Extract o1, Extract o2) {
                        return (int) (o2.getReceiveTime().getTime() - o1.getReceiveTime().getTime());
                        if (o2.getReceiveTime().getTime() > o1.getReceiveTime().getTime()) {
                            return 1;
                        } else {
                            return -1;
                        }
                    }
                };
                Collections.sort(list, cm);
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java
@@ -110,4 +110,22 @@
    public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minTime, Date maxTime) {
        return teamDailyRecordDao.sumGroupByYearMonth(uid, minTime, maxTime);
    }
    @Override
    public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDay, Date maxDay) {
        return teamDailyRecordDao.sumTeamNumGroupByCountDay(uid, minDay, maxDay);
    }
    @Override
    public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return teamDailyRecordDao.sumTeamNumGroupByYearMonth(uid, minDay, maxDay);
    }
    @Override
    public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDay, Date maxDay) {
        return teamDailyRecordDao.sumTeamNumGroupByUid(uid, minDay, maxDay);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java
@@ -7,6 +7,8 @@
public interface OrderMoneyDailyCountService {
    public List<OrderMoneyDailyCount> getByUid(Long uid);
    /**
     * 查询
     * @param uid
@@ -77,5 +79,19 @@
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay);
    /**
     * 统计团队订单数量
     * @param uid
     * @param minDay
     * @param maxDay
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByCountDay(Long uid, Date minDay, Date maxDay);
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByYearMonth(Long uid, Date minDay, Date maxDay);
    public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDay, Date maxDay);
    
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java
@@ -46,4 +46,21 @@
    public List<TeamDailyRecord> getByUid(Long uid);
    /**
     * 统计团队数量
     * @param uid
     * @param minDay
     * @param maxDay
     * @return
     */
    public List<TeamDailyRecord> sumTeamNumGroupByCountDay(Long uid, Date minDay, Date maxDay);
    public List<TeamDailyRecord> sumTeamNumGroupByYearMonth(Long uid, Date minDay, Date maxDay);
    public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDay, Date maxDay);
}