admin
2020-01-07 beabe755bb9c47a6af3f195f219dad3af30608ec
微信小程序的动态添加
1个文件已删除
7个文件已修改
5个文件已添加
686 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/WXMPDynamicInfoDao.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/goods/jd/NYouHuiGoodsDao.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/WXMPDynamicInfo.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/goods/jd/NYouHuiGoods.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/exception/dynamic/WXMPDynamicInfoException.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/TestJob.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/WXMPDynamicInfoServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/jd/NYouHuiServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/WXMPDynamicInfoService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/jd/NYouHuiService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/dynamic/WXMPDynamicInfoDao.java
New file
@@ -0,0 +1,82 @@
package com.yeshi.fanli.dao.dynamic;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
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.dao.MongodbBaseDao;
import com.yeshi.fanli.entity.dynamic.WXMPDynamicInfo;
@Repository
public class WXMPDynamicInfoDao extends MongodbBaseDao<WXMPDynamicInfo> {
    @Resource
    private MongoTemplate mongoTemplate;
    /**
     *
     * @Title: list
     * @Description: 列表查询
     * @param start
     * @param count
     * @return
     * List<WXMPDynamicInfo> 返回类型
     * @throws
     */
    public List<WXMPDynamicInfo> list(int start, int count) {
        Query query = new Query();
        List<Order> orders = new ArrayList<>();
        orders.add(new Order(Direction.DESC, "createTime"));
        query.with(new Sort(orders));
        query.skip(start);
        query.limit(count);
        return mongoTemplate.find(query, WXMPDynamicInfo.class);
    }
    /**
     *
     * @Title: count
     * @Description: 数量查询
     * @return
     * long 返回类型
     * @throws
     */
    public long count() {
        Query query = new Query();
        return mongoTemplate.count(query, WXMPDynamicInfo.class);
    }
    /**
     *
     * @Title: addShareCount
     * @Description: 添加分享次数
     * @param id
     * void 返回类型
     * @throws
     */
    public void addShareCount(String id) {
        WXMPDynamicInfo info = get(id);
        if (info == null) {
            return;
        }
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        Update update = new Update();
        if (info.getShareCount() != null)
            update.set("shareCount", info.getShareCount() + 1);
        else
            update.set("shareCount", 1);
        mongoTemplate.updateFirst(query, update, WXMPDynamicInfo.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/goods/jd/NYouHuiGoodsDao.java
@@ -16,6 +16,15 @@
@Repository
public class NYouHuiGoodsDao extends MongodbBaseDao<NYouHuiGoods> {
    /**
     *
     * @Title: selectByName
     * @Description: 根据名字查询
     * @param name
     * @return
     * NYouHuiGoods 返回类型
     * @throws
     */
    public NYouHuiGoods selectByName(String name) {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is(name));
@@ -26,4 +35,37 @@
        return mongoTemplate.findOne(query, NYouHuiGoods.class);
    }
    /**
     *
     * @Title: list
     * @Description: 查询列表
     * @param start
     * @param count
     * @return
     * List<NYouHuiGoods> 返回类型
     * @throws
     */
    public List<NYouHuiGoods> list(int start, int count) {
        Query query = new Query();
        List<Order> orders = new ArrayList<>();
        orders.add(new Order(Direction.DESC, "updateTime"));
        query.with(new Sort(orders));
        query.skip(start);
        query.limit(count);
        return mongoTemplate.find(query, NYouHuiGoods.class);
    }
    /**
     *
     * @Title: count
     * @Description: 查询数量
     * @return
     * long 返回类型
     * @throws
     */
    public long count() {
        Query query = new Query();
        return mongoTemplate.count(query, NYouHuiGoods.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/WXMPDynamicInfo.java
New file
@@ -0,0 +1,126 @@
package com.yeshi.fanli.entity.dynamic;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import com.google.gson.annotations.Expose;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
@Document(collection = "wxmpDynamicInfo")
public class WXMPDynamicInfo implements Serializable {
    public final static int SOURCE_NYH = 11;// 内优惠
    public final static int SOURCE_OWN = 20;// 自有编辑
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Id
    @Expose
    @Field("id")
    private String id;
    // 发布用户
    @Expose
    @Field("user")
    private ActivityUser user;
    // 图片内容
    @Expose
    @Field("imgs")
    private List<GoodsPicture> imgs;
    // 文案
    @Expose
    @Field("content")
    private String content;
    // 来源
    @Field("source")
    private Integer source;
    // 分享次数
    @Field("shareCount")
    private Integer shareCount;
    // 分享赚的资金
    @Field("shareMoney")
    private BigDecimal shareMoney;
    // 创建时间
    @Expose
    @Field("createTime")
    private Date createTime;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public ActivityUser getUser() {
        return user;
    }
    public void setUser(ActivityUser user) {
        this.user = user;
    }
    public List<GoodsPicture> getImgs() {
        return imgs;
    }
    public void setImgs(List<GoodsPicture> imgs) {
        this.imgs = imgs;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Integer getSource() {
        return source;
    }
    public void setSource(Integer source) {
        this.source = source;
    }
    public Integer getShareCount() {
        return shareCount;
    }
    public void setShareCount(Integer shareCount) {
        this.shareCount = shareCount;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public BigDecimal getShareMoney() {
        return shareMoney;
    }
    public void setShareMoney(BigDecimal shareMoney) {
        this.shareMoney = shareMoney;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/goods/jd/NYouHuiGoods.java
@@ -6,6 +6,9 @@
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.yeshi.utils.StringUtil;
import com.google.gson.Gson;
@Document(collection = "jdGoodsNYouHui")
public class NYouHuiGoods {
@@ -99,4 +102,19 @@
    public void setSourceUrl(String sourceUrl) {
        this.sourceUrl = sourceUrl;
    }
    /**
     *
     * @Title: toId
     * @Description: 转化唯一主键ID
     * @return
     * String 返回类型
     * @throws
     */
    public String toId() {
        String idStr = this.name;
        idStr += "#";
        idStr += new Gson().toJson(this.skuList);
        return StringUtil.Md5(idStr);
    }
}
fanli/src/main/java/com/yeshi/fanli/exception/dynamic/WXMPDynamicInfoException.java
New file
@@ -0,0 +1,16 @@
package com.yeshi.fanli.exception.dynamic;
import com.yeshi.fanli.exception.BaseException;
public class WXMPDynamicInfoException extends BaseException {
    private static final long serialVersionUID = 1L;
    public WXMPDynamicInfoException(int code, String msg) {
        super(code, msg);
    }
    public WXMPDynamicInfoException() {
        super();
    }
}
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.job;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -9,33 +11,66 @@
import org.springframework.stereotype.Component;
import org.yeshi.utils.DateUtil;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo;
import com.yeshi.fanli.entity.dynamic.GoodsPicture;
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.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityService;
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.dynamic.WXMPDynamicInfoService;
import com.yeshi.fanli.service.inter.goods.jd.NYouHuiService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.jd.JDUtil;
@Component
public class DynamicInfoJob {
    @Resource
    private DynamicInfoService dynamicInfoService;
    @Resource
    private ActivityService activityService;
    @Resource
    private NYouHuiService nyouHuiService;
    @Resource
    private ActivityUserService activityUserService;
    @Resource
    private WXMPDynamicInfoService wxmpDynamicInfoService;
    
    @Resource
    private ConvertLinkManager convertLinkManager;
    @Resource
    private HongBaoManageService hongBaoManageService;
    @Resource
    private JumpDetailV2Service jumpDetailV2Service;
    /**
     * 每10分钟  晚上00:00~06:00不下发任何一个商品
     */
    @Scheduled(cron = "0 0/10 6-23 * * ?")
    public void insetDynamicInfo() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertTimeHotSale();
        } catch (Exception e) {
@@ -45,8 +80,7 @@
                e1.printStackTrace();
            }
        }
        try {
            dynamicInfoService.insertTimeRecommend();
        } catch (Exception e) {
@@ -57,18 +91,17 @@
            }
        }
    }
    /**
     * 早上6,7,15,16,21,22,23点更新1次
     */
    @Scheduled(cron = "0 0 6,7,15,16,21,22,23 * * ? ")
    public void insetShopInfo1() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertShopInfo();
        } catch (Exception e) {
@@ -79,17 +112,17 @@
            }
        }
    }
    /**
     * 早上8:00~10:00每半个小时更新
     */
    @Scheduled(cron = "0 0/30 8,9,10 * * ?")
    public void insetShopInfo2() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertShopInfo();
        } catch (Exception e) {
@@ -100,18 +133,17 @@
            }
        }
    }
    /**
     * 早上11:00~14:00每半个小时更新
     */
    @Scheduled(cron = "0 0/30 11,12,13,14 * * ?")
    public void insetShopInfo3() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertShopInfo();
        } catch (Exception e) {
@@ -122,18 +154,17 @@
            }
        }
    }
    /**
     * 下午17:00~20:00每半个小时更新
     */
    @Scheduled(cron = "0 0/30 17,18,19,20 * * ? ")
    public void insetShopInfo4() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertShopInfo();
        } catch (Exception e) {
@@ -143,19 +174,18 @@
                e1.printStackTrace();
            }
        }
    }
    }
    /**
     * 每天零点删除3天之前数据
     */
    @Scheduled(cron = "0 0 1,10 * * ?")
    public void remove() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            LogHelper.test("DynamicInfoJob-remove-开始执行态");
            dynamicInfoService.removeByDate(DateUtil.reduceDay(2, new Date()));
@@ -167,46 +197,45 @@
            }
        }
    }
    /**
     *  后台编辑动态: 每3分钟检索
     */
    @Scheduled(cron = "0 0/3 * * * ?")
    public void activityNeedPublish() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            List<RecommendActivity> list = activityService.getNeedPublish();
            if (list == null || list.size() == 0) {
                return;
            }
            for (RecommendActivity activity : list) {
                Integer type = activity.getType();
                if (RecommendActivity.TYPE_SHARE_GOODS == type) {
                    // 商品动态
                    dynamicInfoService.insertActivityRecommend(activity);
                    activity.setState(1);
                    activityService.updateByPrimaryKeySelective(activity);
                } else if (RecommendActivity.TYPE_INVITE == type) {
                    // 邀请素材
                    RecommendActivityInviteInfo inviteInfo = activityService.getRecommendActivityInviteInfoByActivityId(activity.getId());
                    RecommendActivityInviteInfo inviteInfo = activityService
                            .getRecommendActivityInviteInfoByActivityId(activity.getId());
                    activity.setInviteInfo(inviteInfo);
                    dynamicInfoService.insertInviteActivity(activity);
                    activity.setState(1);
                    activityService.updateByPrimaryKeySelective(activity);
                }
            }
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e);
@@ -215,18 +244,17 @@
            }
        }
    }
    /**
     * 每天6点天更新邀请素材
     */
    @Scheduled(cron = "0 0 6 * * ?")
    public void insertTimeInvite() {
        if (!Constant.IS_TASK) {
            return;
        }
        try {
            dynamicInfoService.insertTimeInvite();
        } catch (Exception e) {
@@ -237,6 +265,92 @@
            }
        }
    }
    /**
     *
     * @Title: demoJobHandler
     * @Description: 更新小程序动态商品
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("dynamic-updateWXMPDynamicInfo")
    public ReturnT<String> updateWXMPDynamicInfoHandler(String param) throws Exception {
        addJDNYHInfo();
        return ReturnT.SUCCESS;
    }
    /**
     * 添加内优惠相关商品
     * @Title: addJDNYHInfo
     * @Description:
     * void 返回类型
     * @throws
     */
    private void addJDNYHInfo() throws Exception {
        List<NYouHuiGoods> list = nyouHuiService.list(1, 1);
        if (list != null && list.size() > 0) {
            NYouHuiGoods goods = list.get(0);
            String id = goods.toId();
            WXMPDynamicInfo info = new WXMPDynamicInfo();
            info.setId(WXMPDynamicInfo.SOURCE_NYH + "#" + id);
            String desc = goods.getDesc();
            info.setSource(WXMPDynamicInfo.SOURCE_NYH);
            info.setUser(activityUserService.getRandomHaoHuo());
            // 做链接转换
            for (String link : goods.getLinkList()) {
                desc = desc.replaceFirst("\\[链接\\]", link);
            }
            desc = convertLinkManager.convertJDLinkFromText(desc, 0L, true);
            info.setContent(desc);
            List<JDGoods> goodsList = JDApiUtil.queryGoodsDetail(goods.getSkuList());
            List<GoodsPicture> imgs = new ArrayList<>();
            BigDecimal totalMoney = new BigDecimal(0);
            List<String> lastPicture = new ArrayList<>();
            for (JDGoods jdGoods : goodsList) {
                GoodsPicture picture = new GoodsPicture();
                BigDecimal money = JDUtil.getGoodsFanLiMoney(jdGoods, hongBaoManageService.getShareRate());
                totalMoney = totalMoney.add(money);
                picture.setGoodsVO(
                        GoodsDetailVOFactory.convertJDGoods(jdGoods,
                                new ConfigParamsDTO(hongBaoManageService.getFanLiRate(),
                                        hongBaoManageService.getShareRate(), null,
                                        hongBaoManageService.getVIPFanLiRate())));
                picture.setGoodState(0);
                picture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail"));
                picture.setParams(null);
                picture.setUrl(jdGoods.getPicUrl());
                imgs.add(picture);
                if (jdGoods.getImageList() != null)
                    if (jdGoods.getImageList().size() > 4)
                        lastPicture.addAll(jdGoods.getImageList().subList(1, 4));
                    else if (jdGoods.getImageList().size() > 1)
                        lastPicture.addAll(jdGoods.getImageList().subList(1, jdGoods.getImageList().size()));
            }
            int count = 0;
            while (imgs.size() < 4 && count < 4) {
                count++;
                String picurl = lastPicture.get((int) (lastPicture.size() * Math.random()));
                if (picurl != null) {
                    lastPicture.remove(picurl);
                    GoodsPicture picture = new GoodsPicture();
                    picture.setUrl(picurl);
                    imgs.add(picture);
                }
            }
            info.setImgs(imgs);
            wxmpDynamicInfoService.addWXMPDynamicInfo(info);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/job/TestJob.java
File was deleted
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/WXMPDynamicInfoServiceImpl.java
New file
@@ -0,0 +1,75 @@
package com.yeshi.fanli.service.impl.dynamic;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.yeshi.utils.StringUtil;
import com.yeshi.fanli.dao.dynamic.WXMPDynamicInfoDao;
import com.yeshi.fanli.entity.dynamic.WXMPDynamicInfo;
import com.yeshi.fanli.exception.dynamic.WXMPDynamicInfoException;
import com.yeshi.fanli.service.inter.dynamic.WXMPDynamicInfoService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
@Service
public class WXMPDynamicInfoServiceImpl implements WXMPDynamicInfoService {
    @Resource
    private WXMPDynamicInfoDao wxmpDynamicInfoDao;
    @Resource
    private ConvertLinkManager convertLinkManager;
    @Override
    public void addWXMPDynamicInfo(WXMPDynamicInfo info) throws WXMPDynamicInfoException {
        if (StringUtil.isNullOrEmpty(info.getContent()))
            throw new WXMPDynamicInfoException(1, "无文案");
        if (info.getSource() == null)
            throw new WXMPDynamicInfoException(1, "无来源");
        if (info.getUser() == null)
            throw new WXMPDynamicInfoException(1, "无发布用户");
        if (info.getId() == null)
            info.setId(StringUtil.Md5(UUID.randomUUID().toString()));
        if (info.getCreateTime() == null)
            info.setCreateTime(new Date());
        info.setShareCount(0);
        if (wxmpDynamicInfoDao.get(info.getId()) != null)
            throw new WXMPDynamicInfoException(2, "动态已存在");
        wxmpDynamicInfoDao.save(info);
    }
    @Override
    public List<WXMPDynamicInfo> listDynamicInfo(int page, int pageSize) {
        return wxmpDynamicInfoDao.list((page - 1) * pageSize, pageSize);
    }
    @Override
    public Long countDynamicInfo() {
        return wxmpDynamicInfoDao.count();
    }
    @Override
    public String copyContent(String id, Long uid) throws WXMPDynamicInfoException {
        // 转链
        WXMPDynamicInfo info = wxmpDynamicInfoDao.get(id);
        if (info == null)
            throw new WXMPDynamicInfoException(1, "信息不存在");
        // 转链
        String convertContent = null;
        try {
            convertContent = convertLinkManager.convertLinkFromText(info.getContent(), uid, true);
        } catch (Exception e) {
            throw new WXMPDynamicInfoException(2, e.getMessage());
        }
        wxmpDynamicInfoDao.addShareCount(id);
        return convertContent;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/jd/NYouHuiServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.goods.jd;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -24,7 +25,7 @@
        if (goods.getSkuId() == null || StringUtil.isNullOrEmpty(goods.getDesc())
                || StringUtil.isNullOrEmpty(goods.getName()))
            return;
        if(goods.getUpdateTime()==null)
        if (goods.getUpdateTime() == null)
            goods.setUpdateTime(new Date());
        nyouHuiGoodsDao.save(goods);
    }
@@ -34,4 +35,14 @@
        return nyouHuiGoodsDao.selectByName(name);
    }
    @Override
    public List<NYouHuiGoods> list(int page, int pageSize) {
        return nyouHuiGoodsDao.list((page - 1) * pageSize, pageSize);
    }
    @Override
    public long count() {
        return nyouHuiGoodsDao.count();
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/WXMPDynamicInfoService.java
New file
@@ -0,0 +1,59 @@
package com.yeshi.fanli.service.inter.dynamic;
import java.util.List;
import com.yeshi.fanli.entity.dynamic.WXMPDynamicInfo;
import com.yeshi.fanli.exception.dynamic.WXMPDynamicInfoException;
/**
 * 微信小程序动态商品服务
 * @author Administrator
 *
 */
public interface WXMPDynamicInfoService {
    /**
     *
     * @Title: addWXMPDynamicInfo
     * @Description: 添加微信小程序动态信息
     * @param info
     * @throws WXMPDynamicInfoException
     * void 返回类型
     * @throws
     */
    public void addWXMPDynamicInfo(WXMPDynamicInfo info) throws WXMPDynamicInfoException;
    /**
     *
     * @Title: listDynamicInfo
     * @Description: 动态列表
     * @param page
     * @param pageSize
     * @return
     * List<WXMPDynamicInfo> 返回类型
     * @throws
     */
    public List<WXMPDynamicInfo> listDynamicInfo(int page, int pageSize);
    /**
     *
     * @Title: countDynamicInfo
     * @Description: 动态总数量
     * @return
     * Long 返回类型
     * @throws
     */
    public Long countDynamicInfo();
    /**
     *
     * @Title: copyContent
     * @Description: 复制动态文案
     * @param id
     * @return
     * String 返回类型
     * @throws
     */
    public String copyContent(String id,Long uid) throws WXMPDynamicInfoException;
}
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/jd/NYouHuiService.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.service.inter.goods.jd;
import java.util.List;
import com.yeshi.fanli.entity.goods.jd.NYouHuiGoods;
public interface NYouHuiService {
@@ -19,4 +21,26 @@
     */
    public NYouHuiGoods selectByName(String name);
    /**
     *
     * @Title: list
     * @Description: 查询列表
     * @param page
     * @param pageSize
     * @return
     * List<NYouHuiGoods> 返回类型
     * @throws
     */
    public List<NYouHuiGoods> list(int page, int pageSize);
    /**
     *
     * @Title: count
     * @Description: 计算所有的数量
     * @return
     * long 返回类型
     * @throws
     */
    public long count();
}
fanli/src/main/java/com/yeshi/fanli/service/manger/goods/ConvertLinkManager.java
@@ -49,7 +49,7 @@
     * @throws
     */
    private String convertJDLinkFromText(String text, Long uid, boolean share) throws Exception {
    public String convertJDLinkFromText(String text, Long uid, boolean share) throws Exception {
        StringBuilder builder = new StringBuilder(text);
        String newText = builder.toString();
fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -190,6 +190,20 @@
        return null;
    }
    public static List<JDGoods> queryGoodsDetail(List<Long> skuIdList) {
        JDFilter filter = new JDFilter();
        filter.setPageIndex(1);
        filter.setPageSize(20);
        filter.setListId(skuIdList);
        JDSearchResult searchResult = queryByKey(filter);
        if (searchResult != null) {
            List<JDGoods> list = searchResult.getGoodsList();
            if (list != null && list.size() > 0)
                return list;
        }
        return null;
    }
    /**
     * 通过商品搜索接口批量获取详情
     *