yujian
2019-08-12 e068c9acf06cff7673fadfca686128f6d6d66e20
Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div
30个文件已修改
4个文件已添加
661 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/BrandControllerV2.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConfigControllerV2.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/taobao/TaoBaoGoodsUpdateDao.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/UpdateTaoBaoGoodsJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateTBRelationAndSpecialOrderJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderCountMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandClassShopGoodsServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandClassShopServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushServiceImpl.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/brand/BrandClassShopGoodsService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TaoBaoGoodsUpdateService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/TaoBaoConstant.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/JumpDetailParamsFactory.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/jdGoods.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/pddGoods.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/push_hw.properties 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -39,6 +39,7 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -87,6 +88,9 @@
    @Resource
    private UserMoneyDebtService userMoneyDebtService;
    @Resource
    private UserSystemCouponRecordService userSystemCouponRecordService;
    /**
     * 统计历史订单-淘宝订单
@@ -139,9 +143,9 @@
     * @param out
     */
    @RequestMapping(value = "getUserOrderList")
    public void getUserOrderList(String callback, Integer pageIndex, Integer pageSize, Integer keyType,
            String key,    Integer state, Integer type, Integer orderState, String startTime, String endTime,
            Integer sourceType, PrintWriter out) {
    public void getUserOrderList(String callback, Integer pageIndex, Integer pageSize, Integer keyType, String key,
            Integer state, Integer type, Integer orderState, String startTime, String endTime, Integer sourceType,
            PrintWriter out) {
        if (pageIndex == null || pageIndex < 1) {
            pageIndex = 1;
@@ -168,7 +172,8 @@
                    state, type, orderState, startTime, endTime, sourceType);
                // 统计总数
            long count = commonOrderService.countQuery(keyType, key, state, type, orderState, startTime, endTime, sourceType);
            long count = commonOrderService.countQuery(keyType, key, state, type, orderState, startTime, endTime,
                    sourceType);
            // 查询是否维权
            for (CommonOrderVO order : list) {
@@ -731,8 +736,8 @@
     * @param out
     */
    @RequestMapping(value = "getTrackAccuracyRate")
    public void getTrackAccuracyRate(String callback, Integer dateType, String year, String startTime, String endTime,int sourceType,
            PrintWriter out) {
    public void getTrackAccuracyRate(String callback, Integer dateType, String year, String startTime, String endTime,
            int sourceType, PrintWriter out) {
        if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
            startTime = null;
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/PushController.java
@@ -214,7 +214,8 @@
                    // 统计商品数量
                    long totalgoods = 0;
                    // 商品id
                    Long auctionId = null;
                    CommonGoods commonGoods = null;
                    if (StringUtil.isNullOrEmpty(picture)) {
                        try {
                            List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(pushId);
@@ -225,10 +226,9 @@
                                PushGoodsGroup pushGoodsGroup = listGroup.get(0);
                                if (pushGoodsGroup != null) {
                                    CommonGoods commonGoods = pushGoodsGroup.getCommonGoods();
                                    commonGoods = pushGoodsGroup.getCommonGoods();
                                    if (commonGoods != null) {
                                        picture = commonGoods.getPicture();
                                        auctionId = commonGoods.getGoodsId();
                                    }
                                }
                            }
@@ -265,8 +265,8 @@
                    JumpDetailV2 jumpDetail = null;
                    if (totalgoods == 1) {
                        params = JumpDetailParamsFactory.createGoodsParams(auctionId);
                        params = JumpDetailParamsFactory.createGoodsParams(commonGoods.getGoodsId(),
                                commonGoods.getGoodsType());
                        // 单个商品跳转商品详情
                        jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail",
                                Constant.getPlatformCode(acceptData.getPlatform()),
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/BrandControllerV2.java
@@ -26,6 +26,7 @@
import com.yeshi.fanli.service.inter.brand.TaoBaoShopHistoryService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.util.Constant;
@@ -64,6 +65,9 @@
    @Resource
    private DaTaoKeGoodsService daTaoKeGoodsService;
    @Resource
    private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
    /**
     * 店铺列表
     * 
@@ -83,7 +87,8 @@
     * 店铺足迹
     * 
     * @param acceptData
     * @param type       精选1, 足迹列表2
     * @param type
     *            精选1, 足迹列表2
     * @param out
     */
    @RequestMapping(value = "getHistory", method = RequestMethod.POST)
@@ -298,6 +303,8 @@
        data.put("count", array.size());
        data.put("list", array);
        out.print(JsonUtil.loadTrueResult(data));
        // 添加到更新列表
        taoBaoGoodsUpdateService.addUpdateQueueAsync(listGoodsBrief);
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConfigControllerV2.java
@@ -33,7 +33,6 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import net.sf.json.JSONObject;
@@ -261,7 +260,8 @@
            data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview
        } else if (url != null && ((url.contains("yangkeduo.com") && !url.contains("yangkeduo.com/goods.html?"))
        } else if (url != null && ((url.contains("yangkeduo.com") && !url.contains("yangkeduo.com/goods.html?")
                && !url.contains("yangkeduo.com/duo_coupon_landing.html?"))
                || (url.startsWith("https://p.pinduoduo.com/")))) {
            data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview
            data.put("goodsDetail", true);// 不需要拦截商品详情
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java
@@ -141,8 +141,8 @@
        List<TaoBaoGoodsBrief> updateGoodsList = new ArrayList<>();
        // 精选库数据为空时,网络进行查询
        if (listQuery == null || listQuery.size() == 0) {
        // 精选库数据小于10时,网络进行查询
        if (listQuery == null || listQuery.size() < 10) {
            long count = qualityGoodsService.countQueryClassId(gcid);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            page = page - totalPage;
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -720,7 +720,7 @@
        if (couponInfo != null) {
            convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_COUPON + "", null);
            if (convertUrl != null)
                couponInfo.setLink(convertUrl.getShortUrl());
                couponInfo.setLink(convertUrl.getUrl());
        }
        ShopInfoVO shopInfo = goodsDetail.getShopInfo();
@@ -808,7 +808,7 @@
        extraVO.setShare(shareInfoVO);
        if (convertUrl != null) {
            extraVO.setCouponJumpLink(convertUrl.getShortUrl());
            extraVO.setCouponJumpLink(convertUrl.getUrl());
            extraVO.setNativeCouponJumpLink(PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
        }
@@ -1081,7 +1081,7 @@
        PDDPromotionUrl convertUrl = PinDuoDuoApiUtil.convert(id, PinDuoDuoApiUtil.PID_FANLI + "", uid + "");
        JSONObject data = new JSONObject();
        data.put("native", true);
        data.put("jumpLink", convertUrl.getShortUrl());
        data.put("jumpLink", convertUrl.getUrl());
        data.put("nativeJumpLink", PinDuoDuoUtil.getAndroidNativeURI(convertUrl.getUrl()));
        out.print(JsonUtil.loadTrueResult(data));
    }
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
@@ -123,10 +123,7 @@
        // 去除前后空格
        text = text.trim();
        if (text.length() > 256) {
            out.print(JsonUtil.loadFalseResult("值过长"));
            return;
        }
        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\\&%_\\./-~-]*)?";
@@ -134,6 +131,10 @@
        Pattern p = Pattern.compile(URL_REGEX);
        Matcher matcher = p.matcher(text);
        if (!matcher.find()) {// 不包含链接
            if (text.length() > 256) {
                out.print(JsonUtil.loadFalseResult("值过长"));
                return;
            }
            String pattern = "^[A-Za-z0-9-]+$";
            if (Pattern.matches(pattern, text.replace(" ", ""))) {//删除空格
                out.println(JsonUtil.loadFalseResult("不支持推荐"));
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java
@@ -173,6 +173,26 @@
            @Param("type") Integer type, @Param("orderState") Integer orderState, @Param("startTime") String startTime,
            @Param("endTime") String endTime, @Param("source")Integer source);
    /**
     *  订单列表查询(不包含子订单)
     * @param start
     * @param count
     * @param keyType
     * @param key
     * @param state
     * @param type
     * @param orderState
     * @param startTime
     * @param endTime
     * @param source
     * @return
     */
    List<CommonOrderVO> listQueryWithNoChild(@Param("start") long start, @Param("count") int count,
            @Param("keyType") Integer keyType, @Param("key") String key, @Param("state") Integer state,
            @Param("type") Integer type, @Param("orderState") Integer orderState, @Param("startTime") String startTime,
            @Param("endTime") String endTime, @Param("source")Integer source);
    /**
     * 统计
     */
@@ -180,6 +200,10 @@
            @Param("type") Integer type, @Param("orderState") Integer orderState, @Param("startTime") String startTime,
            @Param("endTime") String endTime, @Param("source")Integer source);
    long countQueryWithNoChild(@Param("keyType") Integer keyType, @Param("key") String key, @Param("state") Integer state,
            @Param("type") Integer type, @Param("orderState") Integer orderState, @Param("startTime") String startTime,
            @Param("endTime") String endTime, @Param("source")Integer source);
    /**
     * 根据来源类型与订单号查询列表
     * 
fanli/src/main/java/com/yeshi/fanli/dao/taobao/TaoBaoGoodsUpdateDao.java
@@ -70,7 +70,8 @@
        BasicDBObject fieldsObject = new BasicDBObject();
        fieldsObject.put("auctionId", 1);
        Query query = new Query();
        Criteria ca = Criteria.where("updatetime").lt(date);
        // 时区问题,需加8小时
        Criteria ca = Criteria.where("updatetime").lt(new Date(date.getTime() + 1000 * 60 * 60 * 8L));
        query.skip(start);
        query.limit(count);
        query.addCriteria(ca);
fanli/src/main/java/com/yeshi/fanli/job/UpdateTaoBaoGoodsJob.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.job;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -8,9 +9,6 @@
import org.springframework.stereotype.Component;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.ActivityException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityService;
@@ -25,8 +23,6 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
/**
 * 淘宝商品更细
@@ -173,6 +169,4 @@
            return;
        brandClassShopService.updateShopGoods();
    }
}
fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateTBRelationAndSpecialOrderJob.java
@@ -77,7 +77,7 @@
                while (its.hasNext()) {
                    String key = its.next();
                    List<TaoBaoOrder> orders = map.get(key);
                    String redisKey = "addorderqueue-" + key;
                    String redisKey = "addorderqueue-" + TaoBaoOrderUtil.getOrderDataHashCode(orders);;
                    // redis做频率限制
                    try {
                        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderCountMapper.xml
@@ -65,7 +65,7 @@
            FROM  (SELECT ho.`ho_id` FROM yeshi_ec_hongbao_order ho 
                LEFT JOIN ( 
                    SELECT * FROM yeshi_ec_hongbao_v2 v2 
                    WHERE v2.`hb_uid`= ${uid} AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
                    WHERE v2.`hb_uid`= ${uid} and v2.hb_state!=4 AND (v2.`hb_type` = 1 OR v2.`hb_type` = 2)
                    ) hb  ON hb.hb_id=ho.`ho_hongbao_id` <!-- 自购订单 -->
            LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
            WHERE hb.hb_id IS NOT NULL 
@@ -95,11 +95,11 @@
            FROM  (SELECT ho.`ho_id` FROM yeshi_ec_hongbao_order ho 
                    LEFT JOIN ( 
                        SELECT * FROM yeshi_ec_hongbao_v2 v2 
                        WHERE v2.`hb_uid`= ${uid} AND v2.`hb_type` = 20
                        WHERE v2.`hb_uid`= ${uid} AND v2.`hb_type` = 20 and v2.hb_state!=4
                    ) hb  ON hb.hb_id=ho.`ho_hongbao_id`  <!-- 分享订单 -->
    
                LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
                WHERE hb.hb_id IS NOT NULL
                WHERE hb.hb_id IS NOT NULL and hb.hb_state!=4
                    <if test="state != null"> 
                        AND co.`co_state` = ${state} 
                    </if>
@@ -128,10 +128,10 @@
                    SELECT * FROM yeshi_ec_hongbao_v2 v2 
                    WHERE v2.`hb_uid`= ${uid}
                         AND (v2.`hb_type` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7
                               OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 )
                               OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 ) and v2.hb_state!=4
                    ) hbp  ON hbp.hb_pid=ho.`ho_hongbao_id`
                LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
                WHERE  hbp.hb_id IS NOT NULL
                WHERE  hbp.hb_id IS NOT NULL and hbp.hb_state!=4
                    <if test="state != null"> 
                        AND co.`co_state` = ${state} 
                    </if>
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -484,7 +484,7 @@
        hb.hb_id=ho.`ho_hongbao_id`
        <!-- 自购订单 -->
        LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
        WHERE hb.hb_id IS NOT NULL
        WHERE hb.hb_id IS NOT NULL and hb.hb_state!=4
        <if test="day != null and day == 1">
            <!-- 今天 -->
            AND TO_DAYS(co.`co_third_create_time`) = TO_DAYS(NOW())
@@ -517,7 +517,7 @@
        = 20 ) hb ON hb.hb_id=ho.`ho_hongbao_id`
        <!-- 分享订单 -->
        LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
        WHERE hb.hb_id IS NOT NULL
        WHERE hb.hb_id IS NOT NULL  and hb.hb_state!=4
        <if test="day != null and day == 1">
            <!-- 今天 -->
            AND TO_DAYS(co.`co_third_create_time`) = TO_DAYS(NOW())
@@ -550,7 +550,7 @@
        (v2.`hb_type` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7 OR
        v2.`hb_type` = 21 OR v2.`hb_type` = 22 ) ) hbp ON
        hbp.hb_pid=ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_common_order co ON
        co.`co_id`=ho.`ho_order_id` WHERE hbp.hb_id IS NOT NULL
        co.`co_id`=ho.`ho_order_id` WHERE hbp.hb_id IS NOT NULL  and hbp.hb_state!=4
        <if test="day != null and day == 1">
            <!-- 今天 -->
            AND TO_DAYS(co.`co_third_create_time`) = TO_DAYS(NOW())
@@ -764,6 +764,39 @@
        ORDER BY co.co_third_create_time DESC LIMIT ${start},${count} ) A LEFT
        JOIN yeshi_ec_user u ON u.id = A.hb_uid
    </select>
    <select id="listQueryWithNoChild" resultMap="ThreeResultMap">
        SELECT A.*,u.id AS userId,u.`nick_name` AS userName,u.`portrait` AS
        userPortrait FROM (SELECT hb.hb_id,hb.hb_uid,hb.`hb_money` AS
        totalMoney, hb.hb_state AS hongBaoState, hb.`hb_type` AS hongBaoType,
        hb.`hb_get_time` AS accountTime, hb.`hb_pre_get_time` AS
        preAccountTime, co.*  FROM yeshi_ec_hongbao_order ho LEFT JOIN
        (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1
        <include refid="SELECT_PARAM_HONGBAO_TYPE" />
        <!-- 红包类型 -->
        <include refid="SELECT_HONGBAO_STATE" />
        <!-- 红包状态 -->
        )hb ON hb.hb_id=ho.`ho_hongbao_id`
        LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
        WHERE hb.hb_id IS NOT NULL
        <include refid="SELECT_PARAM_ORDER_STATE" />
        <!-- 订单状态 -->
        <if test="startTime != null and startTime != '' ">AND <![CDATA[co.co_third_create_time >= #{startTime}]]>
        </if>
        <if test="endTime != null and endTime != '' ">AND <![CDATA[co.co_third_create_time <= #{endTime}]]>
        </if>
        <if test="key != null and key != '' ">
            <if test="keyType == 1 ">AND co.co_order_no = ${key}</if>
            <if test="keyType == 2 ">AND hb.hb_uid = ${key}</if>
        </if>
        <!-- 订单来源 -->
        <if test="source != null">AND co.co_source_type = #{source}</if>
        ORDER BY co.co_third_create_time DESC LIMIT ${start},${count} ) A LEFT
        JOIN yeshi_ec_user u ON u.id = A.hb_uid
    </select>
    <select id="countQuery" resultType="java.lang.Long">
        SELECT count(ho.ho_id) FROM yeshi_ec_hongbao_order ho LEFT JOIN
        (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1
@@ -787,6 +820,35 @@
        <!-- 订单来源 -->
        <if test="source != null">AND co.co_source_type = #{source}</if>
    </select>
    <select id="countQueryWithNoChild" resultType="java.lang.Long">
        SELECT count(ho.ho_id) FROM yeshi_ec_hongbao_order ho LEFT JOIN
        (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1
        <include refid="SELECT_PARAM_HONGBAO_TYPE" />
        <!-- 红包类型 -->
        <include refid="SELECT_HONGBAO_STATE" />
        <!-- 红包状态 -->
        )hb ON hb.hb_id=ho.`ho_hongbao_id`
        LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id`
         WHERE hb.hb_id IS NOT NULL
        <include refid="SELECT_PARAM_ORDER_STATE" />
        <!-- 订单状态 -->
        <if test="startTime != null and startTime != '' ">AND <![CDATA[co.co_third_create_time >= #{startTime}]]>
        </if>
        <if test="endTime != null and endTime != '' ">AND <![CDATA[co.co_third_create_time <= #{endTime}]]>
        </if>
        <if test="key != null and key != '' ">
            <if test="keyType == 1 ">AND co.co_order_no = ${key}</if>
            <if test="keyType == 2 ">AND hb.hb_uid = ${key}</if>
        </if>
        <!-- 订单来源 -->
        <if test="source != null">AND co.co_source_type = #{source}</if>
    </select>
    <select id="getCouponHongbaoByOrderNo" resultMap="ResultMap">
        SELECT COALESCE(SUM(IF(hb.hb_type=1,hb.`hb_money`,0)),0)AS totalMoney,
        COALESCE(SUM(IF(hb.hb_type=10,hb.`hb_money`,0)),0)AS couponMoney,
fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandClassShopGoodsServiceImpl.java
New file
@@ -0,0 +1,57 @@
package com.yeshi.fanli.service.impl.brand;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.entity.brand.BrandClassShop;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.service.inter.brand.BrandClassShopGoodsService;
import com.yeshi.fanli.service.inter.brand.BrandClassShopService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
@Service
public class BrandClassShopGoodsServiceImpl implements BrandClassShopGoodsService {
    @Resource
    private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
    @Resource
    private BrandClassShopService brandClassShopService;
    @Resource
    private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
    @Override
    public List<TaoBaoGoodsBrief> listBrandShopGoods(Long sellerId, int page, int count) {
        return taoBaoGoodsBriefService.listByShopId((page - 1) * count, count, sellerId);
    }
    @Override
    public long countBrandShopGoods(Long sellerId) {
        return taoBaoGoodsBriefService.countByShopId(sellerId);
    }
    @Override
    public void startUpdateGoods() {
        long count = brandClassShopService.countQuery(null, null, BrandClassShop.STATE_VALID);
        int page = (int) (count % 100 == 0 ? count / 100 : count / 100 + 1);
        for (int i = 0; i < page; i++) {
            List<BrandClassShop> shopList = brandClassShopService.listQuery(i * 100, 100, null, null,
                    BrandClassShop.STATE_VALID);
            // 每个品牌最多更新100个商品
            if (shopList != null)
                for (BrandClassShop shop : shopList) {
                    Long sellerId = shop.getShop().getId();
                    List<TaoBaoGoodsBrief> goodsList = listBrandShopGoods(sellerId, 1, 100);
                    taoBaoGoodsUpdateService.addUpdateQueueAsync(goodsList);
                }
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandClassShopServiceImpl.java
@@ -29,6 +29,7 @@
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -63,6 +64,9 @@
    @Resource
    private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
    @Resource
    private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
    @Override
    public List<BrandClassShop> getExistByShopIds(List<Long> list) {
@@ -128,8 +132,8 @@
    @Override
    @Transactional
    public void changeShopInfo(MultipartFile file, Long id, Long cid, String shopName, Integer state, Integer top,String key)
            throws BrandClassShopException {
    public void changeShopInfo(MultipartFile file, Long id, Long cid, String shopName, Integer state, Integer top,
            String key) throws BrandClassShopException {
        if (id == null) {
            throw new BrandClassShopException(1, "数据为空:请选择店铺");
@@ -170,7 +174,8 @@
        for (BrandClassShop brandClassShop : listQuery) {
            TaoBaoShop shop = brandClassShop.getShop();
            if (shop != null) {
                long couponNum = commonGoodsService.countBySellerIdAndHasCoupon(shop.getId(), Constant.SOURCE_TYPE_TAOBAO);
                long couponNum = commonGoodsService.countBySellerIdAndHasCoupon(shop.getId(),
                        Constant.SOURCE_TYPE_TAOBAO);
                brandClassShop.setCouponNum(couponNum);
                String shopLink = shop.getShopLink();
@@ -337,8 +342,6 @@
        return data;
    }
    @Override
    @Cacheable(value = "brandCache", key = "'listEffectiveCacheV2-'+#page+'-'+#cid")
    public JSONObject listEffectiveCacheV2(int page, Long cid) {
@@ -430,8 +433,11 @@
            List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>();
            List<TaoBaoGoodsBrief> listGoodsBrief = taoBaoShopVO.getListGoodsBrief();
            // 商品添加到更新队列
            taoBaoGoodsUpdateService.addUpdateQueueAsync(listGoodsBrief);
            for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
                GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate);
                GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate,
                        shareRate);
                listGoods.add(goodsDetailVO);
            }
            taoBaoShopVO.setListGoodsVO(listGoods);
@@ -441,8 +447,6 @@
        return data;
    }
    
    @Override
    public void addClick(Long shopId) {
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -482,8 +482,8 @@
        
        TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe);
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
                proportion.toString(), null);
        TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(),
                null);
        
        if (!goodsExtra.isCoupon() || (goodsExtra.getState() != null && goodsExtra.getState() == 1)) {
            return addSuccess;  // 已下架 、无券 不加入
@@ -916,12 +916,13 @@
        return list;
    }
    
    @Override
    @Cacheable(value = "dynamicCache", key = "'queryV2-'+#platform+'-'+#version+'-'+#start+'-'+#count+'-'+#cid+'-'+#subId")
    public List<DynamicInfo> queryV2(int platform, int version, int start, int count, Long cid, Long subId) {
        List<DynamicInfo> listNew = new ArrayList<DynamicInfo>();
        List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId);
        // 需要更新的商品
        List<TaoBaoGoodsBrief> taoBaoGoodsUpdateList = new ArrayList<>();
        if (list != null && list.size() > 0) {
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
@@ -963,6 +964,8 @@
                            continue;
                        }
                        
                        taoBaoGoodsUpdateList.add(goods);
                        GoodsPicture goodsNew = new GoodsPicture();
                        try {
                            PropertyUtils.copyProperties(goodsNew, goodsPicture);
@@ -971,13 +974,15 @@
                            continue;
                        }
                        
                        GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, fanLiRate, shareRate);
                        GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, fanLiRate,
                                shareRate);
                        goodsNew.setGoodsVO(detailVO);
                        goodsNew.setGoods(null);
                        
                        JumpDetailV2 jumpDetail = goodsNew.getJumpDetail();
                        if (jumpDetail != null) {
                            JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(), platform, version);
                            JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(),
                                    platform, version);
                            if (jumpDetailV2 != null) {
                                goodsNew.setJumpDetail(jumpDetailV2);
                            }
@@ -998,9 +1003,10 @@
                updateGoodInfo(list);
            }
        });
        taoBaoGoodsUpdateService.addUpdateQueueAsync(taoBaoGoodsUpdateList);
        return listNew;
    }
    /**
     * 更新商品信息
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -438,11 +438,14 @@
                            if (isPart) {
                                // 维权失效金额=维权的金额*获得的红包/结算金额
                                BigDecimal settlement = order.getSettlement();
                                BigDecimal wqHongbao = MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(hongBao, settlement), settlement);
                                weiQuanInfo.setWqHongBao("维权:-¥" + wqHongbao.setScale(2, BigDecimal.ROUND_DOWN).toString());
                                BigDecimal wqHongbao = MoneyBigDecimalUtil
                                        .div(MoneyBigDecimalUtil.mul(hongBao, settlement), settlement);
                                weiQuanInfo.setWqHongBao(
                                        "维权:-¥" + wqHongbao.setScale(2, BigDecimal.ROUND_DOWN).toString());
                                hongBao = MoneyBigDecimalUtil.sub(hongBao, wqHongbao);
                            } else {
                                weiQuanInfo.setWqHongBao("维权:-¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
                                weiQuanInfo
                                        .setWqHongBao("维权:-¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
                                hongBao = new BigDecimal(0);
                            }
                            order.setWeiQuanInfo(weiQuanInfo);
@@ -532,7 +535,6 @@
            order.setAccountState(stateMap);
            hongbaoInfo = hongBaoState_Str + hongbaoInfo;
            
            Map<String, String> hongBaoMap = new HashMap<String, String>();
            hongBaoMap.put("content", hongbaoInfo + " ¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
@@ -911,6 +913,7 @@
        } else {// 修改
            // 已经结算,已经失效,状态未改变的订单不处理
            if (oldCommonOrder.getState() == CommonOrder.STATE_JS || oldCommonOrder.getState() == CommonOrder.STATE_SX
                    || oldCommonOrder.getState() == CommonOrder.STATE_WQ
                    || (oldCommonOrder.getState().intValue() == commonOrder.getState())) {
                return oldCommonOrder;
            }
@@ -1026,8 +1029,14 @@
            Integer type, Integer orderState, String startTime, String endTime, Integer source)
            throws CommonOrderException {
        List<CommonOrderVO> list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState,
        List<CommonOrderVO> list = null;
        if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 搜索框无值或者按订单号搜索时都只搜索主订单
            list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, type, orderState,
                startTime, endTime, source);
        } else
            list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, startTime, endTime,
                    source);
        if (list == null) {
            list = new ArrayList<CommonOrderVO>();
@@ -1204,6 +1213,10 @@
    @Override
    public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState,
            String startTime, String endTime, Integer source) throws CommonOrderException {
        if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 搜索框无值或者按订单号搜索时都只搜索主订单
            return commonOrderMapper.countQueryWithNoChild(keyType, key, state, type, orderState, startTime, endTime,
                    source);
        } else
        return commonOrderMapper.countQuery(keyType, key, state, type, orderState, startTime, endTime, source);
    }
@@ -1382,5 +1395,4 @@
        return commonOrderMapper.listBySourceTypeAndStateAndThirdCrateTime(sourceType, state, minTime, maxTime,
                (page - 1) * pageSize, pageSize);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushServiceImpl.java
@@ -64,7 +64,6 @@
    @Resource
    private AppVersionService appVersionService;
    
    @Override
    public void pushGoods(Long uid,  String title, String content, String url, List<String> listIOS,
            List<String> listAndroid) throws PushException {
@@ -76,7 +75,6 @@
            throw new PushException(1, "请填写推送标题");
        if (StringUtil.isNullOrEmpty(content))
            throw new PushException(1, "请填写推送内容"); 
        
        /* IOS端推送   (注明:list等于 'null' 时全推, size等于0 不做推送) */
        if (listIOS == null || listIOS.size() > 0) {
@@ -94,8 +92,14 @@
            if(listAndroid == null || (listAndroid.size() > 0 && versions != null && versions.trim().length() > 0)) {
                xmPushService.pushGoods(uid, Long.parseLong(gid), title, content, versions);
            }
            // 华为推送
            if (listAndroid == null || listAndroid.size() > 0) {
                List<Integer> versionCodeList = null;
                if (listAndroid != null)
                    versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
                hwPushService.pushGoods(uid, Long.parseLong(gid), title, content, versionCodeList);
        }
        }
        
        PushRecord pushRecord = new PushRecord();
        pushRecord.setUid(uid);
@@ -109,7 +113,6 @@
        pushRecordMapper.insertSelective(pushRecord);
    }
    @Override
    public void pushUrl(Long uid, String title, String content, String url, List<String> listIOS,
            List<String> listAndroid) throws PushException {
@@ -120,7 +123,6 @@
            throw new PushException(1, "无推送标题");
        if (StringUtil.isNullOrEmpty(content))
            throw new PushException(1, "无推送内容");
        
        /* IOS端推送   (注明:list等于 'null' 时全推, size等于0 不做推送) */
        if (listIOS == null || listIOS.size() > 0) {
@@ -138,8 +140,15 @@
            if(listAndroid == null || (listAndroid.size() > 0 && versions != null && versions.trim().length() > 0)) {
                xmPushService.pushUrl(uid, url, title, content, versions);
            }
        }
        
            // 华为推送
            if (listAndroid == null || listAndroid.size() > 0) {
                List<Integer> versionCodeList = null;
                if (listAndroid != null)
                    versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
                hwPushService.pushUrl(uid, url, title, content, versionCodeList);
            }
        }
        
        PushRecord pushRecord = new PushRecord();
        pushRecord.setUid(uid);
@@ -152,10 +161,9 @@
        pushRecordMapper.insertSelective(pushRecord);
    }
    @Override
    public void pushZNX(Long uId, String title, String content, List<String> listIOS,
            List<String> listAndroid) throws PushException {
    public void pushZNX(Long uId, String title, String content, List<String> listIOS, List<String> listAndroid)
            throws PushException {
        if (StringUtil.isNullOrEmpty(title))
            throw new PushException(1, "无推送标题");
        if (StringUtil.isNullOrEmpty(content))
@@ -182,7 +190,6 @@
            accountMessageMapper.insertSelective(accountMessage);
        }
        
        /* IOS端推送   (注明:list等于 'null' 时全推, size等于0 不做推送) */
        if (listIOS == null || listIOS.size() > 0) {
            // 限制推送版本号:0
@@ -199,8 +206,15 @@
            if(listAndroid == null || (listAndroid.size() > 0 && versions != null && versions.trim().length() > 0)) {
                xmPushService.pushZNX(uId, accountMessage, systemZnx, versions);
            }
        }
        
            // 华为推送
            if (listAndroid == null || listAndroid.size() > 0) {
                List<Integer> versionCodeList = null;
                if (listAndroid != null)
                    versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
                hwPushService.pushZNX(uId, title, content, versionCodeList);
            }
        }
        
        // 插入推送记录
        PushRecord pushRecord = new PushRecord();
@@ -212,7 +226,6 @@
        pushRecord.setCreatetime(java.lang.System.currentTimeMillis());
        pushRecordMapper.insertSelective(pushRecord);
    }
    
    @Override
    public void pushWEEX(Long uid, String title, String content, String weexUrl, List<String> listIOS,
@@ -242,6 +255,13 @@
            }
        }
        
        // 华为推送
        if (listAndroid == null || listAndroid.size() > 0) {
            List<Integer> versionCodeList = null;
            if (listAndroid != null)
                versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
            hwPushService.pushWEEX(uid, title, content, weexUrl, versionCodeList);
        }
        
        // 插入推送记录
        PushRecord pushRecord = new PushRecord();
@@ -253,7 +273,6 @@
        pushRecord.setCreatetime(java.lang.System.currentTimeMillis());
        pushRecordMapper.insertSelective(pushRecord);
    }
    
    @Override
    public void pushBaiChuanUrl(Long uid, String title, String content, String url, List<String> listIOS,
@@ -284,6 +303,13 @@
            }
        }
        
        // 华为推送
        if (listAndroid == null || listAndroid.size() > 0) {
            List<Integer> versionCodeList = null;
            if (listAndroid != null)
                versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
            hwPushService.pushBaiChuanUrl(uid, title, content, url, versionCodeList);
        }
        
        // 插入推送记录
        PushRecord pushRecord = new PushRecord();
@@ -297,7 +323,6 @@
        pushRecordMapper.insertSelective(pushRecord);
    }
    @Override
    public void pushWelfareCenter(Long uid, String title, String content, List<String> listIOS,
            List<String> listAndroid) throws PushException {
@@ -306,7 +331,6 @@
            throw new PushException(1, "无推送标题");
        if (StringUtil.isNullOrEmpty(content))
            throw new PushException(1, "无推送内容");
        
        /* IOS端推送   (注明:list等于 'null' 时全推, size等于0 不做推送) */
        if (listIOS == null || listIOS.size() > 0) {
@@ -326,6 +350,13 @@
            }
        }
        
        // 华为推送
        if (listAndroid == null || listAndroid.size() > 0) {
            List<Integer> versionCodeList = null;
            if (listAndroid != null)
                versionCodeList = appVersionService.listVersionCodeByVersions("android", listAndroid);
            hwPushService.pushWelfareCenter(uid, title, content, versionCodeList);
        }
        
        // 插入推送记录
        PushRecord pushRecord = new PushRecord();
@@ -338,10 +369,9 @@
        pushRecordMapper.insertSelective(pushRecord);
    }
    /**
     * 查询能推送版本号
     *
     * @param versionCode
     * @param listVersion
     * @return
@@ -379,9 +409,9 @@
        return versions;
    }
    
    /**
     * 查询能推送版本号code
     *
     * @param versionCode
     * @param listVersion
     * @return
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
@@ -23,7 +23,6 @@
import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService;
import com.yeshi.fanli.service.inter.activity.ActivityService;
import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
import com.yeshi.fanli.service.inter.lable.QualityFactoryGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
@@ -330,7 +329,7 @@
    }
    @Override
    public List<TaoBaoGoodsBrief> filterTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) {
    public List<TaoBaoGoodsBrief> filterImportantTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) {
        Map<Long, TaoBaoGoodsBrief> finalMap = new HashMap<>();
        // 原始数据全覆盖
        for (TaoBaoGoodsBrief goods : goodsList) {
@@ -356,14 +355,38 @@
        List<TaoBaoGoodsBrief> mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds);
        if (mList != null)
            for (TaoBaoGoodsBrief goods : mList) {
                if (goods.getUpdatetime().getTime() > System.currentTimeMillis() - 1000 * 60 * 60 * 24L)// 在1天内更新的数据才参与过滤
                finalMap.put(goods.getAuctionId(), goods);
            }
        List<TaoBaoGoodsBrief> finalList = new ArrayList<>();
        for (TaoBaoGoodsBrief goods : goodsList)
            finalList.add(finalMap.get(goods.getAuctionId()));
        for (TaoBaoGoodsBrief goods : goodsList) {
            TaoBaoGoodsBrief newGoods = finalMap.get(goods.getAuctionId());
            // 过滤价格,返利比例,券信息
            goods.setZkPrice(newGoods.getZkPrice());
            goods.setTkRate(newGoods.getTkRate());
            goods.setCouponAmount(goods.getCouponAmount());
            goods.setCouponActivityId(newGoods.getCouponActivityId());
            goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
            goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
            goods.setCouponStartFee(newGoods.getCouponStartFee());
            goods.setCouponTotalCount(newGoods.getCouponTotalCount());
            goods.setCouponLeftCount(newGoods.getCouponLeftCount());
            finalList.add(goods);
        }
        return finalList;
    }
    @Override
    public int listAndRemoveByMaxUpdateTime(Date maxTime, int page, int pageSize) {
        return taoBaoGoodsUpdateDao.listAndRemoveByMaxUpdateTime(maxTime, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countByMaxUpdateTime(Date maxTime) {
        return taoBaoGoodsUpdateDao.countByMaxUpdateTime(maxTime);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java
@@ -1,5 +1,8 @@
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.HashSet;
import java.util.Iterator;
@@ -35,6 +38,13 @@
    @Resource
    private TaoBaoOrderTradeMapMapper taoBaoOrderTradeMapMapper;
    /**
     * 获取订单的哈希值
     *
     * @param list
     * @return
     */
    @Override
    public void addTaoBaoOrderList(List<TaoBaoOrder> list) {
        if (list == null || list.size() == 0)
@@ -43,7 +53,7 @@
        Iterator<String> its = map.keySet().iterator();
        while (its.hasNext()) {
            String orderId = its.next();
            String key = "addorder-" + orderId;
            String key = "addorder-" + TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId));
            // redis做频率限制
            try {
                if (Constant.IS_OUTNET) {
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -40,24 +40,37 @@
    @Override
    public void startSyncGoods() {
        LogHelper.test("大淘客同步开始");
        int totalCount = 0;
        try {
        DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1");
        int page = 0;
        while (result.getGoodsList() != null && result.getGoodsList().size() > 0) {
            System.out.println(page++);
            for (DaTaoKeDetailV2 v2 : result.getGoodsList())
            {
                totalCount += result.getGoodsList().size();
                for (DaTaoKeDetailV2 v2 : result.getGoodsList()) {
                try {
                    daTaoKeGoodsDetailV2Dao.saveWithCommision(v2);
                } catch (Exception e) {
                }
            }
                try {
            result = DaTaoKeApiUtil.listAll(result.getPageId());
                } catch (Exception e) {
                    result = DaTaoKeApiUtil.listAll(result.getPageId());
                }
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            }
        } finally {
            LogHelper.test("大淘客新版商品同步数量:" + totalCount);
        }
    }
@@ -199,8 +212,7 @@
    @Override
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int page) {
        Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) *100,
                100, "monthSales");
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "monthSales");
        System.out.println(list);
        for (DaTaoKeDetailV2 v2 : list) {
            map.put(v2.getId(), v2);
fanli/src/main/java/com/yeshi/fanli/service/inter/brand/BrandClassShopGoodsService.java
New file
@@ -0,0 +1,36 @@
package com.yeshi.fanli.service.inter.brand;
import java.util.List;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
/**
 * 品牌店铺商品服务
 *
 * @author Administrator
 *
 */
public interface BrandClassShopGoodsService {
    /**
     * 总的品牌店铺商品列表
     *
     * @param page
     * @param count
     * @return
     */
    public List<TaoBaoGoodsBrief> listBrandShopGoods(Long sellerId, int page, int count);
    /**
     * 总的品牌店铺商品数量
     *
     * @return
     */
    public long countBrandShopGoods(Long sellerId);
    /**
     * 更新品牌商品的数据
     */
    public void startUpdateGoods();
}
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -223,8 +223,6 @@
    public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState,
            String startTime, String endTime, Integer source) throws CommonOrderException;
    /**
     * 查询订单
     * 
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TaoBaoGoodsUpdateService.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.service.inter.taobao;
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -110,6 +111,21 @@
     * @param goodsList
     * @return
     */
    public List<TaoBaoGoodsBrief> filterTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList);
    public List<TaoBaoGoodsBrief> filterImportantTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList);
    /**
     * 根据最大的更新时间移除
     *
     * @param maxTime
     * @return
     */
    public int listAndRemoveByMaxUpdateTime(Date maxTime,int page,int pageSize);
    /**
     * 根据最大更新时间计算
     * @param maxTime
     * @return
     */
    public long countByMaxUpdateTime(Date maxTime);
}
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -666,8 +666,12 @@
                        while (its.hasNext()) {
                            String key = its.next();
                            try {
                                long startTime = System.currentTimeMillis();
                                TaoBaoGoodsBrief goods = TaoKeApiUtil.searchGoodsDetail(map.get(key));
                                // 更新一条数据需要的时间
                                taoBaoGoodsUpdateService.updateTaoBaoGoods(goods);
                                long time = System.currentTimeMillis() - startTime;
                                LogHelper.test("淘宝重要商品库更新时间:" + time);
                            } catch (Exception e) {
                                try {
                                    LogHelper.errorDetailInfo(e);
fanli/src/main/java/com/yeshi/fanli/util/TaoBaoConstant.java
@@ -30,6 +30,14 @@
    // 自购立减PID
    public static TaoKeAppInfo ownBuyApp = new TaoKeAppInfo("24937414", "0457746e24622a6c8c7924288550af5f",
            "mm_133239778_45820106_699710614");
    public static TaoKeAppInfo[] ownBuyApps=new TaoKeAppInfo[]{
             new TaoKeAppInfo("27759529", "2c0ecd37cf53eff0439a386c4eba2772","mm_472550068_628200329_109272850337"),
             new TaoKeAppInfo("27743325", "527a23554f71557d7b786bc479fcd5fe","mm_472720008_629400173_109272950312"),
             new TaoKeAppInfo("27770097", "fd896b718e2b0a833f0b7524cb83d092","mm_474720121_631000170_109273750171"),
             new TaoKeAppInfo("27762518", "2b2077798b7f8c5c94d337ac69d86a83","mm_474970057_635750171_109272950316"),
             new TaoKeAppInfo("27757101", "47921196e59a7999637269f486865096","mm_476760152_635550267_109272750381"),
    };
    public static BigDecimal OWN_BUY_WITHOUT_FANLI_RATE = new BigDecimal(70);// 自购立减的比例
fanli/src/main/java/com/yeshi/fanli/util/factory/JumpDetailParamsFactory.java
@@ -70,9 +70,11 @@
     * @param auctionId
     * @return
     */
    public static String createGoodsParams(Long auctionId) {
    public static String createGoodsParams(Long auctionId, Integer goodsType) {
        JSONObject data = new JSONObject();
        data.put("id", auctionId);
        if (goodsType != null)
            data.put("goodsType", goodsType);
        return data.toString();
    }
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java
@@ -77,7 +77,7 @@
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年MM月");
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy.M");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
@@ -119,7 +119,7 @@
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年MM月");
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy.M");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
@@ -1,6 +1,9 @@
package com.yeshi.fanli.util.jd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
@@ -525,25 +528,44 @@
        return null;
    }
    
    public static String getJDGoodsId(String url) {
    public static String getJDGoodsJS() {
        InputStream input = JDUtil.class.getClassLoader().getResourceAsStream("jdGoods.js");
        StringBuilder sb = new StringBuilder();
        String line;
        BufferedReader br = new BufferedReader(new InputStreamReader(input));
        try {
            if (url.startsWith("https://item.m.jd.com/product/") || url.startsWith("http://item.m.jd.com/product/")
                    || url.startsWith("https://item.jd.com/") || url.startsWith("http://item.jd.com/")) {
                String preUrl = url.split("\\?")[0];
                String index = preUrl.split("/")[preUrl.split("/").length - 1];
                index = index.split("\\.")[0];
                return index.trim();
            } else if (url.startsWith("https://item.m.jd.com/ware/view.action?")) {
                String preUrl = url.substring(url.indexOf("?") + 1, url.length());
                String[] sts = preUrl.split("&");
                for (String st : sts) {
                    if (st.startsWith("wareId=")) {
                        return st.split("=")[1].trim();
            while ((line = br.readLine()) != null) {
                sb.append(line);
                    }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
    static String jdGoodsJs = null;
    static ScriptEngine engine = null;
    static {
        if (jdGoodsJs == null)
            jdGoodsJs = getJDGoodsJS();
        ScriptEngineManager manager = new ScriptEngineManager();
        engine = manager.getEngineByName("javascript");
        try {
            engine.eval(jdGoodsJs);
        } catch (Exception e) {
                }
            }
    public static String getJDGoodsId(String url) {
        try {
            if (engine instanceof Invocable) {
                Invocable in = (Invocable) engine;
                String goodsId = in.invokeFunction("getGoodsId", url).toString();
                if (!StringUtil.isNullOrEmpty(goodsId))
                    return goodsId.trim();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -1,5 +1,9 @@
package com.yeshi.fanli.util.pinduoduo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
@@ -9,6 +13,7 @@
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -24,6 +29,7 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -349,7 +355,6 @@
        return null;
    }
    
    /**
     * 多多进宝爬取数据-品牌好货
     * 
@@ -360,7 +365,6 @@
        JSONObject params = new JSONObject();
        params.put("type", 1);
        params.put("sortType",3);
        HttpClient client = new HttpClient();
        PostMethod pm = new PostMethod("https://jinbao.pinduoduo.com/network/api/common/queryTopGoodsList");
@@ -405,7 +409,6 @@
        return goodsResult;
    }
    private static PDDGoodsDetail parseTodaySaleGoods(JSONObject json) {
        PDDGoodsDetail goods = new PDDGoodsDetail();
@@ -478,22 +481,49 @@
        return goods;
    }
    
    public static String getPDDGoodsId(String url) {
    public static String getJDGoodsJS() {
        InputStream input = JDUtil.class.getClassLoader().getResourceAsStream("pddGoods.js");
        StringBuilder sb = new StringBuilder();
        String line;
        BufferedReader br = new BufferedReader(new InputStreamReader(input));
        try {
            if (url.startsWith("https://mobile.yangkeduo.com/goods.html?")
                    || url.startsWith("http://mobile.yangkeduo.com/goods.html?")||url.contains("yangkeduo.com/duo_coupon_landing.html?")) {
                String preUrl = url.substring(url.indexOf("?") + 1, url.length());
                String[] sts = preUrl.split("&");
                for (String st : sts) {
                    if (st.startsWith("goods_id=")) {
                        return st.split("=")[1].trim();
            while ((line = br.readLine()) != null) {
                sb.append(line);
                    }
        } catch (IOException e) {
            e.printStackTrace();
                }
        return sb.toString();
    }
    static String jdGoodsJs = null;
    static ScriptEngine engine = null;
    static {
        if (jdGoodsJs == null)
            jdGoodsJs = getJDGoodsJS();
        ScriptEngineManager manager = new ScriptEngineManager();
        engine = manager.getEngineByName("javascript");
        try {
            engine.eval(jdGoodsJs);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
    public static String getPDDGoodsId(String url) {
        try {
            if (engine instanceof Invocable) {
                Invocable in = (Invocable) engine;
                String goodsId = in.invokeFunction("getGoodsId", url).toString();
                if (!StringUtil.isNullOrEmpty(goodsId))
                    return goodsId.trim();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoOrderUtil.java
@@ -8,6 +8,8 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -802,4 +804,28 @@
        return commonOrder;
    }
    /**
     * 获取一组订单的hash值
     *
     * @param list
     * @return
     */
    public static String getOrderDataHashCode(List<TaoBaoOrder> list) {
        List<TaoBaoOrder> orderList = new ArrayList<>();
        orderList.addAll(list);
        Comparator<TaoBaoOrder> orderCM = new Comparator<TaoBaoOrder>() {
            @Override
            public int compare(TaoBaoOrder o1, TaoBaoOrder o2) {
                return Long.parseLong(o1.getTradeId()) - Long.parseLong(o2.getTradeId()) > 0 ? 1 : -1;
            }
        };
        Collections.sort(orderList, orderCM);
        String sts = "";
        for (TaoBaoOrder order : orderList) {
            sts += order.getTradeId();
        }
        return StringUtil.Md5(sts);
    }
}
fanli/src/main/resource/jdGoods.js
New file
@@ -0,0 +1,17 @@
function getGoodsId(url) {
    if (url.indexOf('://item.m.jd.com/product/') > 0 || url.indexOf('://item.jd.com/') > 0) {
        var preUrl = url.split("?")[0];
        var index = preUrl.split("/")[preUrl.split("/").length - 1];
        index = index.split(".")[0];
        return index.replace(" ", "");
    } else if (url.indexOf('://item.m.jd.com/ware/view.action?') > 0) {
        var preUrl = url.substr(url.indexOf("?") + 1, url.length);
        var sts = preUrl.split("&");
        for (var i = 0; i < sts.length; i++) {
            if (st.indexOf("wareId=") == 0) {
                return st.split("=")[1].replace(" ", "");
            }
        }
    }
    return null;
}
fanli/src/main/resource/pddGoods.js
New file
@@ -0,0 +1,12 @@
function getGoodsId(url) {
    if (url.indexOf('://mobile.yangkeduo.com/goods.html?') > 0 || url.indexOf('yangkeduo.com/duo_coupon_landing.html?') >
        0 || url.indexOf('://mobile.yangkeduo.com/goods2.html?') > 0) {
        var preUrl = url.substr(url.indexOf("?") + 1, url.length());
        var sts = preUrl.split("&");
        for (var i = 0; i < sts.length; i++) {
            if (sts[i].indexOf("goods_id=") == 0) {
                return sts[i].split("=")[1];
            }
        }
    }
}
fanli/src/main/resource/push_hw.properties
@@ -1,2 +1,2 @@
appId=100059977
appSecret=07618b0e8e8f6d4739ee80a3ed14dd39
appId=100513147
appSecret=16f1b74908036c917f40c314968f6ee1