admin
2019-11-18 e60126856d6f9ee871aa2812cc4ab069380d4c84
修复失效订单的邀请订单统计问题
3个文件已修改
129 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/HongBaoV2Service.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java
@@ -38,6 +38,7 @@
import com.yeshi.fanli.exception.order.HongBaoException;
import com.yeshi.fanli.exception.order.ShareGoodsActivityOrderException;
import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
@@ -145,10 +146,9 @@
        return hongBaoV2Mapper.selectByPrimaryKey(id);
    }
    @Transactional
    @Override
    public int addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException {
    public int addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException, UserAccountException {
        Set<Integer> stateSet = new HashSet<>();// 订单状态Set
        if (commonOrderList != null && commonOrderList.size() > 0) {
            int orderType = commonOrderList.get(0).getSourceType();
@@ -172,7 +172,7 @@
                        hasUpdate = true;
                }
            }
            /**
             * 通知用户的返利情况
             */
@@ -278,14 +278,15 @@
    @Transactional
    private boolean updateHongBao(HongBaoOrder hongBaoOrder, CommonOrder commonOrder, int type,
            Map<Integer, HongBaoOrder> notificationMap) throws HongBaoException {
            Map<Integer, HongBaoOrder> notificationMap) throws HongBaoException, UserAccountException {
        System.out.println(commonOrder.getOrderNo());
        // 锁行
        HongBaoV2 oldHongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBaoOrder.getHongBaoV2().getId());
        if (oldHongBao == null)
            throw new HongBaoException(10, "红包对象不存在");
        // 已经失效,已经领取,新老状态一致的红包不做处理
        if (oldHongBao.getState() == HongBaoV2.STATE_SHIXIAO || oldHongBao.getState() == HongBaoV2.STATE_YILINGQU)
        // 测试 oldHongBao.getState() == HongBaoV2.STATE_YILINGQU
        if (oldHongBao.getState() == HongBaoV2.STATE_SHIXIAO)
            return false;
        if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
@@ -314,7 +315,8 @@
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
                if (mianDan)
                    hongBao.setMoney(commonOrder.getPayment());
            } else if (commonOrder.getState() == CommonOrder.STATE_JS||commonOrder.getState() == CommonOrder.STATE_WQ) {
            } else if (commonOrder.getState() == CommonOrder.STATE_JS
                    || commonOrder.getState() == CommonOrder.STATE_WQ) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -450,27 +452,31 @@
                        } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
                            firstHongbao.setMoney(
                                    MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
                        }else if(hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
                        {
                        } else if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO) {
                            firstHongbao.setMoney(new BigDecimal(0));
                        }
                        hongBaoV2Mapper.insertSelective(firstHongbao);
                        // 用户通知
                        if (notificationMap.get(HongBaoV2.TYPE_YIJI) == null) {
                            HongBaoV2 tempHongBao = new HongBaoV2(firstHongbao.getId());
                            tempHongBao.setUserInfo(firstHongbao.getUserInfo());
                            tempHongBao.setMoney(firstHongbao.getMoney());
                            CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
                            tempCommonOrder.setPayment(commonOrder.getPayment());
                            notificationMap.put(HongBaoV2.TYPE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
                        } else {
                            // 增加付款金额与资金
                            HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_YIJI);
                            tempHongBaoOrder.getCommonOrder().setPayment(
                                    tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
                            tempHongBaoOrder.getHongBaoV2()
                                    .setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(firstHongbao.getMoney()));
                            notificationMap.put(HongBaoV2.TYPE_YIJI, tempHongBaoOrder);
                        if (firstHongbao.getMoney() != null
                                && firstHongbao.getMoney().compareTo(new BigDecimal(0)) > 0) {
                            hongBaoV2Mapper.insertSelective(firstHongbao);
                            // 用户通知
                            if (notificationMap.get(HongBaoV2.TYPE_YIJI) == null) {
                                HongBaoV2 tempHongBao = new HongBaoV2(firstHongbao.getId());
                                tempHongBao.setUserInfo(firstHongbao.getUserInfo());
                                tempHongBao.setMoney(firstHongbao.getMoney());
                                CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
                                tempCommonOrder.setPayment(commonOrder.getPayment());
                                notificationMap.put(HongBaoV2.TYPE_YIJI,
                                        new HongBaoOrder(tempCommonOrder, tempHongBao));
                            } else {
                                // 增加付款金额与资金
                                HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_YIJI);
                                tempHongBaoOrder.getCommonOrder().setPayment(
                                        tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
                                tempHongBaoOrder.getHongBaoV2().setMoney(
                                        tempHongBaoOrder.getHongBaoV2().getMoney().add(firstHongbao.getMoney()));
                                notificationMap.put(HongBaoV2.TYPE_YIJI, tempHongBaoOrder);
                            }
                        }
                        // 插入二级子红包
@@ -501,26 +507,29 @@
                            } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
                                secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
                                        secondRate.divide(new BigDecimal(100))));
                            }
                            hongBaoV2Mapper.insertSelective(secondHongbao);
                            // 用户通知
                            if (notificationMap.get(HongBaoV2.TYPE_ERJI) == null) {
                                HongBaoV2 tempHongBao = new HongBaoV2(secondHongbao.getId());
                                tempHongBao.setUserInfo(secondHongbao.getUserInfo());
                                tempHongBao.setMoney(secondHongbao.getMoney());
                                CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
                                tempCommonOrder.setPayment(commonOrder.getPayment());
                                notificationMap.put(HongBaoV2.TYPE_ERJI,
                                        new HongBaoOrder(tempCommonOrder, tempHongBao));
                            } else {
                                // 增加付款金额与资金
                                HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_ERJI);
                                tempHongBaoOrder.getCommonOrder().setPayment(
                                        tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
                                tempHongBaoOrder.getHongBaoV2().setMoney(
                                        tempHongBaoOrder.getHongBaoV2().getMoney().add(secondHongbao.getMoney()));
                                notificationMap.put(HongBaoV2.TYPE_ERJI, tempHongBaoOrder);
                            } else if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
                                secondHongbao.setMoney(new BigDecimal(0));
                            if (secondHongbao.getMoney() != null
                                    && secondHongbao.getMoney().compareTo(new BigDecimal(0)) > 0) {
                                hongBaoV2Mapper.insertSelective(secondHongbao);
                                // 用户通知
                                if (notificationMap.get(HongBaoV2.TYPE_ERJI) == null) {
                                    HongBaoV2 tempHongBao = new HongBaoV2(secondHongbao.getId());
                                    tempHongBao.setUserInfo(secondHongbao.getUserInfo());
                                    tempHongBao.setMoney(secondHongbao.getMoney());
                                    CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
                                    tempCommonOrder.setPayment(commonOrder.getPayment());
                                    notificationMap.put(HongBaoV2.TYPE_ERJI,
                                            new HongBaoOrder(tempCommonOrder, tempHongBao));
                                } else {
                                    // 增加付款金额与资金
                                    HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_ERJI);
                                    tempHongBaoOrder.getCommonOrder().setPayment(tempHongBaoOrder.getCommonOrder()
                                            .getPayment().add(commonOrder.getPayment()));
                                    tempHongBaoOrder.getHongBaoV2().setMoney(
                                            tempHongBaoOrder.getHongBaoV2().getMoney().add(secondHongbao.getMoney()));
                                    notificationMap.put(HongBaoV2.TYPE_ERJI, tempHongBaoOrder);
                                }
                            }
                        }
                    }
@@ -547,7 +556,8 @@
                hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS||commonOrder.getState() == CommonOrder.STATE_WQ) {
            } else if (commonOrder.getState() == CommonOrder.STATE_JS
                    || commonOrder.getState() == CommonOrder.STATE_WQ) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -595,7 +605,8 @@
                    }
                    // 以实际收入为准计算预估收益
                    if (CommonOrder.STATE_JS == commonOrder.getState()||CommonOrder.STATE_WQ == commonOrder.getState()) {
                    if (CommonOrder.STATE_JS == commonOrder.getState()
                            || CommonOrder.STATE_WQ == commonOrder.getState()) {
                        childUpdate.setMoney(
                                MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
                        if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
@@ -649,7 +660,7 @@
    @Transactional
    private void saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap)
            throws HongBaoException {
            throws HongBaoException, UserAccountException {
        if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
            BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
            // 查询是否有免单计划
@@ -695,7 +706,8 @@
                hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS||CommonOrder.STATE_WQ == commonOrder.getState()) {
            } else if (commonOrder.getState() == CommonOrder.STATE_JS
                    || CommonOrder.STATE_WQ == commonOrder.getState()) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
@@ -715,6 +727,8 @@
                hongBao.setMoney(mianDanMoney);
            UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
            if (user == null)
                throw new UserAccountException(1001, "用户不存在/被封禁");
            hongBao.setUrank(user.getRank());
            hongBao.setOrderType(commonOrder.getSourceType());
            hongBaoV2Mapper.insertSelective(hongBao);
@@ -902,7 +916,8 @@
                hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), shareRate.divide(new BigDecimal(100))));
            } else if (commonOrder.getState() == CommonOrder.STATE_JS||commonOrder.getState() == CommonOrder.STATE_WQ) {
            } else if (commonOrder.getState() == CommonOrder.STATE_JS
                    || commonOrder.getState() == CommonOrder.STATE_WQ) {
                hongBao.setState(HongBaoV2.STATE_KELINGQU);
                hongBao.setMoney(
                        MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), shareRate.divide(new BigDecimal(100))));
@@ -913,6 +928,8 @@
                        calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
            }
            UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
            if (user == null)
                throw new UserAccountException(1001, "用户不存在/被封禁");
            hongBao.setUrank(user.getRank());
            hongBao.setUserInfo(user);
            hongBao.setOrderType(commonOrder.getSourceType());
@@ -954,7 +971,8 @@
                        child.setState(HongBaoV2.STATE_BUKELINGQU);
                        child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
                                firstLevelRate.divide(new BigDecimal(100))));
                    } else if (commonOrder.getState() == CommonOrder.STATE_JS||commonOrder.getState() == CommonOrder.STATE_WQ) {
                    } else if (commonOrder.getState() == CommonOrder.STATE_JS
                            || commonOrder.getState() == CommonOrder.STATE_WQ) {
                        child.setState(HongBaoV2.STATE_KELINGQU);
                        child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
                                firstLevelRate.divide(new BigDecimal(100))));
@@ -970,7 +988,7 @@
                    child.setVersion(2);
                    child.setCreateTime(new Date());
                    child.setOrderType(commonOrder.getSourceType());
                    if (child.getMoney().compareTo(new BigDecimal(0)) > 0) {
                    if (child.getMoney() != null && child.getMoney().compareTo(new BigDecimal(0)) > 0) {
                        hongBaoV2Mapper.insertSelective(child);
                        // 添加通知
                        if (notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI) == null) {
@@ -1015,7 +1033,6 @@
                    e1.printStackTrace();
                }
            }
        } else
            throw new HongBaoException(2, "type错误");
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -58,6 +58,7 @@
import com.yeshi.fanli.exception.order.HongBaoException;
import com.yeshi.fanli.exception.order.OrderItemException;
import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.elme.ElmeHongBaoOrderMapService;
import com.yeshi.fanli.service.inter.elme.ElmeOrderService;
@@ -1213,6 +1214,8 @@
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } catch (UserAccountException e) {
        }
        if (resultCode == 1) {// 只发送新增消息
            OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD,
fanli/src/main/java/com/yeshi/fanli/service/inter/order/HongBaoV2Service.java
@@ -8,6 +8,7 @@
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.exception.order.HongBaoException;
import com.yeshi.fanli.exception.user.UserAccountException;
public interface HongBaoV2Service {
@@ -33,7 +34,7 @@
     * @return 0-未添加也未更新 1-只添加 2-只更新 12-有添加也有更新
     * @throws HongBaoException
     */
    public int addHongBao(List<CommonOrder> commonOrder, int type) throws HongBaoException;
    public int addHongBao(List<CommonOrder> commonOrder, int type) throws HongBaoException,UserAccountException ;
    /**
     * 奖金列表(1.4.9之前的版本)