admin
2020-03-23 e4ee46557cffc21be597d017a0d16f8e310f6077
团队奖励到账
10个文件已修改
258 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/OrderTeamRewardMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateOrderJob.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/OrderTeamRewardMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderTeamRewardService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/CMQManager.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/test/java/org/fanli/MyBatisProduce.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/OrderTeamRewardMapper.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.dao.mybatis.order;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@@ -96,4 +97,28 @@
     * @throws
     */
    long countCanSettle(@Param("uid") Long uid);
    /**
     * 获取某个时间点可以结算的用户ID列表
     * @Title: listCanSettleUid
     * @Description:
     * @param time
     * @param start
     * @param count
     * @return
     * List<Long> 返回类型
     * @throws
     */
    List<Long> listCanSettleUid( @Param("time") Date time, @Param("start") long start, @Param("count") int count);
    /**
     * 获取某个时间点可以结算的用户数量
     * @Title: countCanSettleUid
     * @Description:
     * @param time
     * @return
     * Long 返回类型
     * @throws
     */
    Long countCanSettleUid(Date time);
}
fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateOrderJob.java
@@ -28,6 +28,7 @@
import com.yeshi.fanli.service.inter.common.DataMonitorService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
@@ -80,6 +81,9 @@
    @Resource
    private CommonOrderService commonOrderService;
    @Resource
    private OrderMoneySettleService orderMoneySettleService;
    /**
     * 新版获取普通订单
@@ -381,6 +385,18 @@
        return ReturnT.SUCCESS;
    }
    // 团队奖励到账
    @XxlJob("fanliOrderTeamRewardHandler")
    public ReturnT<String> fanliOrderTeamRewardHandler(String param) throws Exception {
        if (StringUtil.isNullOrEmpty(param))
            orderProcessService.fanliOrderTeamReward();
        else {
            orderProcessService.fanliOrderTeamReward(Long.parseLong(param));
        }
        return ReturnT.SUCCESS;
    }
    // 维权订单处理-处理最近60天的
    // 30分钟一次
    @Scheduled(cron = "0 0/30 * * * ? ")
fanli/src/main/java/com/yeshi/fanli/mapping/order/OrderTeamRewardMapper.xml
@@ -141,9 +141,11 @@
        otr_subsidy_id = #{0}
    </select>
    <select id="listCanSettleByUid" resultMap="BaseResultMap">SELECT * FROM yeshi_ec_order_team_reward WHERE
    <select id="listCanSettleByUid" resultMap="BaseResultMap">SELECT * FROM
        yeshi_ec_order_team_reward WHERE
        otr_uid
        =#{uid} AND otr_state=1 AND NOW()>otr_pre_get_time
        =#{uid} AND otr_state=1 AND
        NOW()>otr_pre_get_time
        limit
        #{start},#{count}
    </select>
@@ -155,5 +157,23 @@
    </select>
    <select id="listCanSettleUid" resultType="java.lang.Long">
        SELECT t.`otr_uid` FROM
        yeshi_ec_order_team_reward t WHERE t.`otr_state`=1
        AND #{time} >
        t.`otr_pre_get_time` GROUP BY t.`otr_uid` LIMIT #{start},#{count}
    </select>
    <select id="countCanSettleUid" resultType="java.lang.Long"
        parameterType="java.util.Date">
        SELECT COUNT(*) FROM
        (
        SELECT t.otr_uid FROM
        yeshi_ec_order_team_reward t WHERE t.otr_state=1 AND
        #{0}>t.otr_pre_get_time GROUP BY t.otr_uid) a
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -73,6 +73,7 @@
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderTeamRewardService;
import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
@@ -165,6 +166,9 @@
    @Resource
    private HongBaoV2AddManager hongBaoV2AddManager;
    @Resource
    private OrderTeamRewardService orderTeamRewardService;
    /**
     * 是否是分享订单
@@ -1339,4 +1343,28 @@
        return false;
    }
    @Override
    public void fanliOrderTeamReward() {
        Date time = new Date();
        long count = orderTeamRewardService.countCanSettleUid(time);
        int pageSize = 500;
        int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
        List<Long> uidList = new ArrayList<>();
        for (int i = 0; i < page; i++) {
            List<Long> list = orderTeamRewardService.listCanSettleUid(time, i + 1, pageSize);
            if (list != null && list.size() > 0)
                uidList.addAll(list);
        }
        // 添加到队列
        if (uidList != null)
            for (Long uid : uidList)
                if (!Constant.IS_TEST)
                    CMQManager.getInstance().addFanLiOrderTeamRewardMsg(uid);
    }
    @Override
    public void fanliOrderTeamReward(Long uid) throws OrderMoneySettleException {
        orderMoneySettleService.orderTeamRewardSettle(uid);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java
@@ -61,7 +61,8 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void addOrUpdate(InviteOrderSubsidy subsidy, BigDecimal money, Long uid,int level) throws OrderTeamRewardException {
    public void addOrUpdate(InviteOrderSubsidy subsidy, BigDecimal money, Long uid, int level)
            throws OrderTeamRewardException {
        if (subsidy == null || subsidy.getId() == null)
            throw new OrderTeamRewardException(1, "补贴为空");
        if (money == null)
@@ -141,6 +142,7 @@
        OrderTeamReward orderSubsidy = new OrderTeamReward(id);
        orderSubsidy.setMoney(money);
        orderSubsidy.setState(OrderTeamReward.STATE_RECIEVED);
        orderSubsidy.setGetTime(new Date());
        orderSubsidy.setUpdateTime(new Date());
        orderTeamRewardMapper.updateByPrimaryKeySelective(orderSubsidy);
    }
@@ -153,12 +155,22 @@
    @Override
    public List<OrderTeamReward> listCanSettle(Long uid, int page, int pageSize) {
        return orderTeamRewardMapper.listCanSettleByUid(uid, (page-1)*pageSize, pageSize);
        return orderTeamRewardMapper.listCanSettleByUid(uid, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countCanSettle(Long uid) {
        return orderTeamRewardMapper.countCanSettle(uid);
    }
    @Override
    public List<Long> listCanSettleUid(Date time, int page, int count) {
        return orderTeamRewardMapper.listCanSettleUid(time, (page - 1) * count, count);
    }
    @Override
    public long countCanSettleUid(Date time) {
        return orderTeamRewardMapper.countCanSettleUid(time);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java
@@ -9,6 +9,7 @@
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.money.OrderMoneySettleException;
import com.yeshi.fanli.exception.order.HongBaoException;
import com.yeshi.fanli.exception.order.OrderItemException;
import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
@@ -75,6 +76,25 @@
    public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException;
    /**
     * 团队奖励到账
     * @Title: fanliOrderTeamReward
     * @Description:
     * void 返回类型
     * @throws
     */
    public void fanliOrderTeamReward();
    /**
     * 团队奖励到账(按用户)
     * @Title: fanliOrderTeamReward
     * @Description:
     * @param uid
     * void 返回类型
     * @throws
     */
    public void fanliOrderTeamReward(Long uid) throws OrderMoneySettleException;
    /**
     * 订单维权
     * 
     * @param orderList
fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderTeamRewardService.java
@@ -106,4 +106,28 @@
    public long countCanSettle(Long uid);
    
    
    /**
     * 能够结算的用户ID列表
     * @Title: listCanSettleUid
     * @Description:
     * @param page
     * @param count
     * @return
     * List<Long> 返回类型
     * @throws
     */
    public List<Long> listCanSettleUid(Date time, int page,int count);
    /**
     * 能够结算的用户ID数量
     * @Title: countCanSettleUid
     * @Description:
     * @return
     * long 返回类型
     * @throws
     */
    public long countCanSettleUid(Date time);
}
fanli/src/main/java/com/yeshi/fanli/util/CMQManager.java
@@ -24,7 +24,7 @@
    private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo";
    private static CMQManager cmqManager;
    private static CMQUtil cmqUtil;
    // TODO 订单处理队列
    // 订单处理队列
    public static String QUEUENAME_ORDER = "fanli-orders";
    // 刚刚产生的订单处理队列
@@ -32,18 +32,22 @@
    // 提现结果处理队列
    public static String EXTRACT_RESULT = "extract-result";
    // TODO IOS推送队列
    //  IOS推送队列
    public static String PUSH_IOS = "push-ios";
    // TODO 返利队列
    //  返利队列
    public static String FANLI_ORDER = "fanli-order";
    // TODO 返利队列
    //  返利队列
    public static String FANLI_ORDER_NEW = "fanli-order-new";
    // TODO 提成订单
    //  提成订单
    public static String FANLI_TICHENG_ORDER = "fanli-ticheng-order";
    // TODO 维权订单
    //  团队奖励到账
    public static String FANLI_ORDER_TEAM_REWARD="fanli-order-team-reward";
    //  维权订单
    public static String ORDER_WEIQUAN = "weiquan-order";
    public static String GOODS_UPDATE = "goods_update_queue";
@@ -60,6 +64,9 @@
            FANLI_ORDER = "test-" + FANLI_ORDER;
            FANLI_ORDER_NEW = "test-" + FANLI_ORDER_NEW;
            FANLI_TICHENG_ORDER = "test-" + FANLI_TICHENG_ORDER;
            FANLI_ORDER_TEAM_REWARD = "test-" + FANLI_ORDER_TEAM_REWARD;
            ORDER_WEIQUAN = "test-" + ORDER_WEIQUAN;
            IMPORTANT_GOODS_UPDATE = "test-" + IMPORTANT_GOODS_UPDATE;
        }
@@ -71,6 +78,8 @@
        FANLI_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
        FANLI_ORDER_NEW += "-" + Constant.systemCommonConfig.getProjectName();
        FANLI_TICHENG_ORDER += "-" + Constant.systemCommonConfig.getProjectName();
        FANLI_ORDER_TEAM_REWARD += "-" + Constant.systemCommonConfig.getProjectName();
        ORDER_WEIQUAN += "-" + Constant.systemCommonConfig.getProjectName();
        IMPORTANT_GOODS_UPDATE += "-" + Constant.systemCommonConfig.getProjectName();
@@ -83,6 +92,7 @@
        cmqUtil.createQueue(FANLI_ORDER);
        cmqUtil.createQueue(FANLI_ORDER_NEW);
        cmqUtil.createQueue(FANLI_TICHENG_ORDER);
        cmqUtil.createQueue(FANLI_ORDER_TEAM_REWARD);
        cmqUtil.createQueue(ORDER_WEIQUAN);
        cmqUtil.createQueue(GOODS_UPDATE);
        cmqUtil.createQueue(IMPORTANT_GOODS_UPDATE);
@@ -285,6 +295,30 @@
        cmqUtil.deleteMsg(FANLI_TICHENG_ORDER, receiptHandle);
    }
    // 团队奖励
    public void addFanLiOrderTeamRewardMsg(Long uid) {
        cmqUtil.sendMsg(FANLI_ORDER_TEAM_REWARD, uid + "");
    }
    public Map<String, Long> consumeOrderTeamRewardMsg(int count) {
        List<Message> list = cmqUtil.recieveMsg(count, FANLI_ORDER_TEAM_REWARD);
        Map<String, Long> map = new HashMap<>();
        if (list != null)
            for (Message msg : list) {
                String result = msg.msgBody;
                if (!StringUtil.isNullOrEmpty(result)) {
                    map.put(msg.receiptHandle, Long.parseLong(result));
                }
            }
        return map;
    }
    public void deleteOrderTeamRewardMsg(String receiptHandle) {
        cmqUtil.deleteMsg(FANLI_ORDER_TEAM_REWARD, receiptHandle);
    }
    // 维权订单
    public void addWeiQuanOrderMsg(TaoBaoWeiQuanOrder order) {
        cmqUtil.sendMsg(ORDER_WEIQUAN, new Gson().toJson(order));
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -35,6 +35,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.money.OrderMoneySettleException;
import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.ad.DouYinClickEventService;
@@ -162,7 +163,8 @@
            doTaoBaoOrders();// 处理淘宝订单
            doTaoBaoNewOrders();// 处理淘宝订单(刚刚产生的)
            doOrderFanLiNew();// 新版返利
//            doOrderTiChengFanLi();// 处理订单提成返利
            doOrderTiChengFanLi();// 处理订单提成返利
            doOrderTeamRewardFanLi();// 团队奖励到账
            doWeiQuanOrder();// 处理维权订单
            doPushIOS();// 处理发送IOS消息
            doUserMoneyDebtJob();// 债务偿还
@@ -327,7 +329,8 @@
                                try {
                                    HongBaoV2 hongbao = map.get(handler);
                                    if (hongbao != null) {
                                        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.hongBaoFanLi, hongbao.getId() + "");
                                        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.hongBaoFanLi,
                                                hongbao.getId() + "");
                                        if (StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
                                            // 处理之后要隔2小时再次进行处理
                                            redisManager.cacheCommonString(key, "1", 60 * 60 * 2);
@@ -401,6 +404,47 @@
    }
    /**
     * 订单团队奖励到账
     */
    public void doOrderTeamRewardFanLi() {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Map<String, Long> map = CMQManager.getInstance().consumeOrderTeamRewardMsg(16);
                        if (map != null) {
                            Iterator<String> its = map.keySet().iterator();
                            while (its.hasNext()) {
                                String handler = its.next();
                                try {
                                    orderProcessService.fanliOrderTeamReward(map.get(handler));
                                    CMQManager.getInstance().deleteOrderTeamRewardMsg(handler);
                                } catch (OrderMoneySettleException e) {
                                    try {
                                        LogHelper.errorDetailInfo(e);
                                    } catch (Exception e1) {
                                        e1.printStackTrace();
                                    }
                                } catch (Exception e) {
                                    try {
                                        LogHelper.errorDetailInfo(e, map.get(handler).toString(), "");
                                    } catch (Exception e1) {
                                        e1.printStackTrace();
                                    }
                                }
                            }
                        }
                    } catch (Exception e) {
                    }
                }
            }
        });
    }
    /**
     * 处理淘宝订单维权
     */
    public void doWeiQuanOrder() {
fanli/src/test/java/org/fanli/MyBatisProduce.java
@@ -3,7 +3,8 @@
import org.junit.Test;
import org.yeshi.utils.mybatis.ColumnParseUtil;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
import com.yeshi.fanli.entity.order.OrderTeamReward;
//@Ignore
public class MyBatisProduce {
@@ -12,10 +13,10 @@
    public void test3() {
    }
//    @Test
    @Test
    public void test1() {
        ColumnParseUtil.parseColumn(CommonOrder.class,
                "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml");
        ColumnParseUtil.parseColumn(OrderTeamReward.class,
                "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/order/OrderTeamRewardMapper.xml");
    }
}