yujian
2020-05-13 8b3c82c0788e23acd889e6f67a91c855693352fd
团队分红统计
12个文件已修改
1个文件已添加
1107 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java 311 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java 254 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamFansInfoDao.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/TeamFansInfo.java 191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/money/MoneyPredictVO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/money/TeamPredictVO.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -904,7 +904,8 @@
        if (focus.getStateValid() != null || focus.getTaobaoBind() != null || focus.getWeixinBind() != null
                || focus.getMinFansNum() != null || focus.getMinFansNum() != null
                || focus.getMinActiveTime() != null || focus.getMaxActiveTime() != null
                || focus.getMinIncome() != null  || focus.getMaxIncome() != null || !StringUtil.isNullOrEmpty(focus.getKey()))
                || focus.getMinIncome() != null  || focus.getMaxIncome() != null
                || !StringUtil.isNullOrEmpty(focus.getKey()) || !StringUtil.isNullOrEmpty(focus.getLevel()))
             return true;
    
        return false;
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -18,6 +18,7 @@
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
@@ -45,6 +46,7 @@
import com.yeshi.fanli.vo.money.IncomeDetailVO;
import com.yeshi.fanli.vo.money.MoneyPredictVO;
import com.yeshi.fanli.vo.money.MoneyStatisticVO;
import com.yeshi.fanli.vo.money.TeamPredictVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -82,6 +84,24 @@
    @Resource
    private OrderMoneyDailyCountService orderMoneyDailyCountService;
    private Gson getGson() {
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
                if (value == null) {
                    return new JsonPrimitive("");
                } else {
                    // 保留2位小数
                    value = value.setScale(2);
                    return new JsonPrimitive(value.toString());
                }
            }
        });
        return builder.create();
    }
    /**
     * 用户资金统计
@@ -210,21 +230,12 @@
        calendar.add(Calendar.MONTH, -1);
        vo.setMonthPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate)));
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
                if (value == null) {
                    return new JsonPrimitive("");
                } else {
                    // 保留2位小数
                    value = value.setScale(2);
                    return new JsonPrimitive(value.toString());
        Gson gson = getGson();
        out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
                }
            }
        });
        out.print(JsonUtil.loadTrueResult(builder.create().toJson(vo)));
    }
    private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) {
        MoneyPredictVO predictVO = new MoneyPredictVO();
@@ -235,28 +246,63 @@
        if (list != null && list.size() > 0) {
            for (OrderMoneyDailyCount dailyCount : list) {
                if (dailyCount.getOrderNum() != null) {
                if (dailyCount.getOrderNum() != null)
                    predictVO.setMineNum(predictVO.getMineNum() + dailyCount.getOrderNum());
                }
                if (dailyCount.getOrderNumTeam() != null) {
                if (dailyCount.getOrderNumTeam() != null)
                    predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
                }
                if (dailyCount.getIncome() != null) {
                    predictVO.setMineMoney(predictVO.getMineMoney().add(dailyCount.getIncome()));
                }
                if (dailyCount.getIncomeTeam() != null) {
                    predictVO.setTeamMoney(predictVO.getTeamMoney().add(dailyCount.getIncomeTeam()));
                if (dailyCount.getIncome() != null)
                    predictVO.setMineMoney(predictVO.getMineMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
                if (dailyCount.getIncomeTeam() != null)
                    predictVO.setTeamMoney(predictVO.getTeamMoney().add(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100)));
                }
            }
        }
        predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
        predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney()));
        return predictVO;
    }
    /**
     * 提现成功记录
     * @param acceptData
     * @param page
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getExtractRecord")
    public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        List<Extract> list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid);
        if (list == null) {
            list = new ArrayList<>();
        }
        JSONArray JSONArray = new JSONArray();
        for (Extract extract : list) {
            Date receiveTime = extract.getReceiveTime();
            if (receiveTime == null) {
                receiveTime = new Date(extract.getExtractTime());
            }
            String account = "支付宝:" + UserUtil.filterAlipayAccount(extract.getAccount());
            account = account + "-姓名:" + UserUtil.filterAlipayName(extract.getName());
            JSONObject object = new JSONObject();
            object.put("title", "你于" + TimeUtil.formatDate(receiveTime) + "提现成功");
            object.put("account", account);
            object.put("money", "¥" + extract.getMoney().setScale(2).toString());
            JSONArray.add(object);
        }
        JSONObject json = new JSONObject();
        json.put("count", extractService.countExtractSucceedRecord(uid));
        json.put("list", JSONArray);
        out.print(JsonUtil.loadTrueResult(json));
    }
    /**
     * 历史详情
@@ -334,9 +380,9 @@
                        Date countDay = dailyCount.getCountDay();
                        if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                            predictVO.setMineNum(dailyCount.getOrderNum());
                            predictVO.setMineMoney(dailyCount.getIncome());
                            predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
                            predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                            predictVO.setTeamMoney(dailyCount.getIncomeTeam());
                            predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
                            break;
                        }
@@ -344,9 +390,9 @@
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                                && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                            predictVO.setMineNum(dailyCount.getOrderNum());
                            predictVO.setMineMoney(dailyCount.getIncome());
                            predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
                            predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                            predictVO.setTeamMoney(dailyCount.getIncomeTeam());
                            predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
                            break;
                        }
                    }
@@ -356,23 +402,11 @@
                predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney()));
            }
            GsonBuilder builder = new GsonBuilder();
            builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
                @Override
                public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
                    if (value == null) {
                        return new JsonPrimitive("0.00");
                    } else {
                        // 保留2位小数
                        value = value.setScale(2);
                        return new JsonPrimitive(value.toString());
                    }
                }
            });
            Gson gson = getGson();
            JSONObject object = new JSONObject();
            object.put("count", list.size());
            object.put("list", builder.create().toJson(list));
            object.put("list", gson.toJson(list));
            out.print(JsonUtil.loadTrueResult(object));
        } catch (ParseException e) {
            e.printStackTrace();
@@ -431,65 +465,178 @@
                for (OrderMoneyDailyCount dailyCount : listDailyCount) {
                    if (dailyCount.getSourceType() == typeEnum) {
                        detail.setNum(detail.getNum() + dailyCount.getOrderNum());
                        detail.setMoney(detail.getMoney().add(dailyCount.getIncome()));
                        detail.setMoney(detail.getMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
                    }
                }
            }
            list.add(detail);
        }
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
                if (value == null) {
                    return new JsonPrimitive("0.00");
                } else {
                    // 保留2位小数
                    value = value.setScale(2);
                    return new JsonPrimitive(value.toString());
                }
            }
        });
        Gson gson = getGson();
        JSONObject object = new JSONObject();
        object.put("count", list.size());
        object.put("list", builder.create().toJson(list));
        object.put("list", gson.toJson(list));
        out.print(JsonUtil.loadTrueResult(object));
    }
    @RequestMapping(value = "getExtractRecord")
    public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) {
    /**
     * 团队分红
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getTeamDividendStatistic")
    public void getTeamDividendStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        List<Extract> list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid);
        if (list == null) {
            list = new ArrayList<>();
        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)));
        MoneyPredictVO todayVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
        // 本月预估
        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);
        MoneyPredictVO monthVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate));
        Gson gson = getGson();
        JSONObject object = new JSONObject();
        object.put("total", "0.00"); //TODO
        object.put("reward", "0.00");
        object.put("subsidy", "0.00");
        object.put("today", gson.toJson(todayVO));
        object.put("month", gson.toJson(monthVO));
        out.print(JsonUtil.loadTrueResult(object));
        }
        JSONArray JSONArray = new JSONArray();
        for (Extract extract : list) {
            Date receiveTime = extract.getReceiveTime();
            if (receiveTime == null) {
                receiveTime = new Date(extract.getExtractTime());
    /**
     * 历史详情
     *
     * @param acceptData
     * @param uid
     * @param datetype   1-天 - 2月
     * @param out
     */
    @RequestMapping(value = "getTeamDividendHistory")
    public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
            }
            String account = "支付宝:" + UserUtil.filterAlipayAccount(extract.getAccount());
            account = account + "-姓名:" + UserUtil.filterAlipayName(extract.getName());
        if (StringUtil.isNullOrEmpty(date) || datetype == null) {
            out.print(JsonUtil.loadFalseResult(1, "参数不完整"));
            return;
        }
        try {
            Date minDay = new Date();
            Date maxDay = new Date();
            BigDecimal zero = new BigDecimal(0);
            List<OrderMoneyDailyCount> listDailyCount = null;
            List<TeamPredictVO> list = new ArrayList<>();
            SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy年MM月");
            SimpleDateFormat formatDay = new SimpleDateFormat("yyyy年MM月dd日");
            if (datetype == 1) {
                // 后退7个月
                int countNum = 7;
                Date day = TimeUtil.parseYYYYMMDD(date);
                for (int i = 0; i < countNum; i++) {
                    TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0);
                    if (i == 0) {
                        predictVO.setCountDate(formatDay.format(day));
                    } else {
                        predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day)));
                    }
                    list.add(predictVO);
                    if (i == countNum - 1) {
                        minDay = DateUtil.reduceDay(i, day);
                    }
                }
                maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59");
                listDailyCount = orderMoneyDailyCountService.sumTeamGroupByCountDay(uid, minDay, maxDay);
            } else if (datetype == 2) {
                // 后退3个月
                int countNum = 3;
                Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date));
                for (int i = 0; i < countNum; i++) {
                    TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0);
                    if (i == 0) {
                        predictVO.setCountDate(formatMonth.format(day));
                    } else {
                        predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i)));
                    }
                    list.add(predictVO);
                    if (i == countNum - 1) {
                        minDay = DateUtil.reduceMonth(day, i);
                    }
                }
                maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59");
                listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay);
            }
            for (TeamPredictVO predictVO : list) {
                String countDate = predictVO.getCountDate();
                if (listDailyCount != null && listDailyCount.size() > 0) {
                    for (OrderMoneyDailyCount dailyCount : listDailyCount) {
                        Date countDay = dailyCount.getCountDay();
                        if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                            predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                            predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
                            predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                            predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
                            break;
                        }
                        String yearMonth = dailyCount.getYearMonth();
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                                && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                            predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                            predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
                            predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                            predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
                            break;
                        }
                    }
                }
                predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum());
                predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
            }
            Gson gson = getGson();
            JSONObject object = new JSONObject();
            object.put("title", "你于" + TimeUtil.formatDate(receiveTime) + "提现成功");
            object.put("account", account);
            object.put("money", "¥" + extract.getMoney().setScale(2).toString());
            JSONArray.add(object);
            object.put("count", list.size());
            object.put("list", gson.toJson(list));
            out.print(JsonUtil.loadTrueResult(object));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        }
        JSONObject json = new JSONObject();
        json.put("count", extractService.countExtractSucceedRecord(uid));
        json.put("list", JSONArray);
        out.print(JsonUtil.loadTrueResult(json));
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
@@ -10,10 +10,7 @@
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
@@ -24,40 +21,15 @@
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.yeshi.fanli.dao.MongodbBaseDao;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount.SourceTypeEnum;
@Repository
public class OrderMoneyDailyCountDao {
public class OrderMoneyDailyCountDao extends MongodbBaseDao<OrderMoneyDailyCount> {
    private static String collectionName = "order_money_daily_count";
    @Resource
    private MongoTemplate mongoTemplate;
    /**
     * 新增
     *
     * @param record
     */
    public void save(OrderMoneyDailyCount record) {
        if (record == null) {
            return;
        }
        mongoTemplate.save(record);
    }
    /**
     * 查询ID
     *
     * @param id
     * @return
     */
    public OrderMoneyDailyCount getById(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        return mongoTemplate.findOne(query, OrderMoneyDailyCount.class);
    }
    /**
     * 选择更新
@@ -76,24 +48,28 @@
            update.set("orderNum", info.getOrderNum());
        if (info.getOrderNumTeam() != null)
            update.set("orderNumTeam", info.getOrderNumTeam());
        if (info.getTeamReward() != null)
            update.set("teamReward", info.getTeamReward());
        if (info.getTeamRewardNum() != null)
            update.set("teamRewardNum", info.getTeamRewardNum());
        if (info.getTeamSubsidy() != null)
            update.set("teamSubsidy", info.getTeamSubsidy());
        if (info.getTeamSubsidyNum() != null)
            update.set("teamSubsidyNum", info.getTeamSubsidyNum());
        update.set("updateTime", new Date());
        mongoTemplate.updateMulti(query, update, OrderMoneyDailyCount.class);
        update(query, update);
    }
    // 查询
    public List<OrderMoneyDailyCount> query(Long uid, Date minDay, Date maxDay) {
        Query query = new Query();
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDay != null)
            list.add(Criteria.where("countDay").gte(minDay));
        if (maxDay != null)
            list.add(Criteria.where("countDay").lte(maxDay));
        if (minDay != null) {
            list.add(Criteria.where("bossSuperId").lte(uid));
        }
        if (maxDay != null) {
            list.add(Criteria.where("bossSuperId").gte(uid));
        }
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
@@ -101,7 +77,7 @@
            query.addCriteria(new Criteria().andOperator(cas));
        }
        query.with(new Sort(Sort.Direction.ASC, "countDay"));
        return mongoTemplate.find(query, OrderMoneyDailyCount.class);
        return findList(query);
    }
    /**
@@ -114,10 +90,8 @@
     */
    public List<OrderMoneyDailyCount> sumGroupBySourceType(Long uid, Date minDate, Date maxDate) {
        List<OrderMoneyDailyCount> listDailyCount = new ArrayList<>();
        // 统计方法
        String reduce = "function(doc, aggr){"
                + " aggr.totalIncome += parseFloat((Math.round((doc.income)*100)/100).toFixed(2));"
                + " aggr.totalIncome += doc.income;"
                + " aggr.totalNum += doc.orderNum;" + "}";
        // 查询条件
@@ -162,7 +136,7 @@
                OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                dailyCount.setSourceType(sourceTypeEnum);
                dailyCount.setIncome(new BigDecimal(object.get("totalIncome").toString()));
                dailyCount.setIncome(new BigDecimal(object.get("totalIncome").toString()).intValue());
                dailyCount.setOrderNum(new BigDecimal(object.get("totalNum").toString()).intValue());
                listDailyCount.add(dailyCount);
            }
@@ -183,7 +157,7 @@
        // 统计方法
        String reduce = "function(doc, aggr){"
                + " aggr.totalIncome += parseFloat((Math.round((doc.incomeTeam)*100)/100).toFixed(2));"
                + " aggr.totalIncome += doc.incomeTeam;"
                + " aggr.totalNum += doc.orderNumTeam;" + "}";
        // 查询条件
@@ -227,13 +201,34 @@
                    }
                }
                dailyCount.setSourceType(sourceTypeEnum);
                dailyCount.setIncome(new BigDecimal(object.get("totalIncome").toString()));
                dailyCount.setIncome(new BigDecimal(object.get("totalIncome").toString()).intValue());
                dailyCount.setOrderNum(new BigDecimal(object.get("totalNum").toString()).intValue());
                listDailyCount.add(dailyCount);
            }
        }
        return listDailyCount;
    }
    private String getReduce() {
        StringBuilder builder = new StringBuilder();
        builder.append("function(doc, aggr){ ");
        builder.append(" aggr.totalIncome += doc.income;");
        builder.append(" aggr.totalNum += doc.orderNum;");
        builder.append(" aggr.totalIncomeTeam += doc.incomeTeam;");
        builder.append(" aggr.totalNumTeam += doc.orderNumTeam;");
        builder.append(" }");
        return builder.toString();
    }
