yujian
2019-05-14 e5f4d6b14c4c0298eb522ecca7863a08849c8da8
动态
7个文件已修改
4个文件已添加
651 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/DynamicInfoDao.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/share/ShareInfoDTO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/taobao/TaoBaoShopDTO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/taobao/TaoBaoGoodsBriefExtra.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserShareGoodsRecordService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/dynamic/DynamicClassVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java
@@ -199,48 +199,6 @@
        out.print("<script>yestv.finishPage();</script>");
        out.close();
    }
    @RequestMapping(value = "insetDynamicInfo")
    public void insetDynamicInfo(PrintWriter out) {
        String content= "emoji六一儿童节来了\r\n" +
                "老少儿童们到快活起来吧:用童真憧憬人生\r\n" +
                "emoji用童趣装点人生emoji\r\n" +
                "用童话描绘人生emoji\r\n" +
                "用童心度过人生 emoji \r\n" +
                "--------------------- \r\n今天 : 6月1日     ️  星期四\r\n" +
                "天气 : 晴转多云   15-24℃\r\n" +
                "各位亲爱的你      早安~\r\n" +
                "购物省钱返利券App:【邀请链接】\r\n" +
                "我的邀请码:【邀请码】" ;
        dynamicInfoService.insertInviteMaterial(content, null, null, null);
        String content2= "emoji六一儿童节来了\r\n" +
                "老少儿童们到快活起来吧:用童真憧憬人生\r\n" +
                "emoji用童趣装点人生emoji\r\n" +
                "用童话描绘人生emoji\r\n" +
                "用童心度过人生 emoji \r\n" +
                "--------------------- \r\n今天 : 6月1日     ️  星期四\r\n" +
                "天气 : 晴转多云   15-24℃\r\n" +
                "各位亲爱的你      早安~\r\n" +
                "购物省钱返利券App:【邀请链接】\r\n" +
                "我的邀请码:【邀请码】" ;
        dynamicInfoService.insertInviteMaterial(content2, "http://ec-1255749512.file.myqcloud.com/img/invite/53420a05de1644bd947fa23800ab0131.jpeg", null, null);
    }
    @RequestMapping(value = "insertShop")
    public void insertShop(PrintWriter out) {
        try {
            dynamicInfoService.insertShopInfo();
            dynamicInfoService.insertTimeHotSale();
            dynamicInfoService.insertTimeRecommend();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    /**
@@ -286,7 +244,7 @@
                "购物省钱返利券App:【邀请链接】\r\n" + 
                "我的邀请码:【邀请码】" ;
        
        dynamicInfoService.insertInviteMaterial(content, null);
        dynamicInfoService.insertInviteMaterial(content, null, null, null);
        
        
        String content2= "emoji六一儿童节来了\r\n" + 
@@ -300,7 +258,7 @@
                "购物省钱返利券App:【邀请链接】\r\n" + 
                "我的邀请码:【邀请码】" ;
        
        dynamicInfoService.insertInviteMaterial(content2, "http://ec-1255749512.file.myqcloud.com/img/invite/53420a05de1644bd947fa23800ab0131.jpeg");
        dynamicInfoService.insertInviteMaterial(content2, "http://ec-1255749512.file.myqcloud.com/img/invite/53420a05de1644bd947fa23800ab0131.jpeg", null, null);
    }
    
fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
@@ -9,6 +9,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -71,6 +72,9 @@
@RequestMapping("api/v1/share")
public class ShareController {
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
    @Resource
    private ShareGoodsService shareGoodsService;
@@ -219,36 +223,40 @@
            // 添加分享记录
            BigDecimal rate = hongBaoManageService.getShareRate();
            UserShareGoodsHistory history = new UserShareGoodsHistory();
            history.setTkCode(taoBaoLink.getTaoToken());
            history.setLink(taoBaoLink.getClickUrl());
            history.setQuanLink(taoBaoLink.getCouponLink());
            history.setCreateTime(new Date());
            history.setGoodsId(taoBaoLink.getGoods().getAuctionId());
            history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO);
            history.setHongbao(TaoBaoUtil.getShareGoodsHongBaoInfo(taoBaoLink.getGoods(), rate));
            List<String> imgList = taoBaoLink.getGoods().getImgList();
            if (imgList == null) {
                imgList = new ArrayList<>();
            }
            history.setPictures(JsonUtil.getGson().toJson(imgList));
            history.setUser(new UserInfo(uid));
            history.setPostPicture(taoBaoLink.getGoods().getPictUrl());
            data.put("shareMoney", "¥" + history.getHongbao().toString());
            BigDecimal shareMoney = TaoBaoUtil.getShareGoodsHongBaoInfo(taoBaoLink.getGoods(), rate);
            data.put("shareMoney", "¥" + shareMoney.toString());
            data.put("shareId", userShareGoodsRecordService.saveSingleShareRecord(uid, auctionId));
            out.print(JsonUtil.loadTrueResult(data));
            // 异步操作
            com.yeshi.fanli.util.ThreadUtil.run(new Runnable() {
                @Override
                public void run() {
                    //异步操作 添加分享记录
                    UserShareGoodsHistory history = new UserShareGoodsHistory();
                    history.setUser(new UserInfo(uid));
                    history.setHongbao(shareMoney);
                    history.setCreateTime(new Date());
                    history.setGoodsType(UserShareGoodsHistory.TYPE_TAOBAO);
                    history.setTkCode(taoBaoLink.getTaoToken());
                    history.setLink(taoBaoLink.getClickUrl());
                    history.setQuanLink(taoBaoLink.getCouponLink());
                    history.setGoodsId(taoBaoLink.getGoods().getAuctionId());
                    history.setPostPicture(taoBaoLink.getGoods().getPictUrl());
                    List<String> imgList = taoBaoLink.getGoods().getImgList();
                    if (imgList == null) {
                        imgList = new ArrayList<>();
                    }
                    history.setPictures(JsonUtil.getGson().toJson(imgList));
                    shareGoodsService.addShareGoodsHistory(history);
                }
            });
            return;
        } catch (UserShareGoodsRecordException e) {
            out.print(JsonUtil.loadFalseResult(e.getMsg()));
            e.printStackTrace();
        } catch (ShareGoodsException e) {
            try {
                monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, e.getCode(), 0, "分享出错"));
@@ -619,7 +627,6 @@
    
    /**
     * 查询顶部分类
     * @param acceptData
@@ -647,29 +654,44 @@
                return;
            }
            
            JSONObject data = new JSONObject();
            
            JSONObject data = new JSONObject();
            // 分类id
            long cid = dynamicInfo.getClassId();
            
            if (cid == 1) {     // 热销单品
                // 文字内容
                data.put("title", JsonUtil.getApiCommonGson().toJson(dynamicInfo.getTitle()));
                String title ="";
                List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle();
                if (listTitle != null && listTitle.size() > 0) {
                    for (ClientTextStyleVO textStyleVO : listTitle) {
                        title += textStyleVO.getContent();
                    }
                }
                data.put("title", title);
                data.put("content", "我在返利券发现了一个很好的商品,快来看看~");
                // 分享奖金
                ClientTextStyleVO desc = dynamicInfo.getDesc();
                String content = desc.getContent();
                int index = content.indexOf("¥");
                data.put("shareMoney", new BigDecimal(content.substring(index + 1, content.length())));
                // 分享链接
                String url = String.format("http://%s/share_mushGoods.html?uid=%s&shareId=%s&source=%s",
                        configService.getH5Host(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), id, "dynamic");
                // 商品分享链接
                List<GoodsPicture> imgs2 = dynamicInfo.getImgs();
                GoodsPicture goodsPicture = imgs2.get(0);
                Long auctionId = goodsPicture.getGoods().getAuctionId();
                String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
                        Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY),
                        auctionId + "");
                String shortLink = HttpUtil.getShortLink(url);
                if (!StringUtil.isNullOrEmpty(shortLink)) {
                    url = shortLink;
                }
                data.put("clickUrl", url);
                // 分享文字图标
                // 分享提示图片
                String imgs = configService.get("goods_share_notify_imgs");
                JSONArray array = JSONArray.fromObject(imgs);
                int p = (int) (array.size() * Math.random());
@@ -677,66 +699,73 @@
                    data.put("notifyPicture", array.optString(p));
                }
                
                UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid);
                String relationId = null;
                if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null
                        && extraInfo.getRelationValid() == true) {
                    relationId = extraInfo.getRelationId();
                }
                TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, 42472466270L, relationId);
                TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId);
                
                data.put("pictUrl", TbImgUtil.getTBSizeImg(goodsPicture.getUrl(), 500));
                // 淘宝口令
                data.put("token", taoBaoLink.getTaoToken());
                // 商品图片链接
                data.put("shareLink", TbImgUtil.getTBSizeImg(taoBaoLink.getGoods().getPictUrl(), 500));
                // 帮助链接
                data.put("helpLink","https://img.alicdn.com/imgextra/i1/2200656425615/O1CN01dst9HQ1rLiPN7xmhD_!!0-item_pic.jpg");
                data.put("helpLink","http://apph5.yeshitv.com/apppage/all_help_content.html?id=148&from=singlemessage&isappinstalled=0");
                // 分享提醒
                data.put("notifyDesc", configService.get("goods_share_notify"));
                // 分享记录id
                data.put("shareId", userShareGoodsRecordService.saveSingleShareRecord(uid, auctionId));
                
            } else if (cid == 2) {     // 推荐好货
                
                String picUrl = null;
                List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
                List<GoodsPicture> listImgs = dynamicInfo.getImgs();
                for (GoodsPicture goodsPicture: listImgs) {
                    TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods();
                    listGoods.add(goods);
                }
                String title = "";
                List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle();
                for (ClientTextStyleVO textStyleVO: listTitle) {
                    title = title + textStyleVO.getContent();
                }
                if (title.length() > 250) {
                    title = title.substring(0, 250);
                    if (picUrl == null) {
                        picUrl = goodsPicture.getUrl();
                    }
                }
                
                // 文字内容
                data.put("title", JsonUtil.getApiCommonGson().toJson(dynamicInfo.getTitle()));
                String title ="";
                List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle();
                if (listTitle != null && listTitle.size() > 0) {
                    for (ClientTextStyleVO textStyleVO : listTitle) {
                        title += textStyleVO.getContent();
                    }
                }
                data.put("title", title);
                data.put("content", "我在返利券发现了一个很好的商品,快来看看~");
                // 分享奖金
                ClientTextStyleVO desc = dynamicInfo.getDesc();
                String content = desc.getContent();
                int index = content.indexOf("¥");
                data.put("shareMoney", new BigDecimal(content.substring(index + 1, content.length())));
                // 分享文字图标
                data.put("shareMoney", new BigDecimal(content.substring(index + 1 , content.length())));
                // 分享链接
                ShareInfoDTO shareInfo = userShareGoodsRecordService.saveShareRecord(uid,
                        ShareSourceTypeEnum.activity, title, listGoods);
                data.put("shareId", shareInfo.getShareId());
                data.put("clickUrl", shareInfo.getCodeUrl());
                data.put("pictUrl", TbImgUtil.getTBSizeImg(picUrl, 500));
                // 帮助链接
                data.put("helpLink","http://apph5.yeshitv.com/apppage/all_help_content.html?id=148&from=singlemessage&isappinstalled=0");
                // 分享提醒
                data.put("notifyDesc", configService.get("goods_share_notify"));
                // 分享提醒语
                String notifyImgs = configService.get("goods_share_notify_imgs");
                JSONArray array = JSONArray.fromObject(notifyImgs);
                int p = (int) (array.size() * Math.random());
                if (p < array.size()) {
                    data.put("notifyPicture", array.optString(p));
                }
                ShareInfoDTO shareInfo = userShareGoodsRecordService.saveShareRecord(uid, ShareSourceTypeEnum.activity, title, listGoods);
                data.put("shareId", shareInfo.getShareId());
                data.put("clickUrl", shareInfo.getCodeUrl());
                // 商品图片链接
                data.put("shareLink", shareInfo.getShareUrl());
                // 帮助链接
                data.put("helpLink","https://img.alicdn.com/imgextra/i1/2200656425615/O1CN01dst9HQ1rLiPN7xmhD_!!0-item_pic.jpg");
                // 分享提醒
                data.put("notifyDesc", configService.get("goods_share_notify"));
                
            } else if (cid == 4) { // 邀请分享
                
@@ -751,18 +780,31 @@
                
                Integer showType = dynamicInfo.getShowType();
                if (showType == 0) {  // 无图分享
                    String shortLink = UserUtil.getInviteShortLink(uid);
                    String title ="";
                    List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle();
                    for (ClientTextStyleVO textStyleVO: listTitle) {
                        String content = textStyleVO.getContent();
                        content = content.replace("邀请码", inviteCode);
                        content = content.replace("邀请链接", shortLink);
                        textStyleVO .setContent(content);
                    if (listTitle != null && listTitle.size() > 0) {
                        for (ClientTextStyleVO textStyleVO : listTitle) {
                            title += textStyleVO.getContent();
                        }
                    }
                    data.put("title", listTitle);
                    title = title.replace("【邀请码】", inviteCode);
                    title = title.replace("【邀请链接】", UserUtil.getInviteShortLink(uid));
                    data.put("title", title);
                    
                } else { // 有图分享
                    // 1、邀请规则
                    // 邀请链接
                    String shortLink = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/"
                            + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid);
                    data.put("inviteLink", shortLink);
                    data.put("inviteCode", inviteCode);
                    // 邀请图片
                    List<GoodsPicture> imgs = dynamicInfo.getImgs();
                    String imgLink = spreadUserImgService.getInviteImg(uid, imgs.get(0).getUrl(), inviteCode);
                    data.put("imgLink", imgLink);
                    //  邀请规则
                    BusinessSystem system = new BusinessSystem();
                    system.setCreatetime(java.lang.System.currentTimeMillis());
                    system.setPlatform(1);
@@ -772,22 +814,24 @@
                    String valueN = values.getValue();
                    String valueBr = valueN.replace("\n", "<br><br>");
                    data.put("inviteRules", valueBr);
                    // 邀请链接
                    String shortLink = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/"
                            + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid);
                    data.put("inviteLink", shortLink);
                    // 邀请图片
                    List<GoodsPicture> imgs = dynamicInfo.getImgs();
                    String imgLink = spreadUserImgService.getUserSpreadImg(uid, imgs.get(0).getUrl());
                    data.put("imgLink", imgLink);
                }
            }
            out.print(JsonUtil.loadTrueResult(data));
            // 更新分享次数
            executor.execute(new Runnable() {
                @Override
                public void run() {
                    Integer shareCount = dynamicInfo.getShareCount();
                    dynamicInfo.setShareCount(shareCount + 1);
                    dynamicInfoService.updateShareCount(dynamicInfo);
                }
            });
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult("分享记录失败"));
            e.printStackTrace();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/DynamicInfoDao.java
New file
@@ -0,0 +1,207 @@
package com.yeshi.fanli.dao.dynamic;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
@Repository
public class DynamicInfoDao  {
    @Resource
    private MongoTemplate mongoTemplate;
    /**
     * 新增
     * @param record
     */
    public void insert(DynamicInfo record) {
        if (record == null) {
            return;
        }
        mongoTemplate.insert(record);
    }
    /**
     * 更新分享次数
     * @param record
     */
    public void updateShareCount(DynamicInfo record) {
        if (record == null) {
            return;
        }
        // 查询数据是存在
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(record.getId()));
        // 更新分享次数
        Update update = Update.update("shareCount", record.getShareCount());
        mongoTemplate.updateMulti(query, update, DynamicInfo.class);
    }
    /**
     * 更新分享次数
     * @param record
     */
    public void updateGoodInfo(DynamicInfo record) {
        if (record == null) {
            return;
        }
        // 查询数据是存在
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(record.getId()));
        // 更新分享次数
        Update update = Update.update("imgs", record.getImgs()).set("desc", record.getDesc());
        mongoTemplate.updateMulti(query, update, DynamicInfo.class);
    }
    /**
     * 根据id查询数据
     * @param id
     * @return
     */
    public DynamicInfo getById(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        DynamicInfo info = mongoTemplate.findOne(query, DynamicInfo.class);
        return info;
    }
    /**
     * 根据id查询数据
     * @param id
     * @return
     */
    public DynamicInfo getByActivityId(Long activityId) {
        Query query = new Query();
        query.addCriteria(Criteria.where("activityId").is(activityId));
        DynamicInfo info = mongoTemplate.findOne(query, DynamicInfo.class);
        return info;
    }
    /**
     * 删除
     *
     * @param id
     * @return
     */
    public void deleteById(String id) {
        DynamicInfo info = getById(id);
        if (info == null ) {
            return;
        }
        mongoTemplate.remove(info);
    }
    /**
     * 删除根据时间
     *
     * @param id
     * @return
     */
    public void removeByDate(Date createTime) {
        Query query = new Query();
        query.addCriteria(Criteria.where("createTime").lt(createTime));
        query.addCriteria(
                new Criteria().andOperator(
                    Criteria.where("createTime").lt(createTime),
                    Criteria.where("classId").ne(4L)
                    )
            );
        mongoTemplate.remove(query);
    }
    /**
     * 查询
     * @param clazz
     * @return
     */
    public List<DynamicInfo> query(Long cid, Long subId) {
        Query query = new Query();
        if (subId == null) {
            query.addCriteria(Criteria.where("classId").is(cid));
        } else {
            query.addCriteria(
                new Criteria().andOperator(
                    Criteria.where("classId").is(cid),
                    Criteria.where("subclassId").is(subId)
                    )
            );
        }
        List<DynamicInfo> list = mongoTemplate.find(query, DynamicInfo.class);
        return list;
    }
    /**
     * 查询所有数据
     * @param clazz
     * @return
     */
    public List<DynamicInfo> query(int start, int count, Long cid, Long subId) {
        Query query = new Query();
        if (subId == null) {
            query.addCriteria(Criteria.where("classId").is(cid));
        } else {
            query.addCriteria(
                new Criteria().andOperator(
                    Criteria.where("classId").is(cid),
                    Criteria.where("subclassId").is(subId)
                    )
            );
        }
        //分页
        query.skip(start).limit(count);
        //排序
        query.with(new Sort(Sort.Direction.DESC,"createTime"));
        List<DynamicInfo> list = mongoTemplate.find(query, DynamicInfo.class);
        return list;
    }
    public long count(Long cid, Long subId) {
        Query query = new Query();
        if (subId == null) {
            query.addCriteria(Criteria.where("classId").is(cid));
        } else {
            query.addCriteria(
                new Criteria().andOperator(
                    Criteria.where("classId").is(cid),
                    Criteria.where("subclassId").is(subId)
                    )
            );
        }
       return mongoTemplate.count(query, DynamicInfo.class);
    }
    /**
     * 查询所有数据
     * @param clazz
     * @return
     */
    public List<DynamicInfo> queryAll() {
        return (List<DynamicInfo>) mongoTemplate.findAll(DynamicInfo.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/dto/share/ShareInfoDTO.java
New file
@@ -0,0 +1,40 @@
package com.yeshi.fanli.dto.share;
public class ShareInfoDTO {
    // 分享记录id
    private Long shareId;
    // 分享链接
    private String shareUrl;
    // 分享二维码
    private String codeUrl;
    // md5
    private String md5;
    public Long getShareId() {
        return shareId;
    }
    public void setShareId(Long shareId) {
        this.shareId = shareId;
    }
    public String getShareUrl() {
        return shareUrl;
    }
    public void setShareUrl(String shareUrl) {
        this.shareUrl = shareUrl;
    }
    public String getCodeUrl() {
        return codeUrl;
    }
    public void setCodeUrl(String codeUrl) {
        this.codeUrl = codeUrl;
    }
    public String getMd5() {
        return md5;
    }
    public void setMd5(String md5) {
        this.md5 = md5;
    }
}
fanli/src/main/java/com/yeshi/fanli/dto/taobao/TaoBaoShopDTO.java
New file
@@ -0,0 +1,70 @@
package com.yeshi.fanli.dto.taobao;
import java.util.List;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
public class TaoBaoShopDTO {
    private Long sellerId;// 卖家ID
    private Integer userType;// 用户类型 0-淘宝 1-天猫
    private String shopName;// 店铺名称
    private String shopIcon;// 店铺图标
    private String shopLink; // 店铺链接
    private String brandId; // 大淘客品牌Id
    private String brandDes; // 大淘客品牌描述
    private List<TaoBaoGoodsBrief> listGoods;
    public Long getSellerId() {
        return sellerId;
    }
    public void setSellerId(Long sellerId) {
        this.sellerId = sellerId;
    }
    public Integer getUserType() {
        return userType;
    }
    public void setUserType(Integer userType) {
        this.userType = userType;
    }
    public String getShopName() {
        return shopName;
    }
    public void setShopName(String shopName) {
        this.shopName = shopName;
    }
    public String getShopIcon() {
        return shopIcon;
    }
    public void setShopIcon(String shopIcon) {
        this.shopIcon = shopIcon;
    }
    public String getShopLink() {
        return shopLink;
    }
    public void setShopLink(String shopLink) {
        this.shopLink = shopLink;
    }
    public String getBrandId() {
        return brandId;
    }
    public void setBrandId(String brandId) {
        this.brandId = brandId;
    }
    public List<TaoBaoGoodsBrief> getListGoods() {
        return listGoods;
    }
    public void setListGoods(List<TaoBaoGoodsBrief> listGoods) {
        this.listGoods = listGoods;
    }
    public String getBrandDes() {
        return brandDes;
    }
    public void setBrandDes(String brandDes) {
        this.brandDes = brandDes;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/taobao/TaoBaoGoodsBriefExtra.java
@@ -34,6 +34,8 @@
    @Expose
    private int salesType;//销量类型:1-月销量  2-2小时销量  3-今日销量
    
    @Expose
    private boolean coupon; // 是否有券
    
    public int getMoneyType() {
@@ -124,4 +126,12 @@
        this.collected = collected;
    }
    public boolean isCoupon() {
        return coupon;
    }
    public void setCoupon(boolean coupon) {
        this.coupon = coupon;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -247,8 +247,13 @@
    @Override
    public int countUserSpreadImg(Long uid) {
        return (int) (spreadUserImgMapper.imgUrlCount(uid));
    }
    @Override
    public String getInviteImg(Long uid, String bgImg, String inviteCode) throws Exception {
        UserInfo user = userInfoDao.find(UserInfo.class, uid);
        return qrCodeService.drawInviteQrCode(bgImg, uid, user.getPortrait(), inviteCode);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java
@@ -231,6 +231,35 @@
        singleGoodsShare(userShareGoodsRecord, goodsBrief);
    }
    @Override
    public Long saveSingleShareRecord(Long uid, Long auctionId) throws UserShareGoodsRecordException {
        if (auctionId == null) {
            throw new UserShareGoodsRecordException(1, "分享商品不能为空");
        }
        if (uid == null) {
            throw new UserShareGoodsRecordException(1, "用户ID不能为空");
        }
        TaoBaoGoodsBrief goodsBrief = null;
        try {
            goodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
        } catch (TaobaoGoodsDownException e) {
            throw new UserShareGoodsRecordException(1, "商品已下架");
        }
        UserShareGoodsRecord userShareGoodsRecord = new UserShareGoodsRecord();
        userShareGoodsRecord.setUid(uid);
        userShareGoodsRecord.setSource(ShareSourceTypeEnum.goodsDetail);
        userShareGoodsRecord.setShareState(0);
        // 单个商品分享
        singleGoodsShare(userShareGoodsRecord, goodsBrief);
        return userShareGoodsRecord.getId();
    }
    @Override
    public void save(Long uid, ShareSourceTypeEnum source, String title, TaoBaoGoodsBrief taoBaoGoodsBrief)
            throws UserShareGoodsRecordException {
fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java
@@ -49,4 +49,7 @@
     */
    String getUserSpreadImg(Long uid, String bgImg, int erCodePostionX, int erCodePostionY, int erCodeSize);
    String getInviteImg(Long uid, String bgImg, String inviteCode) throws Exception;
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserShareGoodsRecordService.java
@@ -136,4 +136,13 @@
    public ShareInfoDTO saveShareRecord(Long uid, ShareSourceTypeEnum source, String title, List<TaoBaoGoodsBrief> listGoods)
            throws UserShareGoodsRecordException;
    /**
     * 保存单个商品分享记录
     * @param uid
     * @param auctionId
     * @param type
     * @throws UserShareGoodsRecordException
     */
    public Long saveSingleShareRecord(Long uid, Long auctionId) throws UserShareGoodsRecordException;
}
fanli/src/main/java/com/yeshi/fanli/vo/dynamic/DynamicClassVO.java
New file
@@ -0,0 +1,40 @@
package com.yeshi.fanli.vo.dynamic;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
public class DynamicClassVO {
    @Expose
    private Long id;
    @Expose
    private String name;
    @Expose
    private List<GoodsClass> listSub;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<GoodsClass> getListSub() {
        return listSub;
    }
    public void setListSub(List<GoodsClass> listSub) {
        this.listSub = listSub;
    }
}