admin
2019-07-11 3824cbcaec6e6c67418d5280a53e9c2fedeef6f9
订单bug,分享爆款自购修改
12个文件已修改
127 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicRecommendController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/GoodsController.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJBuyGoodsController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/taobao/TLJBuyGoods.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/ShareHotGoodsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TLJBuyGoodsServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ShareGoodsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TLJBuyGoodsService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -161,11 +161,12 @@
                TaoBaoWeiQuanOrder weiQuanOrder = taoBaoWeiQuanOrderService.listByorderItemId(order.getTradeId());
                if (weiQuanOrder != null)// 有维权
                {
                    order.setWeiQuanState(weiQuanOrder.getState());
                    order.setState(CommonOrder.STATE_WQ);
                    TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService
                            .selectByOrderItemId(weiQuanOrder.getOrderItemId());
                    if (drawBack != null) {// 已经退款
                        order.setWeiQuanState(weiQuanOrder.getState());
                        // 计算退款资金
                        UserMoneyDetail detail = null;
                        switch (order.getHongBaoType()) {
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/DynamicRecommendController.java
@@ -20,6 +20,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
@@ -64,7 +65,6 @@
        TaoBaoGoodsBrief tb = null;
        String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
        Pattern p = Pattern.compile(URL_REGEX);
        Matcher matcher = p.matcher(url);
        if (!matcher.find()) {// 不包含链接
@@ -153,7 +153,15 @@
            // 商品详情
            // 发现
            // 没有链接,标题过长也不处理
            if (text.length() > 50) {
            if (text.startsWith("【") && text.contains("】")) {
                int end = text.indexOf("】");
                if (end > 2)
                    text = text.substring(1, end);
            }
            LogHelper.test("根据粘贴板推荐:"+text);
            if (text.length() > 80) {
                out.print(JsonUtil.loadFalseResult("值过长"));
                return;
            }
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/GoodsController.java
@@ -193,7 +193,7 @@
                            // 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。
                            long countRecord = userTaoLiJinRecordService.countRecordByUid(uid);
                            if (countRecord == 0) {
                                taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId);
                                taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId, null);
                            }
                        }
                    }
@@ -223,8 +223,22 @@
                    LogHelper.errorDetailInfo(e, "uid:" + uid, null);
                }
                if (!StringUtil.isNullOrEmpty(relationId)) {//
                    taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId,
                            TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
                    if (source != null && "taolijin".equals(source)) {
                        boolean isNewUser = userInfoExtraService.isNewUser(uid);
                        if (isNewUser) {
                            // 判定为老用户:
                            // 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。
                            long countRecord = userTaoLiJinRecordService.countRecordByUid(uid);
                            if (countRecord == 0) {
                                taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId,
                                        TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
                            }
                        }
                    } else {
                        taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId,
                                TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
                    }
                    data.put("native", true);
                } else {
                    if (pidType == PidUser.TYPE_FANLI_ANDROID)
@@ -245,6 +259,9 @@
            out.print(JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
            isNative = false;
            try {
                monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, 0, "购买淘宝商品转链出错"));
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJBuyGoodsController.java
@@ -94,7 +94,8 @@
                    int totalHongBaoCount = 2000 + (int) (Math.random() * 8000);
                    int leftHongBaoCount = 200 + (int) (Math.random() * 2000);
                    tljBuyGoodsService.addTLJBuyGoods(
                            new TLJBuyGoods(null, day, new Date(), goods, totalHongBaoCount, leftHongBaoCount));
                            new TLJBuyGoods(null, day, new Date(), goods, totalHongBaoCount, leftHongBaoCount),
                            TaoBaoConstant.ownBuyApp);
                }
            }
        }
@@ -119,7 +120,8 @@
        List<TLJBuyGoods> listGoods = tljBuyGoodsService.listByDay(day, 30);
        JSONArray array = new JSONArray();
        for (TLJBuyGoods sh : listGoods) {
            TaoBaoGoodsBriefExtra item = TaoBaoUtil.getTaoBaoGoodsBriefExtra(sh.getGoods(), TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE + "", null);
            TaoBaoGoodsBriefExtra item = TaoBaoUtil.getTaoBaoGoodsBriefExtra(sh.getGoods(),
                    TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE + "", null);
            if (!StringUtil.isNullOrEmpty(item.getPictUrlWhite()))
                item.setPictUrl(item.getPictUrlWhite());
            item.setAuctionUrl(sh.getId());
fanli/src/main/java/com/yeshi/fanli/entity/taobao/TLJBuyGoods.java
@@ -22,6 +22,8 @@
    @Id
    private String id;
    @Field
    private String appKey;
    @Field
    private String day;
    @Field
    private Date updateTime;
@@ -32,6 +34,14 @@
    @Field
    private Integer leftHongBaoCount;// 剩余红包个数
    public String getAppKey() {
        return appKey;
    }
    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }
    public Integer getTotalHongBaoCount() {
        return totalHongBaoCount;
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -667,7 +667,8 @@
    }
    @Override
    public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String specialId, Long auctionId) throws ShareGoodsException {
    public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String specialId, Long auctionId, String pid)
            throws ShareGoodsException {
        if (uid == null || uid <= 0) {
            throw new ShareGoodsException(1, "用户ID不能为空");
        }
@@ -685,7 +686,10 @@
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
        app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
        app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
        if (pid == null)
            app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
        else
            app.setPid(pid);
        TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app);
        if (goods == null) {
            throw new ShareGoodsException(1, "");
@@ -799,7 +803,7 @@
        boolean canBuy = userTLJBuyHistoryService.canBuy(uid, auctionId);
        if (!canBuy) {
            throw new ShareGoodsException(3, "同一商品每日只能领取三次");
            throw new ShareGoodsException(3, "立减红包已抢光,请稍后再试");
        }
        long currentTime = System.currentTimeMillis();
@@ -819,6 +823,7 @@
            taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, "自购立减", perface, 1, new Date(currentTime), sendEndTime,
                    new Date(currentTime), sendEndTime, app);
        } catch (TaoKeApiException e) {
            LogHelper.errorDetailInfo(e, e.getMessage(), null);
            throw new ShareGoodsException(5, "生成推广链接失败");
        }
        if (taoLiJinDTO == null)
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/ShareHotGoodsServiceImpl.java
@@ -24,7 +24,6 @@
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -106,13 +105,12 @@
    }
    @Override
    public boolean verifyCanCreateTLJ(Long auctionId,TaoKeAppInfo info) {
    public boolean verifyCanCreateTLJ(Long auctionId, TaoKeAppInfo info) {
        TaoLiJinDTO taoLiJinDTO = null;
        try {
            taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, "淘礼金验证", new BigDecimal("1.00"), 1, new Date(),
                    new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 6), new Date(),
                    new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 6),
                    info);
                    new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 6), info);
        } catch (TaoKeApiException e) {
            if (e.getCode() == TaoKeApiException.CODE_TLJ_FORBIDDEN) {
                // 该商品不支持创建淘礼金红包
@@ -140,6 +138,7 @@
                shareHotGoods.getGoods().setCouponStartFee(goods.getCouponStartFee());
                shareHotGoods.getGoods().setCouponTotalCount(goods.getCouponTotalCount());
                shareHotGoods.getGoods().setBiz30day(goods.getBiz30day());
                shareHotGoods.getGoods().setTkRate(goods.getTkRate());
                shareHotGoodsDao.save(shareHotGoods);
            }
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TLJBuyGoodsServiceImpl.java
@@ -10,6 +10,7 @@
import javax.annotation.Resource;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.taobao.TLJBuyGoodsDao;
@@ -25,6 +26,7 @@
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -42,13 +44,18 @@
    @Resource
    private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
    @Resource
    private EhCacheCacheManager ehCacheCacheManager;
    @Override
    public void addTLJBuyGoods(TLJBuyGoods goods) {
    public void addTLJBuyGoods(TLJBuyGoods goods, TaoKeAppInfo taoKeAppInfo) {
        if (goods == null || StringUtil.isNullOrEmpty(goods.getDay()) || goods.getGoods() == null)
            return;
        goods.setId(StringUtil.Md5(goods.getDay() + "#" + goods.getGoods().getAuctionId()));
        if (goods.getUpdateTime() == null)
            goods.setUpdateTime(new Date());
        if (taoKeAppInfo != null)
            goods.setAppKey(taoKeAppInfo.getAppKey());
        tljBuyGoodsDao.save(goods);
    }
@@ -128,9 +135,43 @@
    @Override
    public void updateGoods(TaoBaoGoodsBrief goods) {
        if (goods == null)
            return;
        List<TLJBuyGoods> list = tljBuyGoodsDao.listByAuctionId(goods.getAuctionId());
        // 查询自购立减是否小于1元
        BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goods, TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
        // if (money.compareTo(new BigDecimal(1)) < 0) {// 删除商品
        // if (list != null)
        // for (TLJBuyGoods tljGoods : list) {
        // tljBuyGoodsDao.delete(tljGoods.getId());
        // }
        // }
        if (list != null)
            for (TLJBuyGoods TLJBuyGoods : list) {
                if (goods.getCouponInfo() == null)
                    goods.setCouponInfo("");
                if (goods.getCouponAmount() == null)
                    goods.setCouponAmount(new BigDecimal(0));
                // 判断 券信息 价格信息 返利比例信息是否改变
                boolean change = false;
                if (goods.getZkPrice().compareTo(TLJBuyGoods.getGoods().getZkPrice()) != 0)
                    change = true;
                if (goods.getCouponAmount().compareTo(TLJBuyGoods.getGoods().getCouponAmount()) != 0)
                    change = true;
                if (!goods.getCouponInfo().equalsIgnoreCase(TLJBuyGoods.getGoods().getCouponInfo()))
                    change = true;
                if (goods.getTkRate().compareTo(TLJBuyGoods.getGoods().getTkRate()) != 0)
                    change = true;
                if (change) {
                    // 清除列表缓存
                    ehCacheCacheManager.getCache("commonContentCache").evict(
                            "tljBuy-listByDay" + TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
                }
                // 更新券信息 ,价格信息,销量信息
                TLJBuyGoods.getGoods().setZkPrice(goods.getZkPrice());
                TLJBuyGoods.getGoods().setCouponAmount(goods.getCouponAmount());
@@ -141,6 +182,7 @@
                TLJBuyGoods.getGoods().setCouponStartFee(goods.getCouponStartFee());
                TLJBuyGoods.getGoods().setCouponTotalCount(goods.getCouponTotalCount());
                TLJBuyGoods.getGoods().setBiz30day(goods.getBiz30day());
                TLJBuyGoods.getGoods().setTkRate(goods.getTkRate());
                tljBuyGoodsDao.save(TLJBuyGoods);
            }
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -195,7 +195,7 @@
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int page) {
        Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * Constant.PAGE_SIZE,
                Constant.PAGE_SIZE, "updateTime");
                Constant.PAGE_SIZE, "monthSales");
        System.out.println(list);
        for (DaTaoKeDetailV2 v2 : list) {
            map.put(v2.getId(), v2);
fanli/src/main/java/com/yeshi/fanli/service/inter/goods/ShareGoodsService.java
@@ -118,7 +118,7 @@
     * @return
     * @throws ShareGoodsException
     */
    public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String specialId, Long auctionId) throws ShareGoodsException;
    public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String specialId, Long auctionId,String pid) throws ShareGoodsException;
    /**
     * 淘礼金 链接
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TLJBuyGoodsService.java
@@ -4,6 +4,7 @@
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
/**
 * 自购立减
@@ -18,7 +19,7 @@
     * 
     * @param goods
     */
    public void addTLJBuyGoods(TLJBuyGoods goods);
    public void addTLJBuyGoods(TLJBuyGoods goods,TaoKeAppInfo taoKeAppInfo);
    /**
     * 根据日期查找
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -1984,6 +1984,8 @@
                    dto.setRightsId(modelJson.optString("rights_id"));
                    dto.setSendUrl(modelJson.optString("send_url"));
                    return dto;
                }else{
                    LogHelper.error(json);
                }
                
                // 接口返回异常
@@ -1993,7 +1995,7 @@
                     case "FAIL_BIZ_ITEM_FORBIDDEN":
                         throw new TaoKeApiException(TaoKeApiException.CODE_TLJ_FORBIDDEN, "该商品不支持创建淘礼金红包");
                     case "FAIL_BIZ_ACCOUNT_UN_PAID":
                     case "2":
                     case "PRE_FREEZE_ASSET_ACCOUNT_ERROR":
                         throw new TaoKeApiException(TaoKeApiException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足");
                     default:
                         return null;