//    private String getReduce2() {
//    StringBuilder builder = new StringBuilder();
//    builder.append("function(doc, aggr){ ");
//    builder.append(" aggr.totalIncome += parseFloat((Math.round((doc.income)*100)/100).toFixed(2));");
//    builder.append(" aggr.totalNum += doc.orderNum;");
//    builder.append(" aggr.totalIncomeTeam += parseFloat((Math.round((doc.incomeTeam)*100)/100).toFixed(2));");
//    builder.append(" aggr.totalNumTeam += doc.orderNumTeam;");
//    builder.append(" }");
//    return builder.toString();
//}
    
@@ -293,9 +288,9 @@
                    Date dtime = sdf.parse(date);
                    OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                    dailyCount.setCountDay(dtime);
                    dailyCount.setIncome(new BigDecimal(dbObject.get("totalIncome").toString()));
                    dailyCount.setIncome(new BigDecimal(dbObject.get("totalIncome").toString()).intValue());
                    dailyCount.setOrderNum(new BigDecimal(dbObject.get("totalNum").toString()).intValue());
                    dailyCount.setIncomeTeam(new BigDecimal(dbObject.get("totalIncomeTeam").toString()));
                    dailyCount.setIncomeTeam(new BigDecimal(dbObject.get("totalIncomeTeam").toString()).intValue());
                    dailyCount.setOrderNumTeam(new BigDecimal(dbObject.get("totalNumTeam").toString()).intValue());
                    results.add(dailyCount);
                } catch (ParseException e) {
@@ -305,18 +300,6 @@
            }
        }
        return results;
    }
    private String getReduce() {
        StringBuilder builder = new StringBuilder();
        builder.append("function(doc, aggr){ ");
        builder.append(" aggr.totalIncome += parseFloat((Math.round((doc.income)*100)/100).toFixed(2));");
        builder.append(" aggr.totalNum += doc.orderNum;");
        builder.append(" aggr.totalIncomeTeam += parseFloat((Math.round((doc.incomeTeam)*100)/100).toFixed(2));");
        builder.append(" aggr.totalNumTeam += doc.orderNumTeam;");
        builder.append(" }");
        return builder.toString();
    }
    
    
