yujian
2020-06-30 9f56a3478708633de7e5f013901a4539b01b638c
订单结算时的红包
4个文件已修改
87 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackWinInviteService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/redpack/RedPackMessageListener.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/rocket/consumer.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
@@ -467,26 +467,25 @@
    @Override
    @RequestSerializableByKeyService(key = "#orderUid")
    @Transactional(rollbackFor = Exception.class)
    public void winRedPackByOrder(Long orderUid, String orderNo, Integer source, Date downTime) {
    public void winRedPackByOrder(Long orderUid, String orderNo, Integer source) {
        if (orderUid == null || StringUtil.isNullOrEmpty(orderNo)) {
            return;
        }
        // 注册时间
        UserInfoRegister register = userInfoRegisterService.selectByPrimaryKey(orderUid);
        if (register == null)
            return;
        // 注册48小时 以内 :新人
        long registerTime = register.getCreateTime().getTime();
        // 48小时限制
        if (downTime.getTime() < registerTime || downTime.getTime() > registerTime + 1000*60*60*48)
            return;
        // 验证是否未首单
        CommonOrder firstOrder = commonOrderService.getFirstOrder(orderUid);
        if (!firstOrder.getOrderNo().equals(orderNo) && firstOrder.getSourceType() != source)
            return;
        
        Date downTime = firstOrder.getThirdCreateTime();
        // 注册时间
        UserInfoRegister register = userInfoRegisterService.selectByPrimaryKey(orderUid);
        if (register == null)
            return;
        long registerTime = register.getCreateTime().getTime();
        // 注册48小时内下单限制
        if (downTime.getTime() < registerTime || downTime.getTime() > registerTime + 1000*60*60*48)
            return;
        // 是否存在上下级关系
        ThreeSale threeSale = threeSaleSerivce.getByWorkerId(orderUid);
        if (threeSale == null)
@@ -495,17 +494,17 @@
        if (bossId == null)
            return;
        
        // 该邀请是否已添加
        RedPackWinInvite threeStage = redPackWinInviteMapper.getByUidAndTeamUid(bossId, orderUid);
        if (threeStage != null)
            return;
        // 小于2.1.3版本不增加
        UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId);
        if (activeLog == null)
            return;
        if (!VersionUtil.greaterThan_2_1_3("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
                activeLog.getVersionCode()))
            return;
        // 该邀请是否已添加
        RedPackWinInvite threeStage = redPackWinInviteMapper.getByUidAndTeamUid(bossId, orderUid);
        if (threeStage != null)
            return;
        
        // 查询订单
@@ -520,8 +519,8 @@
        boolean satisfy = false;
        // 遍历是否存在符合相应商品
        for (CommonOrder commonOrder: list) {
            // 订单失效
            if(commonOrder.getState() != CommonOrder.STATE_FK && commonOrder.getState() != CommonOrder.STATE_JS)
            // 订单未结算
            if(commonOrder.getState() != CommonOrder.STATE_JS)
                continue;
                        
            // 邀请关系之后
fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackWinInviteService.java
@@ -100,7 +100,7 @@
     * @param orderNo
     * @param source
     */
    public void winRedPackByOrder(Long orderUid, String orderNo, Integer source, Date downTime);
    public void winRedPackByOrder(Long orderUid, String orderNo, Integer source);
    /**
     * 查询上月用户id
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/redpack/RedPackMessageListener.java
@@ -11,12 +11,11 @@
import com.aliyun.openservices.ons.api.Producer;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg;
import com.yeshi.fanli.dto.mq.order.body.OrderConfirmMQMsg;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.redpack.RedPackGiveRecordService;
import com.yeshi.fanli.service.inter.redpack.RedPackWinInviteService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
/**
@@ -49,48 +48,14 @@
            tag = "";
        if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())) {// 订单统
                OrderMQMsg mqMsg = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
            // 订单确认收货
            if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderConfirm.name())) {
                OrderConfirmMQMsg mqMsg = new Gson().fromJson(new String(message.getBody()), OrderConfirmMQMsg.class);
                try {// 邀请奖励
                    redPackWinInviteService.winRedPackByOrder(mqMsg.getUid(), mqMsg.getOrderId(), mqMsg.getType(), mqMsg.getPlaceTime());
                    redPackWinInviteService.winRedPackByOrder(mqMsg.getSourceUid(), mqMsg.getOrderNo(), mqMsg.getSourceType());
                } catch (Exception e) {
                    LogHelper.errorDetailInfo(e);
                }
//                // 发送48小时延时消息
//                boolean verifyOrder = redPackWinInviteService.verifyOrder(mqMsg.getUid(), mqMsg.getOrderId(), mqMsg.getType(), mqMsg.getPlaceTime());
//                if (verifyOrder) {
//                    int hour = 48;
//                    if (Constant.IS_TEST) {
//                        hour = 1;
//                    }
//                    mqMsg.setDelayHour(hour);
//                    Message msg = new Message(message.getTopic(), OrderTopicTagEnum.orderStatisticDelay.name(),
//                            new Gson().toJson(mqMsg).getBytes());
//                    if (mqMsg.getStaticticDate().getTime() + 1000 * 60 * 60L * hour > System.currentTimeMillis())// 时间是否已经过了
//                        msg.setStartDeliverTime(mqMsg.getStaticticDate().getTime() + 1000 * 60 * 60L * hour);
//                    else
//                        msg.setStartDeliverTime(System.currentTimeMillis() + 1000 * 60);
//                    producer.send(msg);
//                }
                return Action.CommitMessage;
            } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatisticDelay.name())) {// 订单统计
                OrderMQMsg mqMsg = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
                int hour = 48;
                if (Constant.IS_TEST) {
                    hour = 1;
                }
//                if (mqMsg.getDelayHour() == hour) {
//                    try {
//                        redPackWinInviteService.winFreeCoupon(mqMsg.getUid(), mqMsg.getOrderId(), mqMsg.getType(), mqMsg.getPlaceTime());
//                    } catch (Exception e) {
//                        LogHelper.errorDetailInfo(e);
//                        return Action.ReconsumeLater;
//                    }
//                }
                return Action.CommitMessage;
            }
        }
        return Action.CommitMessage;
fanli/src/main/resource/rocket/consumer.xml
@@ -355,12 +355,11 @@
          </property>
          <property name="subscriptionTable">
              <map>
                 <!-- 产生订单/延时,订单到账 -->
                 <entry value-ref="redPackMessageListener">
                    <key>
                       <bean class="com.aliyun.openservices.ons.api.bean.Subscription">
                         <property name="topic" value="TOPIC_ORDER" />
                         <property name="expression"  value="orderStatistic" />
                         <property name="expression"  value="orderConfirm" />
                       </bean>
                    </key>
                 </entry>