yujian
2020-04-02 fde1eb082b0de793b36574c311ee8f3d6410feeb
Merge remote-tracking branch 'origin/div' into div
11个文件已修改
546 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserOrderControllerV2.java 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderGoodsMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/HongBaoOrderMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderGoodsMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/HongBaoOrderMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderGoodsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoOrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderGoodsService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/HongBaoOrderService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/user/UserLevelUtil.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/order/GoodsRebateVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserOrderControllerV2.java
@@ -5,7 +5,9 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -17,9 +19,13 @@
import org.yeshi.utils.NumberUtil;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
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.InviteOrderSubsidy;
import com.yeshi.fanli.entity.order.OrderTeamReward;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
@@ -27,9 +33,12 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.order.CommonOrderGoodsService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.ESOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyServiceV2;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.order.OrderTeamRewardService;
import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
@@ -41,6 +50,7 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
import com.yeshi.fanli.vo.order.CommonOrderVO;
import com.yeshi.fanli.vo.order.GoodsRebateVO;
import com.yeshi.fanli.vo.order.OrderCountVO;
@@ -72,22 +82,31 @@
    @Resource
    private RedisManager redisManager;
    @Resource
    private UserCustomSettingsService userCustomSettingsService;
    @Resource
    private ESOrderService esOrderService;
    @Resource
    private OrderTeamRewardService orderTeamRewardService;
    @Resource
    private UserVIPInfoService userVIPInfoService;
    @Resource
    private InviteOrderSubsidyServiceV2 inviteOrderSubsidyServiceV2;
    @Resource
    private HongBaoOrderService hongBaoOrderService;
    @Resource
    private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
    @Resource
    private CommonOrderGoodsService commonOrderGoodsService;
    /**
     * 订单列表
     * 
@@ -115,23 +134,24 @@
     * @param out
     */
    @RequestMapping(value = "getOrderList", method = RequestMethod.POST)
    public void getOrderList(AcceptData acceptData, Integer page, Long uid, Integer state, String type,
            Integer orderState, String orderNo,    String startTime, String endTime, Integer slotTime,
            Integer dateType, Integer goodsType, String source, PrintWriter out) {
    public void getOrderList(AcceptData acceptData, Integer page, Long uid, Integer state, String type,
            Integer orderState, String orderNo, String startTime, String endTime, Integer slotTime, Integer dateType,
            Integer goodsType, String source, PrintWriter out) {
        if (uid == null) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        if (page == null || page < 1)
            page = 1;
        // 搜索内容、订单号
        if (!StringUtil.isNullOrEmpty(orderNo) && VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
        if (!StringUtil.isNullOrEmpty(orderNo)
                && VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
            searchOrder(acceptData, orderNo, page, uid, out);
            return;
        }
        // 转换状态
        if (state != null) {
            if (state == 0) {
@@ -152,18 +172,18 @@
        Integer orderType = null;
        if (StringUtil.isNullOrEmpty(type)) {
            orderType = null;
        } else if (!"0".equalsIgnoreCase(type)){
            orderType = Integer.parseInt(type);
        }
        } else if (!"0".equalsIgnoreCase(type)) {
            orderType = Integer.parseInt(type);
        }
        if (goodsType != null && goodsType == 0)
            goodsType = null;
        // 筛选时间
        if (slotTime != null) {
            try {
                SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
                switch (slotTime) {
                case 1: // 最近三天
                    endTime = sd.format(new Date());
@@ -193,7 +213,7 @@
                e.printStackTrace();
            }
        }
        if (endTime != null && endTime.trim().length() > 0) {
            endTime += " 23:59:59";
        }
@@ -201,8 +221,8 @@
        List<Integer> listSource = new ArrayList<>();
        if (goodsType != null) {
            listSource.add(goodsType);
        }
        }
        try {
            // 筛选结果顶部统计
            String validMoney = "0.00";
@@ -210,14 +230,14 @@
            if (page == 1) {
                BigDecimal predictMoney = hongBaoV2CountService.getRewardMoneyByToSearch(uid, dateType, orderType, 1,
                        orderNo, state, startTime, endTime, listSource);
                if (predictMoney != null)
                if (predictMoney != null)
                    validMoney = predictMoney.setScale(2, BigDecimal.ROUND_DOWN).toString();
                BigDecimal postSaleMoney = hongBaoV2CountService.getRewardMoneyByToSearch(uid, dateType, orderType, 2,
                        orderNo, state, startTime, endTime, listSource);
                if (postSaleMoney != null)
                if (postSaleMoney != null)
                    invalidMoney = postSaleMoney.setScale(2, BigDecimal.ROUND_DOWN).toString();
                if (orderType != null && dateType != null && dateType == 4) {
                    if (orderType == 1) {
                        dateType = 6; // 返利订单有效
@@ -226,22 +246,22 @@
                    }
                }
            }
            // 查询列表
            List<CommonOrderVO> list = commonOrderService.getOrderByUid(acceptData, page, uid, state, orderType, orderState,
                    orderNo, startTime, endTime, dateType, listSource);
            // 统计总数
            long count = commonOrderService.countGroupOrderNoByUid(uid, state, orderType, orderState, orderNo, startTime,
                    endTime, dateType, listSource);
            // 判断是否需要显示订单找回提示   8秒内请求3次触发
            // 查询列表
            List<CommonOrderVO> list = commonOrderService.getOrderByUid(acceptData, page, uid, state, orderType,
                    orderState, orderNo, startTime, endTime, dateType, listSource);
            // 统计总数
            long count = commonOrderService.countGroupOrderNoByUid(uid, state, orderType, orderState, orderNo,
                    startTime, endTime, dateType, listSource);
            // 判断是否需要显示订单找回提示 8秒内请求3次触发
            String orderFindUrl = null;
            if (state ==null && page == 1) {
                if (redisManager.frequencyLimit("orderlist-" + acceptData.getDevice(), 8, 4)||count==0L) {
            if (state == null && page == 1) {
                if (redisManager.frequencyLimit("orderlist-" + acceptData.getDevice(), 8, 4) || count == 0L) {
                    orderFindUrl = configService.get(ConfigKeyEnum.orderFindNotifyUrl.getKey());
                }
            }
            JSONObject data = new JSONObject();
            data.put("count", count);
            data.put("result_list", JsonUtil.getApiCommonGson().toJson(list));
@@ -258,7 +278,7 @@
            LogHelper.errorDetailInfo(e);
        }
    }
    /**
     * 搜索订单
     * @param key
@@ -269,9 +289,10 @@
            long count = 0;
            List<CommonOrderVO> list = null;
            if (NumberUtil.isNumeric(key.replace("-", ""))) {
                list = commonOrderService.getOrderByUid(acceptData, page, uid, null, null, null, key, null, null, null, null);
            }
                list = commonOrderService.getOrderByUid(acceptData, page, uid, null, null, null, key, null, null, null,
                        null);
            }
            if (list == null || list.size() == 0) {
                List<ESOrder> listES = esOrderService.query(key, uid.toString(), null);
                if (listES.size() != 0) {
@@ -281,11 +302,11 @@
            } else {
                count = list.size();
            }
            if (list == null) {
                list = new ArrayList<>();
            }
            JSONObject data = new JSONObject();
            data.put("count", count);
            data.put("result_list", JsonUtil.getApiCommonGson().toJson(list));
@@ -297,7 +318,6 @@
        }
    }
    /**
     * 用户订单统计
     * 
@@ -313,7 +333,7 @@
            out.print(JsonUtil.loadFalseResult(1, "请求参数不正确"));
            return;
        }
        try {
            UserInfo user = userInfoService.selectByPKey(uid);
            if (user == null) {
@@ -329,7 +349,7 @@
            }
            JSONObject data = new JSONObject();
            data.put("userInfo", userInfo);
            List<Integer> listSource = new ArrayList<>();
            if (type == null || type == 0) {
                OrderCountVO total = commonOrderService.getOrderCount(uid, null, null);
@@ -342,10 +362,10 @@
                data.put("self", 0);
                data.put("shared", 0);
                data.put("invite", 0);
                listSource.add(type);
            }
            // 今天
            OrderCountVO today = commonOrderService.getOrderCount(uid, 1, listSource);
            today.setTotal(today.getSelf() + today.getShared() + today.getInvite());
@@ -370,7 +390,6 @@
        }
    }
    /**
     * 统计奖金
     * @param acceptData
@@ -384,47 +403,47 @@
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        boolean show = false;
        UserSettingsVO settings = null;
        try {
            settings = userCustomSettingsService.getMySettings(uid);
        } catch (Exception e) {
        }
        // 验证是否显示模块
        if (settings != null && settings.getNoBonusCount()!= null) {
            if(settings.getNoBonusCount() == 1) {
        if (settings != null && settings.getNoBonusCount() != null) {
            if (settings.getNoBonusCount() == 1) {
                show = false;
            } else if(settings.getNoBonusCount() == 0) {
            } else if (settings.getNoBonusCount() == 0) {
                show = true;
            }
        } else {
            show = hongBaoV2CountService.getHongBaoCount(uid, null) > 0;
        }
        BigDecimal selfMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 1, null);
        BigDecimal shareMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 2, null);
        BigDecimal inviteMoney = hongBaoV2CountService.getRewardMoneyToCount(uid, dateType, 3, null);
        JSONObject data = new JSONObject();
        data.put("show", show);
        data.put("selfMoney", selfMoney.setScale(2,BigDecimal.ROUND_DOWN).toString());
        data.put("selfMoney", selfMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
        data.put("shareMoney", shareMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
        data.put("inviteMoney", inviteMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 团队奖励 TODO
        if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            BigDecimal teamSubsidy = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, dateType, null);
            if (teamSubsidy == null) {
                teamSubsidy = new BigDecimal(0);
            }
            BigDecimal teamReward = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, dateType, null);
            if (teamReward == null) {
                teamReward = new BigDecimal(0);
            }
            data.put("teamSubsidy", teamSubsidy.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("teamReward", teamReward.setScale(2, BigDecimal.ROUND_DOWN).toString());
            data.put("tutorSubsidy", "0.00");
@@ -432,7 +451,6 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 团队收益统计  统计已到账未到账 : 累计只统计已到账
     * @param acceptData
@@ -445,17 +463,17 @@
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        UserInfo user = userInfoService.selectByPKey(uid);
        if (user == null) {
            out.print(JsonUtil.loadFalseResult(1, "用户不存在"));
            return;
        }
        if (type == null || type < 1 || type > 3) {
            type = 1;
        }
        if (type == 1) {
            // 补贴
            sumTeamSubsidy(out, user);
@@ -480,78 +498,86 @@
        Long uid = user.getId();
        // 是否VIP
        boolean vip = userVIPInfoService.isVIP(uid);
        JSONObject data = new JSONObject();
        data.put("link", configService.get(ConfigKeyEnum.orderTeamSubsidyLink.getKey()));
        if (!vip) {
            data.put("exist",  false);
            data.put("exist", false);
            out.print(JsonUtil.loadTrueResult(data));
            return;
        }
        data.put("exist",  true);
        }
        data.put("exist", true);
        data.put("portrait", user.getPortrait());
        // 今日统计
        BigDecimal todayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1, InviteOrderSubsidy.LEVEL_ONE);
        BigDecimal todayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1,
                InviteOrderSubsidy.LEVEL_ONE);
        if (todayDirect == null) {
            todayDirect = new BigDecimal(0);
        }
        BigDecimal todayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1, InviteOrderSubsidy.LEVEL_TWO);
        BigDecimal todayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1,
                InviteOrderSubsidy.LEVEL_TWO);
        if (todayIndirect == null) {
            todayIndirect = new BigDecimal(0);
        }
        TeamBonusVO today = new TeamBonusVO();
        today.setDirect(todayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setIndirect(todayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setTotal(MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setTotal(
                MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 昨日统计
        BigDecimal yesterdayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2, InviteOrderSubsidy.LEVEL_ONE);
        BigDecimal yesterdayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2,
                InviteOrderSubsidy.LEVEL_ONE);
        if (yesterdayDirect == null) {
            yesterdayDirect = new BigDecimal(0);
        }
        BigDecimal yesterdayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2, InviteOrderSubsidy.LEVEL_TWO);
        BigDecimal yesterdayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2,
                InviteOrderSubsidy.LEVEL_TWO);
        if (yesterdayIndirect == null) {
            yesterdayIndirect = new BigDecimal(0);
        }
        TeamBonusVO yesterday = new TeamBonusVO();
        yesterday.setDirect(yesterdayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setIndirect(yesterdayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 本月统计
        BigDecimal thisMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3, InviteOrderSubsidy.LEVEL_ONE);
        BigDecimal thisMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3,
                InviteOrderSubsidy.LEVEL_ONE);
        if (thisMonthDirect == null) {
            thisMonthDirect = new BigDecimal(0);
        }
        BigDecimal thisMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3, InviteOrderSubsidy.LEVEL_TWO);
        BigDecimal thisMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3,
                InviteOrderSubsidy.LEVEL_TWO);
        if (thisMonthIndirect == null) {
            thisMonthIndirect = new BigDecimal(0);
        }
        TeamBonusVO thisMonth = new TeamBonusVO();
        thisMonth.setDirect(thisMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setIndirect(thisMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 本月统计
        BigDecimal lastMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4, InviteOrderSubsidy.LEVEL_ONE);
        BigDecimal lastMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4,
                InviteOrderSubsidy.LEVEL_ONE);
        if (lastMonthDirect == null) {
            lastMonthDirect = new BigDecimal(0);
        }
        BigDecimal lastMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4, InviteOrderSubsidy.LEVEL_TWO);
        BigDecimal lastMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4,
                InviteOrderSubsidy.LEVEL_TWO);
        if (lastMonthIndirect == null) {
            lastMonthIndirect = new BigDecimal(0);
        }
        TeamBonusVO lastMonth = new TeamBonusVO();
        lastMonth.setDirect(lastMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setIndirect(lastMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        BigDecimal direct = inviteOrderSubsidyServiceV2.sumRecievedMoneyByUid(uid, InviteOrderSubsidy.LEVEL_ONE);
        if (direct == null) {
            direct = new BigDecimal(0);
@@ -561,7 +587,7 @@
            indirect = new BigDecimal(0);
        }
        BigDecimal total = MoneyBigDecimalUtil.add(direct, indirect);
        data.put("today", today);
        data.put("yesterday", yesterday);
        data.put("thisMonth", thisMonth);
@@ -571,7 +597,7 @@
        data.put("indirect", indirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 统计团队奖励
     * @param out
@@ -581,19 +607,18 @@
        Long uid = user.getId();
        // 是否VIP
        boolean vip = userVIPInfoService.isVIP(uid);
        JSONObject data = new JSONObject();
        data.put("link", configService.get(ConfigKeyEnum.orderTeamRewardLink.getKey()));
        if (!vip) {
            data.put("exist",  false);
            data.put("exist", false);
            out.print(JsonUtil.loadTrueResult(data));
            return;
        }
        data.put("exist",  true);
        }
        data.put("exist", true);
        data.put("portrait", user.getPortrait());
        // 今日统计
        BigDecimal todayDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 1, OrderTeamReward.LEVEL_ONE);
        if (todayDirect == null) {
@@ -606,54 +631,60 @@
        TeamBonusVO today = new TeamBonusVO();
        today.setDirect(todayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setIndirect(todayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setTotal(MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        today.setTotal(
                MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 昨日统计
        BigDecimal yesterdayDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2, OrderTeamReward.LEVEL_ONE);
        BigDecimal yesterdayDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2,
                OrderTeamReward.LEVEL_ONE);
        if (yesterdayDirect == null) {
            yesterdayDirect = new BigDecimal(0);
        }
        BigDecimal yesterdayIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2, OrderTeamReward.LEVEL_TWO);
        BigDecimal yesterdayIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2,
                OrderTeamReward.LEVEL_TWO);
        if (yesterdayIndirect == null) {
            yesterdayIndirect = new BigDecimal(0);
        }
        TeamBonusVO yesterday = new TeamBonusVO();
        yesterday.setDirect(yesterdayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setIndirect(yesterdayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 本月统计
        BigDecimal thisMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3, OrderTeamReward.LEVEL_ONE);
        BigDecimal thisMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3,
                OrderTeamReward.LEVEL_ONE);
        if (thisMonthDirect == null) {
            thisMonthDirect = new BigDecimal(0);
        }
        BigDecimal thisMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3, OrderTeamReward.LEVEL_TWO);
        BigDecimal thisMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3,
                OrderTeamReward.LEVEL_TWO);
        if (thisMonthIndirect == null) {
            thisMonthIndirect = new BigDecimal(0);
        }
        TeamBonusVO thisMonth = new TeamBonusVO();
        thisMonth.setDirect(thisMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setIndirect(thisMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        // 本月统计
        BigDecimal lastMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4, OrderTeamReward.LEVEL_ONE);
        BigDecimal lastMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4,
                OrderTeamReward.LEVEL_ONE);
        if (lastMonthDirect == null) {
            lastMonthDirect = new BigDecimal(0);
        }
        BigDecimal lastMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4, OrderTeamReward.LEVEL_TWO);
        BigDecimal lastMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4,
                OrderTeamReward.LEVEL_TWO);
        if (lastMonthIndirect == null) {
            lastMonthIndirect = new BigDecimal(0);
        }
        TeamBonusVO lastMonth = new TeamBonusVO();
        lastMonth.setDirect(lastMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setIndirect(lastMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
        lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect)
                .setScale(2, BigDecimal.ROUND_DOWN).toString());
        BigDecimal direct = orderTeamRewardService.sumRecievedMoneyByUid(uid, OrderTeamReward.LEVEL_ONE);
        if (direct == null) {
            direct = new BigDecimal(0);
@@ -663,7 +694,7 @@
            indirect = new BigDecimal(0);
        }
        BigDecimal total = MoneyBigDecimalUtil.add(direct, indirect);
        data.put("today", today);
        data.put("yesterday", yesterday);
        data.put("thisMonth", thisMonth);
@@ -673,8 +704,7 @@
        data.put("indirect", indirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 返利说明
     * @param acceptData
@@ -684,51 +714,129 @@
     * @param out
     */
    @RequestMapping(value = "getReBateInfo")
    public void getReBateInfo(String callback, AcceptData acceptData, Long uid, String orderNo, Integer sourceType, PrintWriter out) {
    public void getReBateInfo(String callback, AcceptData acceptData, Long uid, String orderNo, Integer sourceType,
            PrintWriter out) {
        if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户未登录"));
            return;
        }
        UserInfo user = userInfoService.selectByPKey(uid);
        if (user == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在"));
            return;
        }
        GoodsRebateVO goodsVO = new GoodsRebateVO();
        goodsVO.setTitle("舒客舒克光感炫白牙片美白牙齿牙膜套装去黄牙清新口气");
        goodsVO.setPicture("https://img.alicdn.com/bao/uploaded/i4/355739614/O1CN01RB6Hlg2KtGMWR4mON_!!0-item_pic.jpg");
        goodsVO.setActualPay("¥60.00");
        goodsVO.setFanliRate("X20%");
        goodsVO.setFanliExpect("¥25.00");
        goodsVO.setCommision("10.00");
        goodsVO.setSubsidy("6.00");
        GoodsRebateVO goodsVO2 = new GoodsRebateVO();
        goodsVO2.setTitle("馥佩美白柔肤水爽肤水补水保湿女化妆湿敷精华水男旗舰店官网正品");
        goodsVO2.setPicture("https://img.alicdn.com/bao/uploaded/i4/738252756/O1CN01MgFdXy1WEI8zmkyg7_!!0-item_pic.jpg");
        goodsVO2.setActualPay("¥62.00");
        goodsVO2.setFanliRate("X22%");
        goodsVO2.setFanliExpect("¥26.00");
        goodsVO2.setCommision("12.00");
        goodsVO2.setSubsidy("8.00");
        List<GoodsRebateVO> listGoods= new ArrayList<>();
        listGoods.add(goodsVO);
        listGoods.add(goodsVO2);
        // 按订单号 查询
        List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderNo);
        Integer rank = commonOrderList.get(0).getUrank();
        UserLevelEnum userLevel = UserLevelUtil.getByOrderRank(rank);
        if (userLevel == null)
            userLevel = UserLevelEnum.daRen;
        List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceType(orderNo, sourceType);
        OrderRebateVO orderRebateVO = new OrderRebateVO();
        orderRebateVO.setTotalFanLi("¥50.00");
        orderRebateVO.setUpperFanLi("¥60.00");
        orderRebateVO.setUserLevel(UserLevelEnum.daRen.name());
        orderRebateVO.setJumpLink("https://www.baidu.com/");
        orderRebateVO.setListGoods(listGoods);
        List<GoodsRebateVO> voList = new ArrayList<>();
        BigDecimal totalMoney = new BigDecimal(0);
        UserLevelEnum upperLevel = UserLevelUtil.getNextLevel(userLevel);
        BigDecimal upperTotalMoney = new BigDecimal(0);
        Map<Long, CommonOrderGoods> orderGoodsMap = new HashMap<>();
        List<Long> goodsIdList = new ArrayList<>();
        if (hongBaoOrderList != null)
            for (HongBaoOrder hongBaoOrder : hongBaoOrderList) {
                if (hongBaoOrder.getCommonOrder() != null)
                    goodsIdList.add(hongBaoOrder.getCommonOrder().getCommonOrderGoods().getId());
            }
        List<CommonOrderGoods> goodsList = commonOrderGoodsService.listByByPrimaryKeys(goodsIdList);
        if (goodsList != null)
            for (CommonOrderGoods goods : goodsList)
                orderGoodsMap.put(goods.getId(), goods);
        if (userLevel == UserLevelEnum.daRen) {
            for (HongBaoOrder hongBaoOrder : hongBaoOrderList) {
                if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_SHIXIAO)
                    hongBaoOrder.getHongBaoV2().setMoney(new BigDecimal(0));
                CommonOrder commonOrder = hongBaoOrder.getCommonOrder();
                GoodsRebateVO goodsVO = new GoodsRebateVO();
                if (orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()) != null) {
                    goodsVO.setTitle(orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()).getTitle());
                    goodsVO.setPicture(orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()).getPicture());
                }
                BigDecimal payment = hongBaoOrder.getCommonOrder().getPayment();
                if (hongBaoOrder.getCommonOrder().getSettlement() != null)
                    payment = hongBaoOrder.getCommonOrder().getSettlement();
                if (payment == null)
                    payment = new BigDecimal(0);
                goodsVO.setActualPay("¥" + payment);
                if (payment.compareTo(new BigDecimal(0)) <= 0) {
                    goodsVO.setFanliRate("X0%");
                } else {
                    goodsVO.setFanliRate("X"
                            + MoneyBigDecimalUtil
                                    .div(hongBaoOrder.getHongBaoV2().getMoney().multiply(new BigDecimal(100)), payment)
                            + "%");
                }
                goodsVO.setFanliExpect("¥" + hongBaoOrder.getHongBaoV2().getMoney());
                voList.add(goodsVO);
                totalMoney = totalMoney.add(hongBaoOrder.getHongBaoV2().getMoney());
                if (upperLevel != null) {
                    upperTotalMoney = upperTotalMoney
                            .add(orderHongBaoMoneyComputeService.computeFanliMoney(commonOrder, upperLevel));
                }
            }
            orderRebateVO.setListGoods(voList);
        } else {
            for (HongBaoOrder hongBaoOrder : hongBaoOrderList) {
                if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_SHIXIAO)
                    hongBaoOrder.getHongBaoV2().setMoney(new BigDecimal(0));
                CommonOrder commonOrder = hongBaoOrder.getCommonOrder();
                GoodsRebateVO goodsVO = new GoodsRebateVO();
                if (orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()) != null) {
                    goodsVO.setTitle(orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()).getTitle());
                    goodsVO.setPicture(orderGoodsMap.get(commonOrder.getCommonOrderGoods().getId()).getPicture());
                }
                BigDecimal payment = hongBaoOrder.getCommonOrder().getPayment();
                if (hongBaoOrder.getCommonOrder().getSettlement() != null)
                    payment = hongBaoOrder.getCommonOrder().getSettlement();
                if (payment == null)
                    payment = new BigDecimal(0);
                goodsVO.setActualPay("¥" + payment);
                BigDecimal commission = orderHongBaoMoneyComputeService.computeBaseFanliMoney(commonOrder);
                goodsVO.setCommision("¥" +commission);
                BigDecimal darenFanli = orderHongBaoMoneyComputeService.computeFanliMoney(commonOrder,
                        UserLevelEnum.daRen);
                BigDecimal vipFanli = hongBaoOrder.getHongBaoV2().getMoney();
                goodsVO.setOriginSubsidy(darenFanli.subtract(commission) + "");
                goodsVO.setSubsidy("¥" +vipFanli.subtract(commission));
                voList.add(goodsVO);
                totalMoney = totalMoney.add(vipFanli);
                if (upperLevel != null) {
                    upperTotalMoney = upperTotalMoney
                            .add(orderHongBaoMoneyComputeService.computeFanliMoney(commonOrder, upperLevel));
                }
            }
            orderRebateVO.setListGoods(voList);
        }
        orderRebateVO.setTotalFanLi("¥" + totalMoney);
        if (upperLevel != null) {
            orderRebateVO.setUpperFanLi("¥" + upperTotalMoney);
            orderRebateVO.setUserLevel(upperLevel.name());
            orderRebateVO.setJumpLink(upperLevel.getDetailLink());
        }
        JSONObject data = new JSONObject();
        data.put("result", orderRebateVO);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderGoodsMapper.java
@@ -37,5 +37,16 @@
     * @return
     */
    List<CommonOrderGoods> listNoTitle(@Param("start") long start, @Param("count") int count);
    /**
     * 根据ID列表查询
     * @Title: listByByPrimaryKeys
     * @Description:
     * @param ids
     * @return
     * List<CommonOrderGoods> 返回类型
     * @throws
     */
    List<CommonOrderGoods> listByByPrimaryKeys(@Param("ids") List<Long> ids);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/HongBaoOrderMapper.java
@@ -99,4 +99,14 @@
     */
    public List<HongBaoOrder> listByOrderIdAndSourceType(@Param("orderId") String orderId,
            @Param("sourceType") int sourceType);
    /**
     * 根据订单ID与来源类型查询详情
     * @param orderId
     * @param sourceType
     * @return
     */
    public List<HongBaoOrder> listDetailByOrderIdAndSourceType(@Param("orderId") String orderId,
            @Param("sourceType") int sourceType);
}
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderGoodsMapper.xml
@@ -28,6 +28,17 @@
        <include refid="Base_Column_List" />
        from yeshi_ec_common_order_goods where cog_id = #{id,jdbcType=BIGINT}
    </select>
    <select id="listByByPrimaryKeys" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_common_order_goods where
        <foreach collection="ids" item="id" open="(" close=")"
            separator=" or ">
            cog_id=#{id}
        </foreach>
    </select>
    <select id="listByGoodsIdAndGoodsType" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
fanli/src/main/java/com/yeshi/fanli/mapping/order/HongBaoOrderMapper.xml
@@ -208,6 +208,21 @@
        ho.`ho_order_id`=co.`co_id` WHERE co.`co_order_no`=#{orderId} AND
        co.`co_source_type`=#{sourceType} AND ho.`ho_id`>0
    </select>
    <select id="listDetailByOrderIdAndSourceType" resultMap="BaseDetailResultMap">
        SELECT ho.*,co.*,v.*,co_order_goods_id as cog_id
        FROM yeshi_ec_common_order co LEFT JOIN yeshi_ec_hongbao_order
        ho ON
        ho.`ho_order_id`=co.`co_id`
        left join yeshi_ec_hongbao_v2 v on v.hb_id=ho.ho_hongbao_id
         WHERE co.`co_order_no`=#{orderId} AND
        co.`co_source_type`=#{sourceType} AND ho.`ho_id`>0
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
        yeshi_ec_hongbao_order where ho_id = #{id,jdbcType=BIGINT}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderGoodsServiceImpl.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.service.impl.order;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -45,5 +47,10 @@
    public CommonOrderGoods selectByPrimaryKey(Long id) {
        return commonOrderGoodsMapper.selectByPrimaryKey(id);
    }
    @Override
    public List<CommonOrderGoods> listByByPrimaryKeys(List<Long> idsList) {
        return commonOrderGoodsMapper.listByByPrimaryKeys(idsList);
    }
    
}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoOrderServiceImpl.java
@@ -76,5 +76,10 @@
    public List<HongBaoOrder> listByOrderIdAndSourceType(String orderId, int sourceType) {
        return hongBaoOrderMapper.listByOrderIdAndSourceType(orderId, sourceType);
    }
    @Override
    public List<HongBaoOrder> listDetailByOrderIdAndSourceType(String orderId, int sourceType) {
        return hongBaoOrderMapper.listDetailByOrderIdAndSourceType(orderId, sourceType);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderGoodsService.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.service.inter.order;
import java.util.List;
import com.yeshi.fanli.entity.order.CommonOrderGoods;
public interface CommonOrderGoodsService {
@@ -15,5 +17,7 @@
    public int deleteByPrimaryKey(Long id);
    
    public CommonOrderGoods selectByPrimaryKey(Long id);
    public List<CommonOrderGoods> listByByPrimaryKeys(List<Long> idsList);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/HongBaoOrderService.java
@@ -75,4 +75,14 @@
    public List<HongBaoOrder> listByOrderIdAndSourceType(@Param("orderId") String orderId,
            @Param("sourceType") int sourceType);
    /**
     * 根据订单号和来源类型查询详情
     *
     * @param orderId
     * @param sourceType
     * @return
     */
    public List<HongBaoOrder> listDetailByOrderIdAndSourceType(@Param("orderId") String orderId,
            @Param("sourceType") int sourceType);
}
fanli/src/main/java/com/yeshi/fanli/util/user/UserLevelUtil.java
@@ -3,23 +3,69 @@
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
public class UserLevelUtil {
    public static String getLevelName(int orderRank) {
        if (orderRank == UserLevelEnum.daRen.getOrderRank()) {
            return UserLevelEnum.daRen.getName();
        }
        if (orderRank == UserLevelEnum.normalVIP.getOrderRank()) {
            return UserLevelEnum.normalVIP.getName();
        }
        if (orderRank == UserLevelEnum.highVIP.getOrderRank()) {
            return UserLevelEnum.highVIP.getName();
        }
        if (orderRank == UserLevelEnum.superVIP.getOrderRank()) {
            return UserLevelEnum.superVIP.getName();
        }
        return null;
    }
    /**
     * 根据订单rank获取用户的等级
     * @Title: getByOrderRank
     * @Description:
     * @param orderRank
     * @return
     * UserLevelEnum 返回类型
     * @throws
     */
    public static UserLevelEnum getByOrderRank(Integer orderRank) {
        if (orderRank == null)
            return null;
        for (UserLevelEnum level : UserLevelEnum.values()) {
            if (level.getOrderRank() == orderRank)
                return level;
        }
        return null;
    }
    /**
     * 获取下一个等级
     * @Title: getNextLevel
     * @Description:
     * @param level
     * @return
     * UserLevelEnum 返回类型
     * @throws
     */
    public static UserLevelEnum getNextLevel(UserLevelEnum level) {
        if (level == null)
            return null;
        if (level == UserLevelEnum.daRen) {
            return UserLevelEnum.normalVIP;
        } else if (level == UserLevelEnum.normalVIP) {
            return UserLevelEnum.highVIP;
        } else if (level == UserLevelEnum.highVIP) {
            return UserLevelEnum.superVIP;
        } else if (level == UserLevelEnum.superVIP) {
            return null;
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/vo/order/GoodsRebateVO.java
@@ -6,8 +6,17 @@
    private String actualPay; // 实付款
    private String fanliRate; // 返利比例
    private String fanliExpect; // 预估返利
    private String commision; // 返利比或者佣金
    private String commision; // 佣金
    private String subsidy; // 补贴
    private String originSubsidy; // 原有补贴
    public String getOriginSubsidy() {
        return originSubsidy;
    }
    public void setOriginSubsidy(String originSubsidy) {
        this.originSubsidy = originSubsidy;
    }
    public String getTitle() {
        return title;