yujian
2020-06-23 310a187c241a30f8bc237bad9af15afb18e68290
深夜大福利:先抢券,0点准时下单-22点发圈
10个文件已修改
139 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsEvaluate.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/UserCloudJob.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/cloud/UserCloudService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/TaoBaoGoodsFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java
@@ -17,6 +17,7 @@
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@Repository
public class GoodsEvaluateDao {
@@ -400,6 +401,7 @@
        list.add(Criteria.where("state").is(1));
        list.add(Criteria.where("goods.goodsId").is(goodsId));
        list.add(Criteria.where("goods.goodsType").is(goodsType));
        // 限制时间内
        list.add(Criteria.where("startTime").gte(limitTime));
        
@@ -413,4 +415,31 @@
        return mongoTemplate.find(query, GoodsEvaluate.class);
    }
     
    public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) {
        // 今日22点发圈 :0点下单
        Date now = new Date();
        Date startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(now) + " 22:00");
        Query query = new Query();
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("zeroPoint").is(1));
        list.add(Criteria.where("dynamicType").is(1));
        list.add(Criteria.where("state").is(1));
        list.add(Criteria.where("startTime").is(startTime));
        list.add(new Criteria().orOperator(Criteria.where("type").is("single"),
                new Criteria().andOperator(Criteria.where("type").is("activity"))));
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        query.skip(start).limit(count);
        return mongoTemplate.find(query, GoodsEvaluate.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsEvaluate.java
@@ -45,8 +45,6 @@
        }
    }
    @Id
    @Expose
    @Field("_id")
@@ -77,7 +75,6 @@
    @Field("imgList")
    private List<ImgInfo> imgList =  new ArrayList<ImgInfo>(); // 图片信息
    @Field("shareNumReal")
    private Integer shareNumReal; // 分享次数真实
@@ -92,7 +89,6 @@
    @Expose
    @Field("publishTime")
    private Date publishTime; // 发布时间
    @Field("state")
    private Integer state; // 状态
@@ -120,23 +116,22 @@
    @Field("dynamicType")
    private Integer dynamicType; // 1发圈 2素材
    
    @Field("zeroPoint")
    private Integer zeroPoint; // 是否0点活动-10点进行发圈     1-是
    @Expose
    @Field("jumpLink")
    private String jumpLink;
    
    // 是否云发单
    @Expose
    private boolean cloud;
    
    private String startTimeChar;
    private String endTimeChar;
    
    // 备注
    private String remarks;
    
    public String getId() {
        return id;
@@ -330,4 +325,12 @@
        this.cloud = cloud;
    }
    
    public Integer getZeroPoint() {
        return zeroPoint;
    }
    public void setZeroPoint(Integer zeroPoint) {
        this.zeroPoint = zeroPoint;
    }
}
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java
@@ -28,7 +28,6 @@
import com.yeshi.fanli.entity.dynamic.WXMPDynamicInfo;
import com.yeshi.fanli.entity.goods.jd.NYouHuiGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.entity.taobao.haodanku.HDKGoodsDetail;
import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
@@ -438,9 +437,11 @@
                        List<ActivityRuleUser> ruleList = activityUserService.listByRuleCode(ActivityRuleUser.RULE_HAOHUO, 1, 20);
                        ActivityUser user = ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser();
                        
                        goodsEvaluateService.addGoodsEvaluate2(TaoBaoGoodsFactory.create(hdkGoods), pics, user, showtitle, null);
                        int addProcess = goodsEvaluateService.addGoodsEvaluate(TaoBaoGoodsFactory.create(hdkGoods), pics, user, showtitle);
                        if (addProcess == 0) {
                        addResult = true;
                        break;
                        }
                    } catch (GoodsEvaluateException e) {
                        e.printStackTrace();
                    } catch (Exception e) {
@@ -490,9 +491,11 @@
                            user = ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser();
                        }
                        
                        goodsEvaluateService.addGoodsEvaluate2(TaoBaoUtil.convert(tkGoods), null, user, showtitle, null);
                        int addProcess = goodsEvaluateService.addGoodsEvaluate(TaoBaoUtil.convert(tkGoods), null, user, showtitle);
                        if (addProcess == 0) {
                        addResult = true;
                        break;
                        }
                    } catch (GoodsEvaluateException e) {
                        e.printStackTrace();
                    } catch (Exception e) {
@@ -505,9 +508,9 @@
                }
                try {
                    result = DaTaoKeApiUtil.listAll(result.getPageId());
                    result = DaTaoKeApiUtil.getFriendsFircleList(result.getPageId(), 100);
                } catch (Exception e) {
                    result = DaTaoKeApiUtil.listAll(result.getPageId());
                    result = DaTaoKeApiUtil.getFriendsFircleList(result.getPageId(), 100);
                }
                try {
                    Thread.sleep(10);
fanli/src/main/java/com/yeshi/fanli/job/UserCloudJob.java
@@ -60,7 +60,7 @@
     * 定时检测是否存在新的发圈
     */
    @Scheduled(cron = "0 0/20 * * * ? ")
    public void dailyCount() {
    public void fixedTimeSend() {
        if (!Constant.IS_TASK) {
            return;
        }
@@ -77,7 +77,25 @@
        // 单品商品
        List<GoodsEvaluate> listGoods = goodsEvaluateService.queryValidSortASC(1, 5, EvaluateEnum.single, true);
        // 执行发单
        userCloudService.fixedTimeSend(listActivity, listGoods);
        userCloudService.fixedTimeSend(listActivity, listGoods, true);
    }
    /**
     * 每日22点进行深夜发圈
     */
    @Scheduled(cron = "0 0 22 * * ? ")
    public void zeroPoint() {
        if (!Constant.IS_TASK) {
            return;
        }
        List<GoodsEvaluate> list = goodsEvaluateService.queryValidZeroPoint(1, 50);
        if (list == null || list.size() == 0) {
            return;
        }
        // 执行发单
        userCloudService.fixedTimeSend(null, list, false);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -45,7 +45,6 @@
import com.yeshi.fanli.entity.dynamic.SimpleGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
@@ -69,6 +68,7 @@
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
@@ -1435,6 +1435,13 @@
    
    
    @Override
    public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) {
        return goodsEvaluateDao.queryValidZeroPoint(start, count);
    }
    @Override
    public void saveComment(String pid, CommentInfo commentInfo) throws GoodsEvaluateException {
        GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid);
        if (goodsEvaluate == null) {
@@ -2069,7 +2076,7 @@
    
    @Override
    public void addGoodsEvaluate2(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title, String comment) throws GoodsEvaluateException {
    public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title) throws GoodsEvaluateException {
        if (goodsBrief == null || user == null || StringUtil.isNullOrEmpty(title)) {
            throw new GoodsEvaluateException(1, "相关参数不能为空");
        }
@@ -2170,18 +2177,31 @@
            }
        }
        int result = 0;
        int zeroPoint = 0;
        // ★深夜大福利:先抢券,0点准时下单★
        // 含这种文本的定于每晚10点在动态-发圈 集中发,每晚10点在群发单中只发一条。
        Date startTime = new Date();
        if (!StringUtil.isNullOrEmpty(title) && title.contains("0点准时下单")) {
            result = 1;
            zeroPoint = 1;
            startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(startTime) + " 22:00");
        }
        GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
        goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
        goodsEvaluate.setUser(user);
        goodsEvaluate.setTitle(getDescNew(title));
        goodsEvaluate.setState(1);
        goodsEvaluate.setZeroPoint(zeroPoint);
        goodsEvaluate.setDynamicType(1);
        goodsEvaluate.setType(EvaluateEnum.single);
        goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000);
        goodsEvaluate.setShareNumReal(0);
        goodsEvaluate.setWeight(0.0);
        goodsEvaluate.setStartTime(new Date());
        goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date()));
        goodsEvaluate.setStartTime(startTime);
        goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, startTime));
        goodsEvaluate.setPublishTime(new Date());
        goodsEvaluate.setCreateTime(new Date());
        goodsEvaluate.setUpdateTime(new Date());
@@ -2190,6 +2210,10 @@
        goodsEvaluate.setImgList(imgList);
        goodsEvaluate.setComments(commentsNew);
        goodsEvaluateDao.save(goodsEvaluate);
        return result;
    }
    
    @Override
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -1147,7 +1147,7 @@
    }
    @Override
    public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods) {
    public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods, boolean timeLimit) {
        if (listGoods == null && listActivity == null)
            return;
        // 一个小时之前
@@ -1166,10 +1166,14 @@
                    if (cloudManage == null || cloudManage.getOfficial() == null || !cloudManage.getOfficial()) {
                        continue;
                    }
                    // 是否在一个小时内已发送过
                    // 时间间隔:是否在一个小时内已发送过
                    if (timeLimit) {
                    UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime);
                    if (last != null)
                        continue;
                    }
                    String evaluateId = null;
                    // 活动
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java
@@ -223,7 +223,9 @@
    public boolean addByDaTaoKeGoods(DaTaoKeDetailV2 daTaoKe);
    public void addGoodsEvaluate2(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title, String comment)
    public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title)
            throws GoodsEvaluateException;
    public List<GoodsEvaluate> queryValidZeroPoint(int start, int count);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/cloud/UserCloudService.java
@@ -91,7 +91,7 @@
     * 定时发送云发单
     * @param id
     */
    public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods);
    public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods, boolean timeLimit);
    public List<UserCloud> query(int page, int count, String key, Integer state);
fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java
@@ -65,6 +65,12 @@
        String date = sdf.format(new Date(time));
        return date;
    }
    public static String getGernalTime(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(date);
    }
    public static String getGernalTime(long time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/TaoBaoGoodsFactory.java
@@ -58,9 +58,9 @@
        // 店铺
        goods.setShopTitle(hdkGoods.getShopname());
        if ("B".equalsIgnoreCase(hdkGoods.getShoptype()))
            goods.setUserType(0);
            goods.setUserType(1); // 天猫
        else
            goods.setUserType(1);
            goods.setUserType(0); // 淘宝
        
        return goods;
    }