yj
2020-03-09 8c6123908fd6bc5a02938dd1e69750b277aa5c6a
添加领取人明细 + 口令筛选商品
5个文件已修改
277 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/GoodsEvaluateAdminController.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/RedPackDetailFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/GoodsEvaluateAdminController.java
@@ -27,6 +27,7 @@
import com.yeshi.fanli.entity.dynamic.ListComment;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
@@ -34,15 +35,22 @@
import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.manger.ClipboardAnalysisManager;
import com.yeshi.fanli.service.manger.IClipboardAnalysisResult;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.factory.CommonGoodsFactory;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.common.JumpDetailContentVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.msg.TokenVO;
import com.yeshi.fanli.vo.search.GoodsDocParseResultVO;
import net.sf.json.JSONObject;
@@ -74,6 +82,9 @@
    @Resource
    private HongBaoManageService hongBaoManageService;
    private CommonGoods commonGoods;
    /**
     * 保存信息
     * 
@@ -104,8 +115,7 @@
     * 保存信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "saveSingleGoods")
@@ -116,7 +126,8 @@
            if (request instanceof MultipartHttpServletRequest) {
                fileRequest = (MultipartHttpServletRequest) request;
            }
            String commentText = goodsEvaluateService.saveSingleGoods(pid, goodsId, goodsType, videoUrl, picNum, picUrls, fileRequest);
            String commentText = goodsEvaluateService.saveSingleGoods(pid, goodsId, goodsType, videoUrl, picNum,
                    picUrls, fileRequest);
            JSONObject object = new JSONObject();
            object.put("comment", commentText);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
@@ -132,8 +143,7 @@
     * 保存信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "saveGoodsCoupon")
@@ -174,8 +184,7 @@
     * 获取信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "getSingleGoodsinfo")
@@ -227,8 +236,7 @@
     * 获取信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "getCurrencyCoupon")
@@ -258,8 +266,7 @@
     * 获取信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "getSingleGoodsCoupon")
@@ -309,7 +316,6 @@
            LogHelper.test(e);
        }
    }
    
    /**
     * 
@@ -374,7 +380,6 @@
        }
    }
    
    /**
     * 获取多个商品信息
     * 
@@ -422,8 +427,7 @@
     * 保存信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "saveActivityPic")
@@ -448,8 +452,7 @@
     * 获取信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "getActivityPic")
@@ -490,8 +493,7 @@
     * 保存信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "saveSuCai")
@@ -518,8 +520,7 @@
     * 获取信息
     * 
     * @param callback
     * @param special
     *            0a39676f138c4dcba722e321d43c4284
     * @param special  0a39676f138c4dcba722e321d43c4284
     * @param out
     */
    @RequestMapping(value = "getSuCaiPic")
@@ -559,7 +560,6 @@
            e.printStackTrace();
        }
    }
    
    /**
     * 保存信息
@@ -746,7 +746,11 @@
    @RequestMapping(value = "getGoodsByUrl")
    public void getGoodsByUrl(String callback, String link, PrintWriter out) {
        try {
            CommonGoods commonGoods = clipboardAnalysisManager.parseLink(link);
            //CommonGoods commonGoods = clipboardAnalysisManager.parseLink(link);
            // 根据口令链接获取商品
             getGoods(link);
             CommonGoods commonGoods = getCommonGoods();
            if (commonGoods == null) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未找到该商品"));
                return;
@@ -801,7 +805,37 @@
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("获取失败"));
            e.printStackTrace();
        } finally {
            setCommonGoods(null);
        }
    }
    private void getGoods(String text) {
        Long uid = Constant.LINK_TOKEN_VERIFY_UID;
        clipboardAnalysisManager.parse("android", "55", text, uid, new IClipboardAnalysisResult() {
            @Override
            public void onResult(GoodsDocParseResultVO result) {}
            @Override
            public void onResult(String result) {}
            @Override
            public void onResult(CommonGoods goods) {
                setCommonGoods(goods);
            }
            @Override
            public void onResult(TokenVO tokenVO) {
            }
            @Override
            public void none() {
            }
            @Override
            public void needLogin(String msg) {
            }
        });
    }
    /**
@@ -920,4 +954,14 @@
        }
    }
    public CommonGoods getCommonGoods() {
        return commonGoods;
    }
    public void setCommonGoods(CommonGoods commonGoods) {
        this.commonGoods = commonGoods;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java
@@ -126,5 +126,21 @@
        query.addCriteria(Criteria.where("endTime").gte(now));
        return mongoTemplate.count(query, GoodsEvaluate.class);
    }
    /**
     * 查询有效
     * @param start
     * @param count
     * @param key
     * @return
     */
    public List<GoodsEvaluate> querySingleExist() {
        Query query = new Query();
        query.addCriteria(Criteria.where("dynamicType").is(1));
        query.addCriteria(Criteria.where("state").is(1));
        query.addCriteria(Criteria.where("goods.goodsType").is(1));
        return mongoTemplate.find(query, GoodsEvaluate.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -31,6 +31,7 @@
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.CommentInfo;
import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
@@ -1854,7 +1855,27 @@
    @Override
    public void addGoodsEvaluateByDaTaoKe() {
        try {
            List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(1L, null, 1);
            boolean addSuccess = false;
            List<Long> listId = null;
            List<GoodsEvaluate> listExist = goodsEvaluateDao.querySingleExist();
            if (listExist != null && listExist.size() > 0) {
                listId = new ArrayList<Long>();
                for (GoodsEvaluate goodsEvaluate : listExist) {
                    GoodsDetailVO goods = goodsEvaluate.getGoods();
                    if (goods != null && goods.getGoodsType() == 1) {
                        listId.add(goods.getGoodsId());
                    }
                }
            }
            // 热销单品的分类
            List<GoodsClass> listClass = DaTaoKeUtil.goodsClasses;
            int ci = (int) (Math.random() * listClass.size());
            Long subId = listClass.get(ci).getId();
            List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subId, listId, 1);
            if (list == null || list.size() == 0) {
                return;
            }
@@ -1873,19 +1894,40 @@
            // 发布用户
            ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid());
            
            String desc = DaTaoKeUtil.getDesc(daTaoKe);
            if (!StringUtil.isNullOrEmpty(desc)) {
                int index = desc.lastIndexOf("\n");
                String newDesc = desc.substring(index + 1);
                if (StringUtil.isNullOrEmpty(newDesc)) {
                    desc = desc.substring(0, index);
//            String desc = getDesc(daTaoKe.getDesc());
            String desc = daTaoKe.getDesc().replace(",", ",");
            System.out.println(desc);
            String[] split = desc.split(",");
            System.out.println(split.length);
            int max = 1;
            if (Math.random() > 0.5) {
                max = 2;
            }
            int e = 0;
            String descNew = "";
            if (split.length > 0) {
                for (int i = 0; i < split.length; i ++ ) {
                    if (Math.random() > 0.5 && e < max) {
                        e++;
                        descNew += split[i] +  DaTaoKeUtil.getRandomCommonEmoji();
                    } else {
                        descNew += split[i] + ",";
                }
            }
            } else {
                descNew = desc;
            }
            if(descNew.endsWith(",")) {
                descNew = descNew.substring(0, descNew.length()-1);
            }
            
            GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
            goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", ""));
            goodsEvaluate.setUser(user);
            goodsEvaluate.setTitle(desc);
            goodsEvaluate.setTitle(descNew);
            goodsEvaluate.setState(1);
            goodsEvaluate.setDynamicType(1);
            goodsEvaluate.setType(EvaluateEnum.single);
@@ -1899,16 +1941,14 @@
            goodsEvaluate.setCreateTime(new Date());
            goodsEvaluate.setUpdateTime(new Date());
            
            List<ImgInfo> imgList = new ArrayList<>();
            int lineNum = 0;
            if (imgList.size() > 0) {
                if (imgList.size() == 1) {
            List<String> imgs = goodsBrief.getImgList();
            if (imgs.size() > 0) {
                if (imgs.size() == 1) {
                    lineNum = 1;
                } else if (imgList.size() == 3) {
                } else if (imgs.size() == 3) {
                    lineNum = 3;
                } else if (imgList.size() <= 4) {
                } else if (imgs.size() <= 4) {
                    lineNum = 2;
                } else {
                    lineNum = 3;
@@ -1917,7 +1957,7 @@
            goodsEvaluate.setLineNum(lineNum);
            
            int i = 0;
            List<String> imgs = goodsBrief.getImgList();
            List<ImgInfo> imgList = new ArrayList<>();
            for (String img : imgs) {
                ImgInfo imgInfo = new ImgInfo();
                imgInfo.setH(1);
@@ -1982,4 +2022,100 @@
            LogHelper.errorDetailInfo(e);
        }
    }
    private String getDesc(String desc) {
        System.out.println(desc);
        String newDesc = "";
        int emoji = 0;
        String content = desc.replace(",", ",");
        while (content.length() > 0) {
            int length = 0;
            boolean end = true;
            for (int i = 0; i < content.length(); i++) {
                if (content.substring(0, i).length() >= 18) {
                    length = i;
                    end = false;
                    break;
                }
            }
            if (end) {
                length = content.length();
            }
            String introduce = content.substring(0, length);
            System.out.println(introduce);
            if (verify(introduce)) {
                if (emoji >= 4) {
                    introduce = introduce.replace(",", "\n"); // 需要换行
                } else {
                    emoji ++;
                    introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji() + "\n"); // 需要换行
                }
            }
            // 随机替换emoji
            if(emoji <= 4 && Math.random() > 0.5) {
                introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji());
                emoji ++;
            }
            newDesc += introduce;
            content = content.substring(length);
        }
        return newDesc;
    }
    private boolean verify (String content) {
        // 18个字符内(包含标点也算一个字符)有多个逗号,则不换行
        char d = ',';
        int count = 0;
        char chs[]= content.toCharArray();//转换成char数组
        for(int i=0;i<chs.length;i++) {
            if(d == chs[i]) {
                count ++;
            }
        }
        if (count > 1) {
            return false;
        }
        // 书名号,大括号,小括号里面的内容不换行
        if (content.contains("[") && content.contains("]")) {
            return false;
        } else if (content.contains("【") && content.contains("】")) {
            return false;
        } else if (content.contains("{") && content.contains("}")) {
            return false;
        } else if (content.contains("(") && content.contains(")")) {
            return false;
        }
        int index = content.lastIndexOf(",");
        // (除开逗号以外的符号)感叹号/句号/问号前面有逗号,不换行
        if (content.contains("!") && index < content.lastIndexOf("!")) {
            return false;
        }
        if (content.contains("!") && index < content.lastIndexOf("!")) {
            return false;
        }
        if (content.contains("。") && index < content.lastIndexOf("。")) {
            return false;
        }
        if (content.contains("?") && index < content.lastIndexOf("?")) {
            return false;
        }
        if (content.contains("?") && index < content.lastIndexOf("?")) {
            return false;
        }
        if (content.contains(":")) {
            return false;
        }
        return true;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/RedPackDetailFactory.java
@@ -165,6 +165,7 @@
        RedPackDetail detail = new RedPackDetail();
        detail.setId(id);
        detail.setDisplay(true);
        detail.setDescInfo("领取人ID:" + giveRecord.getReceiveUid());
        detail.setType(RedPackDetailTypeEnum.giveOthersSucceed);
        detail.setTitle(RedPackDetailTypeEnum.giveOthersSucceed.getDesc());
        detail.setIdentifyCode(
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java
@@ -515,7 +515,7 @@
        return parseCurrent(url);
    }
    private static String getRandomCommonEmoji() {
    public static String getRandomCommonEmoji() {
        return commonEmojis[(int) (Math.random() * commonEmojis.length)];
    }