yujian
2019-05-21 7ee5b212787eb439e9cce5e50d34fac97cd34357
动态分类优化 + 取消推荐中推荐语
3个文件已修改
1个文件已删除
556 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/clazz/GoodsClass.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 456 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/dynamic/DynamicClassVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicController.java
@@ -28,7 +28,6 @@
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.vo.dynamic.DynamicClassVO;
import net.sf.json.JSONObject;
@@ -89,36 +88,28 @@
        }
        // Android 返回分类以及顶部数据
        List<DynamicClassVO> list = new ArrayList<DynamicClassVO>();
        DynamicClassVO c1 = new DynamicClassVO();
        c1.setId(1L);
        c1.setName("热销单品");
        List<GoodsClass> listSub = new ArrayList<GoodsClass>();
        listSub.add(new GoodsClass(0L, "今日单品"));
        listSub.addAll(DaTaoKeUtil.goodsClasses);
        c1.setListSub(listSub);
        DynamicClassVO c2 = new DynamicClassVO();
        c2.setId(2L);
        c2.setName("好货推荐");
        c2.setListSub(new ArrayList<GoodsClass>());
        DynamicClassVO c3 = new DynamicClassVO();
        c3.setId(3L);
        c3.setName("有家好店");
        c3.setListSub(new ArrayList<GoodsClass>());
        DynamicClassVO c4 = new DynamicClassVO();
        c4.setId(4L);
        c4.setName("邀请素材");
        c4.setListSub(new ArrayList<GoodsClass>());
        list.add(c1);
        list.add(c2);
        list.add(c3);
        list.add(c4);
        GoodsClass menu1 = new GoodsClass(1L, "热销");
        menu1.setListSub(listSub);
        GoodsClass menu2 = new GoodsClass(2L, "推荐");
        menu2.setListSub(new ArrayList<GoodsClass>());
        GoodsClass menu3 = new GoodsClass(3L, "好店");
        menu3.setListSub(new ArrayList<GoodsClass>());
        GoodsClass menu4 = new GoodsClass(4L, "邀请");
        menu4.setListSub(new ArrayList<GoodsClass>());
        List<GoodsClass> list = new ArrayList<GoodsClass>();
        list.add(menu1);
        list.add(menu2);
        list.add(menu3);
        list.add(menu4);
        JSONObject data = new JSONObject();
        data.put("list", JsonUtil.getApiCommonGson().toJson(list));
        out.print(JsonUtil.loadTrueResult(data));
fanli/src/main/java/com/yeshi/fanli/entity/bus/clazz/GoodsClass.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.entity.bus.clazz;
import java.io.Serializable;
import java.util.List;
import org.yeshi.utils.mybatis.Column;
import org.yeshi.utils.mybatis.Table;
@@ -77,6 +78,10 @@
    private int countlabel = 0; 
    private String taobaoCids;
    // 动态二级商品分类
    @Expose
    private List<GoodsClass> listSub;
    
    
    public GoodsClass() {
@@ -212,4 +217,12 @@
        this.taobaoCids = taobaoCids;
    }
    public List<GoodsClass> getListSub() {
        return listSub;
    }
    public void setListSub(List<GoodsClass> listSub) {
        this.listSub = listSub;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -100,7 +100,216 @@
        return dynamicInfoDao.getById(id);
    }
    
    @Override
    public void insertTimeInvite() {
        InviteMaterial inviteMaterial = inviteMaterialService.getInviteMaterial();
        if (inviteMaterial == null) {
            return;
        }
        Date date = new Date();
        String materialId = inviteMaterial.getId();
        String content = inviteMaterial.getText();
        if (!StringUtil.isNullOrEmpty(content)) {
            DynamicInfo dynamicTxt= new DynamicInfo();
            dynamicTxt.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicTxt.setInviteMaterialId(materialId);
            dynamicTxt.setClassId(4L);
            dynamicTxt.setSubclassId(0L);
            dynamicTxt.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
            dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
            dynamicTxt.setUser(activityUserService.listRand(1).get(0));
            dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000));
            dynamicTxt.setCreateTime(date);
            dynamicTxt.setUpdateTime(date);
            SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
            StringBuffer buffer = new StringBuffer();
            buffer.append("------------------------------------------\n");
            buffer.append("今天 : " + format.format(date));
            buffer.append("     ");
            buffer.append(DateLunarUtil.getWeekd(date) + "\n");
            buffer.append("各位亲爱的你");
            buffer.append("         ");
            buffer.append("早安~\n");
            buffer.append("我的邀请码:【邀请码】\n");
            buffer.append("购物省钱返利券App:【邀请链接】");
            ClientTextStyleVO row1 = new ClientTextStyleVO();
            row1.setColor("#333333");
            row1.setContent(content + "\n" + buffer.toString());
            List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
            listtitle.add(row1);
            dynamicTxt.setTitle(listtitle);
            // 空数据
            List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
            dynamicTxt.setImgs(listImg);
            dynamicInfoDao.insert(dynamicTxt);
        }
        String picture = inviteMaterial.getPicture();
        if (!StringUtil.isNullOrEmpty(picture)) {
            DynamicInfo dynamicPic = new DynamicInfo();
            dynamicPic.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicPic.setInviteMaterialId(materialId);
            dynamicPic.setClassId(4L);
            dynamicPic.setSubclassId(0L);
            dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE);
            dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
            dynamicPic.setUser(activityUserService.listRand(1).get(0));
            dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000));
            dynamicPic.setCreateTime(date);
            dynamicPic.setUpdateTime(date);
            try {
                // 画图
                String url = qrCodeService.drawInviteToGreet(picture, null, null, null, content, new Date());
                List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
                dynamicPic.setTitle(listtitle);
                GoodsPicture p2 = new GoodsPicture();
                p2.setW(100);
                p2.setH(100);
                p2.setUrl(url);
                p2.setUrlOriginal(picture);
                p2.setTitleOriginal(content);
                List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
                listImg.add(p2);
                dynamicPic.setImgs(listImg);
                dynamicInfoDao.insert(dynamicPic);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 更新素材状态
        inviteMaterialService.updateState(1, materialId);
    }
    @Override
    public void insertShopInfo() {
        List<String> brandIdList = DaTaoKeApiUtil.getBrandIdList();
        if (brandIdList == null || brandIdList.size() == 0) {
            LogHelper.test("大淘客品牌id获取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        Long classId = 3L;
        Long subclassId = 0L;
        List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId);
        // 清理已存在品牌
        if (listInfo != null && listInfo.size() > 0) {
            for (int i = 0; i < brandIdList.size(); i++) {
                String brandId = brandIdList.get(i);
                for (int j = 0; j < listInfo.size(); j++) {
                    String id = listInfo.get(j).getId();
                    if (brandId.equals(id)) {
                        brandIdList.remove(brandId);
                        i--;
                        listInfo.remove(listInfo.get(j));
                        j--;
                    }
                }
            }
        }
        if (brandIdList == null || brandIdList.size() == 0) {
            LogHelper.test("大淘客品牌已全部爬取(DynamicInfoService-insertShopInfo)");
            return;
        }
        int index = (int) (Math.random() * brandIdList.size());
        String brandId = brandIdList.get(index);
        TaoBaoShopDTO dynamicShopInfo = DaTaoKeApiUtil.getDynamicShopInfo(brandId);
        if (dynamicShopInfo == null) {
            LogHelper.test("大淘客品牌信息爬取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        List<TaoBaoGoodsBrief> listGoods = dynamicShopInfo.getListGoods();
        if (listGoods == null || listGoods.size() == 0) {
            LogHelper.test("大淘客品牌商品信息爬取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        Long sellerId = dynamicShopInfo.getSellerId();
        TaoBaoGoodsBrief taoBaoGoodsBrief = listGoods.get(0);
        TaoBaoShop taoBaoShop = taoBaoShopService.getTaoBaoShop(taoBaoGoodsBrief.getAuctionId(), sellerId);
        if (taoBaoShop == null) {
            LogHelper.test("店铺详情信息获取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        String shopLink = taoBaoShop.getShopLink();
        if (StringUtil.isNullOrEmpty(shopLink)) {
            taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
        }
        DynamicInfo dynamicVO = new DynamicInfo();
        dynamicVO.setId(brandId);
        dynamicVO.setClassId(classId);
        dynamicVO.setSubclassId(subclassId);
        dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_TWO);
        dynamicVO.setShop(taoBaoShop);
        dynamicVO.setUser(activityUserService.listRand(1).get(0));
        dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
        dynamicVO.setUpdateTime(new Date());
        // 介绍内容
        ClientTextStyleVO row1 = new ClientTextStyleVO();
        row1.setColor("#333333");
        row1.setContent(dynamicShopInfo.getBrandDes());
        List<ClientTextStyleVO> listTitle = new ArrayList<ClientTextStyleVO>();
        listTitle.add(row1);
        dynamicVO.setTitle(listTitle);
        // 商品信息
        List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>();
        for (TaoBaoGoodsBrief goodsBrief : listGoods) {
            BigDecimal proportion = hongBaoManageService.getFanLiRate();
            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
            taoBaoGoodsBriefExtra.setCouponInfo(null);
            taoBaoGoodsBriefExtra.setUpdatetime(new Date());
            if (!taoBaoGoodsBriefExtra.isCoupon()) {
                taoBaoGoodsBriefExtra.setState(1);
            }
            String goodsId = goodsBrief.getAuctionId().toString();
            JSONObject item = new JSONObject();
            item.put("id", goodsId);
            item.put("from", "dynamics");
            GoodsPicture goodsPicture = new GoodsPicture();
            goodsPicture.setH(100);
            goodsPicture.setW(100);
            goodsPicture.setUrl(TbImgUtil.getTBSize320Img(goodsBrief.getPictUrl()));
            goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail"));
            goodsPicture.setParams(item.toString());
            goodsPicture.setGoods(taoBaoGoodsBriefExtra);
            listPicture.add(goodsPicture);
        }
        dynamicVO.setImgs(listPicture);
        dynamicInfoDao.insert(dynamicVO);
    }
    @Override
    public void insertTimeRecommend() {
        try {
@@ -152,6 +361,8 @@
            // 组织动态信息
            DynamicInfo dynamicInfo = getDynamicInfo(daTaoKeDetail, classId, subclassId);
            // 无内容
            dynamicInfo.setTitle(new ArrayList<ClientTextStyleVO>());
            // 发布用户
            dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(cid));
            dynamicInfo.setImgs(listPicture);
@@ -273,6 +484,7 @@
        // 组织动态信息
        DynamicInfo dynamicInfo = getDynamicInfo(daTaoKe, classId, subclassId);
        dynamicInfo.setTitle(convertIntroduce(DaTaoKeUtil.getDesc(daTaoKe)));
        // 发布用户
        dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()));
        dynamicInfo.setImgs(listPicture);
@@ -302,8 +514,6 @@
        dynamicInfo.setUpdateTime(new Date());
        // 随机分享次数
        dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000));
        // 内容
        dynamicInfo.setTitle(convertIntroduce(DaTaoKeUtil.getDesc(daTaoKe)));
        return dynamicInfo;
    }
@@ -342,28 +552,6 @@
        item.put("from", "dynamics");
        goodsPicture.setParams(item.toString());
        return goodsPicture;
    }
    @Override
    @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId")
    public long count(Long cid, Long subId) {
        return dynamicInfoDao.count(cid, subId);
    }
    @Override
    @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId")
    public List<DynamicInfo> query(int start, int count, Long cid, Long subId) {
        List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId);
        // 更新商品信息
        executor.execute(new Runnable() {
            @Override
            public void run() {
                updateGoodInfo(list);
            }
        });
        return list;
    }
    @Override
@@ -451,119 +639,6 @@
    }
    
    
    @Override
    public void insertShopInfo() {
        List<String> brandIdList = DaTaoKeApiUtil.getBrandIdList();
        if (brandIdList == null || brandIdList.size() == 0) {
            LogHelper.test("大淘客品牌id获取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        Long classId = 3L;
        Long subclassId = 0L;
        List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId);
        // 清理已存在品牌
        if (listInfo != null && listInfo.size() > 0) {
            for (int i = 0; i < brandIdList.size(); i++) {
                String brandId = brandIdList.get(i);
                for (int j = 0; j < listInfo.size(); j++) {
                    String id = listInfo.get(j).getId();
                    if (brandId.equals(id)) {
                        brandIdList.remove(brandId);
                        i--;
                        listInfo.remove(listInfo.get(j));
                        j--;
                    }
                }
            }
        }
        if (brandIdList == null || brandIdList.size() == 0) {
            LogHelper.test("大淘客品牌已全部爬取(DynamicInfoService-insertShopInfo)");
            return;
        }
        int index = (int) (Math.random() * brandIdList.size());
        String brandId = brandIdList.get(index);
        TaoBaoShopDTO dynamicShopInfo = DaTaoKeApiUtil.getDynamicShopInfo(brandId);
        if (dynamicShopInfo == null) {
            LogHelper.test("大淘客品牌信息爬取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        List<TaoBaoGoodsBrief> listGoods = dynamicShopInfo.getListGoods();
        if (listGoods == null || listGoods.size() == 0) {
            LogHelper.test("大淘客品牌商品信息爬取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        Long sellerId = dynamicShopInfo.getSellerId();
        TaoBaoGoodsBrief taoBaoGoodsBrief = listGoods.get(0);
        TaoBaoShop taoBaoShop = taoBaoShopService.getTaoBaoShop(taoBaoGoodsBrief.getAuctionId(), sellerId);
        if (taoBaoShop == null) {
            LogHelper.test("店铺详情信息获取失败(DynamicInfoService-insertShopInfo)");
            return;
        }
        String shopLink = taoBaoShop.getShopLink();
        if (StringUtil.isNullOrEmpty(shopLink)) {
            taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
        }
        DynamicInfo dynamicVO = new DynamicInfo();
        dynamicVO.setId(brandId);
        dynamicVO.setClassId(classId);
        dynamicVO.setSubclassId(subclassId);
        dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_TWO);
        dynamicVO.setShop(taoBaoShop);
        dynamicVO.setUser(activityUserService.listRand(1).get(0));
        dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
        dynamicVO.setUpdateTime(new Date());
        // 介绍内容
        ClientTextStyleVO row1 = new ClientTextStyleVO();
        row1.setColor("#333333");
        row1.setContent(dynamicShopInfo.getBrandDes());
        List<ClientTextStyleVO> listTitle = new ArrayList<ClientTextStyleVO>();
        listTitle.add(row1);
        dynamicVO.setTitle(listTitle);
        // 商品信息
        List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>();
        for (TaoBaoGoodsBrief goodsBrief : listGoods) {
            BigDecimal proportion = hongBaoManageService.getFanLiRate();
            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
            taoBaoGoodsBriefExtra.setCouponInfo(null);
            taoBaoGoodsBriefExtra.setUpdatetime(new Date());
            if (!taoBaoGoodsBriefExtra.isCoupon()) {
                taoBaoGoodsBriefExtra.setState(1);
            }
            String goodsId = goodsBrief.getAuctionId().toString();
            JSONObject item = new JSONObject();
            item.put("id", goodsId);
            item.put("from", "dynamics");
            GoodsPicture goodsPicture = new GoodsPicture();
            goodsPicture.setH(100);
            goodsPicture.setW(100);
            goodsPicture.setUrl(TbImgUtil.getTBSize320Img(goodsBrief.getPictUrl()));
            goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail"));
            goodsPicture.setParams(item.toString());
            goodsPicture.setGoods(taoBaoGoodsBriefExtra);
            listPicture.add(goodsPicture);
        }
        dynamicVO.setImgs(listPicture);
        dynamicInfoDao.insert(dynamicVO);
    }
    
    @Override
    public void removeByDate(Date createTime) {
@@ -781,95 +856,28 @@
    }
    
    
    @Override
    public void insertTimeInvite() {
        InviteMaterial inviteMaterial = inviteMaterialService.getInviteMaterial();
        if (inviteMaterial == null) {
            return;
        }
    @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId")
    public long count(Long cid, Long subId) {
        return dynamicInfoDao.count(cid, subId);
    }
    @Override
    @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId")
    public List<DynamicInfo> query(int start, int count, Long cid, Long subId) {
        List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId);
        
        Date date = new Date();
        String materialId = inviteMaterial.getId();
        String content = inviteMaterial.getText();
        if (!StringUtil.isNullOrEmpty(content)) {
            DynamicInfo dynamicTxt= new DynamicInfo();
            dynamicTxt.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicTxt.setInviteMaterialId(materialId);
            dynamicTxt.setClassId(4L);
            dynamicTxt.setSubclassId(0L);
            dynamicTxt.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
            dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
            dynamicTxt.setUser(activityUserService.listRand(1).get(0));
            dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000));
            dynamicTxt.setCreateTime(date);
            dynamicTxt.setUpdateTime(date);
            SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
            StringBuffer buffer = new StringBuffer();
            buffer.append("------------------------------------------\n");
            buffer.append("今天 : " + format.format(date));
            buffer.append("     ");
            buffer.append(DateLunarUtil.getWeekd(date) + "\n");
            buffer.append("各位亲爱的你");
            buffer.append("         ");
            buffer.append("早安~\n");
            buffer.append("我的邀请码:【邀请码】\n");
            buffer.append("购物省钱返利券App:【邀请链接】");
            ClientTextStyleVO row1 = new ClientTextStyleVO();
            row1.setColor("#333333");
            row1.setContent(content + "\n" + buffer.toString());
            List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
            listtitle.add(row1);
            dynamicTxt.setTitle(listtitle);
            // 空数据
            List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
            dynamicTxt.setImgs(listImg);
            dynamicInfoDao.insert(dynamicTxt);
        }
        String picture = inviteMaterial.getPicture();
        if (!StringUtil.isNullOrEmpty(picture)) {
            DynamicInfo dynamicPic = new DynamicInfo();
            dynamicPic.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicPic.setInviteMaterialId(materialId);
            dynamicPic.setClassId(4L);
            dynamicPic.setSubclassId(0L);
            dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE);
            dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
            dynamicPic.setUser(activityUserService.listRand(1).get(0));
            dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000));
            dynamicPic.setCreateTime(date);
            dynamicPic.setUpdateTime(date);
            try {
                // 画图
                String url = qrCodeService.drawInviteToGreet(picture, null, null, null, content, new Date());
                List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
                dynamicPic.setTitle(listtitle);
                GoodsPicture p2 = new GoodsPicture();
                p2.setW(100);
                p2.setH(100);
                p2.setUrl(url);
                p2.setUrlOriginal(picture);
                p2.setTitleOriginal(content);
                List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
                listImg.add(p2);
                dynamicPic.setImgs(listImg);
                dynamicInfoDao.insert(dynamicPic);
            } catch (IOException e) {
                e.printStackTrace();
        // 更新商品信息
        executor.execute(new Runnable() {
            @Override
            public void run() {
                updateGoodInfo(list);
            }
        }
        // 更新素材状态
        inviteMaterialService.updateState(1, materialId);
        });
        return list;
    }
}
fanli/src/main/java/com/yeshi/fanli/vo/dynamic/DynamicClassVO.java
File was deleted