package com.yeshi.fanli.controller.admin;
|
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import net.sf.json.JSONObject;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
|
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
|
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.exception.ExistObjectException;
|
import com.yeshi.fanli.exception.NotExistObjectException;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
|
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
|
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefRecordService;
|
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.GsonUtil;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.RedisManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
|
import org.yeshi.utils.JsonUtil;
|
|
@Controller
|
@RequestMapping("admin/new/api/v1/taobao")
|
public class TaoBaoGoodsBriefAdminController {
|
|
@Resource
|
private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
|
@Resource
|
private TaoBaoGoodsBriefRecordService taoBaoGoodsBriefRecordService;
|
|
@Resource
|
private RedisManager redisManager;
|
@Resource
|
private QualityFactoryService selectionGoodsService;
|
@Resource
|
private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
|
@Resource
|
private TaobaoMeterialService taobaoMeterialService;
|
@Resource
|
private GoodsClassService goodsClassService;
|
|
@Resource
|
private TaoBaoClassService taoBaoClassService;
|
|
|
@RequestMapping(value = "getTBGoodsList", method = RequestMethod.POST)
|
public void getTaoBaoGoodsBriefList(int pageIndex, String key, PrintWriter out) {
|
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefList = taoBaoGoodsBriefService.getTBList(pageIndex - 1, key);
|
int count = taoBaoGoodsBriefService.getCount(key);
|
int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
|
PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
|
Map<String, String> map = new HashMap<String, String>();
|
map.put("key", key);
|
pe.setParams(map);
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("taoBaoGoodsBriefList", GsonUtil.toDFJson(taoBaoGoodsBriefList));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "getInvalidTaoBaoGoods", method = RequestMethod.POST)
|
public void getInvalidTaoBaoGoods(int pageIndex, PrintWriter out) {
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefList = taoBaoGoodsBriefService.getInvalidTB(pageIndex);
|
int count = taoBaoGoodsBriefService.getInvalidCount();
|
int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
|
PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
|
JSONObject data = new JSONObject();
|
data.put("pe", pe);
|
data.put("taoBaoGoodsBriefList", GsonUtil.toDFJson(taoBaoGoodsBriefList));
|
out.print(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "getTaobaoGoods", method = RequestMethod.POST)
|
public void getTaoBaoGoodsBrief(long id, PrintWriter out) {
|
TaoBaoGoodsBrief taobao = taoBaoGoodsBriefService.getTaoBao(id);
|
|
if (taobao == null) {
|
out.append(JsonUtil.loadFalseResult("不存在该商品"));
|
return;
|
}
|
JSONObject data = new JSONObject();
|
data.put("taobao", GsonUtil.toDFJson(taobao));
|
List<String> list = new ArrayList<String>();
|
list = TaoBaoUtil.getTbImg(taobao.getAuctionId() + "");
|
data.put("imgList", list);
|
out.append(JsonUtil.loadTrueResult(data));
|
}
|
|
@RequestMapping(value = "updateTaoBaoGoodsBrief", method = RequestMethod.POST)
|
public void updateTaoBaoGoodsBrief(TaoBaoGoodsBrief tb, PrintWriter out) {
|
try {
|
taoBaoGoodsBriefService.updateTBGoods(tb);
|
} catch (NotExistObjectException e) {
|
out.append(JsonUtil.loadFalseResult(e.getMessage()));
|
return;
|
}
|
out.append(JsonUtil.loadTrueResult("修改成功"));
|
}
|
|
@RequestMapping(value = "deleteTaoBaoGoods", method = RequestMethod.POST)
|
public void deleteTaoBaoGoods(long[] ids, PrintWriter out) {
|
for (long id : ids) {
|
taoBaoGoodsBriefService.deleteTaoBaoGoods(id);
|
}
|
out.append(JsonUtil.loadTrueResult("删除成功"));
|
}
|
|
@RequestMapping(value = "addTaoBaoGoodsBrief", method = RequestMethod.POST)
|
public void addTaoBaoGoodsBrief(String[] ids, PrintWriter out) {
|
List<JSONObject> list = new ArrayList<JSONObject>();
|
JSONObject data = null;
|
for (String id : ids) {
|
data = new JSONObject();
|
|
TaoBaoGoodsBrief taoBaoGoodsBrief=null;
|
try {
|
taoBaoGoodsBrief = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
|
taoBaoGoodsBrief.setUpdatetime(new Date());
|
taoBaoGoodsBrief.setCreatetime(new Date());
|
} catch (NumberFormatException e1) {
|
e1.printStackTrace();
|
} catch (TaobaoGoodsDownException e1) {
|
e1.printStackTrace();
|
}
|
try {
|
taoBaoGoodsBriefService.insertSelective(taoBaoGoodsBrief);
|
// taoBaoGoodsBriefService.save(taoBaoGoodsBrief);
|
data.put("id", id);
|
data.put("msg", "添加成功");
|
} catch (Exception e) {
|
data.put("id", id);
|
data.put("msg", e.getMessage());
|
}
|
list.add(data);
|
}
|
JSONObject dataAll = new JSONObject();
|
dataAll.put("list", list);
|
out.print(JsonUtil.loadTrueResult(dataAll));
|
}
|
|
@RequestMapping(value = "addRecommendSectionGoods", method = RequestMethod.POST)
|
public void addRecommendSectionGoods(long rsid, String tbids, PrintWriter out) {
|
String[] tbidStrArr = tbids.split(",");
|
long[] tbidArr = StringUtil.parseLong(tbidStrArr);
|
List<JSONObject> list = new ArrayList<JSONObject>();
|
JSONObject data = null;
|
for (long tbid : tbidArr) {
|
data = new JSONObject();
|
try {
|
taoBaoGoodsBriefService.addRecommendSectionGoods(rsid, tbid);
|
data.put("id", tbid);
|
data.put("msg", "添加成功");
|
} catch (NotExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
} catch (ExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
}
|
list.add(data);
|
}
|
JSONObject dataAll = new JSONObject();
|
dataAll.put("list", list);
|
out.print(JsonUtil.loadTrueResult(dataAll));
|
}
|
|
/**
|
*
|
* 方法说明: 添加商品到每日任务
|
*
|
* @author mawurui createTime 2018年3月29日 上午11:36:25
|
* @param tbids
|
* @param out
|
*/
|
@RequestMapping(value = "addEveryDayTask", method = RequestMethod.POST)
|
public void addEveryDayTask(String tbids, PrintWriter out) {
|
String[] tbidStrArr = tbids.split(",");
|
long[] tbidArr = StringUtil.parseLong(tbidStrArr);
|
List<JSONObject> list = new ArrayList<JSONObject>();
|
JSONObject data = null;
|
for (long tbid : tbidArr) {
|
data = new JSONObject();
|
try {
|
taoBaoGoodsBriefService.addEveryDayTask(tbid);
|
data.put("id", tbid);
|
data.put("msg", "添加成功");
|
} catch (NotExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
} catch (ExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
}
|
list.add(data);
|
}
|
JSONObject dataAll = new JSONObject();
|
dataAll.put("list", list);
|
out.print(JsonUtil.loadTrueResult(dataAll));
|
}
|
|
@RequestMapping(value = "addClassRecommendGoods", method = RequestMethod.POST)
|
public void addClassRecommendGoods(long gcid, String tbids, PrintWriter out) {
|
String[] tbidStrArr = tbids.split(",");
|
long[] tbidArr = StringUtil.parseLong(tbidStrArr);
|
List<JSONObject> list = new ArrayList<JSONObject>();
|
JSONObject data = null;
|
for (long tbid : tbidArr) {
|
data = new JSONObject();
|
try {
|
taoBaoGoodsBriefService.addClassRecommendGoods(gcid, tbid);
|
data.put("id", tbid);
|
data.put("msg", "添加成功");
|
} catch (NotExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
} catch (ExistObjectException e) {
|
data.put("id", tbid);
|
data.put("msg", e.getMessage());
|
}
|
list.add(data);
|
}
|
JSONObject dataAll = new JSONObject();
|
dataAll.put("list", list);
|
out.print(JsonUtil.loadTrueResult(dataAll));
|
}
|
|
@RequestMapping(value = "updateAllTaoBaoGoods", method = RequestMethod.POST)
|
public void updateAllTaoBaoGoods(PrintWriter out) {
|
taoBaoGoodsBriefService.getUpdateTaoBao();
|
out.print(JsonUtil.loadTrueResult("更新完成"));
|
}
|
|
/**
|
*
|
* @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 {
|
|
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);
|
|
// 查询词 key------ 不能为空---------
|
if (!StringUtil.isNullOrEmpty(key))
|
filter.setKey(key);
|
|
if(tbClassId != null ) {
|
GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
|
if (rb == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型已不存在,请刷新重试"));
|
return;
|
} else {
|
|
// 淘宝类目id
|
String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
|
|
if (StringUtil.isNullOrEmpty(taoBaoCatIds)){
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型淘宝id为空,请通知相关人员进行维护"));
|
return;
|
} 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;
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
|
|
if (!islink) {
|
/* 淘宝物料搜索 */
|
result = TaoKeApiUtil.searchWuLiao(filter);
|
if (result == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
return;
|
} else {
|
taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
}
|
|
} else {
|
/* 商品链接搜索 */
|
|
TaoBaoGoodsBrief searchGoodsDetail = TaoKeApiUtil.searchGoodsDetail(auctionId);
|
if (searchGoodsDetail == null) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
return;
|
} else {
|
taoBaoGoodsBriefs = new ArrayList<>();
|
taoBaoGoodsBriefs.add(searchGoodsDetail);
|
|
result = new TaoBaoSearchResult();
|
result.setTaoBaoGoodsBriefs(taoBaoGoodsBriefs);
|
|
PageEntity pageEntity = new PageEntity(pageIndex, pageSize, 0, 0);
|
result.setPageEntity(pageEntity);
|
}
|
}
|
|
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 = selectionGoodsService.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("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);
|
}
|
}
|
|
// TODO /* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
// TODO /* 预计收益: 公司、用户 */
|
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));
|
|
// 插入本地数据-淘宝数据记录
|
taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
|
} 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 = "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);
|
|
// TODO /* 预计收益: 公司、用户 */
|
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 = selectionGoodsService.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));
|
|
// 插入本地数据-淘宝数据记录
|
taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
}
|
|
} catch (Exception e) {
|
// TODO Auto-generated catch block
|
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) {
|
// TODO Auto-generated catch block
|
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 = selectionGoodsService.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);
|
|
// TODO /* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
// TODO /* 预计收益: 公司、用户 */
|
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));
|
|
// 插入本地数据-淘宝数据记录
|
taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
|
} 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 = selectionGoodsService.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);
|
|
// TODO /* 券后价--计算 */
|
BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
|
map.put("couponPrice", couponPrice);
|
|
// TODO /* 预计收益: 公司、用户 */
|
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));
|
|
// // 插入本地数据-淘宝数据记录
|
taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
e.printStackTrace();
|
}
|
|
|
}
|
|
}
|