@@ -372,9 +355,9 @@
                
                OrderMoneyDailyCount dailyCount = new OrderMoneyDailyCount();
                dailyCount.setYearMonth(object.toString());
                dailyCount.setIncome(new BigDecimal(dbObject.get("totalIncome").toString()));
                dailyCount.setIncome(new BigDecimal(dbObject.get("totalIncome").toString()).intValue());
                dailyCount.setOrderNum(new BigDecimal(dbObject.get("totalNum").toString()).intValue());
                dailyCount.setIncomeTeam(new BigDecimal(dbObject.get("totalIncomeTeam").toString()));
                dailyCount.setIncomeTeam(new BigDecimal(dbObject.get("totalIncomeTeam").toString()).intValue());
                dailyCount.setOrderNumTeam(new BigDecimal(dbObject.get("totalNumTeam").toString()).intValue());
                results.add(dailyCount);
            }
@@ -382,4 +365,149 @@
        return results;
    }
    private String getTeamReduce() {
        StringBuilder builder = new StringBuilder();
        builder.append("function(doc, aggr){ ");
        builder.append(" aggr.totalReward += doc.teamReward;");
        builder.append(" aggr.totalRewardNum += doc.teamRewardNum;");
        builder.append(" aggr.totalSubsidy += doc.teamSubsidy;");
        builder.append(" aggr.totalSubsidyNum += doc.teamSubsidyNum;");
        builder.append(" }");
        return builder.toString();
    }
    /**
     * 统计每天订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupByCountDay(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("totalReward", 0);
        map.put("totalRewardNum", 0);
        map.put("totalSubsidy", 0);
        map.put("totalSubsidyNum", 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, getTeamReduce(), 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.setTeamReward(new BigDecimal(dbObject.get("totalReward").toString()).intValue());
                    dailyCount.setTeamRewardNum(new BigDecimal(dbObject.get("totalRewardNum").toString()).intValue());
                    dailyCount.setTeamSubsidy(new BigDecimal(dbObject.get("totalSubsidy").toString()).intValue());
                    dailyCount.setTeamSubsidyNum(new BigDecimal(dbObject.get("totalSubsidyNum").toString()).intValue());
                    results.add(dailyCount);
                } catch (ParseException e) {
                    e.printStackTrace();
                    continue;
                }
            }
        }
        return results;
    }
    /**
     *    统计每月订单收入、数量
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(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("totalReward", 0);
        map.put("totalRewardNum", 0);
        map.put("totalSubsidy", 0);
        map.put("totalSubsidyNum", 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, getTeamReduce(), 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.setTeamReward(new BigDecimal(dbObject.get("totalReward").toString()).intValue());
                dailyCount.setTeamRewardNum(new BigDecimal(dbObject.get("totalRewardNum").toString()).intValue());
                dailyCount.setTeamSubsidy(new BigDecimal(dbObject.get("totalSubsidy").toString()).intValue());
                dailyCount.setTeamSubsidyNum(new BigDecimal(dbObject.get("totalSubsidyNum").toString()).intValue());
                results.add(dailyCount);
            }
        }
        return results;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamFansInfoDao.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.dao.user.invite;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -37,10 +38,10 @@
            update.set("stateValid", record.getStateValid());
        if (record.getTaobaoBind() != null)
            update.set("taobaoBind", record.getTaobaoBind());
        if (record.getWeixinBind() != null)
            update.set("weixinBind", record.getWeixinBind());
        if (record.getWeixinId() != null)
            update.set("weixinId", record.getWeixinId());
        if (record.getWeixinIdExist() != null)
            update.set("weixinIdExist", record.getWeixinIdExist());
        if (record.getPhone() != null)
            update.set("phone", record.getPhone());
        if (record.getPhoneOpen() != null)
@@ -120,7 +121,7 @@
                list.add(Criteria.where("taobaoBind").is(focusDTO.getTaobaoBind()));
            if (focusDTO.getWeixinBind() != null)
                list.add(Criteria.where("weixinBind").is(focusDTO.getWeixinBind()));
                list.add(Criteria.where("weixinIdExist").is(focusDTO.getWeixinBind()));
            if (!StringUtil.isNullOrEmpty(focusDTO.getLevel()))
                list.add(Criteria.where("level").is(focusDTO.getLevel()));
@@ -143,11 +144,16 @@
            if (!StringUtil.isNullOrEmpty(focusDTO.getMaxActiveTime()))
                list.add(Criteria.where("activeTime").lte(focusDTO.getMaxActiveTime()));
            if (focusDTO.getMinIncome() != null)
                list.add(Criteria.where("income").gte(focusDTO.getMinIncome()));
            if (focusDTO.getMinIncome() != null) {
                int income = focusDTO.getMinIncome().multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue();
                list.add(Criteria.where("income").lte(income));
            }
            if (focusDTO.getMaxIncome() != null)
                list.add(Criteria.where("income").lte(focusDTO.getMaxIncome()));
            if (focusDTO.getMaxIncome() != null) {
                int income = focusDTO.getMaxIncome().multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue();
                list.add(Criteria.where("income").lte(income));
            }
            if (!StringUtil.isNullOrEmpty(focusDTO.getKey())) {
                if (type == 1) {
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/TeamFansInfo.java
@@ -1,6 +1,5 @@
package com.yeshi.fanli.entity.bus.user;
import java.math.BigDecimal;
import java.util.Date;
import org.springframework.data.annotation.Id;
@@ -38,10 +37,10 @@
    private Boolean taobaoBind; // 绑定淘宝
    @Field
    private Boolean weixinBind; // 绑定微信
    private String weixinId; // 微信号
    @Field
    private String weixinId; // 微信号
    private Boolean weixinIdExist; // 填写微信号
    @Field
    private String phone; // 电话号码
@@ -59,7 +58,7 @@
    private Integer fansNum; // 粉丝数量
    @Field
    private BigDecimal income; // 账户收入
    private Integer income; // 账户收入 乘以100
    @Field
    private Date incomeTime; // 账户收入统计时间
@@ -122,20 +121,12 @@
        this.nickName = nickName;
    }
    public String getMemoName() {
        return memoName;
    public UserLevelEnum getLevel() {
        return level;
    }
    public void setMemoName(String memoName) {
        this.memoName = memoName;
    }
    public String getTags() {
        return tags;
    }
    public void setTags(String tags) {
        this.tags = tags;
    public void setLevel(UserLevelEnum level) {
        this.level = level;
    }
    public Boolean getStateValid() {
@@ -154,92 +145,20 @@
        this.taobaoBind = taobaoBind;
    }
    public Boolean getWeixinBind() {
        return weixinBind;
    }
    public void setWeixinBind(Boolean weixinBind) {
        this.weixinBind = weixinBind;
    }
    public Date getActiveTime() {
        return activeTime;
    }
    public void setActiveTime(Date activeTime) {
        this.activeTime = activeTime;
    }
    public Integer getFansNum() {
        return fansNum;
    }
    public void setFansNum(Integer fansNum) {
        this.fansNum = fansNum;
    }
    public BigDecimal getIncome() {
        return income;
    }
    public void setIncome(BigDecimal income) {
        this.income = income;
    }
    public Date getIncomeTime() {
        return incomeTime;
    }
    public void setIncomeTime(Date incomeTime) {
        this.incomeTime = incomeTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Date getJoinTime() {
        return joinTime;
    }
    public void setJoinTime(Date joinTime) {
        this.joinTime = joinTime;
    }
    public String getMemoNameSup() {
        return memoNameSup;
    }
    public void setMemoNameSup(String memoNameSup) {
        this.memoNameSup = memoNameSup;
    }
    public String getTagsSup() {
        return tagsSup;
    }
    public void setTagsSup(String tagsSup) {
        this.tagsSup = tagsSup;
    }
    public UserLevelEnum getLevel() {
        return level;
    }
    public void setLevel(UserLevelEnum level) {
        this.level = level;
    }
    public String getWeixinId() {
        return weixinId;
    }
    public void setWeixinId(String weixinId) {
        this.weixinId = weixinId;
    }
    public Boolean getWeixinIdExist() {
        return weixinIdExist;
    }
    public void setWeixinIdExist(Boolean weixinIdExist) {
        this.weixinIdExist = weixinIdExist;
    }
    public String getPhone() {
@@ -266,4 +185,84 @@
        this.inviteCode = inviteCode;
    }
    public Date getActiveTime() {
        return activeTime;
    }
    public void setActiveTime(Date activeTime) {
        this.activeTime = activeTime;
    }
    public Integer getFansNum() {
        return fansNum;
    }
    public void setFansNum(Integer fansNum) {
        this.fansNum = fansNum;
    }
    public Integer getIncome() {
        return income;
    }
    public void setIncome(Integer income) {
        this.income = income;
    }
    public Date getIncomeTime() {
        return incomeTime;
    }
    public void setIncomeTime(Date incomeTime) {
        this.incomeTime = incomeTime;
    }
    public Date getJoinTime() {
        return joinTime;
    }
    public void setJoinTime(Date joinTime) {
        this.joinTime = joinTime;
    }
    public String getMemoName() {
        return memoName;
    }
    public void setMemoName(String memoName) {
        this.memoName = memoName;
    }
    public String getTags() {
        return tags;
    }
    public void setTags(String tags) {
        this.tags = tags;
    }
    public String getMemoNameSup() {
        return memoNameSup;
    }
    public void setMemoNameSup(String memoNameSup) {
        this.memoNameSup = memoNameSup;
    }
    public String getTagsSup() {
        return tagsSup;
    }
    public void setTagsSup(String tagsSup) {
        this.tagsSup = tagsSup;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java
@@ -1,6 +1,5 @@
package com.yeshi.fanli.entity.order;
import java.math.BigDecimal;
import java.util.Date;
import org.springframework.data.annotation.Id;
@@ -9,6 +8,7 @@
/**
 * 订单相关资金统计
 *
 * @author Administrator
 *
 */
@@ -18,10 +18,10 @@
    public enum SourceTypeEnum {
        taobao("淘宝", "http://img.flqapp.com/resource/icon/source_type_tb.png"),
        tmall("天猫", "http://img.flqapp.com/resource/icon/source_type_tm.png"),
        tmallGlobal("天猫国际", "http://img.flqapp.com/resource/icon/source_type_tb.png"),
        juHuaSuan("聚划算", "http://img.flqapp.com/resource/icon/source_type_tb.png"),
        huangLv("航旅", "http://img.flqapp.com/resource/icon/source_type_elme.png"),
        kouBei("口碑", "http://img.flqapp.com/resource/icon/source_type_elme.png"),
        tmallGlobal("天猫国际", "http://img.flqapp.com/resource/icon/source_type_tm_inter.png"),
        juHuaSuan("聚划算", "http://img.flqapp.com/resource/icon/source_type_juhuasuan.png"),
        huangLv("航旅", "http://img.flqapp.com/resource/icon/source_type_hanglv.png"),
        kouBei("口碑", "http://img.flqapp.com/resource/icon/source_type_koubei.png"),
        elme("饿了么", "http://img.flqapp.com/resource/icon/source_type_elme.png"),
        jingDong("京东", "http://img.flqapp.com/resource/icon/source_type_jd.png"),
        pinDuoDuo("拼多多", "http://img.flqapp.com/resource/icon/source_type_pdd.png");
@@ -43,42 +43,35 @@
        }
    }
    
    @Id
    @Field("id")
    @Field
    private String id;
    @Field("uid")
    @Field
    private Long uid; // 上级id
    @Field("sourceType")
    @Field
    private SourceTypeEnum sourceType; // 来源类型
    @Field("yearMonth")
    @Field
    private String yearMonth; // 统计日期-字符串
    @Field("countDay")
    @Field
    private Date countDay; // 统计日期
    @Field("income")
    private BigDecimal income; // 收入-我的
    @Field("incomeTeam")
    private BigDecimal incomeTeam; // 收入-团队-
    @Field("orderNum")
    @Field
    private Integer income; // 收入-我的收益 X 100
    @Field
    private Integer incomeTeam; // 收入-团队收益 X 100
    @Field
    private Integer orderNum; // 订单数量-我的
    @Field("orderNumTeam")
    @Field
    private Integer orderNumTeam; // 订单数量-团队
    @Field("updateTime")
    @Field
    private Integer teamReward; // 团队奖励  X 100
    @Field
    private Integer teamRewardNum; // 团队奖励订单数量
    @Field
    private Integer teamSubsidy; // 团队补贴  X 100
    @Field
    private Integer teamSubsidyNum; // 团队补贴订单数量
    @Field
    private Date updateTime; // 更新时间
    public String getId() {
        return id;
@@ -96,19 +89,43 @@
        this.uid = uid;
    }
    public BigDecimal getIncome() {
    public SourceTypeEnum getSourceType() {
        return sourceType;
    }
    public void setSourceType(SourceTypeEnum sourceType) {
        this.sourceType = sourceType;
    }
    public String getYearMonth() {
        return yearMonth;
    }
    public void setYearMonth(String yearMonth) {
        this.yearMonth = yearMonth;
    }
    public Date getCountDay() {
        return countDay;
    }
    public void setCountDay(Date countDay) {
        this.countDay = countDay;
    }
    public Integer getIncome() {
        return income;
    }
    public void setIncome(BigDecimal income) {
    public void setIncome(Integer income) {
        this.income = income;
    }
    public BigDecimal getIncomeTeam() {
    public Integer getIncomeTeam() {
        return incomeTeam;
    }
    public void setIncomeTeam(BigDecimal incomeTeam) {
    public void setIncomeTeam(Integer incomeTeam) {
        this.incomeTeam = incomeTeam;
    }
@@ -128,12 +145,36 @@
        this.orderNumTeam = orderNumTeam;
    }
    public Date getCountDay() {
        return countDay;
    public Integer getTeamReward() {
        return teamReward;
    }
    public void setCountDay(Date countDay) {
        this.countDay = countDay;
    public void setTeamReward(Integer teamReward) {
        this.teamReward = teamReward;
    }
    public Integer getTeamRewardNum() {
        return teamRewardNum;
    }
    public void setTeamRewardNum(Integer teamRewardNum) {
        this.teamRewardNum = teamRewardNum;
    }
    public Integer getTeamSubsidy() {
        return teamSubsidy;
    }
    public void setTeamSubsidy(Integer teamSubsidy) {
        this.teamSubsidy = teamSubsidy;
    }
    public Integer getTeamSubsidyNum() {
        return teamSubsidyNum;
    }
    public void setTeamSubsidyNum(Integer teamSubsidyNum) {
        this.teamSubsidyNum = teamSubsidyNum;
    }
    public Date getUpdateTime() {
@@ -144,19 +185,4 @@
        this.updateTime = updateTime;
    }
    public SourceTypeEnum getSourceType() {
        return sourceType;
    }
    public void setSourceType(SourceTypeEnum sourceType) {
        this.sourceType = sourceType;
    }
    public String getYearMonth() {
        return yearMonth;
    }
    public void setYearMonth(String yearMonth) {
        this.yearMonth = yearMonth;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
@@ -39,22 +39,33 @@
        SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy-MM");
        record.setYearMonth(formatMonth.format(record.getCountDay()));
        OrderMoneyDailyCount dailyCount = orderMoneyDailyCountDao.getById(id);
        OrderMoneyDailyCount dailyCount = orderMoneyDailyCountDao.get(id);
        if (dailyCount != null) {
            // 选择性更新
            orderMoneyDailyCountDao.updateSelective(record);
        } else {
            // 选择性插入
            initData(record);
            record.setUpdateTime(new Date());
            orderMoneyDailyCountDao.save(record);
        }
    }
    private void initData(OrderMoneyDailyCount record) {
            if (record.getIncome() == null)
                record.setIncome(BigDecimal.valueOf(0));
            record.setIncome(0);
            if (record.getIncomeTeam() == null)
                record.setIncomeTeam(BigDecimal.valueOf(0));
            record.setIncomeTeam(0);
            if (record.getOrderNum() == null)
                record.setOrderNum(0);
            if (record.getOrderNumTeam() == null)
                record.setOrderNumTeam(0);
            orderMoneyDailyCountDao.save(record);
        }
        if (record.getTeamReward() == null)
            record.setTeamReward(0);
        if (record.getTeamRewardNum() == null)
            record.setTeamRewardNum(0);
        if (record.getTeamSubsidy() == null)
            record.setTeamSubsidy(0);
        if (record.getTeamSubsidyNum() == null)
            record.setTeamSubsidyNum(0);
    }
    @Override
@@ -81,4 +92,15 @@
    public List<OrderMoneyDailyCount> sumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumGroupByYearMonth(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount> sumTeamGroupByCountDay(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamGroupByCountDay(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamGroupByYearMonth(uid, minDay, maxDay);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamFansInfoServiceImpl.java
@@ -56,8 +56,6 @@
            record.setStateValid(false);
        if (record.getTaobaoBind() == null)
             record.setTaobaoBind(false);
        if (record.getWeixinBind() == null)
            record.setWeixinBind(false);
        if (record.getWeixinId() == null)
            record.setWeixinId("");
        if (record.getPhone() == null)
@@ -71,7 +69,7 @@
        if (record.getFansNum() == null)
            record.setFansNum(0);
        if (record.getIncome() != null)
            record.setIncome(BigDecimal.ZERO);
            record.setIncome(0);
        if (record.getIncomeTime() == null)
            record.setIncomeTime(new Date());
        if (record.getMemoName() == null)
@@ -82,6 +80,13 @@
            record.setMemoNameSup("");
        if (record.getTagsSup() == null)
            record.setTagsSup("");
        if (StringUtil.isNullOrEmpty(record.getWeixinId())) {
            record.setWeixinIdExist(false);
        } else {
            record.setWeixinIdExist(true);
        }
    }
    
    
@@ -137,14 +142,6 @@
    }
    
    @Override
    public void updateWeixinBind(Long workerId, boolean weixinBind) {
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
        teamFansInfo.setWeixinBind(weixinBind);
        save(teamFansInfo);
    }
    @Override
    public void updateActiveTime(Long workerId, Date activeTime) {
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
@@ -158,6 +155,11 @@
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
        teamFansInfo.setWeixinId(weixinId);
        if (StringUtil.isNullOrEmpty(weixinId)) {
            teamFansInfo.setWeixinIdExist(false);
        } else {
            teamFansInfo.setWeixinIdExist(true);
        }
        save(teamFansInfo);
    }
    
@@ -189,9 +191,13 @@
    
    @Override
    public void updateIncome(Long workerId, BigDecimal income) {
        if (income == null) {
            income = BigDecimal.ZERO;
        }
        TeamFansInfo teamFansInfo = new TeamFansInfo();
        teamFansInfo.setWorkerId(workerId);
        teamFansInfo.setIncome(income);
        teamFansInfo.setIncome(income.multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_DOWN).intValue());
        teamFansInfo.setIncomeTime(new Date());
        save(teamFansInfo);
    }
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java
@@ -59,5 +59,23 @@
     * @return
     */
    public List<OrderMoneyDailyCount> sumGroupByYearMonth(Long uid, Date minDay, Date maxDay);
    /**
     * 统计每天 团队分红
     * @param uid
     * @param minDay
     * @param maxDay
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupByCountDay(Long uid, Date minDay, Date maxDay);
    /**
     *  统计每月团队分红
     * @param uid
     * @param minDay
     * @param maxDay
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupByYearMonth(Long uid, Date minDay, Date maxDay);
    
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamFansInfoService.java
@@ -78,12 +78,6 @@
     */
    public void updateTaobaoBind(Long workerId, boolean taobaoBind);
    /**
     * 更新微信绑定
     * @param workerId
     * @param weixinBind
     */
    public void updateWeixinBind(Long workerId, boolean weixinBind);
    /**
     * 更新活跃时间
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserTeamMessageListener.java
@@ -65,7 +65,7 @@
                    if (UserInfoUpdateTypeEnum.nickName == mqMsg.getType()) { // 更改昵称
                        teamFansInfoService.updateNickName(mqMsg.getUid(), mqMsg.getValue());
                    } else if (UserInfoUpdateTypeEnum.wxId == mqMsg.getType()) { // 微信号绑定
                        teamFansInfoService.updateWeixinBind(mqMsg.getUid(), true);
                        teamFansInfoService.updateWeixinId(mqMsg.getUid(), mqMsg.getValue());
                    }
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.taobaoBindSuccess.name())) {// 淘宝绑定成功
@@ -74,10 +74,10 @@
                TaoBaoBindSuccessMQMsg mqMsg = new Gson().fromJson(json.toString(), TaoBaoBindSuccessMQMsg.class);
                if (mqMsg != null) {
                    // 更新淘宝绑定
                    teamFansInfoService.updateWeixinBind(mqMsg.getUid(), true);
                    teamFansInfoService.updateTaobaoBind(mqMsg.getUid(), true);
                    Long fromUid = mqMsg.getFromUid();
                    if (fromUid != null) { // 淘宝被解绑
                        teamFansInfoService.updateWeixinBind(fromUid, false);
                        teamFansInfoService.updateTaobaoBind(fromUid, false);
                    }
                }
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.inviteSuccess.name())) {// 邀请成功
fanli/src/main/java/com/yeshi/fanli/vo/money/MoneyPredictVO.java
@@ -3,6 +3,7 @@
import java.math.BigDecimal;
public class MoneyPredictVO {
    private String countDate; // 统计日期
    // 总的
    private BigDecimal totalMoney; // 总预估收益
    private Integer totalNum; // 总付款订单数(笔)
@@ -10,14 +11,11 @@
    private BigDecimal mineMoney;// 预估我的收益
    private Integer mineNum;// 付款订单数(笔)
    // 团队
    private BigDecimal teamMoney;// 累计提现
    private Integer teamNum;// 累计提现
    private BigDecimal teamMoney;// 累计奖金
    private Integer teamNum;// 累计订单
    private String countDate; // 统计日期
    public MoneyPredictVO() {}
    public MoneyPredictVO() {
    }
    
    public MoneyPredictVO(BigDecimal mineMoney, Integer mineNum, BigDecimal teamMoney,Integer teamNum) {
        this.mineMoney = mineMoney;
@@ -25,8 +23,6 @@
        this.teamMoney = teamMoney;
        this.teamNum = teamNum;
    }
    
    
    public BigDecimal getTotalMoney() {
fanli/src/main/java/com/yeshi/fanli/vo/money/TeamPredictVO.java
New file
@@ -0,0 +1,82 @@
package com.yeshi.fanli.vo.money;
import java.math.BigDecimal;
public class TeamPredictVO {
    private String countDate; // 统计日期
    // 总的
    private BigDecimal totalMoney; // 总预估收益
    private Integer totalNum; // 总付款订单数(笔)
    // 团队奖励
    private BigDecimal reward; // 团队奖励 X 100
    private Integer rewardNum; // 团队奖励订单数量
    // 团队补贴
    private BigDecimal subsidy; // 团队补贴 X 100
    private Integer subsidyNum; // 团队补贴订单数量
    public TeamPredictVO() {}
    public TeamPredictVO(BigDecimal reward, Integer rewardNum, BigDecimal subsidy, Integer subsidyNum) {
        this.reward = reward;
        this.rewardNum = rewardNum;
        this.subsidy = subsidy;
        this.subsidyNum = subsidyNum;
    }
    public String getCountDate() {
        return countDate;
    }
    public void setCountDate(String countDate) {
        this.countDate = countDate;
    }
    public BigDecimal getTotalMoney() {
        return totalMoney;
    }
    public void setTotalMoney(BigDecimal totalMoney) {
        this.totalMoney = totalMoney;
    }
    public Integer getTotalNum() {
        return totalNum;
    }
    public void setTotalNum(Integer totalNum) {
        this.totalNum = totalNum;
    }
    public BigDecimal getReward() {
        return reward;
    }
    public void setReward(BigDecimal reward) {
        this.reward = reward;
    }
    public Integer getRewardNum() {
        return rewardNum;
    }
    public void setRewardNum(Integer rewardNum) {
        this.rewardNum = rewardNum;
    }
    public BigDecimal getSubsidy() {
        return subsidy;
    }
    public void setSubsidy(BigDecimal subsidy) {
        this.subsidy = subsidy;
    }
    public Integer getSubsidyNum() {
        return subsidyNum;
    }
    public void setSubsidyNum(Integer subsidyNum) {
        this.subsidyNum = subsidyNum;
    }
}