package com.yeshi.fanli.service.impl.lable;
|
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import net.sf.json.JSONArray;
|
|
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.stereotype.Service;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.yeshi.fanli.dao.mybatis.TaoBaoClassRelationMapper;
|
import com.yeshi.fanli.dao.mybatis.lable.LabelGoodsMapper;
|
import com.yeshi.fanli.dao.mybatis.lable.QualityFactoryMapper;
|
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper;
|
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefRecordMapper;
|
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
|
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
|
import com.yeshi.fanli.service.inter.lable.LabelService;
|
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.taobao.TbImgUtil;
|
|
@Service
|
public class QualityGoodsServiceImpl implements QualityGoodsService {
|
|
@Resource
|
private RedisManager redisManager;
|
@Resource
|
private QualityFactoryMapper qualityFactoryMapper;
|
@Resource
|
private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
|
@Resource
|
private LabelGoodsMapper labelGoodsMapper;
|
@Resource
|
private LabelService labelService;
|
@Resource
|
private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
|
@Resource
|
private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
|
@Resource
|
private TaoBaoGoodsBriefRecordMapper taoBaoGoodsBriefRecordMapper;
|
|
@Resource
|
private TaoBaoClassRelationMapper taoBaoClassRelationMapper;
|
|
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'listQueryByCouponAmount-'+#start+'-'+#key+'-'+#endAmount+'-'+#startPropor")
|
public List<QualityFactory> listQueryByCouponAmount(long start, int count, Integer key,
|
Integer endAmount, Integer startPropor){
|
return qualityFactoryMapper.listQueryByCouponAmount(start, count, key, endAmount, startPropor);
|
}
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'countQueryByCouponAmount-'+#key+'-'+#endAmount+'-'+#startPropor")
|
public long countQueryByCouponAmount(Integer key, Integer endAmount, Integer startPropor){
|
return qualityFactoryMapper.countQueryByCouponAmount(key, endAmount, startPropor);
|
}
|
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'listQueryByFlashSale-'+#start")
|
public List<QualityFactory> listQueryByFlashSale(long start, int count) {
|
return qualityFactoryMapper.listQueryByFlashSale(start, count);
|
}
|
|
@Override
|
//@Cacheable(value = "qualityCache",key="'countQueryByFlashSale-'")
|
public long countQueryByFlashSale() {
|
return qualityFactoryMapper.countQueryByFlashSale();
|
}
|
|
/**
|
* 今日必抢 - 9k9
|
* @param start
|
* @param count
|
* @param systemCid
|
* @param labId
|
* @param sortField
|
* @return
|
*/
|
@Override
|
public List<QualityFactory> listQueryEverydayRob(long start, int count, Long cid, Long labId, Integer sortField,Double startCouponAmount,Double endCouponAmount) {
|
return qualityFactoryMapper.listQueryEverydayRob(start, count, cid, labId, sortField,startCouponAmount,endCouponAmount);
|
}
|
|
@Override
|
public long countQueryEverydayRob(Long cid, Long labId, Double startCouponAmount,Double endCouponAmount) {
|
return qualityFactoryMapper.countQueryEverydayRob(cid, labId,startCouponAmount,endCouponAmount);
|
}
|
|
/**
|
* 小金额查询:9.9/19.9/29.9/49.9
|
*
|
* @param start
|
* @param count
|
* @param key
|
* @param classId
|
* 分类id
|
* @param labId
|
* 标签id
|
* @return
|
*/
|
@Override
|
@Cacheable(value = "quality9K9Cache",key="'listQuerySmallAmount-'+#start+'-'+#key+'-'+#labId+'-'+#cids")
|
public List<QualityFactory> listQuerySmallAmount(long start, int count, String key, Long labId, String cids) {
|
return qualityFactoryMapper.listQuery(start, count, key, null, labId, cids,1);
|
}
|
|
/**
|
* 对应小金额查询:9.9/19.9/29.9/49.9
|
*/
|
@Override
|
@Cacheable(value = "quality9K9Cache",key="'countQuerySmallAmount-'+#key+'-'+#labId+'-'+#cids")
|
public long countQuerySmallAmount(String key, Long labId, String cids) {
|
return qualityFactoryMapper.countQuery(key, null, labId, cids,1);
|
}
|
|
/**
|
* 查询标签
|
*
|
* @param start
|
* @param count
|
* @param key
|
* @param labId
|
* @return
|
*/
|
public List<QualityFactory> listQueryByKeyAndlabIDs(long start, int count,String key, List<Long> listId, Integer sort,
|
Long systemCid, Integer hasQuan, Integer userType, Integer biz30day,Integer startprice, Integer endprice) {
|
return qualityFactoryMapper.listQueryByKeyAndlabIDs(start, count, key, listId, sort,systemCid, hasQuan, userType,
|
biz30day, startprice, endprice);
|
}
|
|
|
public long countQueryKeyAndlabIDs(String key, List<Long> listId, Long systemCid, Integer hasQuan, Integer userType,
|
Integer biz30day,Integer startprice, Integer endprice) {
|
return qualityFactoryMapper.countQueryKeyAndlabIDs(key, listId,systemCid, hasQuan, userType, biz30day,
|
startprice, endprice);
|
}
|
|
/**
|
* 关键词搜索
|
*
|
* @param start
|
* @param count
|
* @param key
|
* @param labId
|
* @return
|
*/
|
@Override
|
public List<QualityFactory> listQueryByKey(long start, int count, String key, Integer sort,Long systemCid,
|
Integer hasQuan, Integer userType, Integer biz30day,Integer startprice, Integer endprice) {
|
return qualityFactoryMapper.listQueryByKey(start, count, key, sort, systemCid,hasQuan, userType, biz30day,
|
startprice, endprice);
|
}
|
|
public long countQueryByKey(String key, Long systemCid,Integer hasQuan, Integer userType,
|
Integer biz30day,Integer startprice, Integer endprice) {
|
|
return qualityFactoryMapper.countQueryByKey(key, systemCid,hasQuan, userType, biz30day,
|
startprice, endprice);
|
}
|
|
/**
|
* 一级分类查询精选库数据
|
*
|
* @param start
|
* @param count
|
* @param key
|
* @param labId
|
* @return
|
*/
|
@Override
|
@Cacheable(value = "qualityCache",key="'listQueryByClassId-'+#start+'-'+#cid")
|
public List<QualityFactory> listQueryByClassId(long start, int count, Long cid) {
|
return qualityFactoryMapper.listQuery(start, count, null, cid, null, null, 1);
|
}
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'countQueryClassId-'+#cid")
|
public long countQueryClassId(Long cid) {
|
return qualityFactoryMapper.countQuery(null, cid, null, null, 1);
|
}
|
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'listQueryByRebateAmount-'+#start+'-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
|
public List<QualityFactory> listQueryByRebateAmount(long start, int count,String proportion,
|
Integer startAmount, Integer endAmount, double tkRate){
|
return qualityFactoryMapper.listQueryByRebateAmount(start, count, proportion, startAmount, endAmount, tkRate);
|
}
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'countQueryByRebateAmount-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
|
public long countQueryByRebateAmount(String proportion, Integer startAmount, Integer endAmount, double tkRate){
|
return qualityFactoryMapper.countQueryByRebateAmount(proportion, startAmount, endAmount, tkRate);
|
}
|
|
|
|
@Override
|
//@Cacheable(value = "qualityCache",key="'queryToCouponColumn-'+#start")
|
@Cacheable(value = "taoBaoCouponCache", key = "'queryToCouponColumn'+#start")
|
public List<QualityFactory> queryToCouponColumn(long start, int count){
|
return qualityFactoryMapper.queryToCouponColumn(start, count);
|
}
|
|
@Override
|
//@Cacheable(value = "qualityCache",key="'countQueryToCouponColumn'")
|
@Cacheable(value = "taoBaoCouponCache", key = "'countQueryToCouponColumn'")
|
public long countQueryToCouponColumn(){
|
return qualityFactoryMapper.countQueryToCouponColumn();
|
}
|
|
|
/**
|
* 首页最底部@商品信息流
|
*/
|
@Override
|
public List<QualityFactory> listRecommend(long start, int count, Double proportion, Integer commision, Integer couponAmount,
|
double tkRate, Double couponRatio) {
|
return qualityFactoryMapper.listRecommendToIndex(start, count, proportion, commision, couponAmount, tkRate, couponRatio);
|
}
|
|
@Override
|
public long countRecommend(Double proportion, Integer commision, Integer couponAmount, double tkRate, Double couponRatio) {
|
return qualityFactoryMapper.countRecommendToIndex(proportion, commision, couponAmount, tkRate, couponRatio);
|
}
|
|
|
@Override
|
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, Integer hasQuan, Integer userType,
|
Double startprice, Double endprice) {
|
return qualityFactoryMapper.countRecommendBykey(key, hasQuan, userType, startprice, endprice);
|
}
|
|
|
/**
|
* 首页最底部@商品信息流
|
*/
|
@Override
|
@Cacheable(value = "qualityCache",key="'listQueryToRecommend-'+#start+'-'+#proportion+'-'+#fcRate")
|
public JSONArray getRecommendToIndex(long start, int count, String proportion, String fcRate) {
|
|
// 返利金额2元以上;
|
Integer commision = 2;
|
// 优惠券面额高于5元以上
|
Integer couponAmount = 5;
|
// 佣金比例高的:5%以上;
|
double tkRate = 5.0;
|
// 优惠率高于10%以上(优惠率=优惠券面额/商品在售价*100%)
|
Double couponRatio = 10.0;
|
|
Double pop = 50.0;
|
if (!StringUtil.isNullOrEmpty(proportion)) {
|
pop = Double.parseDouble(proportion);
|
}
|
|
List<QualityFactory> listQuery =
|
listRecommend(start, count, pop, commision, couponAmount, tkRate, couponRatio);
|
|
if (listQuery == null || listQuery.size() == 0) {
|
return null;
|
}
|
|
|
JSONArray array = new JSONArray();
|
Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
|
//遍历列表数据
|
for (QualityFactory quality : listQuery) {
|
|
TaoBaoGoodsBrief taoBaoGoodsBrief = quality.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));
|
}
|
|
array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
|
}
|
|
return array;
|
}
|
|
@Override
|
@Cacheable(value = "qualityCache",key="'countRecommendToIndex-'+#proportion")
|
public long countRecommendToIndex(String proportion) {
|
|
// 返利金额2元以上;
|
Integer commision = 2;
|
// 优惠券面额高于5元以上
|
Integer couponAmount = 5;
|
// 佣金比例高的:5%以上;
|
double tkRate = 5.0;
|
// 优惠率高于10%以上(优惠率=优惠券面额/商品在售价*100%)
|
Double couponRatio = 10.0;
|
|
Double pop = 50.0;
|
if (!StringUtil.isNullOrEmpty(proportion)) {
|
pop = Double.parseDouble(proportion);
|
}
|
|
return countRecommend(pop, commision, couponAmount, tkRate, couponRatio);
|
}
|
|
|
}
|