فهرست منبع

Merge branch 'dev' of 113.31.163.91:quanshu/mp-server into dev

chunping 3 سال پیش
والد
کامیت
80222c3734

+ 7 - 0
mp-admin/pom.xml

@@ -17,6 +17,13 @@
 
     <dependencies>
 
+        <!--快递100SDK-->
+        <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.8</version>
+        </dependency>
+
         <!-- swagger 增强-->
         <dependency>
             <groupId>com.github.xiaoymin</groupId>

+ 15 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -1,5 +1,6 @@
 package com.qs.mp.web.controller.api.channel.mall;
 
+import cn.hutool.core.date.LocalDateTimeUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.qs.mp.admin.domain.TicketBox;
@@ -42,6 +43,8 @@ import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.time.Duration;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -142,6 +145,18 @@ public class ChannelOrderController extends BaseApiController {
         .eq(ChannelOrder::getOrderId, order.getOrderId()).eq(ChannelOrder::getChannelId, channelId));
     ChannelOrderInfoVO channelOrderVO = mapperFacade.map(channelOrder, ChannelOrderInfoVO.class);
 
+    // 设置自动确认收货的时间;
+    if (channelOrderVO != null && Objects.nonNull(channelOrderVO.getDeliveryTime())) {
+      Date deliveryTime = channelOrderVO.getDeliveryTime();
+      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(10);
+      Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
+      long hours = between.toHours();
+      long day = hours / 24;
+      long hour = hours % 24;
+      channelOrderVO.setAutoConfirmTime(day + "天" + hour + "小时");
+    }
+
+
     if(null != channelOrderVO && null != channelOrderVO.getDeliveryId()) {
       DeliveryCompany deliveryCompany = deliveryCompanyService.getById(channelOrderVO.getDeliveryId());
       channelOrderVO.setDeliveryCompany(deliveryCompany);

+ 15 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -1,5 +1,6 @@
 package com.qs.mp.web.controller.api.user;
 
+import cn.hutool.core.date.LocalDateTimeUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
@@ -37,6 +38,8 @@ import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
+import java.time.Duration;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import javax.validation.Valid;
@@ -119,6 +122,18 @@ public class UserDeliverOrderController extends BaseApiController {
     UserDeliverOrder deliverOrder = userDeliverOrderService.getOne(new LambdaQueryWrapper<UserDeliverOrder>()
         .eq(UserDeliverOrder::getOrderId, order.getOrderId()).eq(UserDeliverOrder::getUserId, userId));
     DeliverOrderVO deliverOrderVO = mapperFacade.map(deliverOrder, DeliverOrderVO.class);
+
+    // 设置自动确认收货时间
+    if (deliverOrder != null && !Objects.isNull(deliverOrder.getDeliveryTime())) {
+      Date deliveryTime = deliverOrder.getDeliveryTime();
+      LocalDateTime autoConfirmTime = LocalDateTimeUtil.of(deliveryTime).plusDays(10);
+      Duration between = LocalDateTimeUtil.between(LocalDateTime.now(), autoConfirmTime);
+      long hours = between.toHours();
+      long day = hours / 24;
+      long hour = hours % 24;
+      deliverOrderVO.setAutoConfirmTime(day + "天" + hour + "小时");
+    }
+
     deliverOrderVO.setItems(userDeliverOrderItemService.selectUserDeliverOrderItemVOList(deliverOrder.getOrderId()));
     deliverOrderVO.setDeliverList(userDeliverOrderItemService.getDeliverItemList(order.getOrderId(), deliverOrderVO.getItems()));
     return AjaxResult.success(deliverOrderVO);

+ 106 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/common/LogisticsController.java

@@ -0,0 +1,106 @@
+package com.qs.mp.web.controller.common;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.json.JSON;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONConfig;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.AutoNum;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.pojo.HttpResult;
+import com.kuaidi100.sdk.request.AutoNumReq;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.domain.DeliveryCompany;
+import com.qs.mp.common.service.IDeliveryCompanyService;
+import io.swagger.annotations.*;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * @author Cup
+ * @date 2022/4/20
+ */
+@RequestMapping("/api/v1/mp/logistics")
+@RestController
+@Api(tags = "物流相关接口")
+public class LogisticsController extends BaseApiController {
+
+
+    @Value("${kuaidi100.key}")
+    public String key;
+
+    @Value("${kuaidi100.customer}")
+    private String customer;
+
+    @Value("${kuaidi100.secret}")
+    private String secret;
+
+    @Value("${kuaidi100.userid}")
+    private String userid;
+
+    @Autowired
+    private IDeliveryCompanyService deliveryCompanyService;
+
+    @PostMapping("/autonumber/auto/{number}")
+    @ApiOperation("自动单号识别接口")
+    @ApiImplicitParams(
+            @ApiImplicitParam(name = "number", value = "快递单号", required = true, dataType = "String", paramType = "path")
+    )
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = DeliveryCompany.class)
+    )
+    public AjaxResult autonumber(@PathVariable("number") String number) {
+        if (StringUtils.isBlank(number)) {
+            return error("快递单号不能为空");
+        }
+        AutoNumReq autoNumReq = new AutoNumReq();
+        autoNumReq.setKey(key);
+        autoNumReq.setNum(number);
+        IBaseClient baseClient = new AutoNum();
+        try {
+            HttpResult execute = baseClient.execute(autoNumReq);
+            if (Objects.isNull(execute)) {
+                return error("自动单号识别失败");
+            }
+            String body = execute.getBody();
+            if (StringUtils.isBlank(body)) {
+                return error("自动单号识别失败");
+            }
+
+            JSONArray jsonArray = JSONUtil.parseArray(body);
+            if (jsonArray.size() != 1) {
+                return AjaxResult.success();
+            }
+            String name = jsonArray.getJSONObject(0).getStr("name");
+
+            DeliveryCompany deliveryCompany = deliveryCompanyService.getOne(new LambdaQueryWrapper<DeliveryCompany>().eq(DeliveryCompany::getCompanyName, name));
+            return AjaxResult.success(deliveryCompany);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        try {
+            return AjaxResult.success();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error(e.getMessage());
+        }
+    }
+
+
+
+
+}

+ 12 - 0
mp-admin/src/main/java/com/qs/mp/web/core/config/SwaggerConfig.java

@@ -85,6 +85,18 @@ public class SwaggerConfig
 
     }
 
+    @Bean
+    public Docket defaultApi4() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .enable(enabled)
+                .apiInfo(apiInfo())
+                .groupName("通用开放接口")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.qs.mp.web.controller.common"))
+                .paths(PathSelectors.any())
+                .build();
+
+    }
 
 
     /**

+ 6 - 0
mp-admin/src/main/resources/application.yml

@@ -154,3 +154,9 @@ rsa:
   public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbHZ2LjUBsM7rXAT81V1z/aIs4uZ1TJSOCKIXKCx+YldnWd/V5HFjG44rYZ+BQXtmOze5aLoFQkbUsjgi3Ot7yfVdsOza6h50FSDpLHvV4YgTRKUMvTyhJtZTPZWWS+n8muFA2mMxmVA/aquxczQQb18IZVz9wY+LkqHX9TOB5gQIDAQAB
 
 
+#快递100的基础账号信息
+kuaidi100:
+  key: vjxrpSAd2653
+  customer: 3964DA3B34FC656A7ED1DA610CC92193
+  secret: 437495658dc649bba7b31fbf0b545e95
+  userid: 2e5b03120bac44dfbc62fc42d988b5f6

+ 5 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelOrderInfoVO.java

@@ -3,6 +3,8 @@ package com.qs.mp.channel.domain.vo;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.common.domain.DeliveryCompany;
 import java.util.List;
+
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -19,4 +21,7 @@ public class ChannelOrderInfoVO extends ChannelOrder {
   private DeliveryCompany deliveryCompany;
 	
   private List<ChannelOrderItemVO> items;
+
+  @ApiModelProperty("自动确认收货时间")
+  private String autoConfirmTime;
 }

+ 12 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/DeliverOrderVO.java

@@ -2,7 +2,12 @@ package com.qs.mp.user.domain.vo;
 
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
+
+import java.time.LocalDateTime;
 import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -10,8 +15,15 @@ import lombok.Data;
  * @Date 2022/3/17
  */
 @Data
+@ApiModel(value = "提货订单展示VO")
 public class DeliverOrderVO extends UserDeliverOrder {
+
+  @ApiModelProperty("提货订单VO")
   List<UserDeliverOrderItemVO> items;
   // 物流信息
+  @ApiModelProperty("物流信息")
   List<OrderDeliverItemVO> deliverList;
+
+  @ApiModelProperty("自动确认收货时间")
+  private String autoConfirmTime;
 }