Administrator
2018-10-30 fe37c59dc648e01e0244bff86d87b2793dc4f712
新版搜索
队员列表查询
6个文件已修改
598 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java 488 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/lable/QualityFactoryMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/lable/QualityFactoryMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/lable/QualityGoodsService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java
@@ -18,6 +18,8 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -32,6 +34,7 @@
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
@@ -48,7 +51,6 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.taobao.SearchFilterUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import org.yeshi.utils.JsonUtil;
@Controller
@RequestMapping("api/v1/search")
@@ -406,116 +408,404 @@
    
    /**
     * 根据用户搜索关键词  进行精选库商品筛选
     * 搜索-新版
     * @param acceptData
     * @param kw
     * @param page
     * @param key
     * @param filter
     * @param order  销量由高到低:1 、 价格从高到低:2 、 价格从低到高:3 、 推广量高到低:4(综合默认)、返利比高到低:5 、返利比低到高:6  、推荐20
     * @param startprice
     * @param endprice
     * @param fastFilter
     * @param out
     */
    @RequestMapping(value = "getQualityRecommend", method = RequestMethod.POST)
    public void getQualityRecommend(AcceptData acceptData, int page, String kw, PrintWriter out) {
    @RequestMapping(value = "searchgoods")
    public void searchgoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
            String endprice, String fastFilter, PrintWriter out) {
        String bid = getHistorySearchBid(acceptData);
        historySearchService.addHistorySearch(kw, bid);
        System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
        if (system == null) {
            out.print(JsonUtil.loadFalseResult("系统不存在"));
            return;
        }
        try {
            // page从1开始
            page += 1;
            // 请求淘宝接口页码
            int pageNo = page;
            int pageSize = Constant.PAGE_SIZE;
            /* 计算精选库数据 总页数 */
            long incount = qualityGoodsService.countRecommendBykey(kw);
            int totalPage = (int) (incount % pageSize == 0 ? incount / pageSize : incount / pageSize + 1);
            pageNo = page - totalPage;
            /* 查询精选库数据 */
            if (pageNo <= 0 ) {
                List<QualityFactory> listQuality =
                        qualityGoodsService.listRecommendBykey((page - 1) * pageSize, pageSize, kw);
                List<TaoBaoGoodsBrief> searchWuLiaoList = null;
                /*  精选库数据不足10条  */
                if (listQuality != null && listQuality.size() != 0 && listQuality.size() < 10) {
                    SearchFilter searchfilter = new SearchFilter();
                    // 请求第一页数据
                    searchfilter.setPage(1);
                    searchfilter.setPageSize(pageSize);
                    searchfilter.setKey(SearchFilterUtil.filterSearchContent(kw));
                    // 含券
                    searchfilter.setQuan(1);
                    // 价格低于220
                    searchfilter.setEndPrice(new BigDecimal(220));
                    // 好评率是否高于行业均值;
                    searchfilter.setIncludeGoodRate(true);
                    searchfilter.setMaterialId("6707");
                    // 销量高到低
                    searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
                    searchWuLiaoList = taoKeGoodsService.searchWuLiaoList(searchfilter);
                }
                Map<String, String> map = manageService.convertMap();
                JSONObject data = taoKeGoodsService.listQualityGoods(listQuality, searchWuLiaoList, map);
                out.print(JsonUtil.loadTrueResult(data));
                return;
            }
            if (pageNo > 0  && totalPage > 0) {
                List<QualityFactory> list =
                        qualityGoodsService.listRecommendBykey((totalPage - 1) * pageSize, pageSize, kw);
                if (list != null && list.size() != 0 && list.size() < 10) {
                    // 页码+ 1 已请求一次淘宝接口
                    pageNo += 1 ;
                }
            }
            /* 网络请求  */
            SearchFilter searchfilter = new SearchFilter();
            searchfilter.setPage(pageNo);
            searchfilter.setPageSize(pageSize);
            searchfilter.setKey(SearchFilterUtil.filterSearchContent(kw));
            // 含券
            searchfilter.setQuan(1);
            // 价格低于220
            searchfilter.setEndPrice(new BigDecimal(220));
            // 好评率是否高于行业均值;
            searchfilter.setIncludeGoodRate(true);
            searchfilter.setMaterialId("6707");
            // 销量高到低
            searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
            // 查询物料接口
            JSONObject result = taoKeGoodsService.searchWuLiao(searchfilter);
            out.print(JsonUtil.loadTrueResult(result));
        } catch (Exception e) {
            e.printStackTrace();
        if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
            out.print(JsonUtil.loadFalseResult("无法搜索链接"));
            return;
        }
        if (!StringUtil.isNullOrEmpty(fastFilter)) {
            if (!StringUtil.isNullOrEmpty(filter)) {
                JSONArray filterArray = JSONArray.fromObject(filter);
                JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
                filterArray.addAll(fastFilterArray);
                filter = filterArray.toString();
            } else {
                filter = fastFilter;
            }
        }
        // 是否是推荐
        boolean recommend = false;
        if (!StringUtil.isNullOrEmpty(fastFilter)) {
            // 查询淘宝天猫
            JSONArray array = JSONArray.fromObject(filter);
            for (int i = 0; i < array.size(); i++) {
                String ty = array.optJSONObject(i).optString("type");
                if ("recommend".equalsIgnoreCase(ty)) {
                    recommend = true;
                }
            }
        }
        JSONObject data = null;
        if (!recommend) {
            // 淘宝接口请求
            data = searchGoods(kw, page, filter, order, startprice, endprice);
        } else {
            // 推荐:精选库
            data = searchQualityGoods(kw, page, filter, order, startprice, endprice);
        }
        // 获取推荐词
        List<String> listRecommendWords = new ArrayList<String>();
        if (page == 0) {
            listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
            if (listRecommendWords == null || listRecommendWords.size() == 0) {
                listRecommendWords = new ArrayList<String>();
            }
        }
        Gson gson = new GsonBuilder().create();
        data.put("words", gson.toJson(listRecommendWords));
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 执行搜索-新版
     * @param kw
     * @param page
     * @param filter
     * @param order
     * @param startprice
     * @param endprice
     * @return
     */
    private JSONObject searchGoods(String kw, int page, String filter, String order, String startprice, String endprice) {
        page = page + 1;
        SearchFilter sf = new SearchFilter();
        sf.setKey(SearchFilterUtil.filterSearchContent(kw));
        sf.setPage(page);
        sf.setSort(0);
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
            sf.setStartPrice(new BigDecimal(startprice));
        }
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
            sf.setEndPrice(new BigDecimal(endprice));
        }
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
            if (Integer.parseInt(order) == 1) {
                sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
            } else if (Integer.parseInt(order) == 2) {
                sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
            } else if (Integer.parseInt(order) == 3) {
                sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
            } else if (Integer.parseInt(order) == 4) {
                sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
            } else if (Integer.parseInt(order) == 5) {
                sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
            } else if (Integer.parseInt(order) == 6) {
                sf.setSort(TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH);
            }
        } else {
            // 默认销量从高到低排序
            sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
        }
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
            // 查询淘宝天猫
            JSONArray array = JSONArray.fromObject(filter);
            Set<String> params = new HashSet<String>();
            for (int i = 0; i < array.size(); i++) {
                // [{"type":'shoptype',id:12}]
                String ty = array.optJSONObject(i).optString("type");
                if ("shoptype".equalsIgnoreCase(ty)) {
                    if (array.optJSONObject(i).optInt("id") == 21) {
                        sf.setTmFlagship(false); // 不筛�?
                    } else {
                        sf.setTmFlagship(true);
                        sf.setTmall(true);
                        sf.setShopTag("b2c");
                    }
                } else if ("category".equalsIgnoreCase(ty)) {
                    sf.setCateIds(array.optJSONObject(i).optString("id"));
                } else if ("userType".equalsIgnoreCase(ty)) {
                    // if(array.optJSONObject(i).optInt("id") == 51)
                    sf.setTmall(true);
                    // else
                    // sf.setTmall(false);
                } else if ("baoyou".equalsIgnoreCase(ty)) {
                    // if(array.optJSONObject(i).optInt("id") == 61)
                    sf.setBaoYou(true);
                    // else
                    // sf.setBaoYou(false);
                } else if ("quantype".equalsIgnoreCase(ty)) {
                    // if (array.optJSONObject(i).optInt("id") == 31){
                    sf.setQuan(1);
                    if (sf.isTmFlagship()) {
                        sf.setShopTag(sf.getShopTag() + ",dpyhq");
                    } else {
                        sf.setShopTag("dpyhq");
                    }
                    // }
                    // else
                    // sf.setQuan(2);
                } else if ("hongbaotype".equalsIgnoreCase(ty)) {
                    if (array.optJSONObject(i).optInt("id") == 41)// 有红�?
                        sf.setHongbao(1);
                    else// 无红�?
                        sf.setHongbao(2);
                } else if ("property".equalsIgnoreCase(ty)) {
                    String pid = (String) array.optJSONObject(i).opt("pid");
                    String id = (String) array.optJSONObject(i).opt("id");
                    boolean flag = false;
                    String str = null;
                    for (String string : params) {
                        flag = string.contains(pid + ":");
                        if (flag) {
                            str = string;
                            break;
                        }
                    }
                    if (flag) {
                        params.add(str + "," + id);
                        params.remove(str);
                    } else {
                        params.add(pid + ":" + id);
                    }
                } else if ("fahuodi".equalsIgnoreCase(ty)) {
                    int id = array.optJSONObject(i).optInt("id");
                    sf.setProvinceId(id);
                }else if ("materialId".equalsIgnoreCase(ty)) {
                    int id = array.optJSONObject(i).optInt("id");
                    sf.setProvinceId(id);
                }
            }
            sf.setParams(params);
        }
        TaoBaoSearchResult result = TaoBaoUtil.search(sf);
        if (result == null) {
            return null;
        }
        List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
        if (result.getNavList() != null)
            navList.addAll(result.getNavList());
        Gson gson = new GsonBuilder().create();
        JSONObject data = new JSONObject();
        data.put("nav", gson.toJson(navList));
        List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
        List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
        int fq = sf.getQuan();
        int fh = sf.getHongbao();
        boolean ft = sf.isTmall();
        Map<String, String> map = manageService.convertMap();
        String proportion = map.get("hongbao_goods_proportion");
        String fcRate = map.get("hongbao_fc_ratio");
        if (fq == 0 && fh == 0 && !ft) {
            if (result != null && result.getTaoBaoGoodsBriefs() != null)
                for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
                    int count = bf.getBiz30day();
                    if (count >= 10000) { // 对销量数据做处理 页面展示7.3万
                        double sales = count;
                        String salesCountMidea = String.format("%.1f", sales / 10000);
                        bf.setSalesCount(salesCountMidea + "万");
                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
                    } else {
                        bf.setSalesCount(count + "");
                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
                    }
                }
        } else {
            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
            if (taoBaoGoodsBriefs != null)
                for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
                    int count = taoBaoGoodsBrief.getBiz30day();
                    if (count >= 10000) {
                        double sales = count;
                        String salesCountMidea = String.format("%.1f", sales / 10000);
                        taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
                                fcRate, "");
                        re.add(taoBaoGoodsBriefExtra);
                    } else {
                        taoBaoGoodsBrief.setSalesCount(count + "");
                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
                                fcRate, "");
                        re.add(taoBaoGoodsBriefExtra);
                    }
                }
        }
        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                .excludeFieldsWithoutExposeAnnotation().create();
        data.put("result", gson2.toJson(re));
        data.put("count", result.getTaoBaoHead().getDocsfound());
        return data;
    }
    /**
     * 执行搜索精选库
     * @param kw
     * @param page
     * @param filter
     * @param order
     * @param startprice
     * @param endprice
     * @return
     */
    private JSONObject searchQualityGoods(String key, int page, String filter, String order, String startprice, String endprice) {
        Integer hasQuan = null;
        Integer userType = null;
        Double start_Price = null;
        Double end_Price= null;
        Integer sort = null;
        int provinceId = -100;
        // 起始价格
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
            start_Price = Double.parseDouble(startprice);
        }
        // 结束价格
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
            end_Price =  Double.parseDouble(endprice);
        }
        // 排序
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
            if (Integer.parseInt(order) == 4) {
                sort = 20; // 综合时:采用默认权重排序
            } else {
                sort =Integer.parseInt(order);
            }
        }
        /* 其他筛选条件 */
        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
            // 查询淘宝天猫
            JSONArray array = JSONArray.fromObject(filter);
            for (int i = 0; i < array.size(); i++) {
                String ty = array.optJSONObject(i).optString("type");
                if ("userType".equalsIgnoreCase(ty)) {
                    userType = 1; // 天猫
                } else if ("quantype".equalsIgnoreCase(ty)) {
                    hasQuan = 1; // 有券
                } else if ("hongbaotype".equalsIgnoreCase(ty)) {
                } else if ("fahuodi".equalsIgnoreCase(ty)) {
                    provinceId = array.optJSONObject(i).optInt("id");
                }
            }
        }
        int pageSize = Constant.PAGE_SIZE;
        List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize,
                pageSize, key, hasQuan, userType, start_Price, end_Price, sort);
        List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
        Map<String, String> map = manageService.convertMap();
        String proportion = map.get("hongbao_goods_proportion");
        String fcRate = map.get("hongbao_fc_ratio");
        /* 遍历列表数据 */
        if (listQuery != null && listQuery.size() > 0) {
            for (QualityFactory selectionGoods : listQuery) {
                TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
                if (taoBaoGoodsBrief == null) {
                    continue;
                }
                int biz30day = taoBaoGoodsBrief.getBiz30day();
                if (biz30day >= 10000) {
                    double sales = biz30day;
                    String salesCountMidea = String.format("%.1f", sales / 10000);
                    taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
                } else {
                    taoBaoGoodsBrief.setSalesCount(biz30day + "");
                }
                // 改变图片尺寸
                String pictUrl = taoBaoGoodsBrief.getPictUrl();
                if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
                    taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
                }
                listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null));
            }
        }
        long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price);
        // 设置发货地址
        TaoBaoSearchNav nav = new TaoBaoSearchNav();
        nav.setName("发货地");
        nav.setFlag("address");
        nav.setId(11110);
        nav.setType("fahuodi");
        List<TaoBaoSearchNav> navList = new ArrayList<>();
        List<TaoBaoSearchNav> childNavList = new ArrayList<>();
        List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
        for (TaoBaoProvince province : provinceList) {
            TaoBaoSearchNav childNav = new TaoBaoSearchNav();
            childNav.setName(province.getName());
            childNav.setId(Integer.parseInt(province.getId()));
            childNav.setType("fahuodi-child");
            if (Integer.parseInt(province.getId()) == provinceId)
                childNav.setSelector(1);
            childNavList.add(childNav);
        }
        nav.setSubIds(childNavList);
        navList.add(nav);
        Gson gson = new GsonBuilder().create();
        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                .excludeFieldsWithoutExposeAnnotation().create();
        JSONObject data = new JSONObject();
        data.put("nav", gson.toJson(navList));
        data.put("result", gson2.toJson(listExtra));
        data.put("count", count);
        return data;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/lable/QualityFactoryMapper.java
@@ -334,7 +334,11 @@
     * @param key 关键词
     * @return
     */
    List<QualityFactory> listRecommendBykey(@Param("start") long start, @Param("count") int count, @Param("key") String key);
    List<QualityFactory> listRecommendBykey(@Param("start") long start, @Param("count") int count,
            @Param("key") String key,@Param("hasQuan") Integer hasQuan,  @Param("userType") Integer userType,
            @Param("startprice") Double startprice, @Param("endprice") Double endprice,
            @Param("sort") Integer sort);
    
    long countRecommendBykey(@Param("key") String key);
    long countRecommendBykey(@Param("key") String key, @Param("hasQuan") Integer hasQuan,
            @Param("userType") Integer userType,@Param("startprice") Double startprice, @Param("endprice") Double endprice);
}
fanli/src/main/java/com/yeshi/fanli/mapping/lable/QualityFactoryMapper.xml
@@ -1037,18 +1037,80 @@
    </select>
    
    
    <select id="listRecommendBykey" resultMap="BaseResultMap">
    <select id="listRecommendBykey"  resultMap="BaseResultMap">
        SELECT   <include refid="Base_Column_List" />  FROM `yeshi_ec_quality_factory` h
        LEFT JOIN yeshi_ec_taobao_goods tb ON h.`sg_goods_id`= tb.`id`
        WHERE 1=1  <if test='key != null and key != ""'> AND tb.`title` LIKE '%${key}%' </if>
        ORDER BY h.sg_weight DESC
        WHERE 1=1
        <!-- 关键词搜索  -->
        <if test='key != null and key != ""'> AND tb.`title` LIKE '%${key}%' </if>
        <!-- 在售价范围  -->
         <if test='startprice != null'>
               AND <![CDATA[  tb.`zkPrice` >= #{startprice}]]>
         </if>
          <if test='endprice != null'>
               AND <![CDATA[  tb.`zkPrice` <= #{endprice}]]>
        </if>
        <!-- 有券  -->
        <if test='hasQuan != null'>
               AND <![CDATA[  tb.`couponLeftCount` > 1]]>
        </if>
        <!-- 天猫商品  -->
        <if test='userType != null'>
               AND <![CDATA[  tb.`userType` = 1]]>
        </if>
        ORDER BY
            <!-- 销量高到低   -->
             <if test='sort == 1'>
                    tb.`biz30day` desc,
             </if>
             <!-- 价格 低到高   -->
             <if test='sort == 3'>
                    tb.`zkPrice`,
             </if>
             <!-- 价格 高到低   -->
             <if test='sort == 2'>
                    tb.`zkPrice` desc,
             </if>
             <!-- 推广量 高到低   -->
             <if test='sort == 4'>
                    tb.`totalSales` desc,
             </if>
            <!-- 佣金比例  -->
             <if test='sort == 5'>
                    tb.`tkRate` desc,
             </if>
             <!-- 佣金比例 -->
             <if test='sort == 6'>
                    tb.`tkRate`,
             </if>
             <!-- 默认:权重高到低-->
            h.sg_weight DESC
        LIMIT #{start},#{count}
    </select>
    
    <select id="countRecommendBykey" resultType="java.lang.Long">
        SELECT IFNULL(COUNT( h.`sg_id`),0)  FROM `yeshi_ec_quality_factory` h
        SELECT IFNULL(COUNT(h.`sg_id`),0) FROM `yeshi_ec_quality_factory` h
        LEFT JOIN yeshi_ec_taobao_goods tb ON h.`sg_goods_id`= tb.`id`
        WHERE 1=1  <if test='key != null and key != ""'> AND tb.`title` LIKE '%${key}%' </if>
        WHERE 1=1
        <!-- 关键词搜索  -->
        <if test='key != null and key != ""'> AND tb.`title` LIKE '%${key}%' </if>
        <!-- 在售价范围  -->
         <if test='startprice != null'>
               AND <![CDATA[  tb.`zkPrice` >= #{startprice}]]>
         </if>
          <if test='endprice != null'>
               AND <![CDATA[  tb.`zkPrice` <= #{endprice}]]>
        </if>
        <!-- 有券  -->
        <if test='hasQuan != null'>
               AND <![CDATA[  tb.`couponLeftCount` > 1]]>
        </if>
        <!-- 天猫商品  -->
        <if test='userType != null'>
               AND <![CDATA[  tb.`userType` = 1]]>
        </if>
    </select>
    
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java
@@ -237,14 +237,18 @@
        return qualityFactoryMapper.countRecommendToIndex(proportion, commision, couponAmount, tkRate, couponRatio);
    }
    @Override
    public List<QualityFactory> listRecommendBykey(long start, int count, String key) {
        return qualityFactoryMapper.listRecommendBykey(start, count, key);
    public List<QualityFactory> listRecommendBykey(long start, int count, String key, Integer hasQuan,
            Integer userType, Double startprice, Double endprice, Integer sort) {
        return qualityFactoryMapper.listRecommendBykey(start, count, key, hasQuan, userType,
                startprice, endprice, sort);
    }
    @Override
    public long countRecommendBykey(String key) {
        return qualityFactoryMapper.countRecommendBykey(key);
    public long countRecommendBykey(String key, Integer hasQuan, Integer userType,
            Double startprice, Double endprice) {
        return qualityFactoryMapper.countRecommendBykey(key, hasQuan, userType, startprice, endprice);
    }
    
    
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java
@@ -551,7 +551,8 @@
                public List<InviteUser> doInHibernate(Session session) throws HibernateException {
                    List list = session
                            .createSQLQuery(
                                    "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT t.* FROM `yeshi_ec_threesale` t  WHERE t.`boss_id`=? ORDER BY t.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id")
                                    "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT t.* FROM `yeshi_ec_threesale` t  "
                                    + "WHERE t.`boss_id`=? AND (t.expire = 0  OR  t.expire IS NULL) ORDER BY t.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id")
                            .setParameter(0, id).setFirstResult((page - 1) * pageSize).setMaxResults(pageSize).list();
                    return covertToInviteUserList(list);
                }
@@ -562,7 +563,8 @@
                public List<InviteUser> doInHibernate(Session session) throws HibernateException {
                    List list = session
                            .createSQLQuery(
                                    "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT tt.* FROM `yeshi_ec_threesale` t  LEFT JOIN yeshi_ec_threesale tt ON tt.`boss_id`=t.`worker_id`  WHERE t.`boss_id`=? AND tt.`id` IS NOT NULL ORDER BY tt.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id")
                                    "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT tt.* FROM `yeshi_ec_threesale` t  LEFT JOIN yeshi_ec_threesale tt ON tt.`boss_id`=t.`worker_id` "
                                    + " WHERE t.`boss_id`=? AND tt.`id` IS NOT NULL AND (tt.expire = 0  OR  tt.expire IS NULL) ORDER BY tt.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id")
                            .setParameter(0, id).setFirstResult((page - 1) * pageSize).setMaxResults(pageSize).list();
                    return covertToInviteUserList(list);
                }
@@ -597,11 +599,11 @@
    public long getFriendsListCount(long id, int type) {
        if (type == 1)
            return userInfoDao
                    .getCountSQL("SELECT COUNT(t.`id`) FROM `yeshi_ec_threesale` t  WHERE t.`boss_id`=  " + id);
                    .getCountSQL("SELECT COUNT(t.`id`) FROM `yeshi_ec_threesale` t  WHERE t.`boss_id`=  " + id +" AND (t.expire = 0  OR  t.expire IS NULL)");
        else
            return userInfoDao.getCountSQL(
                    "SELECT COUNT(tt.id) FROM `yeshi_ec_threesale` t  LEFT JOIN yeshi_ec_threesale tt ON tt.`boss_id`=t.`worker_id`  WHERE t.`boss_id`="
                            + id + " AND tt.`id` IS NOT NULL");
                            + id + " AND tt.`id` IS NOT NULL AND (tt.expire = 0  OR  tt.expire IS NULL)");
    }
    @Override
fanli/src/main/java/com/yeshi/fanli/service/inter/lable/QualityGoodsService.java
@@ -148,7 +148,6 @@
    public long countRecommend(Double proportion, Integer startAmount, Integer couponAmount, 
            double tkRate, Double couponRatio);
    
    /**
     *  根据关键词进行搜索商品-搜索-推荐
     * @param start
@@ -156,9 +155,12 @@
     * @param key 关键词
     * @return
     */
    public List<QualityFactory> listRecommendBykey(long start, int count, String key);
    public List<QualityFactory> listRecommendBykey(long start, int count, String key, Integer hasQuan,
            Integer userType, Double startprice, Double endprice, Integer sort);
    
    public long countRecommendBykey(String key);
    public long countRecommendBykey(String key, Integer hasQuan, Integer userType,
            Double startprice, Double endprice);
    
    /**
     * 首页推荐