ccjgmwz 3 vuotta sitten
vanhempi
commit
4791e70d8f
48 muutettua tiedostoa jossa 4147 lisäystä ja 391 poistoa
  1. 22 0
      sendGoodNotPlat.xml
  2. 8 0
      unimall-admin-api/pom.xml
  3. 239 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/AdminCheckQuartz.java
  4. 68 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopAccountService.java
  5. 95 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopOrderService.java
  6. 65 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopTranService.java
  7. 146 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopAccountServiceImpl.java
  8. 455 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopOrderServiceImpl.java
  9. 138 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopTranServiceImpl.java
  10. 4 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/user/AdminUserService.java
  11. 108 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/user/AdminUserServiceImpl.java
  12. BIN
      unimall-admin-api/src/main/lib/dangdang-open-sdk.jar
  13. 73 0
      unimall-admin/src/api/shop/account.js
  14. 73 0
      unimall-admin/src/api/shop/order.js
  15. 35 387
      unimall-admin/src/router/route.json
  16. 2 2
      unimall-admin/src/views/dashboard/index.vue
  17. 399 0
      unimall-admin/src/views/shop/account/index.vue
  18. 413 0
      unimall-admin/src/views/shop/order/index.vue
  19. 12 0
      unimall-admin/static/jiaocheng.html
  20. 8 1
      unimall-app-api/pom.xml
  21. 5 0
      unimall-app-api/src/main/java/com/iotechn/unimall/app/quartz/CheckQuartz.java
  22. BIN
      unimall-app-api/src/main/lib/dangdang-open-sdk.jar
  23. 32 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/BaseDO.java
  24. 119 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopAccount.java
  25. 188 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopOrder.java
  26. 100 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopTran.java
  27. 61 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/FuziDTO.java
  28. 19 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/ShopDTO.java
  29. 183 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ItemInfo.java
  30. 24 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ItemsList.java
  31. 132 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrderDetail.java
  32. 192 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrderInfo.java
  33. 18 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrdersList.java
  34. 90 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ReceiptInfo.java
  35. 49 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGood.java
  36. 55 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGoodChai.java
  37. 181 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGoodsInfo.java
  38. 45 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/response.java
  39. 67 0
      unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/totalInfo.java
  40. 13 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopAccountMapper.java
  41. 13 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopOrderMapper.java
  42. 13 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopTranMapper.java
  43. 121 0
      unimall-data/src/main/java/com/iotechn/unimall/data/util/XMLUtil.java
  44. 23 0
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/shop/ShopAccountMapper.xml
  45. 32 0
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/shop/ShopOrderMapper.xml
  46. 8 0
      unimall-launcher/pom.xml
  47. BIN
      unimall-launcher/src/main/lib/dangdang-open-sdk.jar
  48. 1 1
      unimall-launcher/src/main/resources/application.properties

+ 22 - 0
sendGoodNotPlat.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="GBK"?>
+<request>
+    <functionID>dangdang.order.goods.send</functionID>
+    <time>2022-05-30 08:56:01</time>
+    <OrdersList>
+        <OrderInfo>
+            <orderID>44795906971</orderID>
+            <logisticsName>ÔÏ´ï¿ìµÝ</logisticsName>
+            <logisticsNameAb>YUNDA</logisticsNameAb>
+            <logisticsTel>400-821-6789</logisticsTel>
+            <logisticsOrderID>432579180979671</logisticsOrderID>
+            <SendGoodsList>
+                <ItemInfo>
+                    <itemID>11078049410</itemID>
+                    <sendGoodsCount>1</sendGoodsCount>
+                    <belongProductsPromoID></belongProductsPromoID>
+                    <productItemId>44795906971001</productItemId>
+                </ItemInfo>
+            </SendGoodsList>
+        </OrderInfo>
+    </OrdersList>
+</request>

+ 8 - 0
unimall-admin-api/pom.xml

@@ -39,6 +39,14 @@
 
 	<dependencies>
 
+		<!-- 引入本地jar -->
+		<dependency>
+			<groupId>com.dangdang.openplatform.openapi</groupId>
+			<artifactId>sdk</artifactId>
+			<version>1.0-SNAPSHOT</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/lib/dangdang-open-sdk.jar</systemPath>
+		</dependency>
 		<dependency>
 			<groupId>com.iotechn</groupId>
 			<artifactId>unimall-core</artifactId>

+ 239 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/AdminCheckQuartz.java

@@ -0,0 +1,239 @@
+package com.iotechn.unimall.admin;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.dangdang.openplatform.openapi.sdk.ApiException;
+import com.dangdang.openplatform.openapi.sdk.SdkClient;
+import com.dangdang.openplatform.openapi.sdk.internal.util.FileItem;
+import com.dangdang.openplatform.openapi.sdk.request.order.OrderDetailsGetRequest;
+import com.dangdang.openplatform.openapi.sdk.request.order.OrderGoodsSendRequest;
+import com.dangdang.openplatform.openapi.sdk.request.order.OrdersContentDecryptRequest;
+import com.dangdang.openplatform.openapi.sdk.requestmodel.order.EncryptDTO;
+import com.dangdang.openplatform.openapi.sdk.requestmodel.order.OrderDetailsGet;
+import com.dangdang.openplatform.openapi.sdk.response.order.OrderDetailsGetResponse;
+import com.dangdang.openplatform.openapi.sdk.response.order.OrderGoodsSendResponse;
+import com.dangdang.openplatform.openapi.sdk.response.order.OrdersContentDecryptResponse;
+import com.dangdang.openplatform.openapi.sdk.responsemodel.order.CryptUserInfo;
+import com.dangdang.openplatform.openapi.sdk.responsemodel.order.OrdersContentDecryptDTO;
+import com.iotechn.unimall.biz.service.order.OrderBizService;
+import com.iotechn.unimall.core.exception.AdminServiceException;
+import com.iotechn.unimall.core.exception.ExceptionDefinition;
+import com.iotechn.unimall.data.component.LockComponent;
+import com.iotechn.unimall.data.domain.GroupShopDO;
+import com.iotechn.unimall.data.domain.OrderDO;
+import com.iotechn.unimall.data.domain.SpuDO;
+import com.iotechn.unimall.data.domain.shop.ShopAccount;
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
+import com.iotechn.unimall.data.domain.shop.ShopTran;
+import com.iotechn.unimall.data.dto.shop.XmlObject.OrderDetail;
+import com.iotechn.unimall.data.dto.shop.XmlObject.SendGood;
+import com.iotechn.unimall.data.dto.shop.XmlObject.SendGoodsInfo;
+import com.iotechn.unimall.data.enums.GroupShopAutomaticRefundType;
+import com.iotechn.unimall.data.enums.OrderStatusType;
+import com.iotechn.unimall.data.enums.StatusType;
+import com.iotechn.unimall.data.mapper.GroupShopMapper;
+import com.iotechn.unimall.data.mapper.OrderMapper;
+import com.iotechn.unimall.data.mapper.SpuMapper;
+import com.iotechn.unimall.data.mapper.shop.ShopAccountMapper;
+import com.iotechn.unimall.data.mapper.shop.ShopOrderMapper;
+import com.iotechn.unimall.data.mapper.shop.ShopTranMapper;
+import com.iotechn.unimall.data.util.XMLUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionCallbackWithoutResult;
+import org.springframework.transaction.support.TransactionTemplate;
+import org.springframework.util.CollectionUtils;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * Created by rize on 2019/7/21.
+ */
+@Component
+@EnableScheduling
+public class AdminCheckQuartz {
+
+    private static final Logger logger = LoggerFactory.getLogger(AdminCheckQuartz.class);
+    private static final String ORDER_STATUS_LOCK = "ORDER_STATUS_QUARTZ_LOCK";
+    private static final String GROUP_SHOP_START_LOCK = "GROUP_SHOP_START_LOCK";
+    private static final String GROUP_SHOP_END_LOCK = "GROUP_SHOP_END_LOCK";
+    private static final String GROUP_SHOP_LOCK_LOCK = "GROUP_SHOP_LOCK_LOCK";
+    @Autowired
+    private OrderMapper orderMapper;
+    @Autowired
+    private ShopOrderMapper shopOrderMapper;
+    @Autowired
+    private ShopAccountMapper shopAccountMapper;
+    @Autowired
+    private ShopTranMapper shopTranMapper;
+    @Autowired
+    private OrderBizService orderBizService;
+    @Autowired
+    private GroupShopMapper groupShopMapper;
+    @Autowired
+    private SpuMapper spuMapper;
+    @Autowired
+    private LockComponent lockComponent;
+    @Autowired
+    private TransactionTemplate transactionTemplate;
+
+
+    /**
+     * 订单数据定时轮训处理 每小时执行一次
+     */
+    @Scheduled(cron = "0 0 7-20 * * ? ")
+    @Transactional(rollbackFor = Exception.class)
+    public void dealOrder() throws Exception {
+        Wrapper wrapper = new EntityWrapper();
+        wrapper.eq("order_status_name","卖家已发货");
+        wrapper.eq("dang_order_status","未发货");
+        List<ShopOrder> list = shopOrderMapper.selectList(wrapper);
+        for (ShopOrder shopOrder: list
+             ) {
+            ShopAccount shopAccount = shopAccountMapper.selectById(shopOrder.getAccountId());
+            dangOrderDeal(shopAccount,shopOrder);
+        }
+    }
+    public void dangOrderDeal(ShopAccount shopAccount, ShopOrder shopOrder) throws Exception {
+        /**
+         * 获取一下店铺的所有静态参数
+         */
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        SdkClient sdkClient = new SdkClient(shopAccount.getDangAppKey(),shopAccount.getDangAppSecret(),shopAccount.getDangSession(),shopAccount.getDangVersion());
+
+        OrderDetailsGetRequest ss = new OrderDetailsGetRequest();
+        OrderDetailsGet orderDetailsGet = new OrderDetailsGet();
+        orderDetailsGet.setO(shopOrder.getDangOrder());
+        ss.setOrderDetailsGet(orderDetailsGet);
+        OrderDetailsGetResponse resultt = null;
+        try {
+            resultt = sdkClient.excute(ss);
+        } catch (ApiException e) {
+            e.printStackTrace();
+
+        }
+
+        /**
+         * 从当当获取订单内应当有的所有图书
+         */
+        OrderDetailsGetRequest odgr = new OrderDetailsGetRequest();
+        OrderDetailsGet ogg = new OrderDetailsGet();
+        ogg.setO(shopOrder.getDangOrder());
+        odgr.setOrderDetailsGet(ogg);
+        OrderDetailsGetResponse odgrp = null;
+        try {
+            odgrp = sdkClient.excute(odgr);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        SdkClient jiemi = new SdkClient(shopAccount.getDangAppKey(),shopAccount.getDangAppSecret(),shopAccount.getDangSession(),shopAccount.getDangVersion());
+        OrdersContentDecryptRequest ordersContentDecryptRequest=new OrdersContentDecryptRequest();
+
+        List<EncryptDTO> encryptVOS = new ArrayList<EncryptDTO>();
+
+        EncryptDTO encryptVO1 = new EncryptDTO();
+        encryptVO1.setO(resultt.getOrderID().toString());
+        encryptVO1.setEncrypt_content(resultt.getEncrypt_content());
+        encryptVOS.add(encryptVO1);
+
+        ordersContentDecryptRequest.setO_cryptStr(JSON.toJSONString(encryptVOS));
+        OrdersContentDecryptResponse ordersContentDecryptResponse = null;
+        try {
+            ordersContentDecryptResponse=jiemi.excute(ordersContentDecryptRequest);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        List<OrdersContentDecryptDTO> data = ordersContentDecryptResponse.getData();
+        CryptUserInfo cryptUserInfo = data.get(0).getCryptUserInfo();
+
+
+
+        OrderDetail o = (OrderDetail) XMLUtil.convertXmlStrToObject(OrderDetail.class, odgrp.getBody());
+        SendGoodsInfo sgi = new SendGoodsInfo();
+        sgi.setConsigneeAddr(cryptUserInfo.getConsigneeAddr());
+        sgi.setConsigneeMobileTel(cryptUserInfo.getConsigneeMobileTel());
+        sgi.setConsigneeTel(cryptUserInfo.getConsigneeTel());
+        sgi.setConsigneeName(cryptUserInfo.getConsigneeName());
+        o.setSendGoodsInfo(sgi);
+        List<com.iotechn.unimall.data.dto.shop.XmlObject.ItemInfo> itemInfo = o.getItemsList().getItemInfo();
+        /**
+         * 将多个图书拼接XML
+         */
+        String itemsStr = "";
+        for (com.iotechn.unimall.data.dto.shop.XmlObject.ItemInfo ii : itemInfo) {
+            Map<String, Object> hashMap = new HashMap<>();
+            hashMap.put("DANG_DANG_ITEM_ID", ii.getItemID());
+            hashMap.put("SHU_LIANG", ii.getOrderCount());
+            hashMap.put("PRODUCT_ID", ii.getProductItemId());
+            itemsStr += SendGood.processTemplate(SendGood.ONE_ITEM, hashMap);
+        }
+
+
+        /**
+         * 组成OrderInfo
+         */
+        Wrapper wrapper = new EntityWrapper();
+        wrapper.like("fuzi_name",shopOrder.getShippingCom());
+        List<ShopTran> list = shopTranMapper.selectList(wrapper);
+        if(list.size() == 0 ){
+            throw new Exception("物流公司不存在");
+        }
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+        stringObjectHashMap.put("DANG_DANG_ORDER", shopOrder.getDangOrder());
+        stringObjectHashMap.put("KUAI_DI_GONG_SI", list.get(0).getName());
+        stringObjectHashMap.put("KUAI_DI_BIANMA", list.get(0).getCode1());
+        stringObjectHashMap.put("KUAI_DI_GONG_SI_DIAN_HUA", list.get(0).getPhone());
+        stringObjectHashMap.put("KUAI_DI_DAN_HAO", shopOrder.getShipmentNum());
+        stringObjectHashMap.put("SEND_ITEMS", itemsStr);
+
+        String orderListStr = SendGood.processTemplate(SendGood.ONE_ORDER, stringObjectHashMap);
+        HashMap<String, Object> tmplHash = new HashMap<>();
+        tmplHash.put("SEND_TIME", dateFormat.format(new Date()));
+        tmplHash.put("ORDER_LIST", orderListStr);
+
+        String xmlFileStr = SendGood.processTemplate(SendGood.TMPL, tmplHash);
+        System.out.println(xmlFileStr);
+        PrintWriter out = null;
+        try {
+            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("sendGoodNotPlat.xml"), "GBK")));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+        out.write(xmlFileStr);
+        out.close();
+        System.out.println("XML文件创建成功!");
+
+
+        /**
+         * 发货!!
+         */
+        OrderGoodsSendRequest sendGoodsRequest = new OrderGoodsSendRequest();
+        sendGoodsRequest.setSendGoodsFile(new FileItem(new File("sendGoodNotPlat.xml")));
+        OrderGoodsSendResponse result = null;
+        try {
+            result = sdkClient.excute(sendGoodsRequest);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        System.out.println(result.toString());
+        if(result.getResult().getOrdersList().get(0).getOrderOperCode() == 0){
+            shopOrder.setDangOrderStatus("已发货");
+            shopOrderMapper.update(shopOrder,new EntityWrapper<ShopOrder>().eq("order_id",shopOrder.getOrderId()));
+        }
+    }
+
+
+}

+ 68 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopAccountService.java

@@ -0,0 +1,68 @@
+package com.iotechn.unimall.admin.api.shop;
+
+
+import com.iotechn.unimall.data.domain.shop.ShopAccount;
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.model.Page;
+
+import java.util.Date;
+
+/**
+ * 电商账户表Service接口
+ *
+ * @author jlb
+ * @date 2022-05-28
+ */
+@HttpOpenApi(group = "admin.shop.shopAccount", description = "电商账户表")
+public interface IShopAccountService {
+    @HttpMethod(description = "新增", permission = "admin:shop:shopAccount:add", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public Boolean add(@NotNull @HttpParam(name = "shopAccount", type = HttpParamType.COMMON, description = "电商账户表") ShopAccount shopAccount,
+                       @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId) throws ServiceException;
+
+    @HttpMethod(description = "列表", permission = "admin:shop:shopAccount:list", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public Page<ShopAccount> list(
+            @HttpParam(name = "dangAccount", type = HttpParamType.COMMON, description = "当当账号") String dangAccount,
+            @HttpParam(name = "dangPassword", type = HttpParamType.COMMON, description = "当当密码") String dangPassword,
+            @HttpParam(name = "fuziAccount", type = HttpParamType.COMMON, description = "夫子账号") String fuziAccount,
+            @HttpParam(name = "fuziPassword", type = HttpParamType.COMMON, description = "夫子密码") String fuziPassword,
+            @HttpParam(name = "fuziCookie", type = HttpParamType.COMMON, description = "夫子cookie") String fuziCookie,
+            @HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+            @HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+            @HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+            @HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+            @HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+            @HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+            @HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+            throws ServiceException;
+
+    @HttpMethod(description = "删除", permission = "admin:shop:shopAccount:delete", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "") Long id) throws ServiceException;
+
+    @HttpMethod(description = "修改", permission = "admin:shopAccount:shopAccount:update", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public Boolean update(@NotNull @HttpParam(name = "shopAccount", type = HttpParamType.COMMON, description = "电商账户表") ShopAccount shopAccount,
+                          @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId) throws ServiceException;
+
+    @HttpMethod(description = "查询", permission = "admin:shop:shopAccount:get", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public ShopAccount get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "") Long id) throws ServiceException;
+
+    @HttpMethod(description = "导出excl表", permission = "admin:shop:shopAccount:export", permissionParentName = "宠物管理", permissionName = "电商账户表管理")
+    public String export(
+            @HttpParam(name = "dangAccount", type = HttpParamType.COMMON, description = "当当账号") String dangAccount,
+            @HttpParam(name = "dangPassword", type = HttpParamType.COMMON, description = "当当密码") String dangPassword,
+            @HttpParam(name = "fuziAccount", type = HttpParamType.COMMON, description = "夫子账号") String fuziAccount,
+            @HttpParam(name = "fuziPassword", type = HttpParamType.COMMON, description = "夫子密码") String fuziPassword,
+            @HttpParam(name = "fuziCookie", type = HttpParamType.COMMON, description = "夫子cookie") String fuziCookie,
+            @HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+            @HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+            @HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+            @HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+            @HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+            @HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+            @HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit) throws ServiceException;
+
+}

+ 95 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopOrderService.java

@@ -0,0 +1,95 @@
+package com.iotechn.unimall.admin.api.shop;
+
+
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.dto.shop.ShopDTO;
+import com.iotechn.unimall.data.model.Page;
+
+import java.util.Date;
+
+/**
+ * 电商订单表Service接口
+ *
+ * @author jlb
+ * @date 2022-05-28
+ */
+@HttpOpenApi(group = "admin.shop.shopOrder", description = "电商订单表")
+public interface IShopOrderService {
+    @HttpMethod(description = "新增", permission = "admin:shop:shopOrder:add", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public Boolean add(@NotNull @HttpParam(name = "shopOrder", type = HttpParamType.COMMON, description = "电商订单表") ShopOrder shopOrder,
+                       @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId) throws ServiceException;
+
+    @HttpMethod(description = "列表", permission = "admin:shop:shopOrder:list", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public Page<ShopOrder> list(
+            @HttpParam(name = "accountId", type = HttpParamType.COMMON, description = "账户表id") Long accountId,
+            @HttpParam(name = "orderId", type = HttpParamType.COMMON, description = "当当订单号") String orderId,
+            @HttpParam(name = "dangOrder", type = HttpParamType.COMMON, description = "夫子订单号") String dangOrder,
+            @HttpParam(name = "address", type = HttpParamType.COMMON, description = "详细地址") String address,
+            @HttpParam(name = "provName", type = HttpParamType.COMMON, description = "省") String provName,
+            @HttpParam(name = "cityName", type = HttpParamType.COMMON, description = "市") String cityName,
+            @HttpParam(name = "areaName", type = HttpParamType.COMMON, description = "区") String areaName,
+            @HttpParam(name = "orderStatus", type = HttpParamType.COMMON, description = "订单状态") String orderStatus,
+            @HttpParam(name = "orderStatusName", type = HttpParamType.COMMON, description = "订单状态") String orderStatusName,
+            @HttpParam(name = "payStatus", type = HttpParamType.COMMON, description = "付款状态") String payStatus,
+            @HttpParam(name = "payName", type = HttpParamType.COMMON, description = "付款状态") String payName,
+            @HttpParam(name = "receiverName", type = HttpParamType.COMMON, description = "收件人") String receiverName,
+            @HttpParam(name = "mobile", type = HttpParamType.COMMON, description = "收件人电话") String mobile,
+            @HttpParam(name = "receiver", type = HttpParamType.COMMON, description = "收件人详细信息") String receiver,
+            @HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+            @HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+            @HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+            @HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+            @HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+            @HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+            @HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+            throws ServiceException;
+
+    @HttpMethod(description = "删除", permission = "admin:shop:shopOrder:delete", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "") Long id) throws ServiceException;
+
+    @HttpMethod(description = "修改", permission = "admin:shopOrder:shopOrder:update", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public Boolean update(@NotNull @HttpParam(name = "shopOrder", type = HttpParamType.COMMON, description = "电商订单表") ShopOrder shopOrder,
+                          @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId) throws ServiceException;
+
+    @HttpMethod(description = "查询", permission = "admin:shop:shopOrder:get", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public ShopOrder get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "") Long id) throws ServiceException;
+
+    @HttpMethod(description = "导出excl表", permission = "admin:shop:shopOrder:export", permissionParentName = "电商管理", permissionName = "电商订单表管理")
+    public String export(
+            @HttpParam(name = "accountId", type = HttpParamType.COMMON, description = "账户表id") Long accountId,
+            @HttpParam(name = "orderId", type = HttpParamType.COMMON, description = "当当订单号") String orderId,
+            @HttpParam(name = "dangOrder", type = HttpParamType.COMMON, description = "夫子订单号") String dangOrder,
+            @HttpParam(name = "address", type = HttpParamType.COMMON, description = "详细地址") String address,
+            @HttpParam(name = "provName", type = HttpParamType.COMMON, description = "省") String provName,
+            @HttpParam(name = "cityName", type = HttpParamType.COMMON, description = "市") String cityName,
+            @HttpParam(name = "areaName", type = HttpParamType.COMMON, description = "区") String areaName,
+            @HttpParam(name = "orderStatus", type = HttpParamType.COMMON, description = "订单状态") String orderStatus,
+            @HttpParam(name = "orderStatusName", type = HttpParamType.COMMON, description = "订单状态") String orderStatusName,
+            @HttpParam(name = "payStatus", type = HttpParamType.COMMON, description = "付款状态") String payStatus,
+            @HttpParam(name = "payName", type = HttpParamType.COMMON, description = "付款状态") String payName,
+            @HttpParam(name = "receiverName", type = HttpParamType.COMMON, description = "收件人") String receiverName,
+            @HttpParam(name = "mobile", type = HttpParamType.COMMON, description = "收件人电话") String mobile,
+            @HttpParam(name = "receiver", type = HttpParamType.COMMON, description = "收件人详细信息") String receiver,
+            @HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+            @HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+            @HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+            @HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+            @HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+            @HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+            @HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit) throws ServiceException;
+    @HttpMethod(description = "同步订单信息")
+    public String syncOrderInfoList(
+            @NotNull @HttpParam(name = "shopDTO", type = HttpParamType.COMMON, description = "参数列表") ShopDTO shopDTO) throws Exception;
+    @HttpMethod(description = "获取订单信息")
+    public ShopOrder syncOrderInfo(
+            @NotNull @HttpParam(name = "orderId", type = HttpParamType.COMMON, description = "夫子订单编号") String orderId,
+            @NotNull @HttpParam(name = "dangId", type = HttpParamType.COMMON, description = "当当店铺id") String dangId,
+            @NotNull @HttpParam(name = "dangOrder", type = HttpParamType.COMMON, description = "当当订单编号") String dangOrder) throws Exception;
+
+}

+ 65 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/IShopTranService.java

@@ -0,0 +1,65 @@
+package com.iotechn.unimall.admin.api.shop;
+
+
+import com.iotechn.unimall.data.domain.shop.ShopTran;
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+
+/**
+ * 物流公司Service接口
+ * 
+ * @author jlb
+ * @date 2022-05-29
+ */
+@HttpOpenApi(group = "admin.shop.shopTran", description = "物流公司")
+public interface IShopTranService{
+	@HttpMethod(description = "新增", permission = "admin:shop:shopTran:add", permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public Boolean add(@NotNull @HttpParam(name = "shopTran", type = HttpParamType.COMMON, description = "物流公司") ShopTran shopTran,
+						   @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId)throws ServiceException;
+
+	@HttpMethod(description = "列表", permission = "admin:shop:shopTran:list",permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public Page<ShopTran> list(
+								@HttpParam(name = "name", type = HttpParamType.COMMON, description = "物流公司名称") String name,
+							@HttpParam(name = "code1", type = HttpParamType.COMMON, description = "物流公司编码") String code1,
+							@HttpParam(name = "code2", type = HttpParamType.COMMON, description = "物流公司编码") String code2,
+							@HttpParam(name = "phone", type = HttpParamType.COMMON, description = "物流公司电话") String phone,
+										@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+							@HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+					@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+		@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+		throws ServiceException;
+
+	@HttpMethod(description = "删除", permission = "admin:shop:shopTran:delete",permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+
+	@HttpMethod(description = "修改", permission = "admin:shopTran:shopTran:update",permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public Boolean update(@NotNull @HttpParam(name = "shopTran", type = HttpParamType.COMMON, description = "物流公司") ShopTran shopTran,
+						  @HttpParam(name = "adminId", type = HttpParamType.ADMIN_ID, description = "adminId") Long adminId)throws ServiceException;
+
+	@HttpMethod(description = "查询", permission = "admin:shop:shopTran:get",permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public ShopTran get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表", permission = "admin:shop:shopTran:export",permissionParentName = "宠物管理", permissionName = "物流公司管理")
+	public String export(
+								@HttpParam(name = "name", type = HttpParamType.COMMON, description = "物流公司名称") String name,
+							@HttpParam(name = "code1", type = HttpParamType.COMMON, description = "物流公司编码") String code1,
+							@HttpParam(name = "code2", type = HttpParamType.COMMON, description = "物流公司编码") String code2,
+							@HttpParam(name = "phone", type = HttpParamType.COMMON, description = "物流公司电话") String phone,
+										@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Integer deleteFlag,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "userId", type = HttpParamType.COMMON, description = "") Long userId,
+							@HttpParam(name = "adminId", type = HttpParamType.COMMON, description = "") Long adminId,
+				@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+	@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)throws ServiceException;
+	
+}

+ 146 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopAccountServiceImpl.java

@@ -0,0 +1,146 @@
+package com.iotechn.unimall.admin.api.shop.impl;
+
+import java.util.List;
+
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.mapper.shop.ShopAccountMapper;
+import com.iotechn.unimall.data.domain.shop.ShopAccount;
+import com.iotechn.unimall.admin.api.shop.IShopAccountService;
+import com.iotechn.unimall.data.model.Page;
+
+import java.util.Date;
+
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 电商账户表Service业务层处理
+ *
+ * @author jlb
+ * @date 2022-05-28
+ */
+@Service
+public class ShopAccountServiceImpl implements IShopAccountService {
+    @Autowired
+    private ShopAccountMapper shopAccountMapper;
+
+    @Override
+    public Boolean add(ShopAccount shopAccount, Long adminId) throws ServiceException {
+        Date now = new Date();
+        shopAccount.setGmtCreate(now);
+        shopAccount.setGmtUpdate(now);
+        shopAccount.setAdminId(adminId);
+        return shopAccountMapper.insert(shopAccount) > 0;
+    }
+
+    @Override
+    public Page<ShopAccount> list(String dangAccount, String dangPassword, String fuziAccount, String fuziPassword, String fuziCookie, Integer deleteFlag, Date gmtCreate, Date gmtUpdate, Long userId, Long adminId, Integer page, Integer limit) throws ServiceException {
+        Wrapper<ShopAccount> wrapper = new EntityWrapper<ShopAccount>();
+        if (!StringUtils.isEmpty(dangAccount)) {
+            wrapper.eq("dang_account", dangAccount);
+        }
+        if (!StringUtils.isEmpty(dangPassword)) {
+            wrapper.eq("dang_password", dangPassword);
+        }
+        if (!StringUtils.isEmpty(fuziAccount)) {
+            wrapper.eq("fuzi_account", fuziAccount);
+        }
+        if (!StringUtils.isEmpty(fuziPassword)) {
+            wrapper.eq("fuzi_password", fuziPassword);
+        }
+        if (!StringUtils.isEmpty(fuziCookie)) {
+            wrapper.eq("fuzi_cookie", fuziCookie);
+        }
+        if (!StringUtils.isEmpty(deleteFlag)) {
+            wrapper.eq("delete_flag", deleteFlag);
+        }
+        if (!StringUtils.isEmpty(gmtCreate)) {
+            wrapper.eq("gmt_create", gmtCreate);
+        }
+        if (!StringUtils.isEmpty(gmtUpdate)) {
+            wrapper.eq("gmt_update", gmtUpdate);
+        }
+        if (!StringUtils.isEmpty(userId)) {
+            wrapper.eq("user_id", userId);
+        }
+        if (!StringUtils.isEmpty(adminId)) {
+            wrapper.eq("admin_id", adminId);
+        }
+        wrapper.eq("delete_flag", 0);
+        List<ShopAccount> list = shopAccountMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+        Integer count = shopAccountMapper.selectCount(wrapper);
+        return new Page<ShopAccount>(list, page, limit, count);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(Long id) {
+        String[] ids = String.valueOf(id).split(",");
+        for (String tt : ids) {
+            ShopAccount tmp = shopAccountMapper.selectById(Long.parseLong(tt));
+            if (tmp != null) {
+                tmp.setDeleteFlag(1);
+                shopAccountMapper.updateById(tmp);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean update(ShopAccount shopAccount, Long adminId) throws ServiceException {
+        Date now = new Date();
+        shopAccount.setGmtUpdate(now);
+        shopAccount.setAdminId(adminId);
+        return shopAccountMapper.updateById(shopAccount) > 0;
+    }
+
+    @Override
+    public ShopAccount get(Long id) throws ServiceException {
+        return shopAccountMapper.selectById(id);
+    }
+
+    @Override
+    public String export(String dangAccount, String dangPassword, String fuziAccount, String fuziPassword, String fuziCookie, Integer deleteFlag, Date gmtCreate, Date gmtUpdate, Long userId, Long adminId, Integer page, Integer limit) throws ServiceException {
+        Wrapper<ShopAccount> wrapper = new EntityWrapper<ShopAccount>();
+        if (!StringUtils.isEmpty(dangAccount)) {
+            wrapper.eq("dang_account", dangAccount);
+        }
+        if (!StringUtils.isEmpty(dangPassword)) {
+            wrapper.eq("dang_password", dangPassword);
+        }
+        if (!StringUtils.isEmpty(fuziAccount)) {
+            wrapper.eq("fuzi_account", fuziAccount);
+        }
+        if (!StringUtils.isEmpty(fuziPassword)) {
+            wrapper.eq("fuzi_password", fuziPassword);
+        }
+        if (!StringUtils.isEmpty(fuziCookie)) {
+            wrapper.eq("fuzi_cookie", fuziCookie);
+        }
+        if (!StringUtils.isEmpty(deleteFlag)) {
+            wrapper.eq("delete_flag", deleteFlag);
+        }
+        if (!StringUtils.isEmpty(gmtCreate)) {
+            wrapper.eq("gmt_create", gmtCreate);
+        }
+        if (!StringUtils.isEmpty(gmtUpdate)) {
+            wrapper.eq("gmt_update", gmtUpdate);
+        }
+        if (!StringUtils.isEmpty(userId)) {
+            wrapper.eq("user_id", userId);
+        }
+        if (!StringUtils.isEmpty(adminId)) {
+            wrapper.eq("admin_id", adminId);
+        }
+        List<ShopAccount> list = shopAccountMapper.selectList(wrapper);
+        ExcelUtil<ShopAccount> util = new ExcelUtil<ShopAccount>(ShopAccount.class);
+        return util.exportExcel(list, "操作日志");
+    }
+}

+ 455 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopOrderServiceImpl.java

@@ -0,0 +1,455 @@
+package com.iotechn.unimall.admin.api.shop.impl;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import com.dangdang.openplatform.openapi.sdk.ApiException;
+import com.dangdang.openplatform.openapi.sdk.SdkClient;
+import com.dangdang.openplatform.openapi.sdk.internal.util.FileItem;
+import com.dangdang.openplatform.openapi.sdk.request.order.*;
+import com.dangdang.openplatform.openapi.sdk.requestmodel.order.EncryptDTO;
+import com.dangdang.openplatform.openapi.sdk.requestmodel.order.OrderDetailsGet;
+import com.dangdang.openplatform.openapi.sdk.response.order.*;
+import com.dangdang.openplatform.openapi.sdk.responsemodel.order.*;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.iotechn.unimall.data.domain.shop.ShopAccount;
+import com.iotechn.unimall.data.domain.shop.ShopTran;
+import com.iotechn.unimall.data.dto.shop.FuziDTO;
+import com.iotechn.unimall.data.dto.shop.ShopDTO;
+import com.iotechn.unimall.data.dto.shop.XmlObject.OrderDetail;
+import com.iotechn.unimall.data.dto.shop.XmlObject.SendGood;
+import com.iotechn.unimall.data.dto.shop.XmlObject.SendGoodsInfo;
+import com.iotechn.unimall.data.mapper.shop.ShopAccountMapper;
+import com.iotechn.unimall.data.mapper.shop.ShopTranMapper;
+import com.iotechn.unimall.data.util.XMLUtil;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.mapper.shop.ShopOrderMapper;
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
+import com.iotechn.unimall.admin.api.shop.IShopOrderService;
+import com.iotechn.unimall.data.model.Page;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 电商订单表Service业务层处理
+ *
+ * @author jlb
+ * @date 2022-05-28
+ */
+@Service
+public class ShopOrderServiceImpl implements IShopOrderService {
+    @Autowired
+    private ShopOrderMapper shopOrderMapper;
+    @Autowired
+    private ShopAccountMapper shopAccountMapper;
+    @Autowired
+    private ShopTranMapper shopTranMapper;
+
+    @Override
+    public Boolean add(ShopOrder shopOrder, Long adminId) throws ServiceException {
+        Date now = new Date();
+        shopOrder.setGmtCreate(now);
+        shopOrder.setGmtUpdate(now);
+        shopOrder.setAdminId(adminId);
+        return shopOrderMapper.insert(shopOrder) > 0;
+    }
+
+    @Override
+    public Page<ShopOrder> list(Long accountId, String orderId, String dangOrder, String address, String provName, String cityName, String areaName, String orderStatus, String orderStatusName, String payStatus, String payName, String receiverName, String mobile, String receiver, Integer deleteFlag, Date gmtCreate, Date gmtUpdate, Long userId, Long adminId, Integer page, Integer limit) throws ServiceException {
+        Wrapper<ShopOrder> wrapper = new EntityWrapper<ShopOrder>();
+        if (!StringUtils.isEmpty(accountId)) {
+            wrapper.eq("account_id", accountId);
+        }
+        if (!StringUtils.isEmpty(orderId)) {
+            wrapper.eq("order_id", orderId);
+        }
+        if (!StringUtils.isEmpty(dangOrder)) {
+            wrapper.eq("fuzi_order", dangOrder);
+        }
+        if (!StringUtils.isEmpty(address)) {
+            wrapper.eq("address", address);
+        }
+        if (!StringUtils.isEmpty(provName)) {
+            wrapper.eq("prov_name", provName);
+        }
+        if (!StringUtils.isEmpty(cityName)) {
+            wrapper.eq("city_name", cityName);
+        }
+        if (!StringUtils.isEmpty(areaName)) {
+            wrapper.eq("area_name", areaName);
+        }
+        if (!StringUtils.isEmpty(orderStatus)) {
+            wrapper.eq("order_status", orderStatus);
+        }
+        if (!StringUtils.isEmpty(orderStatusName)) {
+            wrapper.eq("order_status_name", orderStatusName);
+        }
+        if (!StringUtils.isEmpty(payStatus)) {
+            wrapper.eq("pay_status", payStatus);
+        }
+        if (!StringUtils.isEmpty(payName)) {
+            wrapper.eq("pay_name", payName);
+        }
+        if (!StringUtils.isEmpty(receiverName)) {
+            wrapper.eq("receiver_name", receiverName);
+        }
+        if (!StringUtils.isEmpty(mobile)) {
+            wrapper.eq("mobile", mobile);
+        }
+        if (!StringUtils.isEmpty(receiver)) {
+            wrapper.eq("receiver", receiver);
+        }
+        if (!StringUtils.isEmpty(deleteFlag)) {
+            wrapper.eq("delete_flag", deleteFlag);
+        }
+        if (!StringUtils.isEmpty(gmtCreate)) {
+            wrapper.eq("gmt_create", gmtCreate);
+        }
+        if (!StringUtils.isEmpty(gmtUpdate)) {
+            wrapper.eq("gmt_update", gmtUpdate);
+        }
+        if (!StringUtils.isEmpty(userId)) {
+            wrapper.eq("user_id", userId);
+        }
+        if (!StringUtils.isEmpty(adminId)) {
+            wrapper.eq("admin_id", adminId);
+        }
+        wrapper.eq("delete_flag", 0);
+        List<ShopOrder> list = shopOrderMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+        Integer count = shopOrderMapper.selectCount(wrapper);
+        return new Page<ShopOrder>(list, page, limit, count);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(Long id) {
+        String[] ids = String.valueOf(id).split(",");
+        for (String tt : ids) {
+            ShopOrder tmp = shopOrderMapper.selectById(Long.parseLong(tt));
+            if (tmp != null) {
+                tmp.setDeleteFlag(1);
+                shopOrderMapper.updateById(tmp);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean update(ShopOrder shopOrder, Long adminId) throws ServiceException {
+        Date now = new Date();
+        shopOrder.setGmtUpdate(now);
+        shopOrder.setAdminId(adminId);
+        return shopOrderMapper.updateById(shopOrder) > 0;
+    }
+
+    @Override
+    public ShopOrder get(Long id) throws ServiceException {
+        return shopOrderMapper.selectById(id);
+    }
+
+    @Override
+    public String export(Long accountId, String orderId, String dangOrder, String address, String provName, String cityName, String areaName, String orderStatus, String orderStatusName, String payStatus, String payName, String receiverName, String mobile, String receiver, Integer deleteFlag, Date gmtCreate, Date gmtUpdate, Long userId, Long adminId, Integer page, Integer limit) throws ServiceException {
+        Wrapper<ShopOrder> wrapper = new EntityWrapper<ShopOrder>();
+        if (!StringUtils.isEmpty(accountId)) {
+            wrapper.eq("account_id", accountId);
+        }
+        if (!StringUtils.isEmpty(orderId)) {
+            wrapper.eq("order_id", orderId);
+        }
+        if (!StringUtils.isEmpty(dangOrder)) {
+            wrapper.eq("fuzi_order", dangOrder);
+        }
+        if (!StringUtils.isEmpty(address)) {
+            wrapper.eq("address", address);
+        }
+        if (!StringUtils.isEmpty(provName)) {
+            wrapper.eq("prov_name", provName);
+        }
+        if (!StringUtils.isEmpty(cityName)) {
+            wrapper.eq("city_name", cityName);
+        }
+        if (!StringUtils.isEmpty(areaName)) {
+            wrapper.eq("area_name", areaName);
+        }
+        if (!StringUtils.isEmpty(orderStatus)) {
+            wrapper.eq("order_status", orderStatus);
+        }
+        if (!StringUtils.isEmpty(orderStatusName)) {
+            wrapper.eq("order_status_name", orderStatusName);
+        }
+        if (!StringUtils.isEmpty(payStatus)) {
+            wrapper.eq("pay_status", payStatus);
+        }
+        if (!StringUtils.isEmpty(payName)) {
+            wrapper.eq("pay_name", payName);
+        }
+        if (!StringUtils.isEmpty(receiverName)) {
+            wrapper.eq("receiver_name", receiverName);
+        }
+        if (!StringUtils.isEmpty(mobile)) {
+            wrapper.eq("mobile", mobile);
+        }
+        if (!StringUtils.isEmpty(receiver)) {
+            wrapper.eq("receiver", receiver);
+        }
+        if (!StringUtils.isEmpty(deleteFlag)) {
+            wrapper.eq("delete_flag", deleteFlag);
+        }
+        if (!StringUtils.isEmpty(gmtCreate)) {
+            wrapper.eq("gmt_create", gmtCreate);
+        }
+        if (!StringUtils.isEmpty(gmtUpdate)) {
+            wrapper.eq("gmt_update", gmtUpdate);
+        }
+        if (!StringUtils.isEmpty(userId)) {
+            wrapper.eq("user_id", userId);
+        }
+        if (!StringUtils.isEmpty(adminId)) {
+            wrapper.eq("admin_id", adminId);
+        }
+        List<ShopOrder> list = shopOrderMapper.selectList(wrapper);
+        ExcelUtil<ShopOrder> util = new ExcelUtil<ShopOrder>(ShopOrder.class);
+        return util.exportExcel(list, "操作日志");
+    }
+
+    @Override
+    public String syncOrderInfoList(ShopDTO shopDTO) throws Exception {
+        for (ShopDTO tmp:shopDTO.getShopDTOS()
+             ) {
+            syncOrderInfo(tmp.getOrderId(),tmp.getDangId(),tmp.getDangOrder());
+        }
+        return "ok";
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ShopOrder syncOrderInfo(String orderId,String dangId,String dangOrder) throws Exception {
+        ShopAccount shopAccount = new ShopAccount();
+        if(dangId != null){
+            shopAccount.setDangId(dangId);
+        }
+//        if(fuziId != null){
+//            shopAccount.setFuziId(fuziId);
+//        }
+        shopAccount = shopAccountMapper.selectOne(shopAccount);
+
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+        HttpGet get = new HttpGet("https://shop.kongfz.com/buyer/order/getOrderInfo/?orderId="+orderId);
+        try{
+            //这里可以设置请求参数,token等
+            get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
+            get.addHeader("cookie",shopAccount.getFuziCookie());
+            HttpResponse response = httpClient.execute(get);//执行获取响应
+            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){//根据状态码处理
+                //返回字符串
+                String res = unicodeToString(EntityUtils.toString(response.getEntity(),"UTF-8"));
+                System.out.println(res);
+                JSONObject datas = JSONObject.parseObject(res);//转换成JSON格式
+                Boolean status = (Boolean) datas.get("status");//获取返回数据状态,get获取的字段需要根据提供的返回值去获取
+                ShopOrder data = JSONObject.parseObject(datas.get("data").toString(),ShopOrder.class);//"data"是根据返回值设定
+                ShopOrder tmp = new ShopOrder();
+                tmp.setOrderId(data.getOrderId());
+                tmp = shopOrderMapper.selectOne(tmp);
+                data.setAccountId(shopAccount.getId());
+                if(tmp == null){
+                    data.setDangOrder(dangOrder);
+                    data.setGmtCreate(new Date());
+                    data.setGmtUpdate(new Date());
+                    shopOrderMapper.insert(data);
+                }
+                else{
+                    data.setDangOrder(dangOrder);
+                    data.setGmtUpdate(new Date());
+                    shopOrderMapper.update(data,new EntityWrapper<ShopOrder>().eq("order_id",tmp.getOrderId()));
+                }
+                tmp = new ShopOrder();
+                tmp.setOrderId(data.getOrderId());
+                tmp = shopOrderMapper.selectOne(tmp);
+                if(tmp.getOrderStatusName().equals("卖家已发货")&&tmp.getDangOrderStatus().equals("未发货")){
+                    //调用当当API 更新发货状态
+                    dangOrderDeal(shopAccount,tmp);
+                }
+                return tmp;
+            }
+            else{
+                return null;
+            }
+
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+    public void dangOrderDeal(ShopAccount shopAccount,ShopOrder shopOrder) throws Exception {
+        /**
+         * 获取一下店铺的所有静态参数
+         */
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        SdkClient sdkClient = new SdkClient(shopAccount.getDangAppKey(),shopAccount.getDangAppSecret(),shopAccount.getDangSession(),shopAccount.getDangVersion());
+
+        OrderDetailsGetRequest ss = new OrderDetailsGetRequest();
+        OrderDetailsGet orderDetailsGet = new OrderDetailsGet();
+        orderDetailsGet.setO(shopOrder.getDangOrder());
+        ss.setOrderDetailsGet(orderDetailsGet);
+        OrderDetailsGetResponse resultt = null;
+        try {
+            resultt = sdkClient.excute(ss);
+        } catch (ApiException e) {
+            e.printStackTrace();
+
+        }
+
+        /**
+         * 从当当获取订单内应当有的所有图书
+         */
+        OrderDetailsGetRequest odgr = new OrderDetailsGetRequest();
+        OrderDetailsGet ogg = new OrderDetailsGet();
+        ogg.setO(shopOrder.getDangOrder());
+        odgr.setOrderDetailsGet(ogg);
+        OrderDetailsGetResponse odgrp = null;
+        try {
+            odgrp = sdkClient.excute(odgr);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        SdkClient jiemi = new SdkClient(shopAccount.getDangAppKey(),shopAccount.getDangAppSecret(),shopAccount.getDangSession(),shopAccount.getDangVersion());
+        OrdersContentDecryptRequest ordersContentDecryptRequest=new OrdersContentDecryptRequest();
+
+        List<EncryptDTO> encryptVOS = new ArrayList<EncryptDTO>();
+
+        EncryptDTO encryptVO1 = new EncryptDTO();
+        encryptVO1.setO(resultt.getOrderID().toString());
+        encryptVO1.setEncrypt_content(resultt.getEncrypt_content());
+        encryptVOS.add(encryptVO1);
+
+        ordersContentDecryptRequest.setO_cryptStr(JSON.toJSONString(encryptVOS));
+        OrdersContentDecryptResponse ordersContentDecryptResponse = null;
+        try {
+            ordersContentDecryptResponse=jiemi.excute(ordersContentDecryptRequest);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        List<OrdersContentDecryptDTO> data = ordersContentDecryptResponse.getData();
+        CryptUserInfo cryptUserInfo = data.get(0).getCryptUserInfo();
+
+
+
+        OrderDetail o = (OrderDetail) XMLUtil.convertXmlStrToObject(OrderDetail.class, odgrp.getBody());
+        SendGoodsInfo sgi = new SendGoodsInfo();
+        sgi.setConsigneeAddr(cryptUserInfo.getConsigneeAddr());
+        sgi.setConsigneeMobileTel(cryptUserInfo.getConsigneeMobileTel());
+        sgi.setConsigneeTel(cryptUserInfo.getConsigneeTel());
+        sgi.setConsigneeName(cryptUserInfo.getConsigneeName());
+        o.setSendGoodsInfo(sgi);
+        List<com.iotechn.unimall.data.dto.shop.XmlObject.ItemInfo> itemInfo = o.getItemsList().getItemInfo();
+        /**
+         * 将多个图书拼接XML
+         */
+        String itemsStr = "";
+        for (com.iotechn.unimall.data.dto.shop.XmlObject.ItemInfo ii : itemInfo) {
+            Map<String, Object> hashMap = new HashMap<>();
+            hashMap.put("DANG_DANG_ITEM_ID", ii.getItemID());
+            hashMap.put("SHU_LIANG", ii.getOrderCount());
+            hashMap.put("PRODUCT_ID", ii.getProductItemId());
+            itemsStr += SendGood.processTemplate(SendGood.ONE_ITEM, hashMap);
+        }
+
+
+        /**
+         * 组成OrderInfo
+         */
+        Wrapper wrapper = new EntityWrapper();
+        wrapper.like("fuzi_name",shopOrder.getShippingCom());
+        List<ShopTran> list = shopTranMapper.selectList(wrapper);
+        if(list.size() == 0 ){
+            throw new Exception("物流公司不存在");
+        }
+        HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+        stringObjectHashMap.put("DANG_DANG_ORDER", shopOrder.getDangOrder());
+        stringObjectHashMap.put("KUAI_DI_GONG_SI", list.get(0).getName());
+        stringObjectHashMap.put("KUAI_DI_BIANMA", list.get(0).getCode1());
+        stringObjectHashMap.put("KUAI_DI_GONG_SI_DIAN_HUA", list.get(0).getPhone());
+        stringObjectHashMap.put("KUAI_DI_DAN_HAO", shopOrder.getShipmentNum());
+        stringObjectHashMap.put("SEND_ITEMS", itemsStr);
+
+        String orderListStr = SendGood.processTemplate(SendGood.ONE_ORDER, stringObjectHashMap);
+        HashMap<String, Object> tmplHash = new HashMap<>();
+        tmplHash.put("SEND_TIME", dateFormat.format(new Date()));
+        tmplHash.put("ORDER_LIST", orderListStr);
+
+        String xmlFileStr = SendGood.processTemplate(SendGood.TMPL, tmplHash);
+        System.out.println(xmlFileStr);
+        PrintWriter out = null;
+        try {
+            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("sendGoodNotPlat.xml"), "GBK")));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+        out.write(xmlFileStr);
+        out.close();
+        System.out.println("XML文件创建成功!");
+
+
+        /**
+         * 发货!!
+         */
+        OrderGoodsSendRequest sendGoodsRequest = new OrderGoodsSendRequest();
+        sendGoodsRequest.setSendGoodsFile(new FileItem(new File("sendGoodNotPlat.xml")));
+        OrderGoodsSendResponse result = null;
+        try {
+            result = sdkClient.excute(sendGoodsRequest);
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        System.out.println(result.toString());
+        if(result.getResult().getOrdersList().get(0).getOrderOperCode() == 0){
+            shopOrder.setDangOrderStatus("已发货");
+            shopOrderMapper.update(shopOrder,new EntityWrapper<ShopOrder>().eq("order_id",shopOrder.getOrderId()));
+        }
+    }
+    /**
+     * Unicode转 汉字字符串
+     *
+     * @param str
+     *            \u6728
+     * @return '木' 26408
+     */
+    public static String unicodeToString(String str) {
+
+        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
+        Matcher matcher = pattern.matcher(str);
+        char ch;
+        while (matcher.find()) {
+            // group 6728
+            String group = matcher.group(2);
+            // ch:'木' 26408
+            ch = (char) Integer.parseInt(group, 16);
+            // group1 \u6728
+            String group1 = matcher.group(1);
+            str = str.replace(group1, ch + "");
+        }
+        return str;
+    }
+}

+ 138 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/shop/impl/ShopTranServiceImpl.java

@@ -0,0 +1,138 @@
+package com.iotechn.unimall.admin.api.shop.impl;
+
+import java.util.List;
+
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.mapper.shop.ShopTranMapper;
+import com.iotechn.unimall.data.domain.shop.ShopTran;
+import com.iotechn.unimall.admin.api.shop.IShopTranService;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 物流公司Service业务层处理
+ * 
+ * @author jlb
+ * @date 2022-05-29
+ */
+@Service
+public class ShopTranServiceImpl implements IShopTranService{
+	@Autowired
+	private ShopTranMapper shopTranMapper;
+	
+	@Override
+	public Boolean add(ShopTran shopTran,Long adminId) throws ServiceException {
+		Date now = new Date();
+		shopTran.setGmtCreate(now);
+		shopTran.setGmtUpdate(now);
+		shopTran.setAdminId(adminId);
+		return shopTranMapper.insert(shopTran)>0;
+	}
+
+	@Override
+	public Page<ShopTran> list(String name,String code1,String code2,String phone,Integer deleteFlag,Date gmtCreate,Date gmtUpdate,Long userId,Long adminId, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ShopTran> wrapper = new EntityWrapper<ShopTran>();
+														if (!StringUtils.isEmpty(name)) {
+					wrapper.eq("name", name);
+				}
+												if (!StringUtils.isEmpty(code1)) {
+					wrapper.eq("code1", code1);
+				}
+												if (!StringUtils.isEmpty(code2)) {
+					wrapper.eq("code2", code2);
+				}
+												if (!StringUtils.isEmpty(phone)) {
+					wrapper.eq("phone", phone);
+				}
+																	if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(userId)) {
+					wrapper.eq("user_id", userId);
+				}
+												if (!StringUtils.isEmpty(adminId)) {
+					wrapper.eq("admin_id", adminId);
+				}
+							wrapper.eq("delete_flag", 0);
+		List<ShopTran> list = shopTranMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = shopTranMapper.selectCount(wrapper);
+		return new Page<ShopTran>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(Long id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			ShopTran tmp =  shopTranMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1);
+				shopTranMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(ShopTran shopTran,Long adminId) throws ServiceException {
+		Date now = new Date();
+		shopTran.setGmtUpdate(now);
+		shopTran.setAdminId(adminId);
+		return shopTranMapper.updateById(shopTran)>0;
+	}
+
+	@Override
+	public ShopTran get(Long id) throws ServiceException {
+		return shopTranMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(String name,String code1,String code2,String phone,Integer deleteFlag,Date gmtCreate,Date gmtUpdate,Long userId,Long adminId, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ShopTran> wrapper = new EntityWrapper<ShopTran>();
+														if (!StringUtils.isEmpty(name)) {
+					wrapper.eq("name", name);
+				}
+												if (!StringUtils.isEmpty(code1)) {
+					wrapper.eq("code1", code1);
+				}
+												if (!StringUtils.isEmpty(code2)) {
+					wrapper.eq("code2", code2);
+				}
+												if (!StringUtils.isEmpty(phone)) {
+					wrapper.eq("phone", phone);
+				}
+																	if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(userId)) {
+					wrapper.eq("user_id", userId);
+				}
+												if (!StringUtils.isEmpty(adminId)) {
+					wrapper.eq("admin_id", adminId);
+				}
+							List<ShopTran> list = shopTranMapper.selectList(wrapper);
+		ExcelUtil<ShopTran> util = new ExcelUtil<ShopTran>(ShopTran.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 4 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/user/AdminUserService.java

@@ -54,4 +54,8 @@ public interface AdminUserService {
             @HttpParam(name = "status", type = HttpParamType.COMMON, description = "用户状态") Integer status,
             @Range(min = 1) @HttpParam(name = "pageNo", type = HttpParamType.COMMON, description = "当前页码") Integer pageNo,
             @Range(min = 1) @HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度") Integer limit) throws ServiceException;
+    @HttpMethod(description = "测试")
+    public String test(
+            @HttpParam(name = "param", type = HttpParamType.COMMON, description = "参数") String nickname) throws Exception;
+
 }

+ 108 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/user/AdminUserServiceImpl.java

@@ -1,20 +1,41 @@
 package com.iotechn.unimall.admin.api.user;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.iotechn.unimall.core.exception.AdminServiceException;
 import com.iotechn.unimall.core.exception.ExceptionDefinition;
 import com.iotechn.unimall.core.exception.ServiceException;
 import com.iotechn.unimall.data.domain.UserDO;
+import com.iotechn.unimall.data.dto.shop.FuziDTO;
 import com.iotechn.unimall.data.mapper.UserMapper;
 import com.iotechn.unimall.data.model.Page;
+import okhttp3.*;
 import org.apache.commons.codec.digest.Md5Crypt;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.BasicCookieStore;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.io.*;
+import java.net.CookieStore;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Created with IntelliJ IDEA.
@@ -103,4 +124,91 @@ public class AdminUserServiceImpl implements AdminUserService {
         Page<UserDO> page = new Page<UserDO>(userDOList,pageNo,limit,count);
         return page;
     }
+
+    @Override
+    public String test(String param) throws Exception {
+
+        String cookieVal = "shoppingCartSessionId=8ca49ed8d30b67e4c4136cfe52ca277f; kfz_uuid=97743462-cbc0-439b-b75d-1aa4bb0939ed; reciever_area=18005000000; PHPSESSID=267e4bbaafbbb5413cd4f7be3e601f79399a2a00; kfz_trace=97743462-cbc0-439b-b75d-1aa4bb0939ed|12179203|01e2236b05e0e5d2|; acw_tc=2760828c16537216057521740ed2e98094ffe4c6944af0e72de8dfc7e09466";
+//        String url = "https://login.kongfz.com/Pc/Login/account";
+//        String username = "天热打空调";
+//        String password = "qq19961218";
+//        Headers.Builder builder = new Headers.Builder();
+//        builder.add("Content-Type", "application/x-www-form-urlencoded");
+//        Headers headers = builder.build();
+//        RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
+//                .addFormDataPart("loginName", username)
+//                .addFormDataPart("loginPass", password)
+//                .build();
+//        Response response1 = postData(url, headers, body);
+//        System.out.println(response1.code());
+//        //拿到cookie
+//        String header = response1.header("Set-Cookie");
+//        System.out.println(header);
+
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+        HttpGet get = new HttpGet("https://shop.kongfz.com/buyer/order/getOrderInfo/?orderId="+param);
+        try{
+            //这里可以设置请求参数,token等
+            get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
+            get.addHeader("cookie",cookieVal);
+            HttpResponse response = httpClient.execute(get);//执行获取响应
+            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){//根据状态码处理
+                //返回字符串
+                String res = unicodeToString(EntityUtils.toString(response.getEntity(),"UTF-8"));
+                System.out.println(res);
+                JSONObject datas = JSONObject.parseObject(res);//转换成JSON格式
+                Boolean status = (Boolean) datas.get("status");//获取返回数据状态,get获取的字段需要根据提供的返回值去获取
+                FuziDTO data = new FuziDTO();
+                if (status) {//返回的状态
+                    data = JSONObject.parseObject(datas.get("data").toString(),FuziDTO.class);//"data"是根据返回值设定
+                }
+                return res;
+            }
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return cookieVal;
+    }
+    /**
+     * Unicode转 汉字字符串
+     *
+     * @param str
+     *            \u6728
+     * @return '木' 26408
+     */
+    public static String unicodeToString(String str) {
+
+        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
+        Matcher matcher = pattern.matcher(str);
+        char ch;
+        while (matcher.find()) {
+            // group 6728
+            String group = matcher.group(2);
+            // ch:'木' 26408
+            ch = (char) Integer.parseInt(group, 16);
+            // group1 \u6728
+            String group1 = matcher.group(1);
+            str = str.replace(group1, ch + "");
+        }
+        return str;
+    }
+    public static Response postData(String url, Headers headers, RequestBody body) {
+        OkHttpClient client = new OkHttpClient().newBuilder()
+                .build();
+
+        Request request = new Request.Builder()
+                .url(url)
+                .method("POST", body)
+                .headers(headers)
+                .build();
+        Response response = null;
+        try {
+            response = client.newCall(request).execute();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return response;
+    }
 }

BIN
unimall-admin-api/src/main/lib/dangdang-open-sdk.jar


+ 73 - 0
unimall-admin/src/api/shop/account.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询电商账户表列表
+export function listAccount(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询电商账户表详细
+export function getAccount(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增电商账户表
+export function addAccount(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'add',
+      shopAccount: data
+    }
+  })
+}
+
+// 修改电商账户表
+export function updateAccount(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'update',
+      shopAccount: data
+    }
+  })
+}
+
+// 删除电商账户表
+export function delAccount(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出电商账户表
+export function exportAccount(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopAccount',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/shop/order.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询电商订单表列表
+export function listOrder(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询电商订单表详细
+export function getOrder(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增电商订单表
+export function addOrder(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'add',
+      shopOrder: data
+    }
+  })
+}
+
+// 修改电商订单表
+export function updateOrder(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'update',
+      shopOrder: data
+    }
+  })
+}
+
+// 删除电商订单表
+export function delOrder(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出电商订单表
+export function exportOrder(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.shop.shopOrder',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 35 - 387
unimall-admin/src/router/route.json

@@ -1,226 +1,9 @@
 [
-	{
-		"redirect": "noredirect",
-		"path": "/mall",
-		"children": [
-			{
-				"path": "order",
-				"meta": {
-					"noCache": true,
-					"icon": "order",
-					"perms": [
-						"operation:order:list",
-						"operation:order:detail",
-						"operation:order:ship"
-					],
-					"title": "订单管理"
-				},
-				"name": "order",
-				"page": "/operation/order"
-			},
-			{
-				"path": "appraise",
-				"meta": {
-					"noCache": true,
-					"icon": "appraise",
-					"perms": [
-						"operation:appraise:delete",
-						"operation:appraise:query"
-					],
-					"title": "评论管理"
-				},
-				"name": "appraise",
-				"page": "/operation/appraise"
-			},
-			{
-				"path": "freight",
-				"meta": {
-					"noCache": true,
-					"icon": "freight",
-					"perms": [
-						"operation:freight:query",
-						"operation:freight:update",
-						"operation:freight:create"
-					],
-					"title": "运费模板管理"
-				},
-				"name": "freight",
-				"page": "/operation/freight"
-			}
-		],
-		"meta": {
-			"icon": "chart",
-			"title": "运营管理"
-		},
-		"name": "mallManage",
-		"alwaysShow": true
-	},
-	{
-		"redirect": "noredirect",
-		"path": "/goods",
-		"children": [
-			{
-				"path": "list",
-				"meta": {
-					"noCache": true,
-					"icon": "goodsList",
-					"perms": [
-						"operation:goods:list",
-						"operation:goods:create"
-					],
-					"title": "商品列表"
-				},
-				"name": "goodsList",
-				"page": "/goods/list"
-			},
-			{
-				"path": "groupshop",
-				"meta": {
-					"noCache": true,
-					"icon": "groupshop",
-					"perms": [
-						"operation:groupShop:query",
-						"operation:groupShop:create",
-						"operation:groupShop:delete"
-					],
-					"title": "团购商品"
-				},
-				"name": "groupShop",
-				"page": "/goods/groupshop"
-			},
-			{
-				"path": "category",
-				"meta": {
-					"noCache": true,
-					"icon": "goodsCategory",
-					"perms": [
-						"operation:category:create",
-						"operation:category:query",
-						"admin:category:update",
-						"operation:category:delete"
-					],
-					"title": "商品类目"
-				},
-				"name": "goodsCategory",
-				"page": "/goods/category"
-			},
-			{
-				"path": "upsert",
-				"hidden": true,
-				"meta": {
-					"noCache": true,
-					"perms": [
-						"operation:goods:create",
-						"operation:goods:edit"
-					],
-					"title": "商品编辑"
-				},
-				"name": "goodsUpsert",
-				"page": "/goods/upsert"
-			}
-		],
-		"meta": {
-			"icon": "shopping",
-			"title": "商品管理"
-		},
-		"name": "goodsManage",
-		"alwaysShow": true
-	},
-	{
-		"redirect": "noredirect",
-		"path": "/promotion",
-		"children": [
-			{
-				"path": "merchantad",
-				"meta": {
-					"noCache": true,
-					"icon": "merchantad",
-					"perms": [
-						"promote:advertisement:create",
-						"promote:advertisement:delete",
-						"promote:advertisement:update",
-						"promote:advertisement:query"
-					],
-					"title": "商铺广告"
-				},
-				"name": "merchantad",
-				"page": "/promotion/merchantad"
-			},
-			{
-				"path": "recommend",
-				"meta": {
-					"noCache": true,
-					"icon": "recommend",
-					"perms": [
-						"promote:recommend:create",
-						"promote:recommend:delete",
-						"promote:recommend:update",
-						"promote:recommend:query"
-					],
-					"title": "推荐管理"
-				},
-				"name": "recommend",
-				"page": "/promotion/recommend"
-			},
-			{
-				"path": "coupon",
-				"meta": {
-					"noCache": true,
-					"icon": "coupon",
-					"perms": [
-						"promote:coupon:create",
-						"promote:coupon:delete",
-						"promote:coupon:update",
-						"promote:coupon:query"
-					],
-					"title": "优惠卷管理"
-				},
-				"name": "coupon",
-				"page": "/promotion/coupon"
-			},
-			{
-				"path": "merchant",
-				"meta": {
-					"noCache": true,
-					"icon": "merchant",
-					"perms": [
-						"promote:merchant:create",
-						"promote:merchant:update",
-						"promote:merchant:query"
-					],
-					"title": "商铺信息"
-				},
-				"name": "merchant",
-				"page": "/promotion/merchant"
-			}
-		],
-		"meta": {
-			"icon": "tree",
-			"title": "推广管理"
-		},
-		"name": "promotionManage",
-		"alwaysShow": true
-	},
+	
 	{
 		"redirect": "noredirect",
 		"path": "/sys",
 		"children": [
-			{
-				"path": "user",
-				"meta": {
-					"noCache": true,
-					"icon": "user",
-					"perms": [
-						"system:user:query",
-						"system:user:delete",
-						"system:user:create",
-						"system:user:update"
-					],
-					"title": "会员管理"
-				},
-				"name": "user",
-				"page": "/user/user"
-			},
 			{
 				"path": "admin",
 				"meta": {
@@ -236,56 +19,6 @@
 				},
 				"name": "admin",
 				"page": "/sys/admin"
-			},
-			{
-				"path": "role",
-				"meta": {
-					"noCache": true,
-					"icon": "role",
-					"perms": [
-						"admin:role:list",
-						"admin:role:create",
-						"admin:role:delete",
-						"admin:role:update",
-						"admin:role:permissionList",
-						"admin:permission:list"
-					],
-					"title": "角色管理"
-				},
-				"name": "role",
-				"page": "/sys/role"
-			},
-			{
-				"path": "dictType",
-				"meta": {
-					"noCache": true,
-					"icon": "dict",
-					"perms": [
-						"admin:dict:list",
-						"admin:dict:create",
-						"admin:dict:delete",
-						"admin:dict:update",
-						"admin:dict:permissionList",
-						"admin:permission:list"
-					],
-					"title": "字典管理"
-				},
-				"name": "dict",
-				"page": "/sys/dict/dictType"
-			},
-			{
-				"path": "dictData/:dictId(\\d+)",
-				"hidden": true,
-				"meta": {
-					"noCache": true,
-					"perms": [
-						"operation:goods:create",
-						"operation:goods:edit"
-					],
-					"title": "字典数据"
-				},
-				"name": "dictData",
-				"page": "/sys/dict/dictData"
 			}
 		],
 		"meta": {
@@ -296,125 +29,6 @@
 		"alwaysShow": true
 	},
 	{
-		"redirect": "noredirect",
-		"name": "sysTools",
-		"path": "/tools",
-		"meta": {
-			"icon": "tools",
-			"title": "系统工具"
-		},
-		"alwaysShow": true,
-		"children": [
-			{
-				"path": "job",
-				"name": "job",
-				"page": "/tools/job",
-				"meta": {
-					"title": "定时任务",
-					"icon": "job",
-					"noCache": true,
-					"perms": [
-						"tools:job:list"
-					]
-				}
-			},
-			{
-				"path": "api",
-				"name": "api",
-				"page": "/tools/api/api",
-				"meta": {
-					"title": "API文档",
-					"icon": "api",
-					"noCache": true,
-					"perms": [
-						"tools:api:list"
-					]
-				}
-			},
-			{
-				"path": "gen",
-				"name": "gen",
-				"page": "/tools/gen",
-				"meta": {
-					"title": "代码生成",
-					"icon": "gen",
-					"noCache": true,
-					"perms": [
-						"tools:gen:list",
-						"tools:gen:create",
-						"tools:gen:delete",
-						"tools:gen:update"
-					]
-				}
-			},
-			{
-				"path": "gen/edit/:tableId(\\d+)",
-				"hidden": true,
-				"meta": {
-					"noCache": true,
-					"perms": [],
-					"title": "配置项修改"
-				},
-				"name": "genEdit",
-				"page": "/tools/gen/editTable"
-			}
-			
-		]
-	},{
-		"redirect": "noredirect",
-		"name": "sysMonitor",
-		"path": "/monitor",
-		"meta": {
-			"icon": "monitor",
-			"title": "系统监控"
-		},
-		"alwaysShow": true,
-		"children": [
-			{
-				"path": "online",
-				"name": "online",
-				"page": "/monitor/online",
-				"meta": {
-					"icon": "online",
-					"title": "在线用户",
-					"noCache": true,
-					"perms": [
-						"monitor:online:list",
-						"monitor:online:create",
-						"monitor:online:delete",
-						"monitor:online:update"
-					]
-				}
-			},
-			{
-				"path": "druid",
-				"name": "druid",
-				"page": "/monitor/druid",
-				"meta": {
-					"title": "数据监控",
-					"icon": "druid",
-					"noCache": true,
-					"perms": [
-						"monitor:druid:list"
-						
-					]
-				}
-			},
-			{
-				"path": "server",
-				"name": "server",
-				"page": "/monitor/server",
-				"meta": {
-					"title": "硬件信息",
-					"icon": "server",
-					"noCache": true,
-					"perms": [
-						"monitor:server:list"
-					]
-				}
-			}
-		]
-	},{
 		"redirect": "noredirect",
 		"name": "sysLog",
 		"path": "/log",
@@ -476,5 +90,39 @@
 		"redirect": "/404",
 		"path": "*",
 		"hidden": true
+	},
+	{"redirect": "noredirect",
+		"name": "order",
+		"path": "/shop/",
+		"meta": {
+			"icon": "log",
+			"title": "电商管理"
+		},
+		"alwaysShow": true,
+		"children": [
+			{
+				"path": "order",
+				"name": "order",
+				"page": "/shop/order",
+				"meta": {
+					"title": "订单管理",
+					"icon": "operlog",
+					"noCache": true,
+					"perms": [
+					]
+				}
+			},
+			{
+				"path": "account",
+				"name": "account",
+				"page": "/shop/account",
+				"meta": {
+					"title": "账户管理",
+					"icon": "operlog",
+					"noCache": true,
+					"perms": [
+					]
+				}
+			}]
 	}
 ]

+ 2 - 2
unimall-admin/src/views/dashboard/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="dashboard-editor-container">
-    <el-row>
+    <!-- <el-row>
       <el-col :span="5">
         <el-row class="panel-group">
           <el-col class="card-panel-col">
@@ -52,7 +52,7 @@
           </el-col>
         </el-row>
       </el-col>
-    </el-row>
+    </el-row> -->
   </div>
 </template>
 

+ 399 - 0
unimall-admin/src/views/shop/account/index.vue

@@ -0,0 +1,399 @@
+<template>
+  <div class="app-container">
+    <el-form
+      ref="queryForm"
+      :model="queryParams"
+      :inline="true"
+      label-width="68px"
+    >
+      <el-form-item label="当当账号" prop="dangAccount">
+        <el-input
+          v-model="queryParams.dangAccount"
+          placeholder="请输入当当账号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="夫子账号" prop="fuziAccount">
+        <el-input
+          v-model="queryParams.fuziAccount"
+          placeholder="请输入夫子账号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+        >搜索</el-button
+        >
+        <el-button
+          icon="el-icon-refresh"
+          size="mini"
+          @click="resetQuery"
+        >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:account:add']"
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >新增</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:account:edit']"
+          :disabled="single"
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          @click="handleUpdate"
+        >修改</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:account:remove']"
+          :disabled="multiple"
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          @click="handleDelete"
+        >删除</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:account:export']"
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出</el-button
+        >
+      </el-col>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="accountList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号">
+        <template slot-scope="scope">
+          <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
+          <span v-else>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="当当id" align="center" prop="dangId" />
+      <el-table-column label="店铺名称" align="center" prop="dangName" />
+      <el-table-column label="运费模板" align="center" prop="dangTran" />
+      <el-table-column label="夫子id" align="center" prop="fuziId" />
+      <el-table-column label="夫子账号" align="center" prop="fuziAccount" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="创建时间" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新时间" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <el-button
+            v-permission="['shop:account:edit']"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >修改</el-button
+          >
+          <el-button
+            v-permission="['shop:account:remove']"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改电商账户表对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="当当id" prop="dangId">
+          <el-input v-model="form.dangId" placeholder="请输入当当id" />
+        </el-form-item>
+        <el-form-item label="当当appkey" prop="dangAppKey">
+          <el-input v-model="form.dangAppKey" placeholder="请输入当当appkey" />
+        </el-form-item>
+        <el-form-item label="当当appSecret" prop="dangAppSecret">
+          <el-input v-model="form.dangAppSecret" placeholder="请输当当appSecret" />
+        </el-form-item>
+        <el-form-item label="当当session" prop="dangSession">
+          <el-input v-model="form.dangSession" placeholder="当当session" />
+        </el-form-item>
+        <el-form-item label="当当接口版本" prop="dangVersion">
+          <el-input v-model="form.dangVersion" placeholder="请输入当当接口版本" />
+        </el-form-item>
+        <el-form-item label="当当店铺名称" prop="dangName">
+          <el-input v-model="form.dangName" placeholder="请输入当当店铺名称" />
+        </el-form-item>
+        <el-form-item label="当当运费模板" prop="dangTran">
+          <el-input v-model="form.dangTran" placeholder="请输入当当运费模板" />
+        </el-form-item>
+        <el-form-item label="夫子账号id" prop="fuziId">
+          <el-input v-model="form.fuziId" placeholder="请输入夫子账号id" />
+        </el-form-item>
+        <el-form-item label="夫子账号" prop="fuziAccount">
+          <el-input v-model="form.fuziAccount" placeholder="请输入夫子账号" />
+        </el-form-item>
+        <el-form-item label="夫子密码" prop="fuziPassword">
+          <el-input v-model="form.fuziPassword" type="password" placeholder="请输入夫子密码" />
+        </el-form-item>
+        <el-form-item label="夫子cookie" prop="fuziCookie">
+          <el-input
+            v-model="form.fuziCookie"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="教程" prop="remark">
+          <el-button type="primary" @click="handleSee()">查看设置方法</el-button>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input
+            v-model="form.remark"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listAccount,
+  getAccount,
+  delAccount,
+  addAccount,
+  updateAccount,
+  exportAccount
+} from '@/api/shop/account'
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 电商账户表表格数据
+      accountList: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        dangAccount: undefined,
+        dangPassword: undefined,
+        fuziAccount: undefined,
+        fuziPassword: undefined,
+        fuziCookie: undefined,
+        deleteFlag: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        userId: undefined,
+        adminId: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询电商账户表列表 */
+    getList() {
+      this.loading = true
+      listAccount(this.queryParams).then((response) => {
+        this.accountList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        dangAccount: undefined,
+        dangPassword: undefined,
+        fuziAccount: undefined,
+        fuziPassword: undefined,
+        fuziCookie: undefined,
+        remark: undefined,
+        deleteFlag: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        userId: undefined,
+        adminId: undefined
+      }
+      this.resetForm('form')
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id)
+      this.single = selection.length != 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '添加电商账户表'
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id || this.ids.join(',')
+      getAccount(id).then((response) => {
+        this.form = response.data.data
+        this.open = true
+        this.title = '修改电商账户表'
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateAccount(this.form).then((response) => {
+              if (response.data) {
+                this.msgSuccess('修改成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          } else {
+            addAccount(this.form).then((response) => {
+              if (response.data) {
+                this.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          }
+        }
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm(
+        '是否确认删除电商账户表编号为"' + ids + '"的数据项?',
+        '警告',
+        {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }
+      )
+        .then(function() {
+          return delAccount(ids)
+        })
+        .then(() => {
+          this.getList()
+          this.msgSuccess('删除成功')
+        })
+        .catch(function() {})
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams
+      this.$confirm('是否确认导出所有电商账户表数据项?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(function() {
+          return exportAccount(queryParams)
+        })
+        .then((response) => {
+          this.download(response.data.data)
+        })
+        .catch(function() {})
+    },
+    /** 导出按钮操作 */
+    handleSee() {
+      window.open('../../../../../static/jiaocheng.html')
+    }
+  }
+}
+</script>

+ 413 - 0
unimall-admin/src/views/shop/order/index.vue

@@ -0,0 +1,413 @@
+<template>
+  <div class="app-container">
+    <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
+
+      <el-form-item label="当当订单" prop="orderId">
+        <el-input
+          v-model="queryParams.orderId"
+          placeholder="请输入当当订单"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="夫子订单" prop="dangOrder">
+        <el-input
+          v-model="queryParams.dangOrder"
+          placeholder="请输入夫子订单"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="收件人" prop="receiverName">
+        <el-input
+          v-model="queryParams.receiverName"
+          placeholder="请输入收件人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:order:add']"
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:order:edit']"
+          :disabled="single"
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          @click="handleUpdate"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:order:remove']"
+          :disabled="multiple"
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          @click="handleDelete"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          v-permission="['shop:order:export']"
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="index" label="序号">
+        <template slot-scope="scope">
+          <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
+          <span v-else>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="夫子订单" align="center" prop="orderId" />
+      <el-table-column label="当当订单" align="center" prop="dangOrder" />
+      <el-table-column label="收件人详细信息" align="center" prop="receiver" width="380" />
+      <!-- <el-table-column label="省" align="center" prop="provName" />
+      <el-table-column label="市" align="center" prop="cityName" />
+      <el-table-column label="区" align="center" prop="areaName" />
+      <el-table-column label="详细地址" align="center" prop="address" /> -->
+      <!-- <el-table-column label="订单状态" align="center" prop="orderStatus" /> -->
+      <el-table-column label="订单状态" align="center" prop="orderStatusName" />
+      <el-table-column label="当当发货状态" align="center" prop="dangOrderStatus" width="120" />
+      <!-- <el-table-column label="付款状态" align="center" prop="payStatus" /> -->
+      <el-table-column label="付款状态" align="center" prop="payName" />
+      <el-table-column label="快递公司" align="center" prop="shippingCom" />
+      <el-table-column label="快递单号" align="center" prop="shipmentNum" />
+      <el-table-column label="运费" align="center" prop="shippingFee" />
+      <el-table-column label="发货时间" align="center" prop="shippingTime" />
+      <el-table-column label="更新时间" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            v-permission="['shop:order:edit']"
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >修改</el-button>
+          <el-button
+            v-permission="['shop:order:remove']"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改电商订单表对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="账户表id" prop="accountId">
+          <el-input v-model="form.accountId" placeholder="请输入账户表id" />
+        </el-form-item>
+        <el-form-item label="当当订单号" prop="orderId">
+          <el-input v-model="form.orderId" placeholder="请输入当当订单号" />
+        </el-form-item>
+        <el-form-item label="夫子订单号" prop="dangOrder">
+          <el-input v-model="form.dangOrder" placeholder="请输入夫子订单号" />
+        </el-form-item>
+        <el-form-item label="详细地址" prop="address">
+          <el-input v-model="form.address" placeholder="请输入详细地址" />
+        </el-form-item>
+        <el-form-item label="省" prop="provName">
+          <el-input v-model="form.provName" placeholder="请输入省" />
+        </el-form-item>
+        <el-form-item label="市" prop="cityName">
+          <el-input v-model="form.cityName" placeholder="请输入市" />
+        </el-form-item>
+        <el-form-item label="区" prop="areaName">
+          <el-input v-model="form.areaName" placeholder="请输入区" />
+        </el-form-item>
+        <el-form-item label="订单状态">
+          <el-radio-group v-model="form.orderStatus">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="订单状态" prop="orderStatusName">
+          <el-input v-model="form.orderStatusName" placeholder="请输入订单状态" />
+        </el-form-item>
+        <el-form-item label="付款状态">
+          <el-radio-group v-model="form.payStatus">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="付款状态" prop="payName">
+          <el-input v-model="form.payName" placeholder="请输入付款状态" />
+        </el-form-item>
+        <el-form-item label="收件人" prop="receiverName">
+          <el-input v-model="form.receiverName" placeholder="请输入收件人" />
+        </el-form-item>
+        <el-form-item label="收件人电话" prop="mobile">
+          <el-input v-model="form.mobile" placeholder="请输入收件人电话" />
+        </el-form-item>
+        <el-form-item label="收件人详细信息" prop="receiver">
+          <el-input v-model="form.receiver" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" placeholder="请输入删除标识" />
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker
+            v-model="form.gmtCreate"
+            clearable
+            size="small"
+            style="width: 200px"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择"/>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker
+            v-model="form.gmtUpdate"
+            clearable
+            size="small"
+            style="width: 200px"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择"/>
+        </el-form-item>
+        <el-form-item label="" prop="userId">
+          <el-input v-model="form.userId" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="" prop="adminId">
+          <el-input v-model="form.adminId" placeholder="请输入" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listOrder, getOrder, delOrder, addOrder, updateOrder, exportOrder } from '@/api/shop/order'
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 电商订单表表格数据
+      orderList: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        accountId: undefined,
+        orderId: undefined,
+        dangOrder: undefined,
+        address: undefined,
+        provName: undefined,
+        cityName: undefined,
+        areaName: undefined,
+        orderStatus: undefined,
+        orderStatusName: undefined,
+        payStatus: undefined,
+        payName: undefined,
+        receiverName: undefined,
+        mobile: undefined,
+        receiver: undefined,
+        deleteFlag: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        userId: undefined,
+        adminId: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询电商订单表列表 */
+    getList() {
+      this.loading = true
+      listOrder(this.queryParams).then(response => {
+        this.orderList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        accountId: undefined,
+        orderId: undefined,
+        dangOrder: undefined,
+        address: undefined,
+        provName: undefined,
+        cityName: undefined,
+        areaName: undefined,
+        orderStatus: '0',
+        orderStatusName: undefined,
+        payStatus: '0',
+        payName: undefined,
+        receiverName: undefined,
+        mobile: undefined,
+        receiver: undefined,
+        remark: undefined,
+        deleteFlag: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        userId: undefined,
+        adminId: undefined
+      }
+      this.resetForm('form')
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '添加电商订单表'
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id || this.ids.join(',')
+      getOrder(id).then(response => {
+        this.form = response.data.data
+        this.open = true
+        this.title = '修改电商订单表'
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateOrder(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess('修改成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          } else {
+            addOrder(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          }
+        }
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除电商订单表编号为"' + ids + '"的数据项?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(function() {
+        return delOrder(ids)
+      }).then(() => {
+        this.getList()
+        this.msgSuccess('删除成功')
+      }).catch(function() {})
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams
+      this.$confirm('是否确认导出所有电商订单表数据项?', '警告', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(function() {
+        return exportOrder(queryParams)
+      }).then(response => {
+        this.download(response.data.data)
+      }).catch(function() {})
+    }
+  }
+}
+</script>

+ 12 - 0
unimall-admin/static/jiaocheng.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en" style="height: 100%;">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>设置cookie教程</title>
+</head>
+<body style="margin: 0px; background: #0e0e0e; height: 100%">
+    <img style="-webkit-user-select: none;margin: auto;cursor: zoom-in;background-color: hsl(0, 0%, 90%);transition: background-color 300ms;" src="https://taohaoliang.oss-cn-beijing.aliyuncs.com/pcfiles/jiaocheng.png"/>
+</body>
+</html>

+ 8 - 1
unimall-app-api/pom.xml

@@ -38,7 +38,14 @@
 	</repositories>
 
 	<dependencies>
-
+		<!-- 引入本地jar -->
+		<dependency>
+			<groupId>com.dangdang.openplatform.openapi</groupId>
+			<artifactId>sdk</artifactId>
+			<version>1.0-SNAPSHOT</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/lib/dangdang-open-sdk.jar</systemPath>
+		</dependency>
 		<!-- http客户端 -->
 		<dependency>
 			<groupId>com.squareup.okhttp3</groupId>

+ 5 - 0
unimall-app-api/src/main/java/com/iotechn/unimall/app/quartz/CheckQuartz.java

@@ -10,12 +10,14 @@ import com.iotechn.unimall.data.component.LockComponent;
 import com.iotechn.unimall.data.domain.GroupShopDO;
 import com.iotechn.unimall.data.domain.OrderDO;
 import com.iotechn.unimall.data.domain.SpuDO;
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
 import com.iotechn.unimall.data.enums.GroupShopAutomaticRefundType;
 import com.iotechn.unimall.data.enums.OrderStatusType;
 import com.iotechn.unimall.data.enums.StatusType;
 import com.iotechn.unimall.data.mapper.GroupShopMapper;
 import com.iotechn.unimall.data.mapper.OrderMapper;
 import com.iotechn.unimall.data.mapper.SpuMapper;
+import com.iotechn.unimall.data.mapper.shop.ShopOrderMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,8 @@ public class CheckQuartz {
     @Autowired
     private OrderMapper orderMapper;
     @Autowired
+    private ShopOrderMapper shopOrderMapper;
+    @Autowired
     private OrderBizService orderBizService;
     @Autowired
     private GroupShopMapper groupShopMapper;
@@ -101,6 +105,7 @@ public class CheckQuartz {
         }
     }
 
+
     /**
      * 设定60s跑一次,团购商品到期自动退款,改变状态
      */

BIN
unimall-app-api/src/main/lib/dangdang-open-sdk.jar


+ 32 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/BaseDO.java

@@ -0,0 +1,32 @@
+package com.iotechn.unimall.data.domain.shop;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author:chengchangjiang
+ * @Description:
+ * @Date:Created in 10:46 2022-05-24
+ */
+@Data
+public class BaseDO {
+    /**  */
+    @TableId("id")
+    private Long id;
+    /**  */
+    @Excel(name = "", width = 30)
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30)
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+    /**  */
+    @TableField("delete_flag")
+    private Integer deleteFlag;
+}

+ 119 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopAccount.java

@@ -0,0 +1,119 @@
+package com.iotechn.unimall.data.domain.shop;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel.ColumnType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.enums.FieldFill;
+import com.iotechn.unimall.core.util.StringUtils;
+import java.util.Date;
+
+/**
+ * 电商账户表对象 shop_account
+ * 
+ * @author jlb
+ * @date 2022-05-28
+ */
+@Data
+@TableName("shop_account")
+public class ShopAccount extends BaseDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    @Excel(name = "当当id")
+    @TableField("dang_id")
+    private String dangId;
+
+    @Excel(name = "当当appkey")
+    @TableField("dang_app_key")
+    private String dangAppKey;
+    @Excel(name = "当当appSecret")
+    @TableField("dang_app_secret")
+    private String dangAppSecret;
+    @Excel(name = "当当session")
+    @TableField("dang_session")
+    private String dangSession;
+    @Excel(name = "当当接口版本")
+    @TableField("dang_version")
+    private String dangVersion;
+    @Excel(name = "当当店铺名称")
+    @TableField("dang_name")
+    private String dangName;
+    @Excel(name = "当当运费模板")
+    @TableField("dang_tran")
+    private String dangTran;
+
+    /** 夫子账号 */
+    @Excel(name = "夫子账号id")
+    @TableField("fuzi_id")
+    private String fuziId;
+
+    /** 夫子账号 */
+    @Excel(name = "夫子账号")
+    @TableField("fuzi_account")
+    private String fuziAccount;
+
+    /** 夫子密码 */
+    @Excel(name = "夫子密码")
+    @TableField("fuzi_password")
+    private String fuziPassword;
+
+    /** 夫子cookie */
+    @Excel(name = "夫子cookie")
+    @TableField("fuzi_cookie")
+    private String fuziCookie;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    @TableField("remark")
+    private String remark;
+
+    /** 删除标识 */
+    @Excel(name = "删除标识")
+    @TableField("delete_flag")
+    private Integer deleteFlag;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("user_id")
+    private Long userId;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("admin_id")
+    private Long adminId;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fuziAccount", getFuziAccount())
+            .append("fuziPassword", getFuziPassword())
+            .append("fuziCookie", getFuziCookie())
+            .append("remark", getRemark())
+            .append("deleteFlag", getDeleteFlag())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("userId", getUserId())
+            .append("adminId", getAdminId())
+            .toString();
+    }
+}

+ 188 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopOrder.java

@@ -0,0 +1,188 @@
+package com.iotechn.unimall.data.domain.shop;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel.ColumnType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.enums.FieldFill;
+import com.iotechn.unimall.core.util.StringUtils;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 电商订单表对象 shop_order
+ * 
+ * @author jlb
+ * @date 2022-05-28
+ */
+@Data
+@TableName("shop_order")
+public class ShopOrder extends BaseDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    /** 账户表id */
+    @Excel(name = "账户表id")
+    @TableField("account_id")
+    private Long accountId;
+
+    /** 夫子订单号 */
+    @Excel(name = "夫子订单号")
+    @TableField("order_id")
+    private String orderId;
+
+    /** 当当订单号 */
+    @Excel(name = "当当订单号")
+    @TableField("dang_order")
+    private String dangOrder;
+
+    /** 当当订单号发货状态 */
+    @Excel(name = "当当订单号发货状态")
+    @TableField("dang_order_status")
+    private String dangOrderStatus;
+    /** 详细地址 */
+    @Excel(name = "详细地址")
+    @TableField("address")
+    private String address;
+
+    /** 省 */
+    @Excel(name = "省")
+    @TableField("prov_name")
+    private String provName;
+
+    /** 市 */
+    @Excel(name = "市")
+    @TableField("city_name")
+    private String cityName;
+
+    /** 区 */
+    @Excel(name = "区")
+    @TableField("area_name")
+    private String areaName;
+
+    /** 订单状态 */
+    @Excel(name = "订单状态")
+    @TableField("order_status")
+    private String orderStatus;
+
+    /** 订单状态 */
+    @Excel(name = "订单状态")
+    @TableField("order_status_name")
+    private String orderStatusName;
+
+    /** 付款状态 */
+    @Excel(name = "付款状态")
+    @TableField("pay_status")
+    private String payStatus;
+
+    /** 付款状态 */
+    @Excel(name = "付款状态")
+    @TableField("pay_name")
+    private String payName;
+
+    /** 收件人 */
+    @Excel(name = "收件人")
+    @TableField("receiver_name")
+    private String receiverName;
+
+    /** 收件人电话 */
+    @Excel(name = "收件人电话")
+    @TableField("mobile")
+    private String mobile;
+
+    /** 收件人详细信息 */
+    @Excel(name = "收件人详细信息")
+    @TableField("receiver")
+    private String receiver;
+
+    @Excel(name = "快递单号")
+    @TableField("shipment_num")
+    private String shipmentNum;
+    @Excel(name = "快递公司")
+    @TableField("shipping_com")
+    private String shippingCom;
+    @Excel(name = "快递公司编码")
+    @TableField("shipping_com_code")
+    private String shippingComCode;
+    @Excel(name = "发货方式")
+    @TableField("shipping_name")
+    private String shippingName;
+    @Excel(name = "发货状态")
+    @TableField("shipping_status")
+    private String shippingStatus;
+    @Excel(name = "运费")
+    @TableField("shipping_fee")
+    private String shippingFee;
+    @Excel(name = "发货时间")
+    @TableField("shipping_time")
+    private String shippingTime;
+
+
+    /** 备注 */
+    @Excel(name = "备注")
+    @TableField("remark")
+    private String remark;
+
+    /** 删除标识 */
+    @Excel(name = "删除标识")
+    @TableField("delete_flag")
+    private Integer deleteFlag;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("user_id")
+    private Long userId;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("admin_id")
+    private Long adminId;
+
+
+    @TableField(exist = false)
+    private List<ShopOrder> shopOrderList;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("accountId", getAccountId())
+            .append("orderId", getOrderId())
+            .append("dangOrder", getDangOrder())
+            .append("address", getAddress())
+            .append("provName", getProvName())
+            .append("cityName", getCityName())
+            .append("areaName", getAreaName())
+            .append("orderStatus", getOrderStatus())
+            .append("orderStatusName", getOrderStatusName())
+            .append("payStatus", getPayStatus())
+            .append("payName", getPayName())
+            .append("receiverName", getReceiverName())
+            .append("mobile", getMobile())
+            .append("receiver", getReceiver())
+            .append("remark", getRemark())
+            .append("deleteFlag", getDeleteFlag())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("userId", getUserId())
+            .append("adminId", getAdminId())
+            .toString();
+    }
+}

+ 100 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/shop/ShopTran.java

@@ -0,0 +1,100 @@
+package com.iotechn.unimall.data.domain.shop;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel.ColumnType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.enums.FieldFill;
+import com.iotechn.unimall.core.util.StringUtils;
+import java.util.Date;
+
+/**
+ * 物流公司对象 shop_tran
+ * 
+ * @author jlb
+ * @date 2022-05-29
+ */
+@Data
+@TableName("shop_tran")
+public class ShopTran extends BaseDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+    /** 物流公司名称 */
+    @Excel(name = "夫子物流公司名称")
+    @TableField("fuzi_name")
+    private String fuziName;
+    /** 物流公司名称 */
+    @Excel(name = "物流公司名称")
+    @TableField("name")
+    private String name;
+
+    /** 物流公司编码 */
+    @Excel(name = "物流公司编码")
+    @TableField("code1")
+    private String code1;
+
+    /** 物流公司编码 */
+    @Excel(name = "物流公司编码")
+    @TableField("code2")
+    private String code2;
+
+    /** 物流公司电话 */
+    @Excel(name = "物流公司电话")
+    @TableField("phone")
+    private String phone;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    @TableField("remark")
+    private String remark;
+
+    /** 删除标识 */
+    @Excel(name = "删除标识")
+    @TableField("delete_flag")
+    private Integer deleteFlag;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("user_id")
+    private Long userId;
+
+    /**  */
+    @Excel(name = "")
+    @TableField("admin_id")
+    private Long adminId;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("code1", getCode1())
+            .append("code2", getCode2())
+            .append("phone", getPhone())
+            .append("remark", getRemark())
+            .append("deleteFlag", getDeleteFlag())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("userId", getUserId())
+            .append("adminId", getAdminId())
+            .toString();
+    }
+}

+ 61 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/FuziDTO.java

@@ -0,0 +1,61 @@
+package com.iotechn.unimall.data.dto.shop;
+
+import lombok.Data;
+
+/**
+ * @Author:chengchangjiang
+ * @Description:
+ * @Date:Created in 15:29 2022-05-28
+ */
+@Data
+public class FuziDTO {
+    /**
+     * 详细地址
+     */
+    private String address;
+    /**
+     * 区
+     */
+    private String areaName;
+    /**
+     * 市
+     */
+    private String cityName;
+    /**
+     * 省
+     */
+    private String provName;
+    /**
+     * 订单ID
+     */
+    private String orderId;
+    /**
+     * 订单状态
+     */
+    private String orderStatus;
+    /**
+     * 订单状态
+     */
+    private String orderStatusName;
+    /**
+     * 付款状态
+     */
+    private String payStatus;
+    /**
+     * 付款状态
+     */
+    private String payName;
+    /**
+     * 收件人
+     */
+    private String receiverName;
+    /**
+     * 收件人电话
+     */
+    private String mobile;
+    /**
+     * 收件人详细信息
+     */
+    private String receiver;
+
+}

+ 19 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/ShopDTO.java

@@ -0,0 +1,19 @@
+package com.iotechn.unimall.data.dto.shop;
+
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author:chengchangjiang
+ * @Description:
+ * @Date:Created in 8:40 2022-05-30
+ */
+@Data
+public class ShopDTO {
+    String orderId;
+    String dangOrder;
+    String dangId;
+    List<ShopDTO> shopDTOS;
+}

+ 183 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ItemInfo.java

@@ -0,0 +1,183 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "ItemInfo")
+public class ItemInfo {
+    String itemID;
+    String outerItemID;
+    String itemName;
+    String itemType;
+    String specialAttribute;
+    String marketPrice;
+    String is_energySubsidy;
+    String subsidyPrice;
+    String unitPrice;
+    String orderCount;
+    String belongProductsPromoID;
+    String sendGoodsCount;
+    String giftCardCharge;
+    String productItemId;
+    String productImg;
+    String productVersion;
+    String itemRealPaidAmount;
+
+    @Override
+    public String toString() {
+        return "ItemInfo{" +
+                "itemID='" + itemID + '\'' +
+                ", outerItemID='" + outerItemID + '\'' +
+                ", itemName='" + itemName + '\'' +
+                ", itemType='" + itemType + '\'' +
+                ", specialAttribute='" + specialAttribute + '\'' +
+                ", marketPrice='" + marketPrice + '\'' +
+                ", is_energySubsidy='" + is_energySubsidy + '\'' +
+                ", subsidyPrice='" + subsidyPrice + '\'' +
+                ", unitPrice='" + unitPrice + '\'' +
+                ", orderCount='" + orderCount + '\'' +
+                ", belongProductsPromoID='" + belongProductsPromoID + '\'' +
+                ", sendGoodsCount='" + sendGoodsCount + '\'' +
+                ", giftCardCharge='" + giftCardCharge + '\'' +
+                ", productItemId='" + productItemId + '\'' +
+                ", productImg='" + productImg + '\'' +
+                ", productVersion='" + productVersion + '\'' +
+                ", itemRealPaidAmount='" + itemRealPaidAmount + '\'' +
+                '}';
+    }
+
+    public String getItemID() {
+        return itemID;
+    }
+
+    public void setItemID(String itemID) {
+        this.itemID = itemID;
+    }
+
+    public String getOuterItemID() {
+        return outerItemID;
+    }
+
+    public void setOuterItemID(String outerItemID) {
+        this.outerItemID = outerItemID;
+    }
+
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+
+    public String getItemType() {
+        return itemType;
+    }
+
+    public void setItemType(String itemType) {
+        this.itemType = itemType;
+    }
+
+    public String getSpecialAttribute() {
+        return specialAttribute;
+    }
+
+    public void setSpecialAttribute(String specialAttribute) {
+        this.specialAttribute = specialAttribute;
+    }
+
+    public String getMarketPrice() {
+        return marketPrice;
+    }
+
+    public void setMarketPrice(String marketPrice) {
+        this.marketPrice = marketPrice;
+    }
+
+    public String getIs_energySubsidy() {
+        return is_energySubsidy;
+    }
+
+    public void setIs_energySubsidy(String is_energySubsidy) {
+        this.is_energySubsidy = is_energySubsidy;
+    }
+
+    public String getSubsidyPrice() {
+        return subsidyPrice;
+    }
+
+    public void setSubsidyPrice(String subsidyPrice) {
+        this.subsidyPrice = subsidyPrice;
+    }
+
+    public String getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(String unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public String getOrderCount() {
+        return orderCount;
+    }
+
+    public void setOrderCount(String orderCount) {
+        this.orderCount = orderCount;
+    }
+
+    public String getBelongProductsPromoID() {
+        return belongProductsPromoID;
+    }
+
+    public void setBelongProductsPromoID(String belongProductsPromoID) {
+        this.belongProductsPromoID = belongProductsPromoID;
+    }
+
+    public String getSendGoodsCount() {
+        return sendGoodsCount;
+    }
+
+    public void setSendGoodsCount(String sendGoodsCount) {
+        this.sendGoodsCount = sendGoodsCount;
+    }
+
+    public String getGiftCardCharge() {
+        return giftCardCharge;
+    }
+
+    public void setGiftCardCharge(String giftCardCharge) {
+        this.giftCardCharge = giftCardCharge;
+    }
+
+    public String getProductItemId() {
+        return productItemId;
+    }
+
+    public void setProductItemId(String productItemId) {
+        this.productItemId = productItemId;
+    }
+
+    public String getProductImg() {
+        return productImg;
+    }
+
+    public void setProductImg(String productImg) {
+        this.productImg = productImg;
+    }
+
+    public String getProductVersion() {
+        return productVersion;
+    }
+
+    public void setProductVersion(String productVersion) {
+        this.productVersion = productVersion;
+    }
+
+    public String getItemRealPaidAmount() {
+        return itemRealPaidAmount;
+    }
+
+    public void setItemRealPaidAmount(String itemRealPaidAmount) {
+        this.itemRealPaidAmount = itemRealPaidAmount;
+    }
+}

+ 24 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ItemsList.java

@@ -0,0 +1,24 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+import javax.xml.bind.annotation.XmlElement;
+import java.util.List;
+
+public class ItemsList {
+    @XmlElement(name = "ItemInfo")
+    List<ItemInfo> ItemInfo;
+
+    @Override
+    public String toString() {
+        return "ItemsList{" +
+                "ItemInfo=" + ItemInfo +
+                '}';
+    }
+
+    public List<ItemInfo> getItemInfo() {
+        return ItemInfo;
+    }
+
+    public void setItemInfo(List<ItemInfo> itemInfo) {
+        ItemInfo = itemInfo;
+    }
+}

+ 132 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrderDetail.java

@@ -0,0 +1,132 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+@XmlRootElement(name="response")
+public class OrderDetail {
+    String orderID;
+    int orderStatus;
+    int orderState;
+    int label;
+    String lastModifyTime;
+    String sendDate;
+    String paymentDate;
+    int isPresale;
+
+
+
+    String message;
+    String remark;
+    @XmlElement(name = "sendGoodsInfo")
+    SendGoodsInfo sendGoodsInfo;
+    @XmlElement(name = "ItemsList")
+    ItemsList itemsList;
+    @XmlElement(name = "receiptInfo")
+    ReceiptInfo receiptInfo;
+    @XmlTransient
+    public ReceiptInfo getReceiptInfo() {
+        return receiptInfo;
+    }
+
+    public void setReceiptInfo(ReceiptInfo receiptInfo) {
+        this.receiptInfo = receiptInfo;
+    }
+
+    public String getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(String orderID) {
+        this.orderID = orderID;
+    }
+
+    public int getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(int orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+    @XmlTransient
+    public SendGoodsInfo getSendGoodsInfo() {
+        return sendGoodsInfo;
+    }
+
+    public void setSendGoodsInfo(SendGoodsInfo sendGoodsInfo) {
+        this.sendGoodsInfo = sendGoodsInfo;
+    }
+    @XmlTransient
+    public ItemsList getItemsList() {
+        return itemsList;
+    }
+
+    public void setItemsList(ItemsList itemsList) {
+        this.itemsList = itemsList;
+    }
+    public String getLastModifyTime() {
+        return lastModifyTime;
+    }
+
+    public void setLastModifyTime(String lastModifyTime) {
+        this.lastModifyTime = lastModifyTime;
+    }
+
+    public int getLabel() {
+        return label;
+    }
+
+    public void setLabel(int label) {
+        this.label = label;
+    }
+
+    public int getOrderState() {
+        return orderState;
+    }
+
+    public void setOrderState(int orderState) {
+        this.orderState = orderState;
+    }
+
+    public String getSendDate() {
+        return sendDate;
+    }
+
+    public void setSendDate(String sendDate) {
+        this.sendDate = sendDate;
+    }
+
+    public String getPaymentDate() {
+        return paymentDate;
+    }
+
+    public void setPaymentDate(String paymentDate) {
+        this.paymentDate = paymentDate;
+    }
+
+    public int getIsPresale() {
+        return isPresale;
+    }
+
+    public void setIsPresale(int isPresale) {
+        this.isPresale = isPresale;
+    }
+}

+ 192 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrderInfo.java

@@ -0,0 +1,192 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+
+public class OrderInfo {
+    String orderID;
+    String consigneeName;
+    String consigneeTel;
+    String consigneeMobileTel;
+    String consigneeAddr;
+    String DangdangWarehouseAddr;
+    String sendGoodsMode;
+    String orderMoney;
+    String orderTimeStart;
+    String lastModifyTime;
+    String orderState;
+    String orderStatus;
+    String isCourierReceiptDetail;
+
+    String outerOrderID;
+
+    String remark;
+
+    String label;
+
+    String paymentDate;
+
+    String orderMode;
+
+    String isPresale;
+
+    String sendDate;
+
+    public String getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(String orderID) {
+        this.orderID = orderID;
+    }
+
+    public String getConsigneeName() {
+        return consigneeName;
+    }
+
+    public void setConsigneeName(String consigneeName) {
+        this.consigneeName = consigneeName;
+    }
+
+    public String getConsigneeTel() {
+        return consigneeTel;
+    }
+
+    public void setConsigneeTel(String consigneeTel) {
+        this.consigneeTel = consigneeTel;
+    }
+
+    public String getConsigneeMobileTel() {
+        return consigneeMobileTel;
+    }
+
+    public void setConsigneeMobileTel(String consigneeMobileTel) {
+        this.consigneeMobileTel = consigneeMobileTel;
+    }
+
+    public String getConsigneeAddr() {
+        return consigneeAddr;
+    }
+
+    public void setConsigneeAddr(String consigneeAddr) {
+        this.consigneeAddr = consigneeAddr;
+    }
+
+    public String getDangdangWarehouseAddr() {
+        return DangdangWarehouseAddr;
+    }
+
+    public void setDangdangWarehouseAddr(String dangdangWarehouseAddr) {
+        DangdangWarehouseAddr = dangdangWarehouseAddr;
+    }
+
+    public String getSendGoodsMode() {
+        return sendGoodsMode;
+    }
+
+    public void setSendGoodsMode(String sendGoodsMode) {
+        this.sendGoodsMode = sendGoodsMode;
+    }
+
+    public String getOrderMoney() {
+        return orderMoney;
+    }
+
+    public void setOrderMoney(String orderMoney) {
+        this.orderMoney = orderMoney;
+    }
+
+    public String getOrderTimeStart() {
+        return orderTimeStart;
+    }
+
+    public void setOrderTimeStart(String orderTimeStart) {
+        this.orderTimeStart = orderTimeStart;
+    }
+
+    public String getLastModifyTime() {
+        return lastModifyTime;
+    }
+
+    public void setLastModifyTime(String lastModifyTime) {
+        this.lastModifyTime = lastModifyTime;
+    }
+
+    public String getOrderState() {
+        return orderState;
+    }
+
+    public void setOrderState(String orderState) {
+        this.orderState = orderState;
+    }
+
+    public String getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(String orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+
+    public String getIsCourierReceiptDetail() {
+        return isCourierReceiptDetail;
+    }
+
+    public void setIsCourierReceiptDetail(String isCourierReceiptDetail) {
+        this.isCourierReceiptDetail = isCourierReceiptDetail;
+    }
+
+    public String getOuterOrderID() {
+        return outerOrderID;
+    }
+
+    public void setOuterOrderID(String outerOrderID) {
+        this.outerOrderID = outerOrderID;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public String getPaymentDate() {
+        return paymentDate;
+    }
+
+    public void setPaymentDate(String paymentDate) {
+        this.paymentDate = paymentDate;
+    }
+
+    public String getOrderMode() {
+        return orderMode;
+    }
+
+    public void setOrderMode(String orderMode) {
+        this.orderMode = orderMode;
+    }
+
+    public String getIsPresale() {
+        return isPresale;
+    }
+
+    public void setIsPresale(String isPresale) {
+        this.isPresale = isPresale;
+    }
+
+    public String getSendDate() {
+        return sendDate;
+    }
+
+    public void setSendDate(String sendDate) {
+        this.sendDate = sendDate;
+    }
+}

+ 18 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/OrdersList.java

@@ -0,0 +1,18 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+
+import javax.xml.bind.annotation.XmlElement;
+import java.util.List;
+
+public class OrdersList {
+    @XmlElement(name = "OrderInfo")
+    List<OrderInfo> OrderInfo;
+
+    public List<OrderInfo> getOrderInfo() {
+        return OrderInfo;
+    }
+
+    public void setOrderInfo(List<OrderInfo> orderInfo) {
+        this.OrderInfo = orderInfo;
+    }
+}

+ 90 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/ReceiptInfo.java

@@ -0,0 +1,90 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+public class ReceiptInfo {
+    String receiptName;
+    String receiptDetails;
+    String receiptMoney;
+    String Is_DangdangReceipt;
+    String receiptTel;
+    String receiptType;
+    String eReceiptAddress;
+    String taxpayerId;
+
+    @Override
+    public String toString() {
+        return "ReceiptInfo{" +
+                "receiptName='" + receiptName + '\'' +
+                ", receiptDetails='" + receiptDetails + '\'' +
+                ", receiptMoney='" + receiptMoney + '\'' +
+                ", Is_DangdangReceipt='" + Is_DangdangReceipt + '\'' +
+                ", receiptTel='" + receiptTel + '\'' +
+                ", receiptType='" + receiptType + '\'' +
+                ", eReceiptAddress='" + eReceiptAddress + '\'' +
+                ", taxpayerId='" + taxpayerId + '\'' +
+                '}';
+    }
+
+    public String getReceiptName() {
+        return receiptName;
+    }
+
+    public void setReceiptName(String receiptName) {
+        this.receiptName = receiptName;
+    }
+
+    public String getReceiptDetails() {
+        return receiptDetails;
+    }
+
+    public void setReceiptDetails(String receiptDetails) {
+        this.receiptDetails = receiptDetails;
+    }
+
+    public String getReceiptMoney() {
+        return receiptMoney;
+    }
+
+    public void setReceiptMoney(String receiptMoney) {
+        this.receiptMoney = receiptMoney;
+    }
+
+    public String getIs_DangdangReceipt() {
+        return Is_DangdangReceipt;
+    }
+
+    public void setIs_DangdangReceipt(String is_DangdangReceipt) {
+        Is_DangdangReceipt = is_DangdangReceipt;
+    }
+
+    public String getReceiptTel() {
+        return receiptTel;
+    }
+
+    public void setReceiptTel(String receiptTel) {
+        this.receiptTel = receiptTel;
+    }
+
+    public String getReceiptType() {
+        return receiptType;
+    }
+
+    public void setReceiptType(String receiptType) {
+        this.receiptType = receiptType;
+    }
+
+    public String geteReceiptAddress() {
+        return eReceiptAddress;
+    }
+
+    public void seteReceiptAddress(String eReceiptAddress) {
+        this.eReceiptAddress = eReceiptAddress;
+    }
+
+    public String getTaxpayerId() {
+        return taxpayerId;
+    }
+
+    public void setTaxpayerId(String taxpayerId) {
+        this.taxpayerId = taxpayerId;
+    }
+}

+ 49 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGood.java

@@ -0,0 +1,49 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SendGood {
+
+    public static String processTemplate(String template, Map<String, Object> params){
+        StringBuffer sb = new StringBuffer();
+        Matcher m = Pattern.compile("\\$\\{\\w+\\}").matcher(template);
+        while (m.find()) {
+            String param = m.group();
+            Object value = params.get(param.substring(2, param.length() - 1));
+            m.appendReplacement(sb, value==null ? "" : value.toString());
+        }
+        m.appendTail(sb);
+        return sb.toString();
+    }
+
+    public static String TMPL = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n" +
+            "<request>\n" +
+            "    <functionID>dangdang.order.goods.send</functionID>\n" +
+            "    <time>${SEND_TIME}</time>\n" +
+            "    <OrdersList>\n" +
+            "${ORDER_LIST}"+
+            "    </OrdersList>\n" +
+            "</request>";
+
+    public static String ONE_ORDER="        <OrderInfo>\n" +
+            "            <orderID>${DANG_DANG_ORDER}</orderID>\n" +
+            "            <logisticsName>${KUAI_DI_GONG_SI}</logisticsName>\n" +
+            "            <logisticsNameAb>${KUAI_DI_BIANMA}</logisticsNameAb>\n" +
+            "            <logisticsTel>${KUAI_DI_GONG_SI_DIAN_HUA}</logisticsTel>\n" +
+            "            <logisticsOrderID>${KUAI_DI_DAN_HAO}</logisticsOrderID>\n" +
+            "            <SendGoodsList>\n" +
+
+            "${SEND_ITEMS}"+
+
+            "            </SendGoodsList>\n" +
+            "        </OrderInfo>\n";
+
+    public static String ONE_ITEM="                <ItemInfo>\n" +
+            "                    <itemID>${DANG_DANG_ITEM_ID}</itemID>\n" +
+            "                    <sendGoodsCount>${SHU_LIANG}</sendGoodsCount>\n" +
+            "                    <belongProductsPromoID></belongProductsPromoID>\n" +
+            "                    <productItemId>${PRODUCT_ID}</productItemId>\n" +
+            "                </ItemInfo>\n";
+}

+ 55 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGoodChai.java

@@ -0,0 +1,55 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SendGoodChai {
+
+    public static String processTemplate(String template, Map<String, Object> params){
+        StringBuffer sb = new StringBuffer();
+        Matcher m = Pattern.compile("\\$\\{\\w+\\}").matcher(template);
+        while (m.find()) {
+            String param = m.group();
+            Object value = params.get(param.substring(2, param.length() - 1));
+            m.appendReplacement(sb, value==null ? "" : value.toString());
+        }
+        m.appendTail(sb);
+        return sb.toString();
+    }
+
+    public static String TMPL = "" +
+            "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
+            "\n" +
+            "<request> \n" +
+            "  <functionID>dangdang.order.goods.send</functionID>  \n" +
+            "  <time>${ORDER_TIME}</time>  \n" +
+            "  <OrdersList> \n" +
+            "    <OrderInfo> \n" +
+            "      <orderID>${ORDER_ID}</orderID>  \n" +
+            "      <shopId>${SHOP_ID}</shopId>  \n" +
+            "      <donePackageSendList> \n" +
+            "${PACKAGES}  \n" +
+            "      </donePackageSendList> \n" +
+            "    </OrderInfo>  \n" +
+            "\n" +
+            "  </OrdersList> \n" +
+            "</request>";
+
+
+    public static String ONE_ITEM="" +
+            "        <donePackageSend> \n" +
+            "          <expressCompany>${KUAI_DI_GONG_SI}</expressCompany>  \n" +
+            "          <expressCompanyId>${KUAI_DI_GONG_SI_CODE}</expressCompanyId>  \n" +
+            "          <expressCompanyTel>${KUAI_DI_GONG_SI_TEL}</expressCompanyTel>  \n" +
+            "          <expressNo>${KUAI_DI_DAN_HAO}</expressNo>  \n" +
+            "          <isSplite>1</isSplite>  \n" +
+            "          <SendGoodsList> \n" +
+            "            <ItemInfo> \n" +
+            "              <itemID>${ITEM_ID}</itemID>  \n" +
+            "              <sendGoodsCount>1</sendGoodsCount>  \n" +
+            "              <productItemId>${PRODUCT_ITEM_ID}</productItemId> \n" +
+            "            </ItemInfo>\n" +
+            "          </SendGoodsList> \n" +
+            "        </donePackageSend> ";
+}

+ 181 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/SendGoodsInfo.java

@@ -0,0 +1,181 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+public class SendGoodsInfo {
+    String dangdangAccountID;
+    String consigneeName;
+    String consigneeAddr;
+    String consigneeAddr_State;
+    String consigneeAddr_Province;
+    String consigneeAddr_City;
+    String consigneeAddr_Area;
+    String consigneeAddr_StateCode;
+    String consigneeAddr_ProvinceCode;
+    String consigneeAddr_CityCode;
+    String consigneeAddr_AreaCode;
+    String consigneePostcode;
+    String consigneeTel;
+    String consigneeMobileTel;
+    String sendGoodsMode;
+    String sendCompany;
+    String sendOrderID;
+
+
+    @Override
+    public String toString() {
+        return "SendGoodsInfo{" +
+                "dangdangAccountID='" + dangdangAccountID + '\'' +
+                ", consigneeName='" + consigneeName + '\'' +
+                ", consigneeAddr='" + consigneeAddr + '\'' +
+                ", consigneeAddr_State='" + consigneeAddr_State + '\'' +
+                ", consigneeAddr_Province='" + consigneeAddr_Province + '\'' +
+                ", consigneeAddr_City='" + consigneeAddr_City + '\'' +
+                ", consigneeAddr_Area='" + consigneeAddr_Area + '\'' +
+                ", consigneeAddr_StateCode='" + consigneeAddr_StateCode + '\'' +
+                ", consigneeAddr_ProvinceCode='" + consigneeAddr_ProvinceCode + '\'' +
+                ", consigneeAddr_CityCode='" + consigneeAddr_CityCode + '\'' +
+                ", consigneeAddr_AreaCode='" + consigneeAddr_AreaCode + '\'' +
+                ", consigneePostcode='" + consigneePostcode + '\'' +
+                ", consigneeTel='" + consigneeTel + '\'' +
+                ", consigneeMobileTel='" + consigneeMobileTel + '\'' +
+                ", sendGoodsMode='" + sendGoodsMode + '\'' +
+                ", sendCompany='" + sendCompany + '\'' +
+                ", sendOrderID='" + sendOrderID + '\'' +
+                '}';
+    }
+
+    public String getDangdangAccountID() {
+        return dangdangAccountID;
+    }
+
+    public void setDangdangAccountID(String dangdangAccountID) {
+        this.dangdangAccountID = dangdangAccountID;
+    }
+
+    public String getConsigneeName() {
+        return consigneeName;
+    }
+
+    public void setConsigneeName(String consigneeName) {
+        this.consigneeName = consigneeName;
+    }
+
+    public String getConsigneeAddr() {
+        return consigneeAddr;
+    }
+
+    public void setConsigneeAddr(String consigneeAddr) {
+        this.consigneeAddr = consigneeAddr;
+    }
+
+    public String getConsigneeAddr_State() {
+        return consigneeAddr_State;
+    }
+
+    public void setConsigneeAddr_State(String consigneeAddr_State) {
+        this.consigneeAddr_State = consigneeAddr_State;
+    }
+
+    public String getConsigneeAddr_Province() {
+        return consigneeAddr_Province;
+    }
+
+    public void setConsigneeAddr_Province(String consigneeAddr_Province) {
+        this.consigneeAddr_Province = consigneeAddr_Province;
+    }
+
+    public String getConsigneeAddr_City() {
+        return consigneeAddr_City;
+    }
+
+    public void setConsigneeAddr_City(String consigneeAddr_City) {
+        this.consigneeAddr_City = consigneeAddr_City;
+    }
+
+    public String getConsigneeAddr_Area() {
+        return consigneeAddr_Area;
+    }
+
+    public void setConsigneeAddr_Area(String consigneeAddr_Area) {
+        this.consigneeAddr_Area = consigneeAddr_Area;
+    }
+
+    public String getConsigneeAddr_StateCode() {
+        return consigneeAddr_StateCode;
+    }
+
+    public void setConsigneeAddr_StateCode(String consigneeAddr_StateCode) {
+        this.consigneeAddr_StateCode = consigneeAddr_StateCode;
+    }
+
+    public String getConsigneeAddr_ProvinceCode() {
+        return consigneeAddr_ProvinceCode;
+    }
+
+    public void setConsigneeAddr_ProvinceCode(String consigneeAddr_ProvinceCode) {
+        this.consigneeAddr_ProvinceCode = consigneeAddr_ProvinceCode;
+    }
+
+    public String getConsigneeAddr_CityCode() {
+        return consigneeAddr_CityCode;
+    }
+
+    public void setConsigneeAddr_CityCode(String consigneeAddr_CityCode) {
+        this.consigneeAddr_CityCode = consigneeAddr_CityCode;
+    }
+
+    public String getConsigneeAddr_AreaCode() {
+        return consigneeAddr_AreaCode;
+    }
+
+    public void setConsigneeAddr_AreaCode(String consigneeAddr_AreaCode) {
+        this.consigneeAddr_AreaCode = consigneeAddr_AreaCode;
+    }
+
+    public String getConsigneePostcode() {
+        return consigneePostcode;
+    }
+
+    public void setConsigneePostcode(String consigneePostcode) {
+        this.consigneePostcode = consigneePostcode;
+    }
+
+    public String getConsigneeTel() {
+        return consigneeTel;
+    }
+
+    public void setConsigneeTel(String consigneeTel) {
+        this.consigneeTel = consigneeTel;
+    }
+
+    public String getConsigneeMobileTel() {
+        return consigneeMobileTel;
+    }
+
+    public void setConsigneeMobileTel(String consigneeMobileTel) {
+        this.consigneeMobileTel = consigneeMobileTel;
+    }
+
+    public String getSendGoodsMode() {
+        return sendGoodsMode;
+    }
+
+    public void setSendGoodsMode(String sendGoodsMode) {
+        this.sendGoodsMode = sendGoodsMode;
+    }
+
+    public String getSendCompany() {
+        return sendCompany;
+    }
+
+    public void setSendCompany(String sendCompany) {
+        this.sendCompany = sendCompany;
+    }
+
+    public String getSendOrderID() {
+        return sendOrderID;
+    }
+
+    public void setSendOrderID(String sendOrderID) {
+        this.sendOrderID = sendOrderID;
+    }
+}

+ 45 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/response.java

@@ -0,0 +1,45 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="response")
+public class response {
+    String functionID;
+    String time;
+    totalInfo totalInfo;
+    @XmlElement(name = "OrdersList")
+    OrdersList OrdersList;
+
+    public String getFunctionID() {
+        return functionID;
+    }
+
+    public void setFunctionID(String functionID) {
+        this.functionID = functionID;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public totalInfo getTotalInfo() {
+        return totalInfo;
+    }
+
+    public void setTotalInfo(totalInfo totalInfo) {
+        this.totalInfo = totalInfo;
+    }
+
+    public OrdersList getOrdersList() {
+        return OrdersList;
+    }
+
+    public void setOrdersList(OrdersList ordersList) {
+        this.OrdersList = ordersList;
+    }
+}

+ 67 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/dto/shop/XmlObject/totalInfo.java

@@ -0,0 +1,67 @@
+package com.iotechn.unimall.data.dto.shop.XmlObject;
+
+public class totalInfo {
+    String sendGoodsOrderCount;
+    String needExchangeOrderCount;
+    String orderCount;
+    String totalOrderMoney;
+    String pageSize;
+    String pageTotal;
+    String currentPage;
+
+    public String getSendGoodsOrderCount() {
+        return sendGoodsOrderCount;
+    }
+
+    public void setSendGoodsOrderCount(String sendGoodsOrderCount) {
+        this.sendGoodsOrderCount = sendGoodsOrderCount;
+    }
+
+    public String getNeedExchangeOrderCount() {
+        return needExchangeOrderCount;
+    }
+
+    public void setNeedExchangeOrderCount(String needExchangeOrderCount) {
+        this.needExchangeOrderCount = needExchangeOrderCount;
+    }
+
+    public String getOrderCount() {
+        return orderCount;
+    }
+
+    public void setOrderCount(String orderCount) {
+        this.orderCount = orderCount;
+    }
+
+    public String getTotalOrderMoney() {
+        return totalOrderMoney;
+    }
+
+    public void setTotalOrderMoney(String totalOrderMoney) {
+        this.totalOrderMoney = totalOrderMoney;
+    }
+
+    public String getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(String pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public String getPageTotal() {
+        return pageTotal;
+    }
+
+    public void setPageTotal(String pageTotal) {
+        this.pageTotal = pageTotal;
+    }
+
+    public String getCurrentPage() {
+        return currentPage;
+    }
+
+    public void setCurrentPage(String currentPage) {
+        this.currentPage = currentPage;
+    }
+}

+ 13 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopAccountMapper.java

@@ -0,0 +1,13 @@
+package com.iotechn.unimall.data.mapper.shop;
+
+import com.iotechn.unimall.data.domain.shop.ShopAccount;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+/**
+ * 电商账户表Mapper接口
+ * 
+ * @author jlb
+ * @date 2022-05-28
+ */
+public interface ShopAccountMapper extends BaseMapper<ShopAccount>{
+
+}

+ 13 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopOrderMapper.java

@@ -0,0 +1,13 @@
+package com.iotechn.unimall.data.mapper.shop;
+
+import com.iotechn.unimall.data.domain.shop.ShopOrder;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+/**
+ * 电商订单表Mapper接口
+ * 
+ * @author jlb
+ * @date 2022-05-28
+ */
+public interface ShopOrderMapper extends BaseMapper<ShopOrder>{
+
+}

+ 13 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/shop/ShopTranMapper.java

@@ -0,0 +1,13 @@
+package com.iotechn.unimall.data.mapper.shop;
+
+import com.iotechn.unimall.data.domain.shop.ShopTran;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+/**
+ * 物流公司Mapper接口
+ * 
+ * @author jlb
+ * @date 2022-05-29
+ */
+public interface ShopTranMapper extends BaseMapper<ShopTran>{
+
+}

+ 121 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/util/XMLUtil.java

@@ -0,0 +1,121 @@
+package com.iotechn.unimall.data.util;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import java.io.*;
+
+
+/**
+ * 封装了XML转换成object,object转换成XML的代码
+ *
+ * @author mscall
+ */
+
+public class XMLUtil {
+
+    /**
+     * 将对象直接转换成String类型的 XML输出
+     *
+     * @param obj
+     * @return
+     */
+
+    public static String convertToXml(Object obj) {
+
+        // 创建输出流
+        StringWriter sw = new StringWriter();
+        try {
+            // 利用jdk中自带的转换类实现
+            JAXBContext context = JAXBContext.newInstance(obj.getClass());
+            Marshaller marshaller = context.createMarshaller();
+            // 格式化xml输出的格式
+            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
+                    Boolean.TRUE);
+
+            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
+            // 将对象转换成输出流形式的xml
+            marshaller.marshal(obj, sw);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+        return sw.toString();
+
+    }
+
+
+    /**
+     * 将对象根据路径写入指定的xml文件里
+     *
+     * @param obj
+     * @param path
+     * @return
+     */
+
+    public static void convertToXml(Object obj, String path) {
+
+        try {
+            // 利用jdk中自带的转换类实现
+            JAXBContext context = JAXBContext.newInstance(obj.getClass());
+            Marshaller marshaller = context.createMarshaller();
+            // 格式化xml输出的格式
+            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
+                    Boolean.TRUE);
+
+            marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK");
+
+            // 将对象转换成输出流形式的xml
+            // 创建输出流
+            FileWriter fw = null;
+            try {
+                fw = new FileWriter(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            marshaller.marshal(obj, fw);
+        } catch (JAXBException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    /**
+     * 将String类型的xml转换成对象
+     */
+
+    public static Object convertXmlStrToObject(Class<?> clazz, String xmlStr) {
+        Object xmlObject = null;
+        try {
+            JAXBContext context = JAXBContext.newInstance(clazz);
+            // 进行将Xml转成对象的核心接口
+            Unmarshaller unmarshal = context.createUnmarshaller();
+            StringReader sr = new StringReader(xmlStr);
+            xmlObject = unmarshal.unmarshal(sr);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return xmlObject;
+
+    }
+
+
+    /**
+     * 将file类型的xml转换成对象
+     */
+
+    public static Object convertXmlFileToObject(Class<?> clazz, String xmlPath) {
+        Object xmlObject = null;
+        try {
+            JAXBContext context = JAXBContext.newInstance(clazz);
+            Unmarshaller unmarshaller = context.createUnmarshaller();
+            InputStreamReader isr = new InputStreamReader(new FileInputStream(xmlPath), "GBK");
+            xmlObject = unmarshaller.unmarshal(isr);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return xmlObject;
+    }
+
+}

+ 23 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/shop/ShopAccountMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iotechn.unimall.data.mapper.shop.ShopAccountMapper">
+    
+    <resultMap type="ShopAccount" id="ShopAccountResult">
+      <result property="id" column="id"/>
+      <result property="dangAccount" column="dang_account"/>
+      <result property="dangPassword" column="dang_password"/>
+      <result property="fuziAccount" column="fuzi_account"/>
+      <result property="fuziPassword" column="fuzi_password"/>
+      <result property="fuziCookie" column="fuzi_cookie"/>
+      <result property="remark" column="remark"/>
+      <result property="deleteFlag" column="delete_flag"/>
+      <result property="gmtCreate" column="gmt_create"/>
+      <result property="gmtUpdate" column="gmt_update"/>
+      <result property="userId" column="user_id"/>
+      <result property="adminId" column="admin_id"/>
+    </resultMap>
+
+
+</mapper>

+ 32 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/shop/ShopOrderMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iotechn.unimall.data.mapper.shop.ShopOrderMapper">
+    
+    <resultMap type="ShopOrder" id="ShopOrderResult">
+      <result property="id" column="id"/>
+      <result property="accountId" column="account_id"/>
+      <result property="orderId" column="order_id"/>
+      <result property="dangOrder" column="fuzi_order"/>
+      <result property="address" column="address"/>
+      <result property="provName" column="prov_name"/>
+      <result property="cityName" column="city_name"/>
+      <result property="areaName" column="area_name"/>
+      <result property="orderStatus" column="order_status"/>
+      <result property="orderStatusName" column="order_status_name"/>
+      <result property="payStatus" column="pay_status"/>
+      <result property="payName" column="pay_name"/>
+      <result property="receiverName" column="receiver_name"/>
+      <result property="mobile" column="mobile"/>
+      <result property="receiver" column="receiver"/>
+      <result property="remark" column="remark"/>
+      <result property="deleteFlag" column="delete_flag"/>
+      <result property="gmtCreate" column="gmt_create"/>
+      <result property="gmtUpdate" column="gmt_update"/>
+      <result property="userId" column="user_id"/>
+      <result property="adminId" column="admin_id"/>
+    </resultMap>
+
+
+</mapper>

+ 8 - 0
unimall-launcher/pom.xml

@@ -118,6 +118,14 @@
 			<artifactId>spring-boot-starter-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<!-- 引入本地jar -->
+		<dependency>
+			<groupId>com.dangdang.openplatform.openapi</groupId>
+			<artifactId>sdk</artifactId>
+			<version>1.0-SNAPSHOT</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/lib/dangdang-open-sdk.jar</systemPath>
+		</dependency>
 	</dependencies>
 
 	<build>

BIN
unimall-launcher/src/main/lib/dangdang-open-sdk.jar


+ 1 - 1
unimall-launcher/src/main/resources/application.properties

@@ -8,7 +8,7 @@ logging.level.root=info
 ###MySql (MySqlConfiguration)
 ########################################################
 spring.druid.driverClassName=com.mysql.jdbc.Driver
-spring.druid.url=jdbc:mysql://106.14.75.12/muban?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useSSL=false
+spring.druid.url=jdbc:mysql://106.14.75.12/shop?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useSSL=false
 spring.druid.username=root
 spring.druid.password=Ccj841968545
 spring.druid.maxActive=30