admin
2019-06-27 534e0d10fdedf5fdaba6f63c99605520314a97d4
分享爆品修改
7个文件已修改
233 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/goods/taobao/dataoke/DaTaoKeGoodsDetailV2Dao.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/taobao/dataoke/DaTaoKeDetailV2.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/ShareHotGoodsServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/ShareHotGoodsService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -239,27 +239,24 @@
    @Resource
    private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
    @Resource
    private UserMoneyExtraService userMoneyExtraService;
    @Resource
    private UserTaoLiJinOriginService userTaoLiJinOriginService;
    @Resource
    private ConfigTaoLiJinService configTaoLiJinService;
    @Resource
    private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService;
    @Resource
    private DeviceSexService deviceSexService;
    @Resource
    private UserTaoLiJinRecordService userTaoLiJinRecordService;
    @Resource
    private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
@@ -1625,7 +1622,7 @@
        try {
            // 获取设备定义性别
            int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice());
            // 1、专题模块
            JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex);
@@ -2015,7 +2012,7 @@
        if (uid == null) {
            data.put("collected", false);
        } else {
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid,    id);
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id);
            data.put("collected", collectionGoods != null ? true : false);
        }
@@ -2061,8 +2058,7 @@
                    redisManager.saveCommonTaoToken(tb.getAuctionId(), token);
                }
            }
            // 测试
            if (!Constant.IS_TEST)
            if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
                tb.setCouponLinkTaoToken(token);
            // 服务端转链
@@ -2080,8 +2076,9 @@
                    + tb.getCouponEffectiveEndTime().replace("-", "."));
            // 券的口令
            // 测试
            if (!Constant.IS_TEST)
            if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
                couponInfo.put("couponToken", "");
            else
                couponInfo.put("couponToken", token);
            goodsJson.put("couponInfo", couponInfo);
@@ -2164,7 +2161,6 @@
        data.put("detailWebUrl", "http://apph5.yeshitv.com/apppage/goods_img.html?id=" + id);
        String noRebateHelpLink = null;
        // 商品链接
        String h5Url = String.format("http://%s%s?id=%s&appType=flq", configService.getH5Host(),
@@ -2174,24 +2170,24 @@
        } catch (Exception e) {
            data.put("h5Url", h5Url);
        }
        // 是否有返利
        boolean fanliValid = true;
        //资金类型 1-返  2-奖
        // 资金类型 1-返 2-奖
        int moneyType = 1;
        // 推广红包
        if (from != null && from.equals("taolijin")) {
            // 计算推广红包
            String warningRate = configTaoLiJinService.getValueByKey("warning_value");
            BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
            // 推广红包 不能小于1
            if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) {
                out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
                return;
            }
            // 是否为新用户
            boolean isNewUser = userInfoExtraService.isNewUser(uid);
            if (isNewUser) {
@@ -2201,13 +2197,13 @@
                    isNewUser = false;
                }
            }
            SpreadHongBao spreadHongBao = new SpreadHongBao();
            if (isNewUser) {
                spreadHongBao.setMoney("1");
            } else {
                spreadHongBao.setMoney(spreadMoney.toString());
                moneyType = 2;
                fanliValid = false;
                ClientTextStyleVO textStyleVO1 = new ClientTextStyleVO();
@@ -2222,40 +2218,49 @@
                ClientTextStyleVO textStyleVO4 = new ClientTextStyleVO();
                textStyleVO4.setContent("领红包!");
                textStyleVO4.setColor("#F14242");
                List<ClientTextStyleVO> listText = new ArrayList<ClientTextStyleVO>();
                listText.add(textStyleVO1);
                listText.add(textStyleVO2);
                listText.add(textStyleVO3);
                listText.add(textStyleVO4);
                data.put("listTip", listText);
            }
            }
            spreadHongBao.setTip("当日领取,两天内使用,过时无效");
            goodsJson.put("spreadHongBao", spreadHongBao);
            // 用户剩余可以淘礼金验证
            UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
            if (userMoneyExtra == null ||  userMoneyExtra.getTlj() == null) {
            if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) {
                data.put("userHongbao", new BigDecimal(0).setScale(2).toString());
            } else {
                data.put("userHongbao", userMoneyExtra.getTlj().setScale(2).toString());
            }
            noRebateHelpLink = configTaoLiJinService.getValueByKey("share_goods_help_link");
            if (Constant.IS_TEST) {
                fanliValid = true;
                goodsJson.put("shareValid", false);
                JSONObject tljNum = new JSONObject();
                tljNum.put("percent", "80");
                tljNum.put("num", "8825");
                goodsJson.put("tljNum", tljNum);
            }
        }
        goodsJson.put("moneyType", moneyType);
        goodsJson.put("fanliValid", fanliValid);
        data.put("goods", goodsJson);
        if (!StringUtil.isNullOrEmpty(noRebateHelpLink)) {
            data.put("noRebateHelpLink", noRebateHelpLink);
        } else {
            data.put("noRebateHelpLink", configService.get("no_rebate_help_link"));
        }
        // 取消分享活动
        // if (!StringUtil.isNullOrEmpty(uid)
        // &&
@@ -2281,7 +2286,7 @@
            public void run() {
                // 添加浏览记录
                try {
                    scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(),goodsInfo);
                    scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(), goodsInfo);
                } catch (Exception e) {
                    e.printStackTrace();
                }
@@ -2479,7 +2484,7 @@
        }
        try {
            List<Special> list = new ArrayList<Special>();
            // 专题活动
            String specialCard = "special_activities";
@@ -2490,24 +2495,23 @@
            if (listSpecial != null) {
                list.addAll(listSpecial);
            }
            for (int i = 0; i < list.size(); i++) {
                Special special = list.get(i);
                JumpDetailV2 jumpDetail = special.getJumpDetail();
                if (jumpDetail != null) {
                    jumpDetail.setNeedLogin(special.isJumpLogin());
                    special.setJumpDetail(jumpDetail);
                }
                String name = special.getName();
                if (StringUtil.isNullOrEmpty(name)) {
                    continue;
                }
                // 是否需要弹出框
                if (name.equals("账户等级特权")) {
                if (name.equals("账户等级特权")) {
                    if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) {
                        list.remove(i);
                        i--;
fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java
@@ -12,6 +12,7 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -48,25 +49,16 @@
     * @param out
     */
    @RequestMapping(value = "listPreGoods", method = RequestMethod.GET)
    public void getSugguestSearch(String callback, AcceptData acceptData, String kw, PrintWriter out) {
    public void listPreGoods(String callback, AcceptData acceptData, String kw, PrintWriter out) {
        // 大淘客数据,更新
        List<String> list = TaoBaoUtil.getSuguestSearch(kw);
        if (list != null && list.size() > 0) {
            JSONArray array = new JSONArray();
            int num = 0;
            for (String st : list) {
                array.add(st);
                num = num + 1;
                if (num >= 5) {
                    break;
                }
            }
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(array)));
        } else {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("")));
        List<TaoBaoGoodsBrief> list = shareHotGoodsService.listPreGoods();
        BigDecimal rate = hongBaoManageService.getFanLiRate();
        JSONArray array = new JSONArray();
        Gson gson = new Gson();
        for (TaoBaoGoodsBrief goods : list) {
            array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, rate + "", null)));
        }
        return;
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(array)));
    }
    /**
@@ -92,10 +84,15 @@
            } catch (TaobaoGoodsDownException e) {
                e.printStackTrace();
            }
            if (goods != null) {
                count++;
                goods = daTaoKeGoodsDetailService.filterTaoBaoGoods(goods);
                shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods));
            if (goods != null && goods.getCouponAmount() != null
                    && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
                if (TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate())
                        .compareTo(new BigDecimal("734")) >= 0) {
                    count++;
                    goods = daTaoKeGoodsDetailService.filterTaoBaoGoods(goods);
                    shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods));
                }
            }
        }
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("设置成功:" + count)));
fanli/src/main/java/com/yeshi/fanli/dao/goods/taobao/dataoke/DaTaoKeGoodsDetailV2Dao.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.dao.goods.taobao.dataoke;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
@@ -15,11 +16,13 @@
import com.yeshi.fanli.dao.MongodbBaseDao;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@Repository
public class DaTaoKeGoodsDetailV2Dao extends MongodbBaseDao<DaTaoKeDetailV2> {
    public void updateSelective(DaTaoKeDetailV2 v2) {
        // 计算佣金
        DaTaoKeDetailV2 old = get(v2.getId());
        if (old != null) {// 更新
            Query query = new Query();
@@ -41,6 +44,14 @@
            }
            update(query, update);
        }
    }
    public void saveWithCommision(DaTaoKeDetailV2 v2) {
        BigDecimal commision = MoneyBigDecimalUtil
                .div(MoneyBigDecimalUtil.mul(v2.getActualPrice(), v2.getCommissionRate()), new BigDecimal(100));
        int commissionInt = commision.multiply(new BigDecimal(100)).intValue();
        v2.setCommission(commissionInt);
        save(v2);
    }
    public DaTaoKeDetailV2 selectLatest() {
@@ -76,6 +87,7 @@
        for (int i = 0; i < idsList.size(); i++) {
            criterias[i] = Criteria.where("id").is(idsList.get(i));
        }
        query.addCriteria(new Criteria().orOperator(criterias));
        return mongoTemplate.find(query, getEntityClass());
    }
@@ -136,10 +148,12 @@
     * 
     * @return
     */
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int count) {
        //TODO
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int count, String sortName) {
        Query query = new Query();
        query.addCriteria(new Criteria().andOperator(Criteria.where("commissionRate*actualPrice").gt(7.34)));
        query.addCriteria(Criteria.where("commission").gt(734));
        List<Order> orders = new ArrayList<>();
        orders.add(new Order(Direction.DESC, sortName));
        query.with(new Sort(orders));
        query.limit(count);
        return mongoTemplate.find(query, getEntityClass());
    }
fanli/src/main/java/com/yeshi/fanli/entity/taobao/dataoke/DaTaoKeDetailV2.java
@@ -97,6 +97,17 @@
    private Integer tbcid;// 商品在淘宝的二级分类id ,非大淘客的二级分类
    @Field
    private Date updateTime;
    //额外字段维护
    @Field
    private Integer commission;// 佣金金额,单位为分
    public Integer getCommission() {
        return commission;
    }
    public void setCommission(Integer commission) {
        this.commission = commission;
    }
    public Date getUpdateTime() {
        return updateTime;
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/ShareHotGoodsServiceImpl.java
@@ -1,21 +1,36 @@
package com.yeshi.fanli.service.impl.taobao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao;
import com.yeshi.fanli.dao.taobao.ShareHotGoodsDao;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.BeanUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
@Service
public class ShareHotGoodsServiceImpl implements ShareHotGoodsService {
    @Resource
    private ShareHotGoodsDao shareHotGoodsDao;
    @Resource
    private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
    @Override
    public void addShareHotGoods(ShareHotGoods goods) {
@@ -36,4 +51,15 @@
    public void deleteById(String id) {
        shareHotGoodsDao.delete(id);
    }
    @Override
    public List<TaoBaoGoodsBrief> listPreGoods() {
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.listPreShareHotGoods();
        List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
        if (list != null) {
            for (DaTaoKeDetailV2 v2 : list)
                goodsList.add(TaoBaoUtil.convert(v2));
        }
        return goodsList;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -1,8 +1,11 @@
package com.yeshi.fanli.service.impl.taobao.dataoke;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -17,6 +20,7 @@
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.BeanUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -35,11 +39,11 @@
    public void startSyncGoods() {
        LogHelper.test("大淘客同步开始");
        DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1");
        int page=0;
        int page = 0;
        while (result.getGoodsList() != null && result.getGoodsList().size() > 0) {
            System.out.println(page++);
            for (DaTaoKeDetailV2 v2 : result.getGoodsList())
                daTaoKeGoodsDetailV2Dao.save(v2);
                daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
            result = DaTaoKeApiUtil.listAll(result.getPageId());
            try {
                Thread.sleep(10);
@@ -97,7 +101,7 @@
        while (!StringUtil.isNullOrEmpty(result.getPageId())) {
            for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
                v2.setUpdateTime(new Date());
                daTaoKeGoodsDetailV2Dao.save(v2);
                daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
            }
            result = DaTaoKeApiUtil.getNewGoodsList(result.getPageId(), startTime, null);
            try {
@@ -112,7 +116,7 @@
    private void addGoodsList(List<DaTaoKeDetailV2> goodsList) {
        for (DaTaoKeDetailV2 goods : goodsList) {
            goods.setUpdateTime(new Date());
            daTaoKeGoodsDetailV2Dao.save(goods);
            daTaoKeGoodsDetailV2Dao.saveWithCommision(goods);
        }
    }
@@ -186,10 +190,29 @@
    @Override
    public List<DaTaoKeDetailV2> listPreShareHotGoods() {
        return null;
        DaTaoKeGoodsDetailV2Dao daTaoKeGoodsDetailV2Dao = BeanUtil.getBean(DaTaoKeGoodsDetailV2Dao.class);
        Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "monthSales");
        System.out.println(list);
        list.addAll(daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "twoHoursSales"));
        list.addAll(daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "dailySales"));
        for (DaTaoKeDetailV2 v2 : list) {
            map.put(v2.getId(), v2);
        }
        List<DaTaoKeDetailV2> finalList = new ArrayList<>();
        for (Iterator<Long> its = map.keySet().iterator(); its.hasNext();) {
            finalList.add(map.get(its.next()));
        }
        Comparator<DaTaoKeDetailV2> cm = new Comparator<DaTaoKeDetailV2>() {
            @Override
            public int compare(DaTaoKeDetailV2 o1, DaTaoKeDetailV2 o2) {
                return o1.getActualPrice().compareTo(o2.getActualPrice());
            }
        };
        Collections.sort(finalList, cm);
        return finalList;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/ShareHotGoodsService.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
public interface ShareHotGoodsService {
@@ -20,12 +21,19 @@
     * @return
     */
    public List<ShareHotGoods> listByDay(String day);
    /**
     * 根据主键删除
     *
     * @param id
     */
    public void deleteById(String id);
    /**
     * 获取备选商品
     *
     * @return
     */
    public List<TaoBaoGoodsBrief> listPreGoods();
}