Selaa lähdekoodia

feat:“增加千玺查询订单接口“

soobin 11 kuukautta sitten
vanhempi
commit
ab6fab396e

+ 2 - 1
src/main/java/com/szwl/aspect/MyWebMvcConfigurer.java

@@ -24,7 +24,8 @@ public class MyWebMvcConfigurer extends WebMvcConfigurationSupport {
                 "/EsApi/**",
                 "/tOrder/**",
                 "/tCoinOrder/**",
-                "/tNameDictionary/**"
+                "/tNameDictionary/**",
+                "/orderApi/**"
         };
         registry.addInterceptor(headTokenInterceptor)
                 .addPathPatterns("/**")

+ 163 - 0
src/main/java/com/szwl/controller/ApiInterContriller.java

@@ -0,0 +1,163 @@
+package com.szwl.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.constant.ResponseCodesEnum;
+import com.szwl.feign.SzwlFeign;
+import com.szwl.model.bean.EsOrder;
+import com.szwl.model.bean.EsOrderList;
+import com.szwl.model.bean.good;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TAdmin;
+import com.szwl.model.entity.TOrder;
+import com.szwl.model.query.TOrderParam;
+import com.szwl.service.TOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Api(value = "/api", tags = {"第三方接口"})
+@RestController("ApiInterfaceController")
+@RequestMapping("/orderApi")
+public class ApiInterContriller {
+
+    @Autowired
+    private SzwlFeign szwlFeign;
+
+    @Autowired
+    private TOrderService orderService;
+
+    @ApiOperation("获取订单数据")
+    @PostMapping("/getOrder")
+    public ResponseModel<?> remoteProduction(@RequestHeader("x-api-key") String apiKey, @RequestBody TOrderParam orderParam) throws ParseException {
+        // 校验apiKey是否为空
+        if (StringUtils.isEmpty(apiKey)) {
+            return R.fail(ResponseCodesEnum.A0001, "apiKey is null");
+        }
+        // 校验参数是否为空
+        Long adminId = orderParam.getAdminId();
+        Integer current = orderParam.getCurrent();
+        Integer size = orderParam.getSize();
+        Integer status = orderParam.getStatus();
+        String startTime = orderParam.getStartTime();
+        String endTime = orderParam.getEndTime();
+        String clientId = orderParam.getClientId();
+        if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) {
+            return R.fail(ResponseCodesEnum.A0001, "startTime or endTime is null");
+        }
+        if (status == null) {
+            return R.fail(ResponseCodesEnum.A0001, "status is null");
+        }
+        if (current == null || size == null) {
+            return R.fail(ResponseCodesEnum.A0001, "current or size is null");
+        }
+        if (adminId == null) {
+            return R.fail(ResponseCodesEnum.A0001, "adminId is null");
+        }
+        TAdmin admin = R.getDataIfSuccess(szwlFeign.validateApiKey(apiKey, adminId));
+        if (admin == null) {
+            return R.fail(ResponseCodesEnum.A0001, "Invalid apiKey or adminId is not exist");
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date startDate = simpleDateFormat.parse(startTime);
+        Date endDate = simpleDateFormat.parse(endTime);
+        // 检验时间是否超过一个月
+        if (dayTime(startDate, endDate)) {
+            return R.fail(ResponseCodesEnum.A0001, "时间跨度超过一个月");
+        }
+        // 单页大小不能超过2000
+        if (size > 1000) {
+            return R.fail(ResponseCodesEnum.A0001, "size大小不能超过1000");
+        }
+        // 查询
+        LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
+        query.eq(TOrder::getAdminId, adminId);
+        query.eq(TOrder::getStatus, status);
+        if (StringUtils.isNotEmpty(clientId)) {
+            query.eq(TOrder::getClientId, clientId);
+        }
+        query.between(TOrder::getCreateDate, startDate, endDate);
+        query.orderByDesc(TOrder::getCreateDate);
+        Page<TOrder> page = new Page<>(current, size, true);
+        IPage<TOrder> iPage = orderService.page(page, query);
+        List<TOrder> orderList = iPage.getRecords();
+        // 封装数据
+        EsOrderList esOrderList = new EsOrderList();
+        long total = 0;
+        List<EsOrder> orders = new ArrayList<>();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (!orderList.isEmpty()) {
+            total = iPage.getTotal();
+            for (TOrder order : orderList) {
+                EsOrder esOrder = new EsOrder();
+                esOrder.setChannel(order.getFrpCode());
+                esOrder.setClientId(order.getClientId());
+                esOrder.setPrice(order.getPrice());
+                esOrder.setRefundAmount(order.getRefundAmount());
+                esOrder.setSn(order.getSn());
+                if(status == 3){
+                    esOrder.setTime(formatter.format(order.getRefundDate()));
+                    esOrder.setTime(formatter.format(order.getRefundDate()));
+                }else {
+                    //时间要转变
+                    esOrder.setTime(formatter.format(order.getCreateDate()));
+                    esOrder.setTime(formatter.format(order.getCreateDate()));
+                }
+                esOrder.setStatus(String.valueOf(order.getStatus()));
+                esOrder.setTrxNo(order.getTrxNo());
+                List<good> goods = new ArrayList<>();
+                good goo = new good();
+                goo.setGoodsName(order.getProductName());
+                goo.setPrice(order.getPrice());
+                goo.setSuccess(true);
+                goods.add(goo);
+                esOrder.setGoods(goods);
+                orders.add(esOrder);
+            }
+        }
+        esOrderList.setTotal(total);
+        esOrderList.setOrders(orders);
+        return R.ok(esOrderList);
+    }
+
+    /**
+     * 判断时间是否超过一个月
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    private boolean dayTime(Date startDate, Date endDate) {
+        // 将 Date 转换为 LocalDate
+        LocalDate startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+        // 使用 Period 类来计算日期差异
+        Period period = Period.between(startLocalDate, endLocalDate);
+
+        // 如果年差异大于 0 或月差异大于 1,则认为超过一个月
+        if (period.getYears() > 0 || period.getMonths() > 1) {
+            return true;
+        }
+
+        // 如果月差异是 1,检查天数是否足够达到一个月
+        if (period.getMonths() == 1 && period.getDays() >= 0) {
+            return true;
+        }
+
+        return false;
+    }
+}

+ 0 - 5
src/main/java/com/szwl/controller/TOrderController.java

@@ -1319,11 +1319,6 @@ public class TOrderController {
                     if (area != null) {
                         orderDaoChuDTO.setAddress(area.getFullName());
                     }
-//                    ResponseModel<List<String>> clientIds = szwlFeign.getClientIds(String.valueOf(admin.getId()));
-//                    List<String> stringList = clientIds.getData();
-//                    if (stringList != null && stringList.size() > 0) {
-//                        orderDaoChuDTO.setEquipmentTotal(String.valueOf(stringList.size()));
-//                    }
                     List<TEquipment> equipmentList = R.getDataIfSuccess(szwlFeign.listEquipment(adminId1));
                     if (equipmentList != null && !equipmentList.isEmpty()) {
                         orderDaoChuDTO.setEquipmentTotal(String.valueOf(equipmentList.size()));

+ 13 - 2
src/main/java/com/szwl/feign/SzwlFeign.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.szwl.feign.bean.TAdminParam;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.entity.*;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -77,4 +79,13 @@ public interface SzwlFeign {
      */
     @GetMapping("/tWechat/getOpenId")
     ResponseModel<String> getOpenId(@RequestParam Long adminId);
+
+    /**
+     * 校验apiKey
+     * @param apiKey
+     * @param adminId
+     * @return
+     */
+    @GetMapping("/tAdmin/validateApiKey")
+    ResponseModel<TAdmin> validateApiKey(@RequestParam String apiKey, @RequestParam Long adminId);
 }

+ 44 - 0
src/main/java/com/szwl/model/bean/EsOrder.java

@@ -0,0 +1,44 @@
+package com.szwl.model.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class EsOrder {
+
+    @ApiModelProperty(value="发生时间")
+    private String time;
+
+    @ApiModelProperty(value="订单号")
+    private String sn;
+
+    @ApiModelProperty(value="设备编号")
+    private String clientId;
+
+    @ApiModelProperty(value="支付渠道")
+    private String channel;
+
+    @ApiModelProperty(value="价格,单位分")
+    private BigDecimal price;
+
+    @ApiModelProperty(value="退款金额,单位分")
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty(value="订单状态")
+    private String status;
+
+    @ApiModelProperty(value="支付流水号")
+    private String trxNo;
+
+    @ApiModelProperty(value="商品数据")
+    private List<good> goods;
+}

+ 22 - 0
src/main/java/com/szwl/model/bean/EsOrderList.java

@@ -0,0 +1,22 @@
+package com.szwl.model.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class EsOrderList {
+
+    @ApiModelProperty(value="")
+    private Long total;
+
+    @ApiModelProperty(value="")
+    private List<EsOrder> orders;
+}

+ 24 - 0
src/main/java/com/szwl/model/bean/good.java

@@ -0,0 +1,24 @@
+package com.szwl.model.bean;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import java.math.BigDecimal;
+
+@NoArgsConstructor
+@Getter
+@Setter
+@ToString
+public class good {
+
+    @ApiModelProperty(value="价格,单位分")
+    private BigDecimal price;
+
+    @ApiModelProperty(value="商品名称")
+    private String goodsName;
+
+    @ApiModelProperty(value="价格,单位分")
+    private Boolean success;
+}

+ 3 - 0
src/main/java/com/szwl/model/query/TOrderParam.java

@@ -67,4 +67,7 @@ public class TOrderParam extends TOrder {
     private List adminId_inList;
     /*==================================以上是自动生成部分字段======================================*/
 
+    private String startTime;
+    private String endTime;
+
 }