admin
2019-08-28 0fdccf0fa23d0f039f563de9b31c974342d00a48
返利到账后获取金币的机制建立
1个文件已添加
5个文件已修改
177 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoModifyRecordServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/cmq/HongBaoRecieveCMQManager.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralGetServiceImpl.java
@@ -1,7 +1,6 @@
package com.yeshi.fanli.service.impl.integral;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -14,9 +13,9 @@
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.integral.IntegralTask;
import com.yeshi.fanli.entity.integral.IntegralTaskRank;
import com.yeshi.fanli.entity.integral.IntegralTask.FrequencyEnum;
import com.yeshi.fanli.entity.integral.IntegralTask.TaskUniqueKeyEnum;
import com.yeshi.fanli.entity.integral.IntegralTaskRank;
import com.yeshi.fanli.entity.integral.IntegralTaskRecord;
import com.yeshi.fanli.exception.integral.IntegralGetException;
import com.yeshi.fanli.exception.integral.IntegralTaskRecordException;
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -66,6 +66,7 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
@@ -404,6 +405,11 @@
            // 添加资金明细与红包的映射关系
            for (HongBaoV2 v2 : userHongBao.get(uid)) {
                accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId());
                try {
                    HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(v2.getId());
                } catch (Exception e) {
                    LogHelper.errorDetailInfo(e);
                }
            }
            // 站内信+推送
@@ -567,6 +573,7 @@
    @Override
    @Transactional
    public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException {
        List<Long> recieveHongBaoIds = new ArrayList<>();
        /**
         * 处理邀请赚订单
         */
@@ -578,9 +585,9 @@
        List<HongBaoV2> hongBaoList =new ArrayList<>();
        //1000条数据为1页
        int page=(int)    (count%1000==0?count/1000:count/1000+1);
        for(int i=0;i<page;i++)
        {
            List<HongBaoV2> tempHongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, i*1000,1000);
        for (int i = 0; i < page; i++) {
            List<HongBaoV2> tempHongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, i * 1000,
                    1000);
            if(tempHongBaoList!=null&&tempHongBaoList.size()>0)
                hongBaoList.addAll(tempHongBaoList);
        }
@@ -731,7 +738,8 @@
            for (String orderId : drawBackOrders)
                taoBaoWeiQuanDrawBackService.doWeiQuanInvite(orderId);
        }
        if (hbIdList.size() > 0)
            recieveHongBaoIds.addAll(hbIdList);
        hbIdList.clear();
        drawBackOrders.clear();
@@ -807,6 +815,8 @@
                // 添加到红包返利记录集合
                accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
                if (hbIdList.size() > 0)
                    recieveHongBaoIds.addAll(hbIdList);
            } catch (UserMoneyDetailException e) {
                try {
                    LogHelper.errorDetailInfo(e);
@@ -823,6 +833,16 @@
                taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId);
        }
        // 所有的返利到账红包ID
        for (Long hongBaoId : recieveHongBaoIds) {
            try {
                HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
            } catch (Exception e) {
                LogHelper.errorDetailInfo(e);
            }
        }
    }
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoModifyRecordServiceImpl.java
@@ -21,6 +21,7 @@
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@Service
@@ -116,6 +117,10 @@
            addModifyRecord(uid, ModifyTypeEnum.nickName, user.getNickName() + "");
        }
        if (!Constant.systemCommonConfig.getDefaultPortrait().equalsIgnoreCase(user.getPortrait())) {
            addModifyRecord(uid, ModifyTypeEnum.portrait, user.getPortrait());
        }
        UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
        if (userInfoExtra != null) {
            if (userInfoExtra.getSex() != null)
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -29,6 +29,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.TaoBaoWeiQuanException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.jd.JDOrderService;
import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
@@ -42,6 +43,7 @@
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager;
import com.yeshi.fanli.util.cmq.JDOrderCMQManager;
import com.yeshi.fanli.util.cmq.PDDOrderCMQManager;
import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager;
@@ -101,6 +103,9 @@
    @Resource
    private PDDOrderService pddOrderService;
    @Resource
    private HongBaoV2Service hongBaoV2Service;
    private static boolean isInited = false;
@@ -686,4 +691,51 @@
    }
    /**
     * 红包到账后的金币获取
     */
    public void doHongBaoRecieveIntegralGetJob() {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    Map<String, Long> map = HongBaoRecieveCMQManager.getInstance()
                            .consumeQueueMsg(HongBaoRecieveCMQManager.QUEUE_INTEGRAL, 16);
                    if (map != null) {
                        Iterator<String> its = map.keySet().iterator();
                        while (its.hasNext()) {
                            String key = its.next();
                            Long hongBaoId = map.get(key);
                            try {
                                HongBaoV2 hongBaoV2 = hongBaoV2Service.selectByPrimaryKey(hongBaoId);
                                if (hongBaoV2.getType() == HongBaoV2.TYPE_ZIGOU) {// 自购
                                    // TODO 添加加金币事件
                                } else if (hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_GOODS) {// 分享赚
                                    // TODO 添加加金币事件
                                } else if (hongBaoV2.getType() == HongBaoV2.TYPE_YIJI
                                        || hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_YIJI) {// 一级邀请赚
                                    // TODO 添加加金币事件
                                } else if (hongBaoV2.getType() == HongBaoV2.TYPE_ERJI
                                        || hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_ERJI) {// 二级邀请赚
                                    // TODO 添加加金币事件
                                }
                                HongBaoRecieveCMQManager.getInstance()
                                        .deleteQueueMsg(HongBaoRecieveCMQManager.QUEUE_INTEGRAL, key);
                            } catch (Exception e) {
                                try {
                                    LogHelper.errorDetailInfo(e);
                                } catch (Exception e1) {
                                    e1.printStackTrace();
                                }
                            } finally {
                            }
                        }
                    }
                }
            }
        });
    }
}
fanli/src/main/java/com/yeshi/fanli/util/cmq/HongBaoRecieveCMQManager.java
New file
@@ -0,0 +1,88 @@
package com.yeshi.fanli.util.cmq;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.yeshi.utils.CMQUtil;
import com.qcloud.cmq.Message;
import com.yeshi.fanli.log.LogHelper;
public class HongBaoRecieveCMQManager {
    private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25";
    private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo";
    private static HongBaoRecieveCMQManager userMoneyChangeCMQManager;
    private static CMQUtil cmqUtil;
    private final static String TOPIC_NAME = "topic_hongbao";
    public static String QUEUE_INTEGRAL = TOPIC_NAME + "_" + "integral";
    public static String SUBSCRIBE_INTEGRAL = "integral";
    static {
        cmqUtil = CMQUtil.getInstance(secretId, secretKey);
        // 创建主题,添加订阅
        cmqUtil.createTopic(TOPIC_NAME);
        // 用户券订阅
        String[] subscripts = new String[] { SUBSCRIBE_INTEGRAL };
        String[] queues = new String[] { QUEUE_INTEGRAL };
        for (int i = 0; i < subscripts.length; i++) {
            String queueName = queues[i];
            try {
                cmqUtil.createQueue(queueName);
            } catch (Exception e) {
            }
            try {
                cmqUtil.subscribeTopic(TOPIC_NAME, subscripts[i], queueName);
            } catch (Exception e) {
            }
        }
    }
    public static HongBaoRecieveCMQManager getInstance() {
        if (userMoneyChangeCMQManager == null)
            userMoneyChangeCMQManager = new HongBaoRecieveCMQManager();
        return userMoneyChangeCMQManager;
    }
    /**
     * 发布
     *
     * @param hongBaoId
     */
    public void addHongBaoRecieveMsg(Long hongBaoId) {
        if (hongBaoId == null)
            return;
        cmqUtil.publishTopicMessage(TOPIC_NAME, hongBaoId + "");
        LogHelper.test("红包消息投递成功");
    }
    /**
     * 消费队列消息
     *
     * @param queueName
     * @param count
     * @return
     */
    public Map<String, Long> consumeQueueMsg(String queueName, int count) {
        List<Message> list = cmqUtil.recieveMsg(count, queueName);
        Map<String, Long> map = new HashMap<>();
        if (list != null)
            for (Message msg : list) {
                String result = msg.msgBody;
                map.put(msg.receiptHandle, Long.parseLong(result));
            }
        return map;
    }
    public void deleteQueueMsg(String queueName, String receiptHandle) {
        cmqUtil.deleteMsg(queueName, receiptHandle);
    }
}
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java
@@ -336,6 +336,7 @@
        map.put("page", page + "");
        map.put("page_size", pageSize + "");
        String result = baseRequest(map);
        System.out.println(result);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject root = json.optJSONObject("order_list_get_response");
        if (root != null) {