taoapigoods
This commit is contained in:
parent
a2d4e766cb
commit
6a64f38cd5
|
|
@ -0,0 +1,98 @@
|
|||
package com.qihang.tao.api;
|
||||
|
||||
import com.qihang.tao.domain.TaoGoods;
|
||||
import com.qihang.tao.domain.TaoGoodsSku;
|
||||
import com.qihang.tao.domain.TaoOrder;
|
||||
import com.taobao.api.ApiException;
|
||||
import com.taobao.api.DefaultTaobaoClient;
|
||||
import com.taobao.api.TaobaoClient;
|
||||
import com.taobao.api.domain.Item;
|
||||
import com.taobao.api.request.ItemSkusGetRequest;
|
||||
import com.taobao.api.request.ItemsOnsaleGetRequest;
|
||||
import com.taobao.api.response.ItemSkusGetResponse;
|
||||
import com.taobao.api.response.ItemsOnsaleGetResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GoodsApiHelper {
|
||||
private static Logger log = LoggerFactory.getLogger(GoodsApiHelper.class);
|
||||
private static final String LIST_FIELDS = "approve_status,num_iid,title,nick,type,cid,pic_url,num,props,props_name,valid_thru,list_time,price,has_discount,has_invoice,has_warranty," +
|
||||
"has_showcase,modified,delist_time,postage_id,seller_cids,outer_id,sold_quantity,skus";
|
||||
|
||||
public static ApiResult<TaoGoods> pullGoods(Long pageNo, Long pageSize, String url, String appKey, String appSecret, String sessionKey) throws ApiException {
|
||||
log.info("=======开始全量商品数据{}=========", LocalDateTime.now());
|
||||
TaobaoClient client = new DefaultTaobaoClient(url, appKey, appSecret);
|
||||
ItemsOnsaleGetRequest req = new ItemsOnsaleGetRequest();
|
||||
req.setFields(LIST_FIELDS);
|
||||
req.setPageNo(pageNo);
|
||||
req.setPageSize(pageSize);
|
||||
ItemsOnsaleGetResponse rsp = client.execute(req, sessionKey);
|
||||
if (rsp.getItems() == null) {
|
||||
return new ApiResult(0, new ArrayList());
|
||||
}
|
||||
List<TaoGoods> goodsList = new ArrayList<>();
|
||||
for (Item item : rsp.getItems()) {
|
||||
|
||||
TaoGoods goods = new TaoGoods();
|
||||
goods.setNumIid(item.getNumIid());
|
||||
goods.setTitle(item.getTitle());
|
||||
goods.setNick(item.getNick());
|
||||
goods.setType(item.getType());
|
||||
goods.setCid(item.getCid());
|
||||
goods.setSellerCids(item.getSellerCids());
|
||||
goods.setPicUrl(item.getPicUrl());
|
||||
goods.setNum(item.getNum().intValue());
|
||||
goods.setValidThru(item.getValidThru().intValue());
|
||||
goods.setHasDiscount(item.getHasDiscount() + "");
|
||||
goods.setHasInvoice(item.getHasInvoice() + "");
|
||||
goods.setHasWarranty(item.getHasWarranty() + "");
|
||||
goods.setHasShowcase(item.getHasShowcase() + "");
|
||||
goods.setModified(item.getModified());
|
||||
goods.setCreateTime(item.getCreated());
|
||||
goods.setDelistTime(item.getDelistTime());
|
||||
goods.setPostageId(item.getPostageId() != null ? item.getPostageId().intValue() : 0);
|
||||
goods.setOuterId(item.getOuterId());
|
||||
goods.setListTime(item.getListTime());
|
||||
goods.setPrice(item.getPrice());
|
||||
goods.setSoldQuantity(item.getSoldQuantity() == null ? 0 : item.getSoldQuantity().intValue());
|
||||
goods.setFirstStartsTime(item.getFirstStartsTime());
|
||||
goods.setSkus(pullSku(client, sessionKey, item.getNumIid()));
|
||||
goodsList.add(goods);
|
||||
}
|
||||
return new ApiResult(rsp.getTotalResults().intValue(), goodsList);
|
||||
}
|
||||
|
||||
private static List<TaoGoodsSku> pullSku(TaobaoClient client, String sessionKey, Long numIid) {
|
||||
try {
|
||||
List<TaoGoodsSku> skus = new ArrayList<>();
|
||||
ItemSkusGetRequest req1 = new ItemSkusGetRequest();
|
||||
req1.setFields("sku_id,num_iid,properties,properties_name,quantity,price,outer_id,created,modified,status,sku_spec_id,barcode");
|
||||
req1.setNumIids(numIid + "");
|
||||
ItemSkusGetResponse rsp1 = client.execute(req1, sessionKey);
|
||||
if (rsp1.getSkus() != null) {
|
||||
for (var s : rsp1.getSkus()) {
|
||||
TaoGoodsSku sku = new TaoGoodsSku();
|
||||
sku.setNumIid(s.getNumIid());
|
||||
sku.setSkuId(s.getSkuId());
|
||||
sku.setProperties(s.getProperties());
|
||||
sku.setPropertiesName(s.getPropertiesName());
|
||||
sku.setQuantity(s.getQuantity());
|
||||
sku.setPrice(StringUtils.hasText(s.getPrice())?Double.parseDouble(s.getPrice()):0.0);
|
||||
sku.setOuterId(s.getOuterId());
|
||||
sku.setStatus(s.getStatus());
|
||||
sku.setCreated(s.getCreated());
|
||||
sku.setModified(s.getModified());
|
||||
skus.add(sku);
|
||||
}
|
||||
return skus;
|
||||
} else return null;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,149 +1,105 @@
|
|||
//package com.qihang.tao.controller;
|
||||
//
|
||||
//import com.qihang.tao.common.ApiResult;
|
||||
//import org.springframework.util.StringUtils;
|
||||
//import org.springframework.web.bind.annotation.RequestBody;
|
||||
//import org.springframework.web.bind.annotation.RequestMapping;
|
||||
//import org.springframework.web.bind.annotation.RequestMethod;
|
||||
//import org.springframework.web.bind.annotation.RestController;
|
||||
//
|
||||
//import java.util.Map;
|
||||
//
|
||||
//@RestController
|
||||
//public class GoodsApiController {
|
||||
///**
|
||||
// * @api {post} /api/v1/pull_goods 更新店铺商品列表
|
||||
// * @apiVersion 1.0.0
|
||||
// * @apiName pullGoods
|
||||
// * @apiGroup taoGood
|
||||
// * @apiParam {String} startTime 开始时间
|
||||
// * @apiParam {String} endTime 结束时间
|
||||
// * @apiParam {Number} shopId 店铺id(东方符号:7)
|
||||
// * @apiSuccessExample {json} Success-Response:
|
||||
// * HTTP/1.1 200 OK{
|
||||
// "code": "0成功其他失败",
|
||||
// "msg": "成功或失败信息"
|
||||
// }
|
||||
// */
|
||||
// @RequestMapping(value = "/pull_goods", method = RequestMethod.POST)
|
||||
// public ApiResult<Integer> getOrderList(@RequestBody DataRow reqData) throws Exception {
|
||||
// String startDate = reqData.getString("startTime");
|
||||
// String endDate = reqData.getString("endTime");
|
||||
// Integer shopId=reqData.getInt("shopId");
|
||||
// var checkResult = this.check(shopId);
|
||||
// if (checkResult.getCode() != EnumResultVo.SUCCESS.getIndex()) {
|
||||
// return new ApiResult<>(checkResult.getCode(), checkResult.getMsg());
|
||||
// }
|
||||
// Integer pageIndex = 1;
|
||||
// Integer pageSize = 40;
|
||||
// Long endTime = System.currentTimeMillis() / 1000;//更新结束时间
|
||||
// Long startTime = endTime-(60 * 60 * 24 * 7);//更新开始时间
|
||||
// if(!StringUtils.isEmpty(startDate))startTime = DateUtil.dateToStamp(startDate).longValue();
|
||||
//
|
||||
// if (!StringUtils.isEmpty(endDate)) endTime = DateUtil.dateTimeToStamp(endDate + " 23:59:00").longValue();
|
||||
//
|
||||
// long kaishidaojiesu = endTime - startTime;
|
||||
// long forSize = (kaishidaojiesu % (60 * 60 * 24 * 7) == 0) ? kaishidaojiesu / (60 * 60 * 24 * 7) : kaishidaojiesu / (60 * 60 * 24 * 7) + 1;//计算需要循环的次数
|
||||
// for (int i = 0; i < forSize; i++) {
|
||||
// Long startTime1 = startTime + i * 60 * 60 * 24 * 7;
|
||||
// Long endTime1 = startTime1 + 60 * 60 * 24 * 7;
|
||||
// Integer totalCount = pullGoods(checkResult.getData(),pageIndex,pageSize,startTime1,endTime1);
|
||||
// int totalPage = (totalCount % pageSize == 0) ? totalCount / pageSize : (totalCount / pageSize) + 1;
|
||||
// while (pageIndex < totalPage) {
|
||||
// pageIndex++;
|
||||
// pullGoods(checkResult.getData(),pageIndex,pageSize,startTime1,endTime1);
|
||||
// }
|
||||
// pageIndex=1;
|
||||
// }
|
||||
// return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(), "SUCCESS");
|
||||
// }
|
||||
//
|
||||
// public Integer pullGoods(DcSysThirdSettingEntity result, Integer pageNo, Integer pageSize, Long startTime, Long endTime) throws Exception{
|
||||
// String sendUrl="http://gw.api.taobao.com/router/rest";
|
||||
// Map<String, String> params = new HashMap<>();
|
||||
// params.put("method","taobao.items.onsale.get");
|
||||
// params.put("app_key",result.getAppKey());
|
||||
// params.put("sign_method","md5");
|
||||
// params.put("timestamp",String.valueOf(System.currentTimeMillis()));
|
||||
// params.put("session",result.getAccess_token());
|
||||
// params.put("v","2.0");
|
||||
// params.put("fields","approve_status,num_iid,title,pic_url,num,list_time,price,delist_time,outer_id,sold_quantity,modified");
|
||||
// params.put("nick",result.getName());
|
||||
// params.put("page_no",String.valueOf(pageNo));
|
||||
// params.put("page_size",String.valueOf(pageSize));
|
||||
// params.put("start_modified",DateUtil.stampToDateTime(startTime));
|
||||
// params.put("end_modified",DateUtil.stampToDateTime(endTime));
|
||||
// params.put("sign",ExpressClient.buildSign(params,result.getAppSecret()));
|
||||
// HttpResponse<String> response = HttpUtil.doPost(sendUrl,HttpUtil.map2Url(params));
|
||||
// var dd = XmlUtil.xmlToJson(response.body());
|
||||
// if(dd.getInteger("total_results").intValue()>0){
|
||||
// var jsonArray= dd.getJSONObject("items").getJSONArray("item");
|
||||
// taoGoodService.addTaoGoods(jsonArray);
|
||||
// }
|
||||
// return dd.getInteger("total_results");
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * @api {post} /pull_goods_comment 更新商品评价
|
||||
// * @apiVersion 1.0.0
|
||||
// * @apiName pullGoodsComment
|
||||
// * @apiGroup taoGood
|
||||
// * @apiSuccessExample {json} Success-Response:
|
||||
// * HTTP/1.1 200 OK
|
||||
// * {
|
||||
// * "code": 0:成功,
|
||||
// * "msg": "信息"
|
||||
// * }
|
||||
// */
|
||||
///* @RequestMapping(value = "/pull_goods_comment", method = RequestMethod.POST)
|
||||
// public ApiResult<Integer> pullGoodsComments(HttpServletRequest request){
|
||||
// Integer shopId=7;
|
||||
// Integer pageIndex = 1;
|
||||
// Integer pageSize = 100;
|
||||
// Date startDate=StringUtils.isEmpty(taoGoodService.getGoodCommentDate()) ? DateUtil.beforeDayDate(180) : taoGoodService.getGoodCommentDate();
|
||||
// System.out.println(startDate);
|
||||
// var result = pullTaoGoodsComment(shopId,pageIndex,pageSize,startDate);
|
||||
// if(result.getCode()==0){
|
||||
// while (result.getData().intValue()>pageSize.intValue()) {
|
||||
// pageIndex++;
|
||||
// System.out.println(pageIndex);
|
||||
// pullTaoGoodsComment(shopId,pageIndex,pageSize,startDate);
|
||||
// }
|
||||
// return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(),"成功");
|
||||
// }else return new ApiResult<>(EnumResultVo.Fail.getIndex(),"失败");
|
||||
//
|
||||
// }*/
|
||||
///* public ApiResult<Integer> pullTaoGoodsComment(Integer shopId,Integer pageIndex,Integer pageSize,Date startDate){
|
||||
// var result = this.check(shopId).getData();
|
||||
// TaobaoClient client = new DefaultTaobaoClient(result.getRequest_url(), result.getAppKey(), result.getAppSecret());
|
||||
// TraderatesGetRequest req = new TraderatesGetRequest();
|
||||
// req.setFields("tid,oid,role,nick,result,totalResults,hasNext,created,rated_nick,item_title,item_price,content,reply,num_iid");
|
||||
// req.setRateType("get");
|
||||
// req.setRole("buyer");
|
||||
// req.setStartDate(startDate);
|
||||
// req.setPageNo(pageIndex.longValue());
|
||||
// req.setPageSize(pageSize.longValue());
|
||||
// req.setUseHasNext(true);
|
||||
// try {
|
||||
// TraderatesGetResponse rsp = client.execute(req, result.getAccess_token());
|
||||
// if(rsp.getTradeRates().size()>0){
|
||||
// List<DcTaoGoodsCommentEntity> list =new ArrayList<>();
|
||||
// rsp.getTradeRates().forEach(c->{
|
||||
// DcTaoGoodsCommentEntity comment=new DcTaoGoodsCommentEntity();
|
||||
// comment.setNumIid(c.getNumIid());
|
||||
// comment.setBuyer(c.getNick());
|
||||
// comment.setCreated(c.getCreated());
|
||||
// comment.setTid(c.getTid());
|
||||
// comment.setOid(c.getOid());
|
||||
// comment.setComment(c.getContent());
|
||||
// comment.setResult(c.getResult());
|
||||
// list.add(comment);
|
||||
// });
|
||||
// taoGoodService.addGoodComment(list);
|
||||
// return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(),"成功",rsp.getTradeRates().size());
|
||||
// }else return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(),"失败");
|
||||
// }catch (Exception e){
|
||||
// return new ApiResult<>(EnumResultVo.Fail.getIndex(),"失败",0);
|
||||
// }
|
||||
// }*/
|
||||
//}
|
||||
package com.qihang.tao.controller;
|
||||
|
||||
import com.qihang.common.common.EnumResultVo;
|
||||
import com.qihang.common.enums.HttpStatus;
|
||||
import com.qihang.tao.api.ApiCommon;
|
||||
import com.qihang.tao.api.ApiResult;
|
||||
import com.qihang.tao.api.GoodsApiHelper;
|
||||
import com.qihang.tao.api.OrderApiHelper;
|
||||
import com.qihang.tao.common.TaoRequest;
|
||||
import com.qihang.tao.domain.TaoGoods;
|
||||
import com.qihang.tao.domain.TaoOrder;
|
||||
import com.qihang.tao.service.TaoGoodsService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RequestMapping("/goods")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class GoodsApiController {
|
||||
private final ApiCommon apiCommon;
|
||||
private final TaoGoodsService goodsService;
|
||||
|
||||
/**
|
||||
* @api {post} /api/v1/pull_goods 更新店铺商品列表
|
||||
* @apiVersion 1.0.0
|
||||
* @apiName pullGoods
|
||||
* @apiGroup taoGood
|
||||
* @apiParam {String} startTime 开始时间
|
||||
* @apiParam {String} endTime 结束时间
|
||||
* @apiParam {Number} shopId 店铺id(东方符号:7)
|
||||
* @apiSuccessExample {json} Success-Response:
|
||||
* HTTP/1.1 200 OK{
|
||||
"code": "0成功其他失败",
|
||||
"msg": "成功或失败信息"
|
||||
}
|
||||
*/
|
||||
@RequestMapping(value = "/pull_goods", method = RequestMethod.POST)
|
||||
public ApiResult<Integer> pullGoodsList(@RequestBody TaoRequest req) throws Exception {
|
||||
if (req.getShopId() == null || req.getShopId() <= 0) {
|
||||
return new ApiResult(HttpStatus.PARAMS_ERROR, "参数错误,没有店铺Id");
|
||||
}
|
||||
var checkResult = apiCommon.checkBefore(req.getShopId());
|
||||
if (checkResult.getCode() != HttpStatus.SUCCESS) {
|
||||
return new ApiResult(checkResult.getCode(), checkResult.getMsg());
|
||||
}
|
||||
String sessionKey = checkResult.getData().getAccessToken();
|
||||
String url = checkResult.getData().getApiRequestUrl();
|
||||
String appKey = checkResult.getData().getAppKey();
|
||||
String appSecret = checkResult.getData().getAppSecret();
|
||||
|
||||
Long pageIndex = 1L;
|
||||
Long pageSize = 40L;
|
||||
|
||||
ApiResult<TaoGoods> listApiResult = GoodsApiHelper.pullGoods(pageIndex, pageSize, url, appKey, appSecret, sessionKey);
|
||||
|
||||
int insertSuccess = 0;//新增成功的订单
|
||||
int totalError = 0;
|
||||
int hasExistOrder = 0;//已存在的订单数
|
||||
|
||||
for (var goods:listApiResult.getList()) {
|
||||
int result = goodsService.saveAndUpdateGoods(req.getShopId(), goods);
|
||||
if (result == EnumResultVo.DataExist.getIndex()) {
|
||||
//已经存在
|
||||
hasExistOrder++;
|
||||
} else if (result == EnumResultVo.SUCCESS.getIndex()) {
|
||||
insertSuccess++;
|
||||
}else {
|
||||
totalError++;
|
||||
}
|
||||
}
|
||||
//计算总页数
|
||||
int totalPage = (listApiResult.getTotalRecords() % pageSize == 0) ? listApiResult.getTotalRecords() / pageSize.intValue() : (listApiResult.getTotalRecords() / pageSize.intValue()) + 1;
|
||||
pageIndex++;
|
||||
|
||||
while (pageIndex <= totalPage) {
|
||||
|
||||
ApiResult<TaoGoods> result1 = GoodsApiHelper.pullGoods(pageIndex, pageIndex, url, appKey, appSecret, sessionKey);
|
||||
//循环插入订单数据到数据库
|
||||
for (var goods:listApiResult.getList()) {
|
||||
int result = goodsService.saveAndUpdateGoods(req.getShopId(), goods);
|
||||
if (result == EnumResultVo.DataExist.getIndex()) {
|
||||
//已经存在
|
||||
hasExistOrder++;
|
||||
} else if (result == EnumResultVo.SUCCESS.getIndex()) {
|
||||
insertSuccess++;
|
||||
}else {
|
||||
totalError++;
|
||||
}
|
||||
}
|
||||
pageIndex++;
|
||||
}
|
||||
|
||||
String msg = "成功,总共找到:" + listApiResult.getTotalRecords() + "条订单,新增:" + insertSuccess + "条,添加错误:" + totalError + "条,更新:" + hasExistOrder + "条";
|
||||
return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(), msg);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
package com.qihang.tao.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -168,8 +171,19 @@ public class TaoGoods implements Serializable {
|
|||
*/
|
||||
private Date createTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<TaoGoodsSku> skus;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public List<TaoGoodsSku> getSkus() {
|
||||
return skus;
|
||||
}
|
||||
|
||||
public void setSkus(List<TaoGoodsSku> skus) {
|
||||
this.skus = skus;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -66,12 +66,12 @@ public class TaoGoodsSku implements Serializable {
|
|||
/**
|
||||
* sku创建日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
private Date created;
|
||||
private String created;
|
||||
|
||||
/**
|
||||
* sku最后修改日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
private Date modified;
|
||||
private String modified;
|
||||
|
||||
/**
|
||||
* sku状态。 normal
|
||||
|
|
@ -262,28 +262,28 @@ public class TaoGoodsSku implements Serializable {
|
|||
/**
|
||||
* sku创建日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
public Date getCreated() {
|
||||
public String getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
||||
/**
|
||||
* sku创建日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
public void setCreated(Date created) {
|
||||
public void setCreated(String created) {
|
||||
this.created = created;
|
||||
}
|
||||
|
||||
/**
|
||||
* sku最后修改日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
public Date getModified() {
|
||||
public String getModified() {
|
||||
return modified;
|
||||
}
|
||||
|
||||
/**
|
||||
* sku最后修改日期 时间格式:yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
public void setModified(Date modified) {
|
||||
public void setModified(String modified) {
|
||||
this.modified = modified;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,4 +13,6 @@ import com.qihang.tao.domain.bo.TaoGoodsBo;
|
|||
*/
|
||||
public interface TaoGoodsService extends IService<TaoGoods> {
|
||||
PageResult<TaoGoods> queryPageList(TaoGoodsBo bo, PageQuery pageQuery);
|
||||
|
||||
int saveAndUpdateGoods(Integer shopId,TaoGoods goods);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,14 +3,21 @@ package com.qihang.tao.service.impl;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.qihang.common.common.EnumResultVo;
|
||||
import com.qihang.tao.common.PageQuery;
|
||||
import com.qihang.tao.common.PageResult;
|
||||
import com.qihang.tao.domain.TaoGoods;
|
||||
import com.qihang.tao.domain.TaoGoodsSku;
|
||||
import com.qihang.tao.domain.bo.TaoGoodsBo;
|
||||
import com.qihang.tao.mapper.TaoGoodsSkuMapper;
|
||||
import com.qihang.tao.service.TaoGoodsService;
|
||||
import com.qihang.tao.mapper.TaoGoodsMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author TW
|
||||
|
|
@ -23,6 +30,7 @@ public class TaoGoodsServiceImpl extends ServiceImpl<TaoGoodsMapper, TaoGoods>
|
|||
implements TaoGoodsService {
|
||||
|
||||
private final TaoGoodsMapper mapper;
|
||||
private final TaoGoodsSkuMapper skuMapper;
|
||||
|
||||
@Override
|
||||
public PageResult<TaoGoods> queryPageList(TaoGoodsBo bo, PageQuery pageQuery) {
|
||||
|
|
@ -31,6 +39,43 @@ public class TaoGoodsServiceImpl extends ServiceImpl<TaoGoodsMapper, TaoGoods>
|
|||
|
||||
return PageResult.build(taoGoodsPage);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public int saveAndUpdateGoods(Integer shopId, TaoGoods goods) {
|
||||
List<TaoGoods> goodsList = mapper.selectList(new LambdaQueryWrapper<TaoGoods>().eq(TaoGoods::getNumIid, goods.getNumIid()));
|
||||
if(goodsList!=null && goodsList.size()>0){
|
||||
// 存在,更新
|
||||
goods.setShopId(shopId);
|
||||
goods.setId(goodsList.get(0).getId());
|
||||
mapper.updateById(goods);
|
||||
|
||||
// 删除sku
|
||||
skuMapper.delete(new LambdaQueryWrapper<TaoGoodsSku>().eq(TaoGoodsSku::getTaoGoodsId,goods.getId()));
|
||||
|
||||
// 重新插入sku
|
||||
if(goods.getSkus()!=null) {
|
||||
for (var sku : goods.getSkus()) {
|
||||
sku.setTaoGoodsId(goods.getId());
|
||||
skuMapper.insert(sku);
|
||||
}
|
||||
}
|
||||
return EnumResultVo.DataExist.getIndex();
|
||||
}else {
|
||||
// 不存在,新增
|
||||
goods.setShopId(shopId);
|
||||
goods.setCreateTime(new Date());
|
||||
mapper.insert(goods);
|
||||
// 插入sku
|
||||
if(goods.getSkus()!=null) {
|
||||
for (var sku : goods.getSkus()) {
|
||||
sku.setTaoGoodsId(goods.getId());
|
||||
skuMapper.insert(sku);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue