Commit f501c64d by huluobin

订单publish校验规则修改、采购接口修改

parent 9c9a65b7
...@@ -2,11 +2,14 @@ package com.bailuntec.ana.application.order; ...@@ -2,11 +2,14 @@ package com.bailuntec.ana.application.order;
import com.bailuntec.ana.domain.order.Order; import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.domain.order.OrderDetail; import com.bailuntec.ana.domain.order.OrderDetail;
import com.bailuntec.ana.interfaces.order.OrderValidGroup;
import com.bailuntec.ana.vo.order.req.OrderQueryPageRequest; import com.bailuntec.ana.vo.order.req.OrderQueryPageRequest;
import com.bailuntec.ana.vo.order.req.RefundOrderRequest; import com.bailuntec.ana.vo.order.req.RefundOrderRequest;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import java.util.List; import java.util.List;
/** /**
...@@ -67,20 +70,38 @@ public interface IOrderService extends IService<Order> { ...@@ -67,20 +70,38 @@ public interface IOrderService extends IService<Order> {
* 分页查询订单列表 * 分页查询订单列表
* </p> * </p>
* *
* @param request * @param request req
* @return * @return page
*/ */
Page<Order> queryPage(OrderQueryPageRequest request); Page<Order> queryPage(OrderQueryPageRequest request);
/**
* <p>
* 查询待同步刊登帐号信息的订单
* </p>
*
* @return list
*/
List<Order> queryUnSyncPdsAccountOrder();
/**
* <p>
* 查询待同步订单详情的订单
* </p>
*
* @return list
*/
List<Order> queryUnSyncDetailsOrder();
/** /**
* <p> * <p>
* 从pams同步订单里面的刊登帐号信息 * 从pams同步订单里面的刊登帐号信息
* </p> * </p>
* *
* @param orderId 订单id * @param order 订单
*/ */
void syncOrderPdsAccount(String orderId); @Validated(OrderValidGroup.Purchase.class)
void syncOrderPdsAccount(@Valid Order order);
/** /**
...@@ -88,9 +109,10 @@ public interface IOrderService extends IService<Order> { ...@@ -88,9 +109,10 @@ public interface IOrderService extends IService<Order> {
* 从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本 * 从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本
* </p> * </p>
* *
* @param orderId 订单id * @param order 订单
*/ */
void syncOrderDetails(String orderId); @Validated(OrderValidGroup.Purchase.class)
void syncOrderDetails(@Valid Order order);
} }
...@@ -12,16 +12,21 @@ import com.bailuntec.ana.infrastructure.common.constant.PurchaseTaskConstant; ...@@ -12,16 +12,21 @@ import com.bailuntec.ana.infrastructure.common.constant.PurchaseTaskConstant;
import com.bailuntec.ana.infrastructure.common.exception.EntityNotFoundException; import com.bailuntec.ana.infrastructure.common.exception.EntityNotFoundException;
import com.bailuntec.ana.infrastructure.common.util.ListUtil; import com.bailuntec.ana.infrastructure.common.util.ListUtil;
import com.bailuntec.ana.infrastructure.common.util.SpringContextUtil; import com.bailuntec.ana.infrastructure.common.util.SpringContextUtil;
import com.bailuntec.ana.infrastructure.common.util.StringUtils;
import com.bailuntec.ana.infrastructure.feign.PamsApi; import com.bailuntec.ana.infrastructure.feign.PamsApi;
import com.bailuntec.ana.infrastructure.feign.PdsApi;
import com.bailuntec.ana.infrastructure.mapper.order.OrderMapper; import com.bailuntec.ana.infrastructure.mapper.order.OrderMapper;
import com.bailuntec.ana.vo.order.Currency;
import com.bailuntec.ana.vo.order.req.OrderQueryPageRequest; import com.bailuntec.ana.vo.order.req.OrderQueryPageRequest;
import com.bailuntec.ana.vo.order.req.RefundOrderRequest; import com.bailuntec.ana.vo.order.req.RefundOrderRequest;
import com.bailuntec.ana.vo.order.resp.Accounts; import com.bailuntec.ana.vo.order.resp.Accounts;
import com.bailuntec.ana.vo.product.resp.PdsSkuInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
...@@ -48,11 +53,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements ...@@ -48,11 +53,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Resource @Resource
private PamsApi pamsApi; private PamsApi pamsApi;
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void publishOrder(Order order) { public void publishOrder(Order order) {
this.save(order); this.save(order);
order.getOrderDetailList().forEach(orderDetail -> { order.getOrderDetailList().forEach(orderDetail -> {
orderDetail.setOrderId(orderDetail.getId()); orderDetail.setOrderId(order.getId());
orderDetailService.save(orderDetail); orderDetailService.save(orderDetail);
orderDetail.getOrderSpecificationList().forEach(orderSpecification -> { orderDetail.getOrderSpecificationList().forEach(orderSpecification -> {
...@@ -69,12 +75,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements ...@@ -69,12 +75,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
IOrderService orderService = SpringContextUtil.getBean(OrderServiceImpl.class); IOrderService orderService = SpringContextUtil.getBean(OrderServiceImpl.class);
//异步从pams获取刊登帐号信息 //异步从pams获取刊登帐号信息
orderService.syncOrderPdsAccount(order.getId()); orderService.syncOrderPdsAccount(order);
//异步从刊登系统获取对应的采购sku和采购成本 //异步从刊登系统获取对应的采购sku和采购成本
orderService.syncOrderDetails(order.getId()); orderService.syncOrderDetails(order);
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void orderSalesRefund(RefundOrderRequest request) { public void orderSalesRefund(RefundOrderRequest request) {
Order order = baseMapper.selectByOrderNoAndPdsAccountId(request.getOriginalOrderNo(), request.getPdsAccountId()); Order order = baseMapper.selectByOrderNoAndPdsAccountId(request.getOriginalOrderNo(), request.getPdsAccountId());
...@@ -114,31 +121,77 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements ...@@ -114,31 +121,77 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
public Page<Order> queryPage(OrderQueryPageRequest request) { public Page<Order> queryPage(OrderQueryPageRequest request) {
Page<Order> page = new Page<>(request.getPageNum(), request.getPageSize()); Page<Order> page = new Page<>(request.getPageNum(), request.getPageSize());
page = baseMapper.queryPage(page, request);
orderDetailService.setOrderDetail(page.getRecords()); orderDetailService.setOrderDetail(page.getRecords());
orderAddressService.setOrderAddress(page.getRecords()); orderAddressService.setOrderAddress(page.getRecords());
page = baseMapper.queryPage(page, request);
return page; return page;
} }
@Override
public List<Order> queryUnSyncPdsAccountOrder() {
List<Order> orderList = baseMapper.queryUnSyncPdsAccountOrder();
orderDetailService.setOrderDetail(orderList);
orderAddressService.setOrderAddress(orderList);
return orderList;
}
@Override
public List<Order> queryUnSyncDetailsOrder() {
List<Order> orderList = baseMapper.queryUnSyncDetailsOrder();
orderDetailService.setOrderDetail(orderList);
orderAddressService.setOrderAddress(orderList);
return orderList;
}
@Transactional(rollbackFor = Exception.class)
@Async @Async
@Override @Override
public void syncOrderPdsAccount(String orderId) { public void syncOrderPdsAccount(Order order) {
Order order = this.getById(orderId);
List<Accounts> accountsList = pamsApi.getAccount(order.getPdsAccountId()).getData(); List<Accounts> accountsList = pamsApi.getAccount(order.getPdsAccountId()).getData();
if (ListUtil.isNotEmpty(accountsList)) { if (ListUtil.isNotEmpty(accountsList)) {
Accounts accounts = accountsList.get(0); Accounts accounts = accountsList.get(0);
//刊登帐号 //刊登帐号
order.setPdsAccount(accounts.getAccount()); order.setPdsAccount(accounts.getAccount());
//站点 //站点
order.setSite(accounts.getSite()); order.setSite(accounts.getSiteEn());
this.updateById(order);
} }
order.getOrderDetailList().forEach(orderDetail -> {
if (StringUtils.isEmpty(orderDetail.getOriginalLink())) {
orderDetail.setOriginalLink(this.getEbayUrl());
orderDetailService.updateById(orderDetail);
}
});
}
@Validated
private String getEbayUrl() {
//todo 源链接生成规则
return "http://baidu.com";
} }
@Resource
PdsApi pdsApi;
@Transactional(rollbackFor = Exception.class)
@Async @Async
@Override @Override
public void syncOrderDetails(String orderId) { public void syncOrderDetails(Order order) {
//todo 从刊登系统获取对应的采购sku和采购成本
order.getOrderDetailList().forEach(orderDetail -> {
PdsSkuInfo pdsSkuInfo = pdsApi.queryPdsSku(order.getPlatform(), orderDetail.getSkuNo());
orderDetail.setPurchaseAsin(pdsSkuInfo.getPurchaseAsin());
orderDetail.setPurchaseSkuNo(pdsSkuInfo.getPurchaseSkuNo());
orderDetail.setPurchasePlat(pdsSkuInfo.getPurchasePlat());
orderDetail.setTolerance(pdsSkuInfo.getTolerance());
orderDetail.setCostPrice(pdsSkuInfo.getCostPrice());
orderDetailService.updateById(orderDetail);
});
} }
......
...@@ -16,8 +16,8 @@ import com.bailuntec.ana.vo.purchase.PurchaseProduct; ...@@ -16,8 +16,8 @@ import com.bailuntec.ana.vo.purchase.PurchaseProduct;
import com.bailuntec.ana.vo.purchase.PurchaseRequest; import com.bailuntec.ana.vo.purchase.PurchaseRequest;
import com.bailuntec.ana.vo.purchase.ShippingInfo; import com.bailuntec.ana.vo.purchase.ShippingInfo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
...@@ -49,50 +49,44 @@ public class PurchaseTaskServiceImpl extends ServiceImpl<PurchaseTaskMapper, Pur ...@@ -49,50 +49,44 @@ public class PurchaseTaskServiceImpl extends ServiceImpl<PurchaseTaskMapper, Pur
@Override @Override
public void addTask(/*@Validated(OrderValidGroup.Purchase.class)*/ Order order, public void addTask(Order order,
String taskType) { String taskType) {
PurchaseTask purchaseTask = new PurchaseTask(); order.getOrderDetailList().forEach(orderDetail -> {
purchaseTask.setOrderId(order.getId()); PurchaseTask purchaseTask = new PurchaseTask();
purchaseTask.setTaskType(taskType); purchaseTask.setOrderId(order.getId());
purchaseTaskMapper.insert(purchaseTask); purchaseTask.setTaskType(taskType);
purchaseTaskMapper.insert(purchaseTask);
List<OrderDetail> orderDetailList = order.getOrderDetailList();
orderDetailList.forEach(orderDetail -> {
PurchaseTaskDetail purchaseTaskDetail = new PurchaseTaskDetail(); PurchaseTaskDetail purchaseTaskDetail = new PurchaseTaskDetail();
purchaseTaskDetail.setOrderDetailId(orderDetail.getId()); purchaseTaskDetail.setOrderDetailId(orderDetail.getId());
purchaseTaskDetail.setPurchaseTaskId(purchaseTask.getId()); purchaseTaskDetail.setPurchaseTaskId(purchaseTask.getId());
purchaseTaskDetailMapper.insert(purchaseTaskDetail); purchaseTaskDetailMapper.insert(purchaseTaskDetail);
});
PurchaseRequest request = new PurchaseRequest();
request.setSite(order.getSite());
PurchaseRequest purchaseRequest = new PurchaseRequest(); //运输信息
purchaseRequest.setSite(order.getSite()); ShippingInfo shippingInfo = orderAddressService.buildPurchaseShippingInfo(order.getOrderAddress());
//运输信息 request.setShipping_info(shippingInfo);
ShippingInfo shippingInfo = orderAddressService.buildPurchaseShippingInfo(order.getOrderAddress()); request.setPurchaseOrderCallbackId(purchaseTask.getId());
purchaseRequest.setShipping_info(shippingInfo); List<OrderSpecification> orderSpecificationList = orderSpecificationMapper.selectByOrderDetailId(orderDetail.getId());
purchaseRequest.setPurchaseOrderCallbackId(purchaseTask.getId()); PurchaseProduct purchaseProduct = new PurchaseProduct();
purchaseRequest.setProducts(orderDetailList.stream() purchaseProduct.setAttr(orderSpecificationList.stream().collect(Collectors.toMap(
.map(orderDetail -> { OrderSpecification::getName, OrderSpecification::getValue, (k1, k2) -> k1)));
List<OrderSpecification> orderSpecificationList = orderSpecificationMapper.selectByOrderDetailId(orderDetail.getId()); purchaseProduct.setSku(orderDetail.getPurchaseSkuNo());
PurchaseProduct purchaseProduct = new PurchaseProduct(); purchaseProduct.setQuantity(orderDetail.getQuantity());
purchaseProduct.setAttr(orderSpecificationList.stream().collect(Collectors.toMap( purchaseProduct.setAsin(orderDetail.getPurchaseAsin());
OrderSpecification::getName, OrderSpecification::getValue, (k1, k2) -> k1
)));
purchaseProduct.setSku(orderDetail.getPurchaseSkuNo());
purchaseProduct.setQuantity(orderDetail.getQuantity());
purchaseProduct.setAsin(orderDetail.getPurchaseAsin());
orderDetail.setPurchaseStatus(OrderDetail.PURCHASE_STATUS_PURCHASING); orderDetail.setPurchaseStatus(OrderDetail.PURCHASE_STATUS_PURCHASING);
orderDetailMapper.updateById(orderDetail); orderDetailMapper.updateById(orderDetail);
return purchaseProduct; request.setProducts(Lists.newArrayList(purchaseProduct));
})
.collect(Collectors.toList())); pmsApi.task(taskType, purchaseTask.getId(), 1, request);
});
pmsApi.task(taskType, purchaseTask.getId(), 1, purchaseRequest);
} }
} }
...@@ -34,38 +34,38 @@ public class OrderAddress extends BaseModel { ...@@ -34,38 +34,38 @@ public class OrderAddress extends BaseModel {
@ApiModelProperty(value = "ana-order id") @ApiModelProperty(value = "ana-order id")
private String orderId; private String orderId;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "国家不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "国家不能为空")
@ApiModelProperty(value = "国家") @ApiModelProperty(value = "国家")
private String countryCode; private String countryCode;
@ApiModelProperty(value = "地区") @ApiModelProperty(value = "地区")
private String area; private String area;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "国家不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "国家不能为空")
@ApiModelProperty(value = "城市") @ApiModelProperty(value = "城市")
private String city; private String city;
@ApiModelProperty(value = "州") @ApiModelProperty(value = "州")
private String stateOrRegion; private String stateOrRegion;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "地址不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "地址不能为空")
@ApiModelProperty(value = "地址1") @ApiModelProperty(value = "地址1")
private String address; private String address;
@ApiModelProperty(value = "地址2") @ApiModelProperty(value = "地址2")
private String address2; private String address2;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "收货人姓名不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "收货人姓名不能为空")
@ApiModelProperty(value = "收货人姓名") @ApiModelProperty(value = "收货人姓名")
private String receiver; private String receiver;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "电话不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "电话不能为空")
@ApiModelProperty(value = "电话") @ApiModelProperty(value = "电话")
private String phone; private String phone;
private String phone2; private String phone2;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "邮编不能为空") // @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "邮编不能为空")
@ApiModelProperty(value = "邮编") @ApiModelProperty(value = "邮编")
private String postalCode; private String postalCode;
......
...@@ -62,8 +62,8 @@ public class Order extends BaseModel { ...@@ -62,8 +62,8 @@ public class Order extends BaseModel {
@ApiModelProperty(value = "平台订单号") @ApiModelProperty(value = "平台订单号")
private String originalOrderNo; private String originalOrderNo;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "平台订不能为空") @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "销售平台不能为空")
@ApiModelProperty(value = "平台") @ApiModelProperty(value = "销售平台")
private String platform; private String platform;
...@@ -95,26 +95,11 @@ public class Order extends BaseModel { ...@@ -95,26 +95,11 @@ public class Order extends BaseModel {
@ApiModelProperty(value = "销售金额") @ApiModelProperty(value = "销售金额")
private Currency salePrice; private Currency salePrice;
@ApiModelProperty(value = "采购平台")
private String purchasePlat;
@Valid @Valid
@TableField(typeHandler = JacksonTypeHandler.class) @TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "采购价") @ApiModelProperty(value = "采购价")
private Currency purchasePrice; private Currency purchasePrice;
@Valid
@NotNull(groups = OrderValidGroup.Purchase.class, message = "采购成本还未从刊登系统同步完成")
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "采购成本")
private Currency costPrice;
@NotNull(groups = OrderValidGroup.Purchase.class, message = "成本容忍范围为空")
@Valid
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "容忍超过成本范围 超出不进行采购")
private Currency tolerance;
@Valid @Valid
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "ebayFee不能唯恐") @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "ebayFee不能唯恐")
......
...@@ -2,9 +2,11 @@ package com.bailuntec.ana.domain.order; ...@@ -2,9 +2,11 @@ package com.bailuntec.ana.domain.order;
import com.bailuntec.ana.infrastructure.common.base.BaseModel; import com.bailuntec.ana.infrastructure.common.base.BaseModel;
import com.bailuntec.ana.interfaces.order.OrderValidGroup; import com.bailuntec.ana.interfaces.order.OrderValidGroup;
import com.bailuntec.ana.vo.order.Currency;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -14,7 +16,6 @@ import org.hibernate.validator.constraints.URL; ...@@ -14,7 +16,6 @@ import org.hibernate.validator.constraints.URL;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
...@@ -29,7 +30,7 @@ import java.util.List; ...@@ -29,7 +30,7 @@ import java.util.List;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value = "OrderPlatformSku对象", description = "") @ApiModel(value = "OrdeDetail", description = "")
public class OrderDetail extends BaseModel { public class OrderDetail extends BaseModel {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -70,6 +71,21 @@ public class OrderDetail extends BaseModel { ...@@ -70,6 +71,21 @@ public class OrderDetail extends BaseModel {
@ApiModelProperty(value = "待采购 平台sku编号 从刊登系统获取") @ApiModelProperty(value = "待采购 平台sku编号 从刊登系统获取")
private String purchaseSkuNo; private String purchaseSkuNo;
@ApiModelProperty(value = "采购平台")
private String purchasePlat;
@Valid
@NotNull(groups = OrderValidGroup.Purchase.class, message = "采购成本还未从刊登系统同步完成")
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "采购成本")
private Currency costPrice;
@NotNull(groups = OrderValidGroup.Purchase.class, message = "成本容忍范围为空")
@Valid
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "容忍超过成本范围 超出不进行采购")
private Currency tolerance;
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "标题不能为空") @NotNull(groups = OrderValidGroup.PublishOrder.class, message = "标题不能为空")
@ApiModelProperty(value = "标题") @ApiModelProperty(value = "标题")
private String title; private String title;
...@@ -79,9 +95,8 @@ public class OrderDetail extends BaseModel { ...@@ -79,9 +95,8 @@ public class OrderDetail extends BaseModel {
@ApiModelProperty(value = "数量") @ApiModelProperty(value = "数量")
private Integer quantity; private Integer quantity;
@URL(groups = OrderValidGroup.PublishOrder.class, message = "源链接格式不正确") @URL(groups = OrderValidGroup.PublishOrder.class, message = "销售sku源链接格式不正确")
@NotNull(groups = OrderValidGroup.PublishOrder.class, message = "源链接不能为空") @ApiModelProperty(value = "销售sku源链接")
@ApiModelProperty(value = "源链接")
private String originalLink; private String originalLink;
@ApiModelProperty(value = "采购状态1-未采购 2-采购中 3-采购失败 4-采购完成") @ApiModelProperty(value = "采购状态1-未采购 2-采购中 3-采购失败 4-采购完成")
...@@ -92,8 +107,13 @@ public class OrderDetail extends BaseModel { ...@@ -92,8 +107,13 @@ public class OrderDetail extends BaseModel {
@ApiModelProperty("发货状态 1-未发货 2-已发货") @ApiModelProperty("发货状态 1-未发货 2-已发货")
private Integer deliveryStatus; private Integer deliveryStatus;
/**
* <p>
* 规格可以传空列表 不不能传空
* </p>
*/
@Valid @Valid
@NotEmpty(groups = {OrderValidGroup.PublishOrder.class, @NotNull(groups = {OrderValidGroup.PublishOrder.class,
OrderValidGroup.Purchase.class}, message = "规格不能为空") OrderValidGroup.Purchase.class}, message = "规格不能为空")
@TableField(exist = false) @TableField(exist = false)
private List<OrderSpecification> orderSpecificationList; private List<OrderSpecification> orderSpecificationList;
......
package com.bailuntec.ana.infrastructure.feign;
import com.bailuntec.ana.infrastructure.common.util.seq.IdWorker;
import com.bailuntec.ana.vo.product.resp.PdsSkuInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* <p>
* 刊登系统接口
* </p>
*
* @author robbendev
* @since 2020/8/4 4:13 下午
*/
@FeignClient(name = "PdsApi", url = "http://www.bailuntec.com/", fallback = PdsApi.PdsApiFallback.class)
public interface PdsApi {
@GetMapping("/queryPdsSku")
PdsSkuInfo queryPdsSku(@RequestParam String platform,
@RequestParam String sku);
@Slf4j
@Component
class PdsApiFallback implements PdsApi {
@Override
public PdsSkuInfo queryPdsSku(String platform, String sku) {
log.error("获取sku采购信息失败");
PdsSkuInfo pdsSkuInfo = new PdsSkuInfo();
pdsSkuInfo.setPlatform(platform);
pdsSkuInfo.setSkuNo(sku);
pdsSkuInfo.setPurchaseAsin(IdWorker.getId());
pdsSkuInfo.setPurchasePlat("ebay");
pdsSkuInfo.setPurchaseSkuNo(IdWorker.getId());
return pdsSkuInfo;
}
}
}
...@@ -41,10 +41,11 @@ public interface PmsApi { ...@@ -41,10 +41,11 @@ public interface PmsApi {
@Slf4j @Slf4j
class PmsApiFallback implements PmsApi { class PmsApiFallback implements PmsApi {
@Override @Override
public String task(String task, String callBackID, Integer user, PurchaseRequest request) { public String task(String task, String callBackID, Integer user, PurchaseRequest request) {
log.error("下发采购任务失败"); log.error("下发采购任务失败");
return "fail"; return "";
} }
} }
......
...@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
...@@ -31,10 +33,27 @@ public interface OrderMapper extends BaseMapper<Order> { ...@@ -31,10 +33,27 @@ public interface OrderMapper extends BaseMapper<Order> {
* 分页查询订单 * 分页查询订单
* </p> * </p>
* *
* @param page 分页参数 * @param page 分页参数
* @param param 搜索条件 * @param param 搜索条件
* @return * @return
*/ */
Page<Order> queryPage(@Param("page") Page<Order>page, @Param("param") OrderQueryPageRequest param); Page<Order> queryPage(@Param("page") Page<Order> page, @Param("param") OrderQueryPageRequest param);
/**
* <p>
* 查询待同步订单详情的订单
* </p>
*
* @return list
*/
List<Order> queryUnSyncDetailsOrder();
/**
* <p>
* 查询待同步刊登帐号信息的订单
* </p>
*
* @return
*/
List<Order> queryUnSyncPdsAccountOrder();
} }
package com.bailuntec.ana.infrastructure.schedule; package com.bailuntec.ana.infrastructure.schedule;
import com.bailuntec.ana.application.order.IOrderService;
import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.infrastructure.common.util.ListUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@EnableScheduling @EnableScheduling
@AllArgsConstructor @AllArgsConstructor
@Slf4j @Slf4j
@Component @Component
public class Schedule { public class Schedule {
@Resource
IOrderService orderService;
/**
* <p>
* 从pams同步订单里面的刊登帐号信息
* </p>
*/
@Scheduled(cron = "0 0/1 * * * *")
public void syncOrderPdsAccount() {
List<Order> orderList = orderService.queryUnSyncPdsAccountOrder();
if (ListUtil.isNotEmpty(orderList)) {
log.info("从pams同步订单里面的刊登帐号信息 任务开始");
try {
orderList.forEach(order -> orderService.syncOrderPdsAccount(order));
} catch (Exception ex) {
log.error("从pams同步订单里面的刊登帐号信息 任务失败,{}", ex.getMessage(), ex);
}
log.info("从pams同步订单里面的刊登帐号信息 任务完成");
}
}
/**
* <p>
* 从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本
* </p>
*/
@Scheduled(cron = "0 0/1 * * * *")
public void syncOrderDetails() {
List<Order> orderList = orderService.queryUnSyncDetailsOrder();
if (ListUtil.isNotEmpty(orderList)) {
log.info("从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本 任务开始");
try {
orderList.forEach(order -> orderService.syncOrderDetails(order));
} catch (Exception ex) {
log.error("从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本 任务失败,{}", ex.getMessage(), ex);
}
log.info("从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本 任务完成");
}
}
} }
package com.bailuntec.ana.vo.product.resp;
import com.bailuntec.ana.interfaces.order.OrderValidGroup;
import com.bailuntec.ana.vo.order.Currency;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
* <p>
* mock刊登系统sku返回值
* </p>
*
* @author robbendev
* @since 2020/8/4 4:19 下午
*/
@Data
public class PdsSkuInfo {
@ApiModelProperty(value = "销售平台")
private String platform;
@ApiModelProperty(value = "订单 平台sku编码")
private String skuNo;
@ApiModelProperty(value = "采购平台")
private String purchasePlat;
@ApiModelProperty(value = "待采购 平台spuId 从刊登系统获取")
private String purchaseAsin;
@ApiModelProperty(value = "待采购 平台sku编号 从刊登系统获取")
private String purchaseSkuNo;
@ApiModelProperty(value = "采购成本")
private Currency costPrice;
@ApiModelProperty(value = "容忍超过成本范围 超出不进行采购")
private Currency tolerance;
}
spring: spring:
profiles: profiles:
active: dev active: dev
jackson:
default-property-inclusion: non_null
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
</logger> </logger>
<root level="INFO" additivity="false"> <root level="DEBUG" additivity="false">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
</root> </root>
</springProfile> </springProfile>
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
<appender-ref ref="INFO"/> <appender-ref ref="INFO"/>
</logger> </logger>
<root level="INFO" additivity="false"> <root level="DEBUG" additivity="false">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
</root> </root>
</springProfile> </springProfile>
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
<appender-ref ref="INFO"/> <appender-ref ref="INFO"/>
</logger> </logger>
<root level="INFO" additivity="false"> <root level="DEBUG" additivity="false">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
</root> </root>
</springProfile> </springProfile>
......
...@@ -9,9 +9,33 @@ ...@@ -9,9 +9,33 @@
where original_order_no = #{originalOrderNo} where original_order_no = #{originalOrderNo}
and pds_account_id = #{pdsAccountId} and pds_account_id = #{pdsAccountId}
</select> </select>
<select id="queryPage" resultType="com.bailuntec.ana.domain.order.Order"> <select id="queryPage" resultType="com.bailuntec.ana.domain.order.Order">
select * select *
from `order` from `order`
where record_state = 'A' where record_state = 'A'
</select> </select>
<select id="queryUnSyncDetailsOrder" resultType="com.bailuntec.ana.domain.order.Order">
SELECT t1.*
from `order` t1
LEFT JOIN order_detail t2 on t1.id = t2.order_id
where (t2.purchase_plat is null
or t2.purchase_asin is null
or t2.purchase_sku_no is null
or t2.tolerance is null
or t2.cost_price is null)
and t1.record_state = 'A'
GROUP BY t1.id
</select>
<select id="queryUnSyncPdsAccountOrder" resultType="com.bailuntec.ana.domain.order.Order">
SELECT t1.*
from `order` t1
LEFT JOIN order_detail t2 on t1.id = t2.order_id
where (t1.site is null
or t2.original_link is null)
and t1.record_state = 'A'
GROUP BY t1.id
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment