diff --git a/core/common/src/main/java/com/qihang/common/enums/HttpStatus.java b/core/common/src/main/java/com/qihang/common/enums/HttpStatus.java
index 79686e4c..a96f7e33 100644
--- a/core/common/src/main/java/com/qihang/common/enums/HttpStatus.java
+++ b/core/common/src/main/java/com/qihang/common/enums/HttpStatus.java
@@ -91,4 +91,8 @@ public class HttpStatus
* 系统警告消息
*/
public static final int WARN = 601;
+
+ public static final int PARAMS_ERROR = 1001;
+ public static final int SYSTEM_EXCEPTION = 2001;
+
}
diff --git a/doc/sql/qihang-oms.sql b/doc/sql/qihang-oms.sql
index c23bfc02..6c85d1a8 100644
--- a/doc/sql/qihang-oms.sql
+++ b/doc/sql/qihang-oms.sql
@@ -11,7 +11,7 @@
Target Server Version : 80032
File Encoding : 65001
- Date: 29/02/2024 16:03:40
+ Date: 29/02/2024 20:37:45
*/
SET NAMES utf8mb4;
@@ -87,7 +87,7 @@ CREATE TABLE `sys_platform` (
-- ----------------------------
-- Records of sys_platform
-- ----------------------------
-INSERT INTO `sys_platform` VALUES (1, '天猫', 'TMALL', NULL, NULL);
+INSERT INTO `sys_platform` VALUES (1, '天猫', 'TMALL', '12175777', '368dbbd183a77d551735be13f59bbcda');
INSERT INTO `sys_platform` VALUES (2, '京东', 'JD', NULL, NULL);
INSERT INTO `sys_platform` VALUES (3, '抖店', 'DOUDIAN', NULL, NULL);
INSERT INTO `sys_platform` VALUES (4, '拼多多', 'PDD', NULL, NULL);
@@ -120,7 +120,7 @@ CREATE TABLE `sys_shop` (
-- ----------------------------
-- Records of sys_shop
-- ----------------------------
-INSERT INTO `sys_shop` VALUES (1, '天猫旗舰店', 1, '', 98, 1, 0, '', 2200787809358, '31014100', '7b0769269b0c0ca88949791c14eb3a5c', '610140071d1070a37cecea89f1c1f3d6e5d19bf4b58dd942200787809358', NULL, NULL, NULL, NULL, 'http://gw.api.taobao.com/router/rest');
+INSERT INTO `sys_shop` VALUES (1, '天猫旗舰店', 1, '', 98, 1, 0, '', 59972781, '31014100', '7b0769269b0c0ca88949791c14eb3a5c', '610140071d1070a37cecea89f1c1f3d6e5d19bf4b58dd942200787809358', NULL, NULL, NULL, NULL, 'http://gw.api.taobao.com/router/rest');
INSERT INTO `sys_shop` VALUES (2, '京东旗舰店', 2, NULL, 9, 0, 0, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_shop` VALUES (3, '抖音旗舰店', 3, 'http://openapi.jinritemai.com', 87, 1, 1653672695, NULL, 4463798, '7249607407477720636', '36a12497-fb9d-4b54-8cd1-fd1617346687', '', NULL, NULL, NULL, NULL, '2');
INSERT INTO `sys_shop` VALUES (5, '拼多多旗舰店', 4, NULL, 99, 1, 1680698886, 'pdd10006159121', 100061591, NULL, NULL, '87f8044d2a5f45a489aa3a952785b0d35e61788a', NULL, NULL, NULL, NULL, NULL);
@@ -2660,7 +2660,7 @@ CREATE TABLE `tao_order` (
`point_fee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家使用积分,下单时生成,且一直不变。格式:100;单位:个.',
`real_point_fee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家实际使用积分(扣除部分退款使用的积分),交易完成后生成(交易成功或关闭),交易未完成时该字段值为0。格式:100;单位:个',
`buyer_obtain_point_fee` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '买家获得积分,返点的积分。格式:100;单位:个。返点的积分要交易成功之后才能获得。',
- `receivingTime` datetime(0) DEFAULT NULL COMMENT '收货时间,这里返回的是完全收货时间',
+ `receiving_time` datetime(0) DEFAULT NULL COMMENT '收货时间,这里返回的是完全收货时间',
`status` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '' COMMENT '交易状态。可选值: * TRADE_NO_CREATE_PAY(没有创建支付宝交易) * WAIT_BUYER_PAY(等待买家付款) * SELLER_CONSIGNED_PART(卖家部分发货) * WAIT_SELLER_SEND_GOODS(等待卖家发货,即:买家已付款) * WAIT_BUYER_CONFIRM_GOODS(等待买家确认收货,即:卖家已发货) * TRADE_BUYER_SIGNED(买家已签收,货到付款专用) * TRADE_FINISHED(交易成功) * TRADE_CLOSED(付款以后用户退款成功,交易自动关闭) * TRADE_CLOSED_BY_TAOBAO(付款以前,卖家或买家主动关闭交易) * PAY_PENDING(国际信用卡支付付款确认中) * WAIT_PRE_AUTH_CONFIRM(0元购合约中) * PAID_FORBID_CONSIGN(拼团中订单或者发货强管控的订单,已付款但禁止发货)',
`trade_memo` varchar(2000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '交易备注。',
`erp_send_company` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'erp发货快递公司',
diff --git a/tao-api/libs/taobao-sdk-0.20200820.jar b/tao-api/libs/taobao-sdk-0.20200820.jar
new file mode 100644
index 00000000..169e77eb
Binary files /dev/null and b/tao-api/libs/taobao-sdk-0.20200820.jar differ
diff --git a/tao-api/pom.xml b/tao-api/pom.xml
index ad08c1ad..74c6e68a 100644
--- a/tao-api/pom.xml
+++ b/tao-api/pom.xml
@@ -140,6 +140,13 @@
1.18.30
provided
+
+ taobao
+ taobao-sdk
+ 0.20200820
+ system
+ ${project.basedir}/libs/taobao-sdk-0.20200820.jar
+
diff --git a/tao-api/src/main/java/com/qihang/tao/common/ApiResult.java b/tao-api/src/main/java/com/qihang/tao/common/ApiResult.java
index 4f7c5853..2d820e1a 100644
--- a/tao-api/src/main/java/com/qihang/tao/common/ApiResult.java
+++ b/tao-api/src/main/java/com/qihang/tao/common/ApiResult.java
@@ -12,4 +12,18 @@ public class ApiResult {
private int code;
private String msg;
+ public static ApiResult build(int code ,String msg){
+ ApiResult result = new ApiResult<>();
+ result.setCode(code);
+ result.setMsg(msg);
+ return result;
+ }
+
+ public static ApiResult build(int code ,String msg,T data){
+ ApiResult result = new ApiResult<>();
+ result.setCode(code);
+ result.setMsg(msg);
+ result.setData(data);
+ return result;
+ }
}
diff --git a/tao-api/src/main/java/com/qihang/tao/common/EnumShopType.java b/tao-api/src/main/java/com/qihang/tao/common/EnumShopType.java
new file mode 100644
index 00000000..6a12be44
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/common/EnumShopType.java
@@ -0,0 +1,50 @@
+package com.qihang.tao.common;
+
+/**
+ * 描述:
+ * 店铺类型Enum
+ *
+ * @author qlp
+ * @date 2019-09-18 19:44
+ */
+public enum EnumShopType {
+ TAO("淘宝天猫", 1),
+ JD("京东", 2),
+ DOUDIAN("抖音", 3),
+ PDD("拼多多", 4);
+ private String name;
+ private int index;
+
+ // 构造方法
+ private EnumShopType(String name, int index) {
+ this.name = name;
+ this.index = index;
+ }
+
+ // 普通方法
+ public static String getName(int index) {
+ for (EnumShopType c : EnumShopType.values()) {
+ if (c.getIndex() == index) {
+ return c.name;
+ }
+ }
+ return null;
+ }
+
+ // get set 方法
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/common/ServerConfig.java b/tao-api/src/main/java/com/qihang/tao/common/ServerConfig.java
new file mode 100644
index 00000000..24f590a4
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/common/ServerConfig.java
@@ -0,0 +1,34 @@
+package com.qihang.tao.common;
+
+
+import com.qihang.security.utils.ServletUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 服务相关配置
+ *
+ * @author qihang
+ */
+@Component
+public class ServerConfig
+{
+ /**
+ * 获取完整的请求路径,包括:域名,端口,上下文访问路径
+ *
+ * @return 服务地址
+ */
+ public String getUrl()
+ {
+ HttpServletRequest request = ServletUtils.getRequest();
+ return getDomain(request);
+ }
+
+ public static String getDomain(HttpServletRequest request)
+ {
+ StringBuffer url = request.getRequestURL();
+ String contextPath = request.getServletContext().getContextPath();
+ return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString();
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/common/TaoRequest.java b/tao-api/src/main/java/com/qihang/tao/common/TaoRequest.java
new file mode 100644
index 00000000..49d9c5c8
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/common/TaoRequest.java
@@ -0,0 +1,31 @@
+package com.qihang.tao.common;
+
+public class TaoRequest {
+ private Integer shopId;//店铺Id
+ private Long orderId;//订单id
+ private Integer updType;//更新类型0拉取新订单1更新订单
+
+ public Integer getUpdType() {
+ return updType;
+ }
+
+ public void setUpdType(Integer updType) {
+ this.updType = updType;
+ }
+
+ public Long getOrderId() {
+ return orderId;
+ }
+
+ public void setOrderId(Long orderId) {
+ this.orderId = orderId;
+ }
+
+ public Integer getShopId() {
+ return shopId;
+ }
+
+ public void setShopId(Integer shopId) {
+ this.shopId = shopId;
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/GoodsApiController.java b/tao-api/src/main/java/com/qihang/tao/controller/GoodsApiController.java
index c5a617ce..b368c6a2 100644
--- a/tao-api/src/main/java/com/qihang/tao/controller/GoodsApiController.java
+++ b/tao-api/src/main/java/com/qihang/tao/controller/GoodsApiController.java
@@ -1,7 +1,14 @@
//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 {
///**
@@ -19,7 +26,7 @@
// }
// */
// @RequestMapping(value = "/pull_goods", method = RequestMethod.POST)
-// public ApiResult getOrderList(@RequestBody DataRow reqData, HttpServletRequest request) throws Exception {
+// public ApiResult getOrderList(@RequestBody DataRow reqData) throws Exception {
// String startDate = reqData.getString("startTime");
// String endDate = reqData.getString("endTime");
// Integer shopId=reqData.getInt("shopId");
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/OAuthTaoCallbackController.java b/tao-api/src/main/java/com/qihang/tao/controller/OAuthTaoCallbackController.java
new file mode 100644
index 00000000..4187cbd6
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/controller/OAuthTaoCallbackController.java
@@ -0,0 +1,69 @@
+package com.qihang.tao.controller;
+
+import com.qihang.tao.domain.SysPlatform;
+import com.qihang.tao.service.SysPlatformService;
+import com.qihang.tao.service.SysShopService;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import java.io.IOException;
+
+/**
+ * 淘宝回调地址
+ */
+@AllArgsConstructor
+@Controller
+public class OAuthTaoCallbackController {
+
+ private final SysPlatformService platformService;
+ private final SysShopService shopService;
+ private static Logger log = LoggerFactory.getLogger(OAuthTaoCallbackController.class);
+ /**
+ * 淘宝授权url
+ *
+ * @param shopId
+ * @return
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ @GetMapping("/taoapi2/tao_oauth")
+ public String aliOAuth(@RequestParam Integer shopId) throws IOException, InterruptedException {
+ //查询店铺信息
+ var shop = shopService.selectShopById(shopId);
+ SysPlatform platform = platformService.selectById(shop.getType());
+
+
+// var entity = thirdSettingService.getEntity(shop.getType());
+ String url = "http://container.open.taobao.com/container?appkey=" + platform.getAppKey() + "&state=" + shopId;
+ //https://oauth.taobao.com/authorize?response_type=token&force_auth=true&from_site=fuwu&client_id=28181872
+ return "redirect:" + url;
+ }
+
+ /**
+ * 淘宝授权回调
+ * @param model
+ * @param request
+ * @return
+ */
+ @RequestMapping("/taoapi2/callback")
+ public String callback(Model model, HttpServletRequest request) {
+ log.info("淘系店铺授权回调开始");
+ String sessionKey = request.getParameter("top_session");
+ String state = request.getParameter("state");
+ try {
+ Integer shopId = Integer.parseInt(state);
+ shopService.updateSessionKey(shopId, sessionKey);
+ return "redirect:/order/list?shopId=" + shopId;
+ } catch (Exception e) {
+ return "redirect:/?msg=callback_taobao_error";
+ }
+ }
+
+
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/ShopApiParams.java b/tao-api/src/main/java/com/qihang/tao/controller/ShopApiParams.java
new file mode 100644
index 00000000..eccc6669
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/controller/ShopApiParams.java
@@ -0,0 +1,49 @@
+package com.qihang.tao.controller;
+
+public class ShopApiParams {
+ private String appKey;
+ private String appSecret;
+ private String accessToken;
+ private String apiRequestUrl;
+ private String tokenRequestUrl;
+
+ public String getTokenRequestUrl() {
+ return tokenRequestUrl;
+ }
+
+ public void setTokenRequestUrl(String tokenRequestUrl) {
+ this.tokenRequestUrl = tokenRequestUrl;
+ }
+
+ public String getAppKey() {
+ return appKey;
+ }
+
+ public void setAppKey(String appKey) {
+ this.appKey = appKey;
+ }
+
+ public String getAppSecret() {
+ return appSecret;
+ }
+
+ public void setAppSecret(String appSecret) {
+ this.appSecret = appSecret;
+ }
+
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ public void setAccessToken(String accessToken) {
+ this.accessToken = accessToken;
+ }
+
+ public String getApiRequestUrl() {
+ return apiRequestUrl;
+ }
+
+ public void setApiRequestUrl(String apiRequestUrl) {
+ this.apiRequestUrl = apiRequestUrl;
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdHelper.java b/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdHelper.java
new file mode 100644
index 00000000..625d445f
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdHelper.java
@@ -0,0 +1,314 @@
+package com.qihang.tao.controller;
+
+import com.qihang.common.enums.HttpStatus;
+import com.qihang.common.utils.DateUtils;
+
+
+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.request.RefundsReceiveGetRequest;
+import com.taobao.api.request.TradesSoldGetRequest;
+import com.taobao.api.request.TradesSoldIncrementGetRequest;
+import com.taobao.api.response.RefundsReceiveGetResponse;
+import com.taobao.api.response.TradesSoldGetResponse;
+import com.taobao.api.response.TradesSoldIncrementGetResponse;
+import org.springframework.util.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class TaoBaoOpenOrderUpdHelper {
+ /**
+ * 更新订单(循环分页)
+ *
+ * @param pageNo
+ * @param pageSize
+ * @param sessionKey
+ * @return
+ */
+ public static TaoBaoOpenOrderUpdResult updTmallOrder(Long pageNo, Long pageSize, String url, String appKey, String appSecret, String sessionKey) throws ApiException {
+ TaobaoClient client = new DefaultTaobaoClient(url, appKey, appSecret);
+
+ TradesSoldGetRequest req = new TradesSoldGetRequest();
+ req.setFields("tid,receiver_name,receiver_country,receiver_state,receiver_city,receiver_district,receiver_town,receiver_address,receiver_mobile," +
+ "receiver_phone,title,seller_flag,has_buyer_message,credit_card_fee,mark_desc,consign_time,end_time" +
+ ",type,status,orders,rx_audit_status,seller_memo,buyer_memo,buyer_message,pay_time,created,modified,buyer_nick,buyer_open_uid,alipay_no,buyer_alipay_no,buyer_email" +
+ ",num_iid,num,price,total_fee,adjust_fee,post_fee,discount_fee,payment,received_payment,available_confirm_fee,commission_fee");
+// req.setStartCreated(DateUtil.stringtoDate("2019-11-27 00:00:00"));
+// req.setEndCreated(DateUtil.stringtoDate("2019-12-04 23:59:59"));
+// req.setStatus("WAIT_SELLER_SEND_GOODS");
+// req.setBuyerNick("美丽的你美丽的我");
+ req.setType("fixed");//一口价
+// req.setExtType("service");
+// req.setRateStatus("RATE_UNBUYER");
+// req.setTag("time_card");
+ req.setPageNo(pageNo);
+ req.setPageSize(pageSize);
+// req.setUseHasNext(true);
+// req.setBuyerOpenId("AAHm5d-EAAeGwJedwSHpg8bT");
+ TradesSoldGetResponse rsp = client.execute(req, sessionKey);
+// System.out.println(rsp.getBody());
+ if(StringUtils.hasText(rsp.getErrorCode())){
+ if(rsp.getErrorCode().equals("27")){
+ return new TaoBaoOpenOrderUpdResult(HttpStatus.UNAUTHORIZED, "Token已过期,请重新授权");
+ }
+ }
+ if (rsp.getTrades() == null) {
+ //接口查询错误
+ return new TaoBaoOpenOrderUpdResult(500, "接口调用错误:" + rsp.getMsg() + rsp.getSubMsg());
+ }
+
+ //组合的订单列表
+ List orderList = new ArrayList<>();
+
+ //有数据
+ for (var trade : rsp.getTrades()) {
+ try {
+// if(trade.getTid() == 770674433029365349L)
+// {
+// String id = trade.getTid().toString();
+// }
+ TaoOrder order = new TaoOrder();
+ order.setTid(trade.getTid());
+ order.setTitle(trade.getTitle());
+ order.setType(trade.getType());
+ order.setSellerFlag(trade.getSellerFlag()+"");
+ order.setHasBuyerMessage(trade.getHasBuyerMessage()+"");
+ order.setCreditCardFee(trade.getCreditCardFee());
+ order.setCreated(trade.getCreated());
+ order.setModified(trade.getModified());
+ order.setPayTime(trade.getPayTime());
+ order.setPrice(Double.parseDouble(trade.getPrice()));
+ order.setTotalFee(Double.parseDouble(trade.getTotalFee()));
+ order.setAdjustFee(Double.parseDouble(trade.getAdjustFee()));
+ order.setPostFee(BigDecimal.valueOf(Double.parseDouble(trade.getPostFee())));
+ order.setDiscountFee(BigDecimal.valueOf(Double.parseDouble(trade.getDiscountFee())));
+ order.setPayment(BigDecimal.valueOf(Double.parseDouble(trade.getPayment())));
+ order.setReceivedPayment(BigDecimal.valueOf(Double.parseDouble(trade.getReceivedPayment())));
+ order.setBuyerNick(trade.getBuyerNick());
+ order.setBuyerOpenUid(trade.getBuyerOpenUid());
+ order.setAlipayNo(trade.getAlipayNo());
+ order.setBuyerAlipayNo(trade.getBuyerAlipayNo());
+ order.setBuyerEmail(trade.getBuyerEmail());
+ order.setBuyerMemo(trade.getBuyerMemo());
+ order.setBuyerMessage(trade.getBuyerMessage());
+ order.setMarkDesc(trade.getMarkDesc());
+ order.setSellerMemo(trade.getSellerMemo());
+ order.setReceiverCountry(trade.getReceiverCountry());
+ order.setReceiverState(trade.getReceiverState());
+ order.setReceiverCity(trade.getReceiverCity());
+ order.setReceiverDistrict(trade.getReceiverDistrict());
+ order.setReceiverTown(trade.getReceiverTown());
+ order.setReceiverAddress(trade.getReceiverAddress());
+ order.setReceiverName(trade.getReceiverName());
+ order.setReceiverMobile(trade.getReceiverMobile());
+ order.setReceiverPhone(trade.getReceiverPhone());
+ order.setNumIid(trade.getNumIid()+"");
+ order.setNum(trade.getNum().intValue());
+ order.setStatus(trade.getStatus());
+ order.setConsignTime(trade.getConsignTime());
+ order.setEndTime(trade.getEndTime());
+
+ List items = new ArrayList<>();
+ for (var item : trade.getOrders()) {
+ TaoOrderItem orderItem = new TaoOrderItem();
+ orderItem.setOrderId(order.getId());
+ orderItem.setSubItemId(item.getOid().toString());
+ Long refundStatus = -1L;
+ if(item.getRefundStatus().equals("NO_REFUND")){
+ refundStatus = 0L;
+ }else {
+ refundStatus = 1L;
+ }
+ orderItem.setRefundStatus(refundStatus);
+ orderItem.setProductId(item.getNumIid());
+ orderItem.setSkuId(Long.parseLong(item.getSkuId()));
+ orderItem.setSpecNumber(item.getOuterSkuId());
+ orderItem.setGoodsNumber(item.getOuterIid());
+ orderItem.setProductImgUrl(item.getPicPath());
+ orderItem.setGoodsTitle(item.getTitle());
+ orderItem.setPrice(BigDecimal.valueOf(Double.parseDouble(item.getPrice())));
+ orderItem.setQuantity(item.getNum());
+
+ orderItem.setSkuInfo(item.getSkuPropertiesName());
+ orderItem.setItemAmount(BigDecimal.valueOf(Double.parseDouble(item.getPayment())));
+ orderItem.setDiscountFee(new BigDecimal(item.getDiscountFee()));
+ orderItem.setAdjustFee(new BigDecimal(item.getAdjustFee()));
+
+ orderItem.setRefundStatusStr(item.getRefundStatus());
+
+ orderItem.setNewSpecId(0L);
+ orderItem.setIsGift(0);
+ orderItem.setIsSwap(0);
+ items.add(orderItem);
+ }
+ order.setTaoOrderItemList(items);
+
+ orderList.add(order);
+ } catch (Exception e) {
+ }
+ }
+
+ return new TaoBaoOpenOrderUpdResult(rsp.getTotalResults().intValue(), orderList);
+ }
+
+ /**
+ * 增量获取淘宝开放平台天猫订单
+ *
+ * @param pageNo
+ * @param pageSize
+ * @param sessionKey
+ * @return
+ * @throws ApiException
+ */
+ public static TaoBaoOpenOrderUpdResult getIncrementTmallOrder(Long pageNo, Long pageSize,Date startTime, Date endTime,String url,String appKey,String appSecret, String sessionKey) throws ApiException {
+
+
+ TaobaoClient client = new DefaultTaobaoClient(url, appKey, appSecret);
+
+ TradesSoldIncrementGetRequest req = new TradesSoldIncrementGetRequest();
+ req.setFields("tid,post_fee,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address,receiver_mobile,receiver_phone,received_payment,num," +
+ "type,status,payment,orders,rx_audit_status,sellerMemo,pay_time,created,buyer_nick");
+ req.setStartModified(startTime);
+ req.setEndModified(endTime);
+
+ req.setType("fixed");//一口价
+// req.setExtType("service");
+// req.setRateStatus("RATE_UNBUYER");
+// req.setTag("time_card");
+ req.setPageNo(pageNo);
+ req.setPageSize(pageSize);
+// req.setUseHasNext(true);
+// req.setBuyerOpenId("AAHm5d-EAAeGwJedwSHpg8bT");
+ TradesSoldIncrementGetResponse rsp = client.execute(req, sessionKey);
+ System.out.println(rsp.getBody());
+
+ if (rsp.getTrades() == null) {
+ if (StringUtils.isEmpty(rsp.getErrorCode()) == false) {
+ //接口查询错误
+ return new TaoBaoOpenOrderUpdResult(500, "接口调用错误:" + rsp.getMsg() + rsp.getSubMsg());
+ }
+ if (rsp.getTotalResults() == 0) {
+ return new TaoBaoOpenOrderUpdResult(rsp.getTotalResults().intValue(), new ArrayList<>());
+ }
+ }
+
+ //组合的订单列表
+ List orderList = new ArrayList<>();
+
+ //有数据
+ for (var trade : rsp.getTrades()) {
+ try {
+ TaoOrder order = new TaoOrder();
+ order.setId(trade.getTid().toString());
+ order.setOrderCreateTime(trade.getCreated());
+ order.setOrderModifyTime(trade.getModified());
+ order.setPayTime(trade.getPayTime());
+ order.setTotalAmount(BigDecimal.valueOf(Double.parseDouble(trade.getPayment())));
+ order.setShippingFee(BigDecimal.valueOf(Double.parseDouble(trade.getPostFee())));
+ order.setPayAmount(BigDecimal.valueOf(Double.parseDouble(trade.getPayment())));
+ order.setBuyerName(trade.getBuyerNick());
+ order.setSellerMemo(trade.getSellerMemo());
+ order.setProvince(trade.getReceiverState());
+ order.setCity(trade.getReceiverCity());
+ order.setDistrict(trade.getReceiverDistrict());
+ order.setStatus(EnumTmallOrderStatus.getStatus(trade.getStatus()));
+ order.setStatusStr(trade.getStatus());
+ List items = new ArrayList<>();
+ for (var item : trade.getOrders()) {
+ TaoOrderItem orderItem = new TaoOrderItem();
+ orderItem.setSpecNumber(item.getOuterSkuId());
+ orderItem.setGoodsNumber(item.getOuterIid());
+ orderItem.setProductImgUrl(item.getPicPath());
+ orderItem.setGoodsTitle(item.getTitle());
+ orderItem.setPrice(BigDecimal.valueOf(Double.parseDouble(item.getPayment())));
+ orderItem.setQuantity(item.getNum());
+ orderItem.setSubItemId(item.getOid().toString());
+ orderItem.setSkuInfo(item.getSkuPropertiesName());
+ orderItem.setItemAmount(BigDecimal.valueOf(Double.parseDouble(item.getPayment())));
+ orderItem.setRefundStatusStr(item.getRefundStatus());
+ items.add(orderItem);
+ }
+ order.setTaoOrderItemList(items);
+
+ orderList.add(order);
+ } catch (Exception e) {
+ }
+ }
+
+ return new TaoBaoOpenOrderUpdResult(rsp.getTotalResults().intValue(), orderList);
+ }
+
+ /**
+ * 拉取淘系退货订单
+ * @param pageNo
+ * @param pageSize
+ * @param url
+ * @param appKey
+ * @param appSecret
+ * @param sessionKey
+ * @return
+ * @throws ApiException
+ */
+ public static TaoBaoOpenOrderUpdResult updTmallRefunOrder(Long pageNo, Long pageSize, String url, String appKey, String appSecret, String sessionKey) throws ApiException {
+ TaobaoClient client = new DefaultTaobaoClient(url, appKey, appSecret);
+ List list = new ArrayList<>();
+
+// TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
+// RefundGetRequest req1 = new RefundGetRequest();
+// req1.setFields("title,address,good_return_time,created");
+// req1.setRefundId(44929186648087305L);
+// RefundGetResponse rsp1 = client.execute(req1, sessionKey);
+// System.out.println(rsp1.getBody());
+// RefundsApplyGetRequest raReq = new RefundsApplyGetRequest();
+// raReq.setFields("refund_id, tid, title, buyer_nick, seller_nick, total_fee, status, created, refund_fee");
+// raReq.setPageNo(1L);
+// raReq.setPageSize(10L);
+////// raReq.setStatus("SUCCESS");
+////
+// RefundsApplyGetResponse raRsp = client.execute(raReq,sessionKey);
+
+ RefundsReceiveGetRequest req = new RefundsReceiveGetRequest();
+ req.setFields("refund_id, tid, title, buyer_nick, seller_nick, total_fee, status, created,num, refund_fee, oid, good_status," +
+ " company_name, sid, payment, reason, desc, has_good_return, modified, order_status,refund_phase,sku");
+// req.setStatus("WAIT_SELLER_AGREE");
+// req.setSellerNick("hz0799");
+// req.setBuyerNick("juan20108810");
+// req.setType("fixed");
+// req.setType("fixed");
+ req.setPageNo(pageNo);
+ req.setPageSize(pageSize);
+ RefundsReceiveGetResponse rsp = client.execute(req, sessionKey);
+ if (rsp.getTotalResults() > 0) {
+ //查到了数据
+ for (var item : rsp.getRefunds()) {
+ //循环插入退货数据
+ TaoOrderRefund tmallOrderRefund = new TaoOrderRefund();
+// tmallOrderRefund.setBuyer_nick(item.getBuyerNick());
+ tmallOrderRefund.setCreated(DateUtil.dateToStamp(item.getCreated()));
+ tmallOrderRefund.setRemark(item.getDesc());
+ tmallOrderRefund.setGoodStatus(item.getGoodStatus());
+ tmallOrderRefund.setHasGoodReturn(item.getHasGoodReturn() == true ? 1 : 0);
+ tmallOrderRefund.setLogisticsCode(item.getSid());
+ tmallOrderRefund.setLogisticsCompany(item.getCompanyName());
+ tmallOrderRefund.setModified(DateUtils.dateToStamp(item.getModified()));
+ tmallOrderRefund.setOid(item.getOid());
+// tmallOrderRefund.setOrderStatus(item.getOrderStatus());
+ tmallOrderRefund.setReason(item.getReason());
+ tmallOrderRefund.setRefundFee(BigDecimal.valueOf(Double.parseDouble(item.getRefundFee())));
+ tmallOrderRefund.setRefundId(item.getRefundId());
+ tmallOrderRefund.setStatus(item.getStatus());
+ tmallOrderRefund.setTid(item.getTid());
+// tmallOrderRefund.setTotalFee(item.getTotalFee());
+ tmallOrderRefund.setNum(item.getNum());
+ tmallOrderRefund.setRefundPhase(item.getRefundPhase());
+ list.add(tmallOrderRefund);
+ }
+ }
+ return new TaoBaoOpenOrderUpdResult(rsp.getTotalResults().intValue(), list);
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdResult.java b/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdResult.java
new file mode 100644
index 00000000..29a055bf
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/controller/TaoBaoOpenOrderUpdResult.java
@@ -0,0 +1,65 @@
+package com.qihang.tao.controller;
+import java.util.List;
+
+/**
+ * 淘宝开放平台订单更新结果
+ */
+public class TaoBaoOpenOrderUpdResult {
+ private Integer code;//代码 0成功其他错误
+ private String msg;//错误信息
+ private Integer totalRecords;//总记录数
+ private List list;//订单
+
+ public TaoBaoOpenOrderUpdResult(Integer code, String msg, Integer totalRecords, List list) {
+ this.code = code;
+ this.msg = msg;
+ this.totalRecords = totalRecords;
+ this.list = list;
+ }
+
+ public TaoBaoOpenOrderUpdResult(Integer code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ this.totalRecords = 0;
+ this.list = null;
+ }
+
+ public TaoBaoOpenOrderUpdResult(Integer totalRecords, List list) {
+ this.code = 0;
+ this.msg = "SUCCESS";
+ this.totalRecords = totalRecords;
+ this.list = list;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public Integer getTotalRecords() {
+ return totalRecords;
+ }
+
+ public void setTotalRecords(Integer totalRecords) {
+ this.totalRecords = totalRecords;
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+}
diff --git a/tao-api/src/main/java/com/qihang/tao/controller/TaoOrderPullController.java b/tao-api/src/main/java/com/qihang/tao/controller/TaoOrderPullController.java
new file mode 100644
index 00000000..3e94c46e
--- /dev/null
+++ b/tao-api/src/main/java/com/qihang/tao/controller/TaoOrderPullController.java
@@ -0,0 +1,562 @@
+package com.qihang.tao.controller;
+
+import com.qihang.common.enums.HttpStatus;
+import com.qihang.erp.api.common.EnumResultVo;
+import com.qihang.erp.api.common.EnumTmallOrderStatus;
+import com.qihang.erp.api.domain.TaoOrderRefund;
+import com.qihang.erp.api.service.ITaoOrderRefundService;
+import com.qihang.erp.api.service.ITaoOrderService;
+import com.qihang.erp.api.utils.DateUtil;
+import com.qihang.tao.common.ApiResult;
+import com.qihang.tao.common.EnumShopType;
+import com.qihang.tao.common.ServerConfig;
+import com.qihang.tao.common.TaoRequest;
+import com.qihang.tao.domain.SysPlatform;
+import com.qihang.tao.domain.TaoOrder;
+import com.qihang.tao.service.SysPlatformService;
+import com.qihang.tao.service.SysShopService;
+import com.qihang.tao.service.TaoOrderService;
+import com.taobao.api.ApiException;
+import com.taobao.api.DefaultTaobaoClient;
+import com.taobao.api.TaobaoClient;
+import com.taobao.api.request.RefundGetRequest;
+import com.taobao.api.request.TradeFullinfoGetRequest;
+import com.taobao.api.response.RefundGetResponse;
+import com.taobao.api.response.TradeFullinfoGetResponse;
+import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 淘系订单更新
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/taoapi")
+public class TaoOrderPullController {
+ private static Logger log = LoggerFactory.getLogger(TaoOrderPullController.class);
+
+
+ @Autowired
+ private TaoOrderService orderService;
+ @Autowired
+ private ITaoOrderRefundService tmallOrderReturnService;
+
+ private final SysShopService shopService;
+ private final SysPlatformService platformService;
+ private final ServerConfig serverConfig;
+ /**
+ * 更新前的检查
+ *
+ * @param shopId
+ * @return
+ * @throws ApiException
+ */
+ public ApiResult checkBefore(Integer shopId) throws ApiException {
+ log.info("/**************主动更新tao 参数检查****************/");
+ var shop = shopService.selectShopById(shopId);
+
+ if (shop == null) {
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), "参数错误,没有找到店铺");
+ return ApiResult.build(HttpStatus.PARAMS_ERROR,"参数错误,没有找到店铺");
+ }
+
+ if (shop.getType() != EnumShopType.TAO.getIndex()) {
+ return ApiResult.build(HttpStatus.PARAMS_ERROR, "参数错误,店铺不是淘系店铺");
+ }
+ SysPlatform platform = platformService.selectById(EnumShopType.TAO.getIndex());
+
+ if(!StringUtils.hasText(platform.getAppKey())) {
+ return ApiResult.build(HttpStatus.PARAMS_ERROR, "平台配置错误,没有找到AppKey");
+ }
+ if(!StringUtils.hasText(platform.getAppSecret())) {
+ return ApiResult.build(HttpStatus.PARAMS_ERROR, "第三方平台配置错误,没有找到AppSercet");
+ }
+ if(!StringUtils.hasText(shop.getApiRequestUrl())) {
+ return ApiResult.build(HttpStatus.PARAMS_ERROR, "第三方平台配置错误,没有找到ApiRequestUrl");
+ }
+ if(shop.getSellerId() == null || shop.getSellerId() <= 0) {
+ return ApiResult.build(HttpStatus.PARAMS_ERROR, "第三方平台配置错误,没有找到SellerUserId");
+ }
+
+ ShopApiParams params = new ShopApiParams();
+ params.setAppKey(platform.getAppKey());
+ params.setAppSecret(platform.getAppSecret());
+ params.setAccessToken(shop.getAccessToken());
+ params.setTokenRequestUrl(serverConfig.getUrl()+"/taoapi2/tao_oauth");
+ params.setApiRequestUrl(shop.getApiRequestUrl());
+
+ if (!StringUtils.hasText(shop.getAccessToken())) {
+
+ return ApiResult.build(HttpStatus.UNAUTHORIZED, "Token已过期,请重新授权", params);
+ }
+
+ /****************先查询卖家对不对***************/
+// TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
+// UserSellerGetRequest reqSeller = new UserSellerGetRequest();
+// reqSeller.setFields("nick,user_id");
+// UserSellerGetResponse rsp = client.execute(reqSeller, sessionKey);
+// if(StringUtils.hasText(rsp.getErrorCode())){
+// if(rsp.getErrorCode().equals("27")){
+// return new ApiResult<>(EnumResultVo.TokenFail.getIndex(), "Token已过期,请重新授权",params);
+// }
+// else if(rsp.getErrorCode().equals("11")){
+// if(rsp.getSubCode().equals("isv.permission-api-package-limit"))
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), "请检查淘宝用户API:taobao.user.seller.get是否具有访问权限",params);
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), rsp.getSubCode(),params);
+// }
+// else if(rsp.getErrorCode().equals("25")){
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), "无效签名!请检查SessionKey、appKey、appSecret是否匹配",params);
+// } else
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), "参数错误!"+(StringUtils.hasText(rsp.getSubMsg()) ? rsp.getSubMsg(): rsp.getMsg()));
+// }
+// if(rsp.getUser() == null || rsp.getUser().getUserId() == null){
+// return new ApiResult<>(EnumResultVo.ParamsError.getIndex(), "参数错误!请设置店铺SellerUserId值!",params);
+// }
+// else if (shop.getSellerUserId().longValue() != rsp.getUser().getUserId().longValue()) {
+// return new ApiResult<>(EnumResultVo.TokenFail.getIndex(), "当前用户是:" + rsp.getUser().getNick() + ",请重新授权",params);
+// }
+ return ApiResult.build(HttpStatus.SUCCESS,"",params);
+ }
+
+ /**
+ * 拉取天猫订单
+ *
+ * @param req
+ * @return
+ * @throws ApiException
+ */
+ @GetMapping("/order/pull_order")
+ @ResponseBody
+ public ApiResult