package com.yeshi.fanli.controller.admin;
|
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.yeshi.utils.JsonUtil;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
|
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
|
import com.yeshi.fanli.entity.common.AdminUser;
|
import com.yeshi.fanli.entity.taobao.PidUser;
|
import com.yeshi.fanli.entity.taobao.SearchFilter;
|
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
|
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
import com.yeshi.fanli.entity.taobao.TaobaoMeterial;
|
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
|
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
|
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
|
import com.yeshi.fanli.service.inter.lable.QualityFactoryService;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
|
import com.yeshi.fanli.service.inter.taobao.TaobaoMeterialService;
|
import com.yeshi.fanli.tag.PageEntity;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("admin/new/api/v1/taobao")
|
public class TaoBaoGoodsBriefAdminController {
|
|
@Resource
|
private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
|
|
@Resource
|
private QualityFactoryService qualityFactoryService;
|
|
@Resource
|
private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
|
@Resource
|
private TaobaoMeterialService taobaoMeterialService;
|
@Resource
|
private GoodsClassService goodsClassService;
|
|
@Resource
|
private TaoBaoClassService taoBaoClassService;
|
|
|
/**
|
*
|
* @param callback
|
* @param pageIndex
|
* @param key
|
* 关键词
|
* @param startPrice
|
* 价格小值
|
* @param endPrice
|
* 价格大值
|
* @param startTkRate
|
* 佣金小值
|
* @param endTkRate
|
* 佣金大值
|
* @param sort
|
* 排序
|
* @param out
|
*/
|
@RequestMapping(value = "queryOnSale")
|
public void queryOnSale(String callback, Integer pageIndex, Integer pageSize, String key, Long tbClassId,
|
Integer startPrice, Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall,
|
Integer hasCoupon, Integer baoYou, Integer startDsr, Integer overseas, Integer needPrepay,
|
Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel,
|
PrintWriter out) {
|
|
try {
|
// 查询物料
|
TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice, startTkRate, endTkRate, sort,
|
istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay, includePayRate30, includeGoodRate,
|
includeRfdRate, npxLevel);
|
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
return;
|
}
|
|
List<TaoBaoGoodsBrief> listTaoBaoGoods = result.getTaoBaoGoodsBriefs();
|
if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息"));
|
return;
|
}
|
|
// 插入商品集合
|
List<Long> listAuctionId = new ArrayList<Long>();
|
for (TaoBaoGoodsBrief goodsBrief : listTaoBaoGoods) {
|
listAuctionId.add(goodsBrief.getAuctionId());
|
}
|
|
// 验证是否存在数据库
|
List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
|
List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
|
for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
|
|
taoBaoGoodsBrief.setId(null);
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
map.put("pictUrl", taoBaoGoodsBrief.getPictUrl());
|
map.put("title", taoBaoGoodsBrief.getTitle());
|
map.put("auctionId", taoBaoGoodsBrief.getAuctionId());
|
map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl());
|
map.put("shopTitle", taoBaoGoodsBrief.getShopTitle());
|
map.put("zkPrice", taoBaoGoodsBrief.getZkPrice());
|
map.put("biz30day", taoBaoGoodsBrief.getBiz30day());
|
map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo());
|
map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount());
|
map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount());
|
map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime());
|
map.put("tkRate", taoBaoGoodsBrief.getTkRate());
|
|
/* 商品销售状态: 0 在售 此获取的淘宝信息均为在售商品 */
|
map.put("saleStae", 0);
|
// 来源 0 无 1淘宝 2 京东
|
map.put("goodsSource", 1);
|
|
/* 1 定向计划 2 营销返利 、高佣 3 普佣 */
|
Integer includeDxjh = taoBaoGoodsBrief.getIncludeDxjh();
|
String tkMktStatus = taoBaoGoodsBrief.getTkMktStatus();
|
|
boolean include = false;
|
if (includeDxjh != null) {
|
if (includeDxjh == 1) {
|
// 定向计划
|
map.put("yongjinType", 1);
|
include = true;
|
}
|
}
|
|
if (!include) {
|
|
if ("1".equals(tkMktStatus)) {
|
// 营销返利 、高佣
|
map.put("yongjinType", 2);
|
} else {
|
// 普佣
|
map.put("yongjinType", 3);
|
}
|
}
|
|
/* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
/* 预计收益: 公司、用户 */
|
BigDecimal tkRate = taoBaoGoodsBrief.getTkRate();
|
BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice();
|
BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice);
|
// 计算结果
|
BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100"));
|
|
// 预计收益
|
map.put("estimateProfit", estimateProfit);
|
|
int existence = 0;
|
|
/* 查询商品是否已存在商品精选库中 */
|
Long localAuctionId = taoBaoGoodsBrief.getAuctionId();
|
if (localAuctionId != null) {
|
if (listHas != null && listHas.size() > 0) {
|
for (QualityFactory selectionGoods : listHas) {
|
TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
|
Long hasId = hasgoodsBrief.getAuctionId();
|
if (localAuctionId.equals(hasId) || localAuctionId == hasId) {
|
existence = 1; // 存在商品中
|
}
|
}
|
}
|
}
|
|
map.put("isExistence", existence);
|
|
listmap.add(map);
|
}
|
|
PageEntity pe = result.getPageEntity();
|
|
JSONObject data = new JSONObject();
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls(); // 重点
|
Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
|
|
data.put("pe", pe);
|
data.put("listGoods", gson.toJson(listmap));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 加入精选库商品
|
* @param callback
|
* @param pageIndex
|
* @param key
|
* 关键词
|
* @param startPrice
|
* 价格小值
|
* @param endPrice
|
* 价格大值
|
* @param startTkRate
|
* 佣金小值
|
* @param endTkRate
|
* 佣金大值
|
* @param sort
|
* 排序
|
* @param out
|
*/
|
@RequestMapping(value = "addTBGoodsFactory")
|
public void addTBGoodsFactory(String callback, Integer pageIndex, Integer pageSize, String key, Long tbClassId,
|
Integer startPrice, Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall,
|
Integer hasCoupon, Integer baoYou, Integer startDsr, Integer overseas, Integer needPrepay,
|
Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel,
|
String auctionIds, String lableNames, HttpServletRequest request, PrintWriter out) {
|
|
try {
|
|
if (StringUtil.isNullOrEmpty(auctionIds)) {
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择正确的商品入库")));
|
return;
|
}
|
|
Gson gson2 = new Gson();
|
List<Long> listTaoBaoId = gson2.fromJson(auctionIds, new TypeToken<ArrayList<Long>>() {}.getType());
|
if (listTaoBaoId == null || listTaoBaoId.size() == 0) {
|
out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择正确的商品入库")));
|
return;
|
}
|
|
// 查询物料
|
TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice, startTkRate, endTkRate, sort,
|
istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay, includePayRate30, includeGoodRate,
|
includeRfdRate, npxLevel);
|
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
return;
|
}
|
|
List<TaoBaoGoodsBrief> listTaoBaoGoods = result.getTaoBaoGoodsBriefs();
|
if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息"));
|
return;
|
}
|
|
List<TaoBaoGoodsBrief> listAddGoods = new ArrayList<TaoBaoGoodsBrief>();
|
for (TaoBaoGoodsBrief taoBaoGoodsBrief: listTaoBaoGoods) {
|
Long auctionId = taoBaoGoodsBrief.getAuctionId();
|
if (listTaoBaoId.contains(auctionId)) {
|
listAddGoods.add(taoBaoGoodsBrief);
|
listTaoBaoId.remove(auctionId);
|
}
|
}
|
|
if (listTaoBaoId != null && listTaoBaoId.size() > 0) {
|
for (Long auctionId: listTaoBaoId) {
|
/* 根据auctionId 获取淘宝商品 */
|
TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(auctionId);
|
if (goodsBrief != null) {
|
listAddGoods.add(goodsBrief);
|
}
|
}
|
}
|
|
AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
|
// 插入精选库
|
qualityFactoryService.addBatchTaoBaoGoods(listAddGoods, lableNames, admin);
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMessage()));
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 根据条件淘宝商品查询
|
* @param pageIndex
|
* @param pageSize
|
* @param key
|
* @param tbClassId
|
* @param startPrice
|
* @param endPrice
|
* @param startTkRate
|
* @param endTkRate
|
* @param sort
|
* @param istmall
|
* @param hasCoupon
|
* @param baoYou
|
* @param startDsr
|
* @param overseas
|
* @param needPrepay
|
* @param includePayRate30
|
* @param includeGoodRate
|
* @param includeRfdRate
|
* @param npxLevel
|
* @throws Exception
|
*/
|
public TaoBaoSearchResult getGoodsByWuLiao(Integer pageIndex, Integer pageSize, String key, Long tbClassId,
|
Integer startPrice, Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall,
|
Integer hasCoupon, Integer baoYou, Integer startDsr, Integer overseas, Integer needPrepay,
|
Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel)
|
throws Exception {
|
|
SearchFilter filter = new SearchFilter();
|
filter.setPageSize(pageSize);
|
filter.setPage(pageIndex);
|
|
// 查询词 key------ 不能为空---------
|
if (!StringUtil.isNullOrEmpty(key))
|
filter.setKey(key);
|
|
if (tbClassId != null) {
|
GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
|
if (rb == null) {
|
throw new Exception("该类型已不存在,请刷新重试");
|
}
|
|
// 淘宝类目id
|
String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
|
if (StringUtil.isNullOrEmpty(taoBaoCatIds)) {
|
throw new Exception("该类型淘宝id为空,请通知相关人员进行维护");
|
} else {
|
filter.setCateIds(taoBaoCatIds);
|
}
|
}
|
|
// 查询条件和类目id不能同时为空
|
if (StringUtil.isNullOrEmpty(key) && tbClassId == null) {
|
filter.setKey("女装");
|
}
|
// 折扣价范围下限
|
if (startPrice != null) {
|
filter.setStartPrice(new BigDecimal(startPrice));
|
}
|
// 折扣价范围上限
|
if (endPrice != null && endPrice > 0) {
|
filter.setEndPrice(new BigDecimal(endPrice));
|
}
|
// 淘客佣金比率下限 如:1234表示12.34%
|
if (!StringUtil.isNullOrEmpty(startTkRate)) {
|
int tkRate = (int) (Float.parseFloat(startTkRate) * 100);
|
filter.setStartTkRate(tkRate);
|
}
|
// 淘客佣金比率上限 如:1234表示12.34%
|
if (!StringUtil.isNullOrEmpty(endTkRate)) {
|
int tkRate = (int) (Float.parseFloat(endTkRate) * 100);
|
filter.setEndTkRate(tkRate);
|
}
|
// 排序字段 销量(total_sales)淘客佣金比率(tk_rate)累计推广量(tk_total_sales)总支出佣金(tk_total_commi)
|
if (sort != null) {
|
filter.setSort(sort);
|
}
|
// 查询天猫 1 true
|
if (istmall != null && istmall == 1) {
|
filter.setTmall(true);
|
}
|
// 是否有券 1 true
|
if (hasCoupon != null && hasCoupon == 1) {
|
filter.setQuan(1);
|
}
|
// 是否包邮,true表示包邮,空或false表示不限
|
if (baoYou != null && baoYou == 1) {
|
filter.setBaoYou(true);
|
// filter.setIp("113.251.22.10");// 重庆
|
filter.setIp("218.72.111.105");// 杭州
|
}
|
// 店铺dsr评分
|
if (startDsr != null && startDsr >= 0 && startDsr <= 50000) {
|
filter.setStartDsr(startDsr);
|
}
|
// 是否海外商品
|
if (overseas != null && overseas == 1) {
|
filter.setOverseas(true);
|
}
|
// 是否加入消费者保障,
|
if (needPrepay != null && needPrepay == 1) {
|
filter.setNeedPrepay(true);
|
}
|
// 成交转化是否高于行业均值
|
if (includePayRate30 != null && includePayRate30 == 1) {
|
filter.setIncludePayRate30(true);
|
}
|
// 好评率是否高于行业均值
|
if (includeGoodRate != null && includeGoodRate == 1) {
|
filter.setIncludeGoodRate(true);
|
}
|
// 退款率是否低于行业均值
|
if (includeRfdRate != null && includeRfdRate == 1) {
|
filter.setIncludeRfdRate(true);
|
}
|
// 牛皮癣程度,取值:1:不限,2:无,3:轻微
|
if (npxLevel != null && npxLevel > 0 && npxLevel < 4) {
|
filter.setNpxLevel(npxLevel);
|
}
|
|
|
boolean islink = false;
|
Long auctionId = null;
|
/* 判断是否是商品链接搜索 */
|
if (key != null && key.contains("//") && key.contains("&")) {
|
String[] keyArray = key.split("\\?")[1].split("&");
|
if (keyArray != null && keyArray.length > 0) {
|
String id = keyArray[0].replace("id=", "").trim();
|
if (!StringUtil.isNullOrEmpty(id)) {
|
auctionId = Long.parseLong(id);
|
islink = true;
|
}
|
}
|
}
|
|
TaoBaoSearchResult result = null;
|
|
if (!islink) {
|
/* 淘宝物料搜索 */
|
result = TaoKeApiUtil.searchWuLiao(filter);
|
} else {
|
/* 商品链接搜索 */
|
TaoBaoGoodsBrief searchGoodsDetail = TaoKeApiUtil.searchGoodsDetail(auctionId);
|
if (searchGoodsDetail != null) {
|
List<TaoBaoGoodsBrief> listGoods = new ArrayList<>();
|
listGoods.add(searchGoodsDetail);
|
|
result = new TaoBaoSearchResult();
|
result.setTaoBaoGoodsBriefs(listGoods);
|
PageEntity pageEntity = new PageEntity(pageIndex, pageSize, 1, 1);
|
result.setPageEntity(pageEntity);
|
}
|
}
|
|
return result;
|
}
|
|
/**
|
*
|
* @param callback
|
* @param pageIndex
|
* @param key
|
* 关键词
|
* @param startPrice
|
* 价格小值
|
* @param endPrice
|
* 价格大值
|
* @param startTkRate
|
* 佣金小值
|
* @param endTkRate
|
* 佣金大值
|
* @param sort
|
* 排序
|
* @param out
|
*/
|
@RequestMapping(value = "searchAlimamaWeb")
|
public void searchAlimamaWeb(String callback, Integer pageIndex, Integer pageSize, String key, Integer startPrice,
|
Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall, Integer hasCoupon,
|
Integer searchType, Integer baoYou, String startBiz30day, String catIds, PrintWriter out) {
|
|
try {
|
|
SearchFilter filter = new SearchFilter();
|
|
// 页大小,默认20,1~100
|
if (pageSize == null || pageSize < 1)
|
pageSize = Constant.PAGE_SIZE;
|
|
filter.setPageSize(pageSize);
|
|
// 第几页,默认:1
|
if (pageIndex == null || pageIndex < 1)
|
pageIndex = 1;
|
|
filter.setPage(pageIndex);
|
|
// 筛选条件 优先筛选查询词
|
if (!StringUtil.isNullOrEmpty(key)) {
|
filter.setKey(key);
|
} else {
|
// 高佣id
|
if (!StringUtil.isNullOrEmpty(catIds)) {
|
|
// 男装+ 类目id
|
String[] split = catIds.split(",");
|
filter.setCateIds(split[1]);
|
}
|
}
|
|
// 折扣价范围下限
|
if (startPrice != null)
|
filter.setStartPrice(new BigDecimal(startPrice));
|
|
// 折扣价范围上限
|
if (endPrice != null)
|
filter.setEndPrice(new BigDecimal(endPrice));
|
|
// 佣金比率下限
|
if (!StringUtil.isNullOrEmpty(startTkRate)) {
|
filter.setStartTkRate(Integer.parseInt(startTkRate));
|
}
|
|
// 比率上限
|
if (!StringUtil.isNullOrEmpty(endTkRate)) {
|
filter.setEndTkRate(Integer.parseInt(endTkRate));
|
}
|
|
// 排序字段
|
if (sort != null)
|
filter.setSort(sort);
|
|
// 查询天猫 1 true
|
if (istmall != null && istmall == 1)
|
filter.setTmall(true);
|
|
// 是否有券 1 true
|
if (hasCoupon != null && hasCoupon == 1)
|
filter.setQuan(1);
|
|
// 是否包邮,true表示包邮,空或false表示不限
|
if (baoYou != null && baoYou == 1)
|
filter.setBaoYou(true);
|
|
// 销量
|
if (!StringUtil.isNullOrEmpty(startBiz30day))
|
filter.setStartBiz30day(startBiz30day);
|
|
List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
|
|
/* 淘宝网络 爬取 */
|
TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), searchType);
|
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
return;
|
} else {
|
taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
}
|
|
if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息"));
|
return;
|
} else {
|
List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
|
for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
|
taoBaoGoodsBrief.setId(null);
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
map.put("pictUrl", taoBaoGoodsBrief.getPictUrl());
|
map.put("title", taoBaoGoodsBrief.getTitle());
|
map.put("auctionId", taoBaoGoodsBrief.getAuctionId());
|
map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl());
|
map.put("shopTitle", taoBaoGoodsBrief.getShopTitle());
|
map.put("zkPrice", taoBaoGoodsBrief.getZkPrice());
|
map.put("biz30day", taoBaoGoodsBrief.getBiz30day());
|
map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo());
|
map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount());
|
map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount());
|
map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime());
|
|
/* 佣金取较大的值 */
|
String eventRate = taoBaoGoodsBrief.getEventRate();
|
BigDecimal rate;
|
|
BigDecimal tkRate2 = taoBaoGoodsBrief.getTkRate();
|
if (!StringUtil.isNullOrEmpty(eventRate)) {
|
BigDecimal eRate = new BigDecimal(eventRate);
|
|
int a = eRate.compareTo(tkRate2);
|
if (a >= 0) {
|
rate = eRate;
|
} else {
|
rate = tkRate2;
|
}
|
} else {
|
rate = tkRate2;
|
}
|
map.put("tkRate", rate);
|
|
/* 商品销售状态: 0 在售 此获取的淘宝信息均为在售商品 */
|
map.put("saleStae", 0);
|
// 来源 0 无 1淘宝 2 京东
|
map.put("goodsSource", 1);
|
|
/* 1 定向计划 2 营销返利 、高佣 3 普佣 */
|
// Integer includeDxjh = taoBaoGoodsBrief.getIncludeDxjh();
|
// String tkMktStatus = taoBaoGoodsBrief.getTkMktStatus();
|
/*
|
* boolean include = false; if (includeDxjh != null) { if
|
* (includeDxjh == 1) { // 定向计划 map.put("yongjinType",1);
|
* include = true; } }
|
*/
|
|
/*
|
* if (!include){
|
*
|
* if ("1".equals(tkMktStatus)) { // 营销返利 、高佣
|
* map.put("yongjinType",2); } else { // 普佣
|
* map.put("yongjinType",3); } }
|
*/
|
|
/* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
/* 预计收益: 公司、用户 */
|
BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice();
|
BigDecimal profit = MoneyBigDecimalUtil.mul(rate, zkPrice);
|
// 计算结果
|
BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100"));
|
|
// 预计收益
|
map.put("estimateProfit", estimateProfit);
|
|
int existence = 0;
|
|
/* 查询商品是否已存在商品精选库中 */
|
Long localAuctionId = taoBaoGoodsBrief.getAuctionId();
|
|
if (localAuctionId != null) {
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefList = taoBaoGoodsBriefService
|
.queryByAuctionId(localAuctionId);
|
|
if (taoBaoGoodsBriefList != null && taoBaoGoodsBriefList.size() > 0) {
|
|
TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefList.get(0);
|
|
if (goodsBrief != null) {
|
Long id = goodsBrief.getId();
|
// 查询精选库
|
Long has = qualityFactoryService.queryCountByGoodsId(id);
|
|
if (has != null && has > 0l) {
|
existence = 1; // 存在商品中
|
}
|
}
|
}
|
}
|
|
map.put("isExistence", existence);
|
|
listmap.add(map);
|
}
|
|
PageEntity pe = result.getPageEntity();
|
|
JSONObject data = new JSONObject();
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls(); // 重点
|
Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
|
|
data.put("pe", pe);
|
data.put("listGoods", gson.toJson(listmap));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
}
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 获取淘宝高佣查询类目
|
*
|
* @param callback
|
* @param out
|
*/
|
@RequestMapping(value = "getNavList")
|
public void getNavList(String callback, PrintWriter out) {
|
|
try {
|
|
SearchFilter filter = new SearchFilter();
|
filter.setPageSize(10);
|
filter.setPage(1);
|
|
List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
|
|
/* 淘宝网络 爬取 */
|
TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), 3);
|
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淘宝列表获取失败"));
|
return;
|
}
|
|
List<TaoBaoSearchNav> navList = result.getNavList();
|
|
if (navList == null || navList.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淘宝列表获取失败"));
|
return;
|
}
|
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls();
|
Gson gson = gsonBuilder.create();
|
|
JSONObject data = new JSONObject();
|
data.put("navList", gson.toJson(navList));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
*
|
* @param callback
|
* @param pageIndex
|
* @param key
|
* 关键词
|
* @param startPrice
|
* 价格小值
|
* @param endPrice
|
* 价格大值
|
* @param startTkRate
|
* 佣金小值
|
* @param endTkRate
|
* 佣金大值
|
* @param sort
|
* 排序
|
* @param out
|
*/
|
@RequestMapping(value = "searchMaterial")
|
public void searchMaterial(String callback, Integer pageIndex, Integer pageSize, String subName, String superName,
|
PrintWriter out) {
|
|
try {
|
|
List<TaobaoMeterial> taobaoMeterials = null;
|
if (!StringUtil.isNullOrEmpty(subName) && !StringUtil.isNullOrEmpty(superName)) {
|
taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(subName, superName);
|
} else if (!StringUtil.isNullOrEmpty(superName)) {
|
taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(null, superName);
|
} else {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择筛选类目"));
|
return;
|
}
|
|
if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("类目信息不存在"));
|
return;
|
}
|
|
TaobaoMeterial taobaoMeterial = taobaoMeterials.get(0);
|
Integer materialId = taobaoMeterial.getMaterialId();
|
if (materialId == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目物料ID不存在"));
|
return;
|
}
|
|
// 页大小,默认20,1~100
|
if (pageSize == null || pageSize < 1)
|
pageSize = Constant.PAGE_SIZE;
|
|
// 第几页,默认:1
|
if (pageIndex == null || pageIndex < 1)
|
pageIndex = 1;
|
|
TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize);
|
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂未获取到相关数据"));
|
return;
|
}
|
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
|
return;
|
}
|
|
// 插入商品集合
|
List<Long> listAuctionId = new ArrayList<Long>();
|
for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
|
listAuctionId.add(goodsBrief.getAuctionId());
|
}
|
|
// 验证是否存在数据库
|
List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
|
List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
|
for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
taoBaoGoodsBrief.setId(null);
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
map.put("pictUrl", taoBaoGoodsBrief.getPictUrl());
|
map.put("title", taoBaoGoodsBrief.getTitle());
|
map.put("auctionId", taoBaoGoodsBrief.getAuctionId());
|
map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl());
|
map.put("zkPrice", taoBaoGoodsBrief.getZkPrice());
|
map.put("biz30day", taoBaoGoodsBrief.getBiz30day());
|
map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo());
|
map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount());
|
map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount());
|
map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime());
|
map.put("tkRate", taoBaoGoodsBrief.getTkRate());
|
|
// 来源 0 无 1淘宝 2 京东
|
map.put("goodsSource", 1);
|
|
/* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
/* 预计收益: 公司、用户 */
|
BigDecimal tkRate = taoBaoGoodsBrief.getTkRate();
|
BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice();
|
BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice);
|
// 计算结果
|
BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100"));
|
|
// 预计收益
|
map.put("estimateProfit", estimateProfit);
|
|
int existence = 0;
|
|
/* 查询商品是否已存在商品精选库中 */
|
Long localAuctionId = taoBaoGoodsBrief.getAuctionId();
|
if (localAuctionId != null) {
|
if (listHas != null && listHas.size() > 0) {
|
for (QualityFactory selectionGoods : listHas) {
|
TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
|
Long hasId = hasgoodsBrief.getAuctionId();
|
if (localAuctionId.equals(hasId) || localAuctionId == hasId) {
|
existence = 1; // 存在商品中
|
}
|
}
|
}
|
}
|
|
map.put("isExistence", existence);
|
|
listmap.add(map);
|
}
|
|
PageEntity pe = result.getPageEntity();
|
|
JSONObject data = new JSONObject();
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls(); // 重点
|
Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
|
|
data.put("pe", pe);
|
data.put("listGoods", gson.toJson(listmap));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
|
}
|
|
@RequestMapping(value = "getQiangGou")
|
public void getQiangGou(String callback, Integer pageIndex, PrintWriter out) {
|
|
try {
|
|
int pageSize = 40;
|
|
// 第几页,默认:1
|
if (pageIndex == null || pageIndex < 1)
|
pageIndex = 1;
|
|
String startTime = "2018-09-17 09:00:00";
|
|
String endTime = "2018-09-17 16:00:00";
|
|
TaoBaoSearchResult result = TaoKeApiUtil.taoQiangGou(pageIndex, pageSize, startTime, endTime);
|
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂未获取到相关数据"));
|
return;
|
}
|
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
|
return;
|
}
|
|
// 插入商品集合
|
List<Long> listAuctionId = new ArrayList<Long>();
|
for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
|
listAuctionId.add(goodsBrief.getAuctionId());
|
}
|
|
// 验证是否存在数据库
|
List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
|
List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
|
for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
taoBaoGoodsBrief.setId(null);
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
map.put("pictUrl", taoBaoGoodsBrief.getPictUrl());
|
map.put("title", taoBaoGoodsBrief.getTitle());
|
map.put("auctionId", taoBaoGoodsBrief.getAuctionId());
|
map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl());
|
map.put("zkPrice", taoBaoGoodsBrief.getZkPrice());
|
map.put("biz30day", taoBaoGoodsBrief.getBiz30day());
|
map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo());
|
map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount());
|
map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount());
|
map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime());
|
map.put("tkRate", taoBaoGoodsBrief.getTkRate());
|
|
// 来源 0 无 1淘宝 2 京东
|
map.put("goodsSource", 1);
|
|
/* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
/* 预计收益: 公司、用户 */
|
BigDecimal tkRate = taoBaoGoodsBrief.getTkRate();
|
BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice();
|
BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice);
|
// 计算结果
|
BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100"));
|
|
// 预计收益
|
map.put("estimateProfit", estimateProfit);
|
|
int existence = 0;
|
|
/* 查询商品是否已存在商品精选库中 */
|
Long localAuctionId = taoBaoGoodsBrief.getAuctionId();
|
if (localAuctionId != null) {
|
if (listHas != null && listHas.size() > 0) {
|
for (QualityFactory selectionGoods : listHas) {
|
TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
|
Long hasId = hasgoodsBrief.getAuctionId();
|
if (localAuctionId.equals(hasId) || localAuctionId == hasId) {
|
existence = 1; // 存在商品中
|
}
|
}
|
}
|
}
|
|
map.put("isExistence", existence);
|
listmap.add(map);
|
}
|
|
PageEntity pe = result.getPageEntity();
|
|
JSONObject data = new JSONObject();
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
gsonBuilder.serializeNulls(); // 重点
|
Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
|
|
data.put("pe", pe);
|
data.put("listGoods", gson.toJson(listmap));
|
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
|
}
|
|
}
|