admin
2019-12-03 ad1c19461fee4c7c4a26795bef75d26f9738faf1
多图分享修改
10个文件已修改
368 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareStorageControllerV2.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/ShameUserInviteCodePublishJOB.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserGoodsStorageService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserShareGoodsRecordService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/goods/ShareInfoVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -158,17 +158,22 @@
    private UserTaoLiJinRecordService userTaoLiJinRecordService;
    /**
     * 获取淘宝的分享链接
     * 
     * @param acceptData
     * @param uid
     *            -用户ID
     * @param auctionId-商品ID
     * @param goodsId-商品ID
     * @param source
     * @param totalNum
     * @param goodsType
     * @param needGoods
     *            -是否需要商品信息
     * @param request
     * @param out
     */
    @RequestMapping(value = "createShareInfo")
    public void createShareInfo(AcceptData acceptData, Long uid, Long goodsId, String source, Integer totalNum,
            Integer goodsType, HttpServletRequest request, PrintWriter out) {
            Integer goodsType, Boolean needGoods, HttpServletRequest request, PrintWriter out) {
        if (uid == null || uid <= 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户ID不能为空"));
            return;
@@ -194,19 +199,19 @@
        // 淘宝
        if (goodsType == null || goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, request, out);
            createTaoBaoShare(acceptData, uid, goodsId, totalNum, source, needGoods, request, out);
            return;
        }
        // 京东
        if (goodsType == Constant.SOURCE_TYPE_JD) {
            createJDShare(acceptData, uid, goodsId, source, out);
            createJDShare(acceptData, uid, goodsId, source, needGoods, out);
            return;
        }
        // 拼多多
        if (goodsType == Constant.SOURCE_TYPE_PDD) {
            createPDDShare(acceptData, uid, goodsId, source, out);
            createPDDShare(acceptData, uid, goodsId, source, needGoods, out);
            return;
        }
    }
@@ -238,7 +243,10 @@
     * @param out
     */
    public void createTaoBaoShare(AcceptData acceptData, Long uid, Long goodsId, Integer totalNum, String source,
            HttpServletRequest request, PrintWriter out) {
            Boolean needGoods, HttpServletRequest request, PrintWriter out) {
        if (needGoods == null)
            needGoods = false;
        UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid);
        UserInfoExtra userExtraInfo = userInfoExtraService.getUserInfoExtra(uid);
        String inviteCode = null;
@@ -267,6 +275,13 @@
            // 测试
            TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, goodsId, relationId);
            if (taoBaoLink != null && taoBaoLink.getGoods() != null && needGoods) {
                ConfigParamsDTO dto = new ConfigParamsDTO(hongBaoManageService.getFanLiRate(),
                        hongBaoManageService.getShareRate(), new BigDecimal(80));
                GoodsDetailVO goodsInfo = GoodsDetailVOFactory.convertTaoBao(taoBaoLink.getGoods(), dto);
                shareInfo.setGoodsInfo(goodsInfo);
            }
            String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
                    Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY),
@@ -598,7 +613,8 @@
     * @param request
     * @param out
     */
    public void createJDShare(AcceptData acceptData, Long uid, Long goodsId, String source, PrintWriter out) {
    public void createJDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods,
            PrintWriter out) {
        JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
        if (jdGoods == null) {
            out.print(JsonUtil.loadFalseResult(1, "该商品已下架"));
@@ -617,7 +633,8 @@
            couponUrl = couponInfo.getLink();
        }
        String materialId = "https://item.jd.com/" + goodsId + ".html";
        String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", uid + "");
        String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
                uid + "");
        ShareInfoVO shareInfo = new ShareInfoVO();
        shareInfo.setClickUrl(jumpLink);
@@ -625,6 +642,10 @@
        shareInfo.setRule(configService.get("share_rule_link_jd"));
        shareInfo.setPictUrl(jdGoods.getPicUrl());
        shareInfo.setCommentTexts(new ArrayList<>());
        if (needGoods)
            shareInfo.setGoodsInfo(GoodsDetailVOFactory.convertJDGoods(jdGoods, new ConfigParamsDTO(
                    hongBaoManageService.getFanLiRate(), hongBaoManageService.getShareRate(), new BigDecimal(80))));
        String shareText = "";
        boolean hasCoupon = false;
@@ -716,7 +737,8 @@
     * @param source
     * @param out
     */
    public void createPDDShare(AcceptData acceptData, Long uid, Long goodsId, String source, PrintWriter out) {
    public void createPDDShare(AcceptData acceptData, Long uid, Long goodsId, String source, boolean needGoods,
            PrintWriter out) {
        PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
        if (goods == null) {
            out.print(JsonUtil.loadFalseResult(1, "该商品已下架"));
@@ -737,6 +759,10 @@
        shareInfo.setCommentTexts(new ArrayList<>());
        shareInfo.setRule(configService.get("share_rule_link_pdd"));
        shareInfo.setPictUrl(goods.getGoodsImageUrl());
        if (needGoods) {
            shareInfo.setGoodsInfo(GoodsDetailVOFactory.convertPDDGoods(goods, new ConfigParamsDTO(
                    hongBaoManageService.getFanLiRate(), hongBaoManageService.getShareRate(), new BigDecimal(80))));
        }
        String template = "";
        boolean hasCoupon = false;
@@ -1020,7 +1046,8 @@
            couponUrl = couponInfo.getLink();
        }
        String materialId = "https://item.jd.com/" + goodsId + ".html";
        String shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", uid + "");
        String shortLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
                uid + "");
        String content = shareGoodsTextTemplateService.createContentByTemplateJD(template, uid, goods, shortLink,
                hasCoupon);
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareStorageControllerV2.java
@@ -31,6 +31,7 @@
import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
@@ -57,10 +58,8 @@
    @Resource
    private UserGoodsStorageService userGoodsStorageService;
    /**
     *  单个商品加入选品库
     * 单个商品加入选品库
     * 
     * @param callback
     * @param storageIds
@@ -74,11 +73,11 @@
            out.print(JsonUtil.loadFalseResult("用户未登录"));
            return;
        }
        if (goodsType == null) {
            goodsType = Constant.SOURCE_TYPE_TAOBAO;
        }
        try {
            UserGoodsStorage userGoodsStorage = userGoodsStorageService.getByUidAndAuctionId(uid, id, goodsType);
            boolean storageState = false;
@@ -92,7 +91,7 @@
                userGoodsStorageService.save(uid, set, goodsType);
                storageState = true;
            }
            JSONObject data = new JSONObject();
            data.put("storageState", storageState);
            out.print(JsonUtil.loadTrueResult(data));
@@ -101,13 +100,15 @@
            e.printStackTrace();
        }
    }
    /**
     * 批量添加选品库
     * 
     * @param acceptData
     * @param uid        用户id
     * @param ids        简版商品id
     * @param uid
     *            用户id
     * @param ids
     *            简版商品id
     * @param out
     */
    @RequestMapping(value = "addStorage", method = RequestMethod.POST)
@@ -132,8 +133,10 @@
     * 查询用户选品库数据
     * 
     * @param acceptData
     * @param page       页码 初始值 1
     * @param uid        用户id
     * @param page
     *            页码 初始值 1
     * @param uid
     *            用户id
     * @param out
     */
    @RequestMapping(value = "getlist", method = RequestMethod.POST)
@@ -252,7 +255,6 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 分享商品返回二维码图片
     * 
@@ -268,7 +270,7 @@
            out.print(JsonUtil.loadFalseResult("分享商品不能为空"));
            return;
        }
        if (uid == null) {
            out.print(JsonUtil.loadFalseResult("用户未登录"));
            return;
@@ -276,19 +278,28 @@
        try {
            Gson gson = new Gson();
            List<Long> listStorageID = gson.fromJson(storageIds, new TypeToken<ArrayList<Long>>() {}.getType());
            if (listStorageID == null || listStorageID.size() < 9) {
                out.print(JsonUtil.loadFalseResult("分享商品数量不足"));
                return;
            }
            if (listStorageID.size() != 9) {
                out.print(JsonUtil.loadFalseResult("分享商品数量只能是9个"));
                return;
            List<Long> listStorageID = gson.fromJson(storageIds, new TypeToken<ArrayList<Long>>() {
            }.getType());
            if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
                if (listStorageID == null || listStorageID.size() < 9) {
                    out.print(JsonUtil.loadFalseResult("分享商品数量不足"));
                    return;
                }
                if (listStorageID.size() != 9) {
                    out.print(JsonUtil.loadFalseResult("分享商品数量只能是9个"));
                    return;
                }
                JSONObject data = userGoodsStorageService.createShareV2(uid, listStorageID, true);
                out.print(JsonUtil.loadTrueResult(data));
            } else {
                JSONObject data = userGoodsStorageService.createShareV2(uid, listStorageID, false);
                out.print(JsonUtil.loadTrueResult(data));
            }
            JSONObject data = userGoodsStorageService.createShareV2(uid, listStorageID);
            out.print(JsonUtil.loadTrueResult(data));
        } catch (UserGoodsStorageException e) {
            out.print(JsonUtil.loadFalseResult("分享失败"));
            e.printStackTrace();
fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java
@@ -59,6 +59,11 @@
            array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, "100", null)));
        }
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(array)));
    }
    /**
fanli/src/main/java/com/yeshi/fanli/job/ShameUserInviteCodePublishJOB.java
@@ -12,6 +12,7 @@
import com.yeshi.fanli.entity.integral.CodePublishRecord;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.integral.CodePublishRecordService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.TimeUtil;
/**
@@ -32,8 +33,8 @@
    // 7点到23点每10分钟执行一次
    @Scheduled(cron = "0 0/10 7-23 * * ? ")
    public void publish() {
        // if (!Constant.IS_TASK)
        // return;
        if (!Constant.IS_TASK)
            return;
        long time = System.currentTimeMillis();
        int day = TimeUtil.getDayDifferenceCount(new Date(TimeUtil.convertToTimeTemp("2019-11-28", "yyyy-MM-dd")),
                new Date());
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
@@ -48,25 +48,25 @@
@Service
public class UserGoodsStorageServiceImpl implements UserGoodsStorageService {
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
    @Resource
    private RedisManager redisManager;
    @Resource
    private ConfigService configService;
    @Resource
    private CommonGoodsService commonGoodsService;
    @Resource
    private HongBaoManageService manageService;
    @Resource
    private UserGoodsStorageMapper userGoodsStorageMapper;
    @Resource
    private UserShareGoodsRecordService userShareGoodsRecordService;
    @Resource
@@ -112,9 +112,10 @@
    public int deleteBatchByPrimaryKey(List<Long> list) {
        return userGoodsStorageMapper.deleteBatchByPrimaryKey(list);
    }
    /**
     * 根据主键 、uid 批量删除
     *
     * @param list
     * @return
     */
@@ -127,7 +128,7 @@
    public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid, Integer source) {
        return userGoodsStorageMapper.listQueryByUid(start, count, uid, source);
    }
    @Override
    public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId, Integer goodsType) {
        return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId, goodsType);
@@ -137,7 +138,7 @@
    public long countQueryByUid(Long uid, Integer source) {
        return userGoodsStorageMapper.countQueryByUid(uid, source);
    }
    @Override
    public void save(Long uid, Set<Long> auctionIds, Integer goodsType) throws UserGoodsStorageException {
@@ -152,11 +153,11 @@
        for (Long auctionId : auctionIds) {
            CommonGoods commonGoods = null;
            if (goodsType == null) {
                 goodsType = Constant.SOURCE_TYPE_TAOBAO;
            }
                goodsType = Constant.SOURCE_TYPE_TAOBAO;
            }
            if (goodsType == Constant.SOURCE_TYPE_JD) {
                // 京东
                // 京东
                JDGoods jdGoods = JDApiUtil.queryGoodsDetail(auctionId);
                if (jdGoods == null) {
                    jdGoods = JDApiUtil.getGoodsDetail(auctionId);
@@ -165,9 +166,9 @@
                    throw new UserGoodsStorageException(1, auctionId + "商品已下架");
                }
                commonGoods = CommonGoodsFactory.create(jdGoods);
            } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
                // 拼多多
                // 拼多多
                PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(auctionId);
                if (pddGoods == null) {
                    throw new UserGoodsStorageException(1, auctionId + "商品已下架");
@@ -183,8 +184,7 @@
                    throw new UserGoodsStorageException(1, auctionId + "商品已下架");
                }
            }
            if (commonGoods != null) {
                try {
                    commonGoodsService.addOrUpdateCommonGoods(commonGoods);
@@ -204,7 +204,8 @@
                    userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
                } else {
                    goodsStorage = new UserGoodsStorage();
                    goodsStorage.setUid(uid);;
                    goodsStorage.setUid(uid);
                    ;
                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
                    goodsStorage.setCommonGoods(commonGoods);
                    goodsStorage.setCreateTime(new Date());
@@ -215,7 +216,6 @@
        }
    }
    @Override
    @Transactional
    public void addCommonGoods(Long uid, Set<Long> ids) throws UserGoodsStorageException {
@@ -240,7 +240,8 @@
                    userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
                } else {
                    goodsStorage = new UserGoodsStorage();
                    goodsStorage.setUid(uid);;
                    goodsStorage.setUid(uid);
                    ;
                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
                    goodsStorage.setCommonGoods(commonGoods);
                    goodsStorage.setCreateTime(new Date());
@@ -251,21 +252,20 @@
        }
    }
    @Override
    public JSONArray getMyStorage(int page, int pageSize, Long uid, Integer source) throws UserGoodsStorageException {
        JSONArray array = new JSONArray();
        List<UserGoodsStorage> listStorage = listQueryByUid(page , pageSize, uid, source);
        List<UserGoodsStorage> listStorage = listQueryByUid(page, pageSize, uid, source);
        if (listStorage == null || listStorage.size() == 0) {
            return array;
        }
        if (source == null) {
            source = Constant.SOURCE_TYPE_TAOBAO;
        }
        List<TaoBaoGoodsBrief> listTaoKeGoods = null;
        if (source == Constant.SOURCE_TYPE_TAOBAO) {
            List<Long> listGid = new ArrayList<Long>();
@@ -276,7 +276,7 @@
                }
                listGid.add(commonGoods.getGoodsId());
            }
            // API网络接口验证是否在售
            try {
                listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
@@ -288,27 +288,25 @@
                e.printStackTrace();
            }
        }
        BigDecimal  rate = manageService.getFanLiRate();
        BigDecimal rate = manageService.getFanLiRate();
        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
        for (UserGoodsStorage userGoodsStorage : listStorage) {
            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
            if (commonGoods == null) {
                continue;
            }
            int state = 0;
            Integer goodsType = commonGoods.getGoodsType();
            if (listTaoKeGoods != null && listTaoKeGoods.size() > 0
                    && goodsType != null && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
                state = 1;  // 默认停售
            if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null
                    && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
                state = 1; // 默认停售
                Long goodsId = commonGoods.getGoodsId();
                for (TaoBaoGoodsBrief taoKeGoods: listTaoKeGoods) {
                for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                    Long auctionId = taoKeGoods.getAuctionId();
                    if (goodsId == auctionId || goodsId.equals(auctionId)) {
                        state = 0; // 在售
@@ -318,7 +316,7 @@
            }
            commonGoods.setState(state);
            TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
            // 判断是否已分享
            Integer storageState = userGoodsStorage.getState();
            if (storageState != null && storageState == UserGoodsStorage.STATE_SHARED) {
@@ -327,19 +325,18 @@
                    goodsBrief.setState(2); // 已分享状态 优先显示已下架
                }
            }
            String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, rate.toString(), null));
            JSONObject dataObject = new JSONObject();
            dataObject.put("storageId", userGoodsStorage.getId());
            dataObject.put("goods", json);
            array.add(dataObject);
        }
        return array;
    }
    @Override
    public boolean isExistStorage(Long uid, Long auctionId, Integer goodType) {
        boolean state = false;
@@ -351,19 +348,19 @@
        }
        return state;
    }
    @Override
    public JSONObject shareGoods(Long uid, List<Long> listStorageID)
    public JSONObject shareGoods(Long uid, List<Long> listStorageID)
            throws UserGoodsStorageException, UserShareGoodsRecordException {
        List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
        if (listStorage == null || listStorage.size() == 0) {
            throw new UserGoodsStorageException(1, "选品库商品不存在");
        }
        List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
        // 还原顺序 用于制图
        for (Long sid: listStorageID) {
            for (UserGoodsStorage torage: listStorage) {
        for (Long sid : listStorageID) {
            for (UserGoodsStorage torage : listStorage) {
                Long id = torage.getId();
                if (sid == id || sid.equals(id)) {
                    listResult.add(torage);
@@ -371,45 +368,45 @@
                }
            }
        }
        BigDecimal totalMoney = new BigDecimal(0.00);
        List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
        BigDecimal rate = hongBaoManageService.getShareRate();
        for (UserGoodsStorage userGoodsStorage: listResult) {
        for (UserGoodsStorage userGoodsStorage : listResult) {
            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
            TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
            listGoodsBrief.add(goodsBrief);
            BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate);
            totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
        }
        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief, listStorageID);
        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief,
                listStorageID);
        FileUploadResult uploadResult = new FileUploadResult();
        uploadResult.setUrl(shareRecord.getSharePictureUrl());
        JSONObject data = new JSONObject();
        data.put("revenue", listGoodsBrief.size() + "个商品预估分享奖金:¥"+totalMoney);
        data.put("revenue", listGoodsBrief.size() + "个商品预估分享奖金:¥" + totalMoney);
        data.put("shareId", shareRecord.getRedisKey());
        data.put("shareImg", uploadResult);
        data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
        return data;
    }
    @Override
    public JSONObject createShareV2(Long uid, List<Long> listStorageID) throws UserGoodsStorageException, UserShareGoodsRecordException {
    public JSONObject createShareV2(Long uid, List<Long> listStorageID, boolean needDrawPicture)
            throws UserGoodsStorageException, UserShareGoodsRecordException {
        List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
        if (listStorage == null || listStorage.size() == 0) {
            throw new UserGoodsStorageException(1, "选品库商品不存在");
        }
        List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
        // 还原顺序 用于制图
        for (Long sid: listStorageID) {
            for (UserGoodsStorage torage: listStorage) {
        for (Long sid : listStorageID) {
            for (UserGoodsStorage torage : listStorage) {
                Long id = torage.getId();
                if (sid == id || sid.equals(id)) {
                    listResult.add(torage);
@@ -417,32 +414,33 @@
                }
            }
        }
        BigDecimal totalMoney = new BigDecimal(0.00);
        List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
        Integer goodsType = null;
        BigDecimal rate = hongBaoManageService.getShareRate();
        for (UserGoodsStorage userGoodsStorage: listResult) {
        for (UserGoodsStorage userGoodsStorage : listResult) {
            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
            BigDecimal money = CommonGoodsUtil.getCommission(commonGoods, rate);
            totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
            listCommonGoods.add(commonGoods);
            if (goodsType == null) {
                goodsType = commonGoods.getGoodsType();
            }
        }
        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorageV2(uid, listCommonGoods, listStorageID);
        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorageV2(uid, listCommonGoods,
                listStorageID, needDrawPicture);
        FileUploadResult uploadResult = new FileUploadResult();
        uploadResult.setUrl(shareRecord.getSharePictureUrl());
        JSONObject data = new JSONObject();
        data.put("revenue", listCommonGoods.size() + "个商品预估分享奖金:¥"+totalMoney);
        data.put("revenue", listCommonGoods.size() + "个商品预估分享奖金:¥" + totalMoney);
        data.put("shareId", shareRecord.getRedisKey());
        data.put("shareImg", uploadResult);
        // 提示语不同
        if (goodsType == Constant.SOURCE_TYPE_JD) {
            // 京东
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java
@@ -92,11 +92,9 @@
    @Resource
    private UserGoodsStorageService userGoodsStorageService;
    @Resource
    private IntegralGetService integralGetService;
    @Override
    public int insert(UserShareGoodsRecord record) {
@@ -127,10 +125,10 @@
    public long countQueryByUid(Long uid, String source) {
        return userShareGoodsRecordMapper.countQueryByUid(uid, source);
    }
    @Override
    public List<UserShareGoodsGroup> listByRecordId(Long shareId) {
        return  userShareGoodsGroupService.listByRecordId(shareId);
        return userShareGoodsGroupService.listByRecordId(shareId);
    }
    @Override
@@ -211,12 +209,12 @@
                            }
                        }
                    }
                    String shareType = shareRecord.getShareType();
                    if (StringUtil.isNullOrEmpty(shareType)) {
                        shareRecord.setShareType(UserShareGoodsRecord.SHARETYPE_SINGLE);
                    }
                    BigDecimal totalMoney = shareRecord.getTotalMoney();
                    if (totalMoney == null) {
                        shareRecord.setTotalMoney(new BigDecimal(0));
@@ -228,7 +226,7 @@
                    if (StringUtil.isNullOrEmpty(shareType)) {
                        shareRecord.setShareType(UserShareGoodsRecord.SHARETYPE_SINGLE);
                    }
                    BigDecimal totalMoney = shareRecord.getTotalMoney();
                    if (totalMoney == null) {
                        shareRecord.setTotalMoney(new BigDecimal(0));
@@ -241,8 +239,7 @@
    }
    @Override
    public void saveSingleShareRecord(Long uid, Long goodsId, Integer goodsType)
            throws UserShareGoodsRecordException {
    public void saveSingleShareRecord(Long uid, Long goodsId, Integer goodsType) throws UserShareGoodsRecordException {
        if (goodsId == null) {
            throw new UserShareGoodsRecordException(1, "分享商品不能为空");
        }
@@ -426,9 +423,12 @@
    /**
     * 生成分享图
     * 
     * @param uid       用户id
     * @param shareId   分享记录id
     * @param source    来源
     * @param uid
     *            用户id
     * @param shareId
     *            分享记录id
     * @param source
     *            来源
     * @param listGoods
     * @return
     * @throws UserShareGoodsRecordException
@@ -661,7 +661,8 @@
    }
    @Override
    public ShareGoodsRecordDTO addRecordGoodsDetail(Long uid, Long auctionId, Integer goodsType, boolean isTaolijin) throws UserShareGoodsRecordException {
    public ShareGoodsRecordDTO addRecordGoodsDetail(Long uid, Long auctionId, Integer goodsType, boolean isTaolijin)
            throws UserShareGoodsRecordException {
        if (auctionId == null || uid == null || uid <= 0) {
            throw new UserShareGoodsRecordException(1, "传递参数不正确");
        }
@@ -674,7 +675,7 @@
        recordDTO.setSource(ShareSourceTypeEnum.goodsDetail);
        // 分享id
        String key = StringUtil.Md5(uid + "#GoodsDetail#" + auctionId + "#Type#"+ goodsType);
        String key = StringUtil.Md5(uid + "#GoodsDetail#" + auctionId + "#Type#" + goodsType);
        redisManager.cacheCommonString(key, JsonUtil.getSimpleGson().toJson(recordDTO), 60 * 20);
        recordDTO.setRedisKey(key);
@@ -682,8 +683,8 @@
    }
    @Override
    public ShareGoodsRecordDTO addRecordGoodsStorage(Long uid, List<TaoBaoGoodsBrief> listGoodsBrief, List<Long> listStorageID)
            throws UserShareGoodsRecordException {
    public ShareGoodsRecordDTO addRecordGoodsStorage(Long uid, List<TaoBaoGoodsBrief> listGoodsBrief,
            List<Long> listStorageID) throws UserShareGoodsRecordException {
        if (uid == null || uid <= 0 || listGoodsBrief == null || listGoodsBrief.size() == 0) {
            throw new UserShareGoodsRecordException(1, "传递参数不正确");
        }
@@ -697,11 +698,10 @@
        userShareGoodsRecordMapper.insertSelective(record);
        List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
        for (TaoBaoGoodsBrief goodsBrief: listGoodsBrief) {
        for (TaoBaoGoodsBrief goodsBrief : listGoodsBrief) {
            listCommonGoods.add(CommonGoodsFactory.create(goodsBrief));
        }
        Long id = record.getId();
        // 分享链接
        String shareUrl = getShareUrl(record);
@@ -725,10 +725,10 @@
        return recordDTO;
    }
    @Override
    public ShareGoodsRecordDTO addRecordGoodsStorageV2(Long uid, List<CommonGoods> listGoods, List<Long> listStorageID)
            throws UserShareGoodsRecordException {
    public ShareGoodsRecordDTO addRecordGoodsStorageV2(Long uid, List<CommonGoods> listGoods, List<Long> listStorageID,
            boolean needDrawPicture) throws UserShareGoodsRecordException {
        if (uid == null || uid <= 0 || listGoods == null || listGoods.size() == 0) {
            throw new UserShareGoodsRecordException(1, "传递参数不正确");
        }
@@ -745,7 +745,6 @@
        // 分享链接
        String shareUrl = getShareUrlV2(record);
        // 分享二维码链接
        FileUploadResult uploadResult = drawingSharePicture(uid, id, shareUrl, listGoods);
        ShareGoodsRecordDTO recordDTO = new ShareGoodsRecordDTO();
        recordDTO.setUid(uid);
@@ -753,7 +752,10 @@
        recordDTO.setShareUrl(shareUrl);
        recordDTO.setListId(listStorageID);
        recordDTO.setListGoods(listGoods);
        recordDTO.setSharePictureUrl(uploadResult.getUrl());
        if (needDrawPicture) {
            FileUploadResult uploadResult = drawingSharePicture(uid, id, shareUrl, listGoods);
            recordDTO.setSharePictureUrl(uploadResult.getUrl());
        }
        recordDTO.setSource(ShareSourceTypeEnum.storage);
        // 缓存分享商品信息
@@ -783,10 +785,10 @@
        userShareGoodsRecordMapper.insertSelective(record);
        List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
        for (TaoBaoGoodsBrief goodsBrief: listGoodsBrief) {
        for (TaoBaoGoodsBrief goodsBrief : listGoodsBrief) {
            listCommonGoods.add(CommonGoodsFactory.create(goodsBrief));
        }
        Long id = record.getId();
        // 分享链接
        String shareUrl = getShareUrl(record);
@@ -826,10 +828,10 @@
        userShareGoodsRecordMapper.insertSelective(record);
        List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
        for (TaoBaoGoodsBrief goodsBrief: listGoodsBrief) {
        for (TaoBaoGoodsBrief goodsBrief : listGoodsBrief) {
            listCommonGoods.add(CommonGoodsFactory.create(goodsBrief));
        }
        Long id = record.getId();
        // 分享链接
        String shareUrl = getShareUrl(record);
@@ -872,7 +874,7 @@
        ShareSourceTypeEnum source = recordDTO.getSource();
        if (ShareSourceTypeEnum.goodsDetail.equals(source)) {
            // 商品详情分享
            saveSingleShareRecord(recordDTO.getUid(), recordDTO.getAuctionId(),recordDTO.getGoodsType());
            saveSingleShareRecord(recordDTO.getUid(), recordDTO.getAuctionId(), recordDTO.getGoodsType());
        } else if (ShareSourceTypeEnum.activity.equals(source)) {
            // 动态分享
            UserShareGoodsRecord shareRecord = new UserShareGoodsRecord();
@@ -882,16 +884,16 @@
            updateByPrimaryKeySelective(shareRecord);
            List<CommonGoods> listGoods = recordDTO.getListGoods();
            if (listGoods != null && listGoods.size() > 1)
            if (listGoods != null && listGoods.size() > 1)
                singleGoods = false;
            // 保存商品信息
            multipleGoodsShareRecord(shareId, recordDTO.getListGoods());
        } else if (ShareSourceTypeEnum.storage.equals(source)) {
            // 分享库分享
            singleGoods = false;
            UserShareGoodsRecord shareRecord = new UserShareGoodsRecord();
            shareRecord.setId(shareId);
            shareRecord.setShareState(1);
@@ -900,7 +902,7 @@
            // 保存商品信息
            multipleGoodsShareRecord(shareId, recordDTO.getListGoods());
            // 更新选品库商品状态 为已分享
            List<Long> listId = recordDTO.getListId();
            if (listId != null && listId.size() > 0) {
@@ -912,10 +914,10 @@
                }
            }
        }
        // 清理缓存
        redisManager.removeCommonString(shareKey);
        if (singleGoods) {
            if (taolijin) {
                integralGetService.addShareTLJGoods(uid);
@@ -947,8 +949,7 @@
        }
        return url;
    }
    /**
     * 分享链接
     * 
@@ -959,8 +960,8 @@
        Long uid = shareRecord.getUid();
        Long shareId = shareRecord.getId();
        String url = String.format("http://%s/share_mushGoods_1.6.0.html?uid=%s&shareId=%s",
                configService.getH5Host(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), shareId + "");
        String url = String.format("http://%s/share_mushGoods_1.6.0.html?uid=%s&shareId=%s", configService.getH5Host(),
                AESUtil.encrypt(uid + "", Constant.UIDAESKEY), shareId + "");
        String shortLink = HttpUtil.getShortLink(url);
        if (!StringUtil.isNullOrEmpty(shortLink)) {
@@ -972,9 +973,12 @@
    /**
     * 生成分享图
     * 
     * @param uid       用户id
     * @param shareId   分享记录id
     * @param source    来源
     * @param uid
     *            用户id
     * @param shareId
     *            分享记录id
     * @param source
     *            来源
     * @param listGoods
     * @return
     * @throws UserShareGoodsRecordException
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserGoodsStorageService.java
@@ -105,11 +105,12 @@
     * 创建分享
     * @param uid
     * @param listStorageID
     * @param needDrawPicture是否需要绘图
     * @return
     * @throws UserGoodsStorageException
     * @throws UserShareGoodsRecordException
     */
    public JSONObject createShareV2(Long uid, List<Long> listStorageID)
    public JSONObject createShareV2(Long uid, List<Long> listStorageID,boolean needDrawPicture)
            throws UserGoodsStorageException, UserShareGoodsRecordException;
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserShareGoodsRecordService.java
@@ -146,6 +146,6 @@
    public List<UserShareGoodsGroup> listByRecordId(Long shareId);
    public ShareGoodsRecordDTO addRecordGoodsStorageV2(Long uid, List<CommonGoods> listCommonGoods,
            List<Long> listStorageID) throws UserShareGoodsRecordException;
            List<Long> listStorageID,boolean needDrawPicture) throws UserShareGoodsRecordException;
    
}
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java
@@ -81,6 +81,8 @@
            } else {
                cg.setCouponAmount(new BigDecimal(0));
            }
            cg.setCouponLeftCount(1);
            cg.setCouponTotalCount(1);
        }
        
        JDCommissionInfo commissionInfo = goods.getCommissionInfo();
fanli/src/main/java/com/yeshi/fanli/vo/goods/ShareInfoVO.java
@@ -76,6 +76,17 @@
    @Expose
    private String wxErCode;// 微信二维码内容
    @Expose
    private GoodsDetailVO goodsInfo;
    public GoodsDetailVO getGoodsInfo() {
        return goodsInfo;
    }
    public void setGoodsInfo(GoodsDetailVO goodsInfo) {
        this.goodsInfo = goodsInfo;
    }
    public List<String> getCommentTexts() {
        return commentTexts;