yujian
2020-06-12 4d21b2ef5525c7b5ffdea77dc0de955958af9d9a
云发单
7个文件已修改
98 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/cloud/UserCloudGoods.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/user/cloud/UserCloudMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserCloudMessageListener.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java
@@ -569,7 +569,11 @@
                        commonGoods.setState(2);
                    }
                }
                if (state != null && state == UserCloudGoods.STATE_INVALID) {
                    commonGoods.setState(1);
                }
                GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO);
                detailVO.setId(commonGoods.getId());
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java
@@ -332,8 +332,8 @@
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("dynamicType").is(1));
        list.add(Criteria.where("state").is(1));
        list.add(Criteria.where("startTime").gt(new Date()));
        list.add(Criteria.where("startTime").lte(date));
        list.add(Criteria.where("startTime").gt(date));
        list.add(Criteria.where("startTime").lte(new Date()));
        list.add(new Criteria().orOperator(Criteria.where("type").is("single"),
                    new Criteria().andOperator(Criteria.where("type").is("activity"))));
        
@@ -344,7 +344,7 @@
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        query.with(new Sort(Sort.Direction.ASC,"startTime"));
        query.with(new Sort(Sort.Direction.DESC,"startTime"));
        
        return mongoTemplate.find(query, GoodsEvaluate.class);
    }
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/cloud/UserCloudGoods.java
@@ -19,6 +19,7 @@
    public static int STATE_NORMAL = 0;// 初始
    public static int STATE_SHARED = 1;// 1已分享
    public static int STATE_INVALID = 2;// 2已失效
    
    @Expose
    @Column(name = "ug_id")
fanli/src/main/java/com/yeshi/fanli/mapping/user/cloud/UserCloudMapper.xml
@@ -100,7 +100,7 @@
  <select id="listValidUid" resultType="Long">
    SELECT * FROM (SELECT DISTINCT d.`uc_uid` FROM yeshi_ec_user_cloud d
    WHERE d.`uc_end_time` > NOW() AND d.uc_wx_id IS NOT NULL)A
    LIMIT #{start},{count}
    LIMIT #{start},#{count}
  </select>
  
  <select id="query" resultMap="BaseResultMap">
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java
@@ -5,6 +5,7 @@
import javax.annotation.Resource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.aliyun.openservices.ons.api.Message;
@@ -178,6 +179,7 @@
        return result;
    }
    @Async
    @Override
    public void sendGoodsMQMsg(Long uid) {
        if (Constant.IS_TEST) {
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -511,7 +511,7 @@
        sendRecord.setWxId(wxId);
        sendRecord.setRobotId(robotId);
        sendRecord.setSendTime(new Date());
        sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_STORE);
        sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_EVALUATE);
        UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
        String pid = result.getId();
        
@@ -605,7 +605,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException{
        sendCircleByGoods(uid, goodsId, goodsType, null, sellerId);
        sendCircleByGoods(uid, goodsId, goodsType, null, sellerId,  UserCloudSendRecord.SEND_WAY_MANUAL);
    }
    @Override
@@ -632,13 +632,14 @@
        
        try {
            // 发送商品
            sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId());
            sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId(), UserCloudSendRecord.SEND_WAY_AUTO);
        } catch (UserCloudException e) {
            LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 库id:"+  id +  "]原因:"+ e.getMsg());
        }
    }
    private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, Long sellerId) throws UserCloudException {
    private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId,
            Long sellerId, int way) throws UserCloudException {
        // 验证是否授权
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        if (user == null)
@@ -687,7 +688,7 @@
                custom = cloudManage.getCustom();
        }
        if (!custom) {
            throw new UserCloudException(0, "成功加入云发单库");
            return;
        }
                
        Integer robotId = userCloud.getRobotId();
@@ -742,27 +743,43 @@
        }
        UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
        
        if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
        } else if (goodsType == Constant.SOURCE_TYPE_JD) {
            sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
        } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
            sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
        } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
            sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
        } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
            sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId());
        try {
            if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
                sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
            } else if (goodsType == Constant.SOURCE_TYPE_JD) {
                sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
            } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
                sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
            } else if (goodsType == Constant.SOURCE_TYPE_VIP) {
                sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
            } else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
                sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId());
            }
            // 更新发单记录
            if (storeId != null) {
                UserCloudGoods record = new UserCloudGoods();
                record.setId(storeId);
                record.setState(UserCloudGoods.STATE_SHARED);
                record.setSendTime(new Date());
                record.setUpdateTime(new Date());
                userCloudGoodsService.updateByPrimaryKeySelective(record);
            }
        } catch (UserCloudException e) {
            LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 库id:"+  storeId +  "]原因:"+ e.getMsg());
            // 更新发单记录
            if (storeId != null) {
                UserCloudGoods record = new UserCloudGoods();
                record.setId(storeId);
                record.setState(UserCloudGoods.STATE_INVALID);
                record.setSendTime(new Date());
                record.setUpdateTime(new Date());
                userCloudGoodsService.updateByPrimaryKeySelective(record);
            }
        }
        
        // 更新发单记录
        if (storeId != null) {
            UserCloudGoods record = new UserCloudGoods();
            record.setId(storeId);
            record.setState(UserCloudGoods.STATE_SHARED);
            record.setSendTime(new Date());
            record.setUpdateTime(new Date());
            userCloudGoodsService.updateByPrimaryKeySelective(record);
        }
    }
    
    /**
@@ -1102,17 +1119,20 @@
        Date lastTime =  new Date(time);
        
        for (int i = 0; i < 1000; i ++) {
            List<Long> list = userCloudMapper.listValidUid((i-1)*1000, 1000);
            // 查询哪些用户开通
            List<Long> list = userCloudMapper.listValidUid(i*1000, 1000);
            if (list == null || list.size() == 0) {
                break;
            }
            
            for (Long uid: list) {
                try {
                    // 判断是否该 内容已发
                    UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, id);
                    if (record != null) 
                        continue;
                    
                    // 是否在一个小时内已发送过
                    UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime);
                    if (last != null)
                        continue;
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserCloudMessageListener.java
@@ -41,23 +41,18 @@
        String tag = message.getTag();
        if (tag == null)
            tag = "";
        if (java.lang.System.currentTimeMillis() <= Constant.NEW_ORDER_FANLI_RULE_TIME) {
            return Action.CommitMessage;
        }
        // 邀请相关
        if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(UserTopicTagEnum.userCloud.name())) {// 用户等级发生变化
            if (tag.equalsIgnoreCase(UserTopicTagEnum.userCloud.name())) {
                UserCloudMQMsg msg = new Gson().fromJson(new String(message.getBody()),UserCloudMQMsg.class);
                if (msg.getType() == UserCloudMQMsg.TYPE_EVALUATE) {
                    LogHelper.cloudInfo("发圈中信息 -" + msg.getId()  );
                    userCloudService.autoSendByDynamic(msg.getUid(), msg.getId());
                } else {
                    LogHelper.cloudInfo("选品库信息 -" + msg.getId()  );
                    userCloudService.autoSendCustomGoods(msg.getUid(), Long.parseLong(msg.getId()));
                }
            }     
        }
        return Action.CommitMessage;
    }
}