| | |
| | | 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 javax.servlet.http.HttpServletRequest;
|
| | |
|
| | | 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 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.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.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | 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.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
|
| | | 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;
|
| | |
| | |
|
| | | @Resource
|
| | | private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
|
| | | @Resource
|
| | | private TaoBaoGoodsBriefRecordService taoBaoGoodsBriefRecordService;
|
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | | @Resource
|
| | | private QualityFactoryService selectionGoodsService;
|
| | | private QualityFactoryService qualityFactoryService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
| | |
|
| | |
| | |
|
| | | @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));
|
| | | }
|
| | |
|
| | | @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("更新完成"));
|
| | | }
|
| | | |
| | | @Resource
|
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
|
| | |
|
| | | /**
|
| | | *
|
| | |
| | | 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,
|
| | | Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel, String cid,
|
| | | 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,cid);
|
| | |
|
| | | 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);
|
| | | }
|
| | | }
|
| | | if (result == null) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
|
| | | return;
|
| | | }
|
| | |
|
| | | // 查询条件和类目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) {
|
| | | 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 : taoBaoGoodsBriefs) {
|
| | | for (TaoBaoGoodsBrief goodsBrief : listTaoBaoGoods) {
|
| | | listAuctionId.add(goodsBrief.getAuctionId());
|
| | | }
|
| | |
|
| | | // 验证是否存在数据库
|
| | | List<QualityFactory> listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId);
|
| | | List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
| | |
|
| | | List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
| | |
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
|
| | |
|
| | | taoBaoGoodsBrief.setId(null);
|
| | |
|
| | |
| | |
|
| | | 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 = "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,null);
|
| | |
|
| | | 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);
|
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("加入成功"));
|
| | |
|
| | | } 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, String cids)
|
| | | 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);
|
| | | }
|
| | | }
|
| | | if (!StringUtil.isNullOrEmpty(cids))
|
| | | filter.setCateIds(cids);
|
| | |
|
| | | // 查询条件和类目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;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | if (goodsBrief != null) {
|
| | | Long id = goodsBrief.getId();
|
| | | // 查询精选库
|
| | | Long has = selectionGoodsService.queryCountByGoodsId(id);
|
| | | Long has = qualityFactoryService.queryCountByGoodsId(id);
|
| | |
|
| | | if (has != null && has > 0l) {
|
| | | existence = 1; // 存在商品中
|
| | |
| | | data.put("listGoods", gson.toJson(listmap));
|
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | |
|
| | | // 插入本地数据-淘宝数据记录
|
| | | taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
| | | }
|
| | |
|
| | | } catch (Exception e) {
|
| | |
| | | }
|
| | |
|
| | | // 验证是否存在数据库
|
| | | List<QualityFactory> listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId);
|
| | | List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
| | |
|
| | | List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
| | |
|
| | |
| | |
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
| | |
|
| | | // 插入本地数据-淘宝数据记录
|
| | | taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
|
| | |
|
| | | } catch (Exception e) {
|
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | | |
| | |
|
| | | private List<Map<String, Object>> filterTaoBaoGoodsWithQulity(List<TaoBaoGoodsBrief> goodsList) {
|
| | |
|
| | | // 插入商品集合
|
| | | List<Long> listAuctionId = new ArrayList<Long>();
|
| | | for (TaoBaoGoodsBrief goodsBrief : goodsList) {
|
| | | listAuctionId.add(goodsBrief.getAuctionId());
|
| | | }
|
| | |
|
| | | // 验证是否存在数据库
|
| | | List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
| | |
|
| | | List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
| | |
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) {
|
| | | 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);
|
| | | }
|
| | |
|
| | | return listmap;
|
| | |
|
| | | }
|
| | |
|
| | | |
| | | @RequestMapping(value = "searchDaTaoKe")
|
| | | public void searchDaTaoKe(String callback, Integer pageIndex, Integer pageSize, String key, Long cid,
|
| | | PrintWriter out) {
|
| | | try {
|
| | | key = StringUtil.isNullOrEmpty(key) ? "" : key;
|
| | | List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.listSearchByTitleWithCid(key, cid, pageIndex,
|
| | | pageSize);
|
| | | long count = daTaoKeGoodsDetailV2Service.countSearchByTitleWithCid(key, cid);
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | for (DaTaoKeDetailV2 detail : list) {
|
| | | goodsList.add(TaoBaoUtil.convert(detail));
|
| | | }
|
| | |
|
| | | List<Map<String, Object>> listmap = filterTaoBaoGoodsWithQulity(goodsList);
|
| | |
|
| | | PageEntity pe = new PageEntity(pageIndex, pageSize, (int) count,(int)(count%pageSize==0?count/pageSize:count/pageSize+1));
|
| | | 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")
|
| | |
| | | }
|
| | |
|
| | | // 验证是否存在数据库
|
| | | List<QualityFactory> listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId);
|
| | | List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
|
| | |
|
| | | List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
|
| | |
|
| | |
| | | }
|
| | |
|
| | | map.put("isExistence", existence);
|
| | |
|
| | | listmap.add(map);
|
| | | }
|
| | |
|
| | |
| | | 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();
|