gongfuzhu 1 年之前
父節點
當前提交
6fa62199fb

+ 27 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/request/XiaoJuQueryNewOrderModel.java

@@ -0,0 +1,27 @@
+package com.zswl.cloud.springBatch.client.model.request;
+
+import com.xiaoju.open.oil.interfaces.domain.AllowanceInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class XiaoJuQueryNewOrderModel {
+
+    private String storeId;
+    private long itemId;
+    private String gunNo;
+    private Integer originalAmount;
+    private Integer paymentAmount;
+    private Integer serviceFee;
+    private Integer litre;
+    private Integer vipPrice;
+    private Integer storePrice;
+    private String openExtra;
+    private String outNewUserFlag;
+    private List<AllowanceInfo> promotionInfo;
+}

+ 17 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/request/XiaoJuQueryUserPromotionListModel.java

@@ -0,0 +1,17 @@
+package com.zswl.cloud.springBatch.client.model.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class XiaoJuQueryUserPromotionListModel {
+
+    @ApiModelProperty("3.已使用、4.已过期、5.未使用")
+    private Integer status;
+    private Integer pageIndex;
+    private Integer pageSize;
+}

+ 31 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/config/SnowFlakeConfig.java

@@ -0,0 +1,31 @@
+package com.zswl.cloud.springBtach.server.core.config;
+
+import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class SnowFlakeConfig {
+    @Autowired
+    DiscoveryClient discoveryClient;
+
+    @Value("${spring.application.name}")
+    private String applicationName;
+
+
+    @Bean
+    public Snowflake snowflake(){
+
+        List<ServiceInstance> instances = discoveryClient.getInstances(applicationName);
+
+        return IdUtil.getSnowflake(instances.size());
+    }
+
+}

+ 69 - 10
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/controller/XiaoJuController.java

@@ -1,18 +1,16 @@
 package com.zswl.cloud.springBtach.server.core.controller;
 
 import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.client.content.ResultState;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.xiaoju.open.oil.commons.OilRequest;
 import com.xiaoju.open.oil.core.executor.ResponseDTO;
-import com.xiaoju.open.oil.interfaces.response.QueryApiStorePriceResponse;
-import com.xiaoju.open.oil.interfaces.response.QueryCalBatchPriceResponse;
-import com.xiaoju.open.oil.interfaces.response.QueryCalPriceResponse;
-import com.xiaoju.open.oil.interfaces.response.QueryStoreDetailResponse;
-import com.zswl.cloud.springBatch.client.model.request.NearbyModel;
-import com.zswl.cloud.springBatch.client.model.request.QueryCalPriceModel;
-import com.zswl.cloud.springBatch.client.model.request.QueryCalPricesModel;
-import com.zswl.cloud.springBatch.client.model.request.XiaoJuStoreModel;
+import com.xiaoju.open.oil.interfaces.domain.AllowancePromotionInfo;
+import com.xiaoju.open.oil.interfaces.domain.GenPromotionInfo;
+import com.xiaoju.open.oil.interfaces.request.QueryGetPromotionRequest;
+import com.xiaoju.open.oil.interfaces.response.*;
+import com.zswl.cloud.springBatch.client.model.request.*;
 import com.zswl.cloud.springBtach.server.core.domain.XiaoJuStore;
 import com.zswl.cloud.springBtach.server.core.service.XiaoJuService;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +35,7 @@ public class XiaoJuController {
 
         return xiaoJuService.notifyOrderInfo(oilRequest);
     }
+
     @ApiOperation("推送-同步加油站信息")
     @RequestMapping(value = "receivingGasStation", method = RequestMethod.POST)
     @ResourceAuth(value = "user", type = AuthType.User)
@@ -44,18 +43,21 @@ public class XiaoJuController {
 
         return xiaoJuService.notificationPushStoreInfoRequest(oilRequest);
     }
+
     @ApiOperation("查看附近的加油站信息")
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "nearbyStore", method = RequestMethod.POST)
     public ResultContent<List<XiaoJuStoreModel>> nearbyStore(@RequestBody NearbyModel nearbyModel) {
         return xiaoJuService.nearbyStore(nearbyModel);
     }
+
     @ApiOperation("查询门店价格")
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "queryStorePrice", method = RequestMethod.POST)
     public ResultContent<List<QueryApiStorePriceResponse>> queryStorePrice(@RequestBody List<String> storeIdList) {
         return xiaoJuService.queryStorePrice(storeIdList);
     }
+
     @ApiOperation("查看加油站详情")
     @RequestMapping(value = "queryStoreDetail/{storeId}", method = RequestMethod.GET)
     @ResourceAuth(value = "user", type = AuthType.User)
@@ -63,18 +65,75 @@ public class XiaoJuController {
 
         return xiaoJuService.queryStoreDetail(storeId);
     }
+
+    @ApiOperation("查看加油站详情2-调用小橘接口")
+    @RequestMapping(value = "queryStoreDetail2/{storeId}", method = RequestMethod.GET)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<QueryStoreDetailResponse> queryStoreDetail2(@PathVariable("storeId") String storeId) {
+
+        return xiaoJuService.queryStoreDetail2(storeId);
+    }
+
     @ApiOperation("价格计算")
     @RequestMapping(value = "queryCalPrice", method = RequestMethod.POST)
     @ResourceAuth(value = "user", type = AuthType.User)
-    public ResultContent<QueryCalPriceResponse> queryCalPrice(QueryCalPriceModel queryCalPriceModel) {
+    public ResultContent<QueryCalPriceResponse> queryCalPrice(@RequestBody QueryCalPriceModel queryCalPriceModel) {
         return xiaoJuService.queryCalPrice(queryCalPriceModel);
     }
+
     @ApiOperation("批量价格计算")
     @RequestMapping(value = "queryCalPrices", method = RequestMethod.POST)
     @ResourceAuth(value = "user", type = AuthType.User)
-    public ResultContent<QueryCalBatchPriceResponse> queryCalPrices(QueryCalPricesModel queryCalPriceModel) {
+    public ResultContent<QueryCalBatchPriceResponse> queryCalPrices(@RequestBody QueryCalPricesModel queryCalPriceModel) {
         return xiaoJuService.queryCalPrices(queryCalPriceModel);
     }
 
+    @ApiOperation("创建订单")
+    @RequestMapping(value = "queryNewOrder", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<QueryNewOrderResponse> queryNewOrder(@RequestBody XiaoJuQueryNewOrderModel xiaoJuQueryNewOrderModel) {
+        return xiaoJuService.queryNewOrder(xiaoJuQueryNewOrderModel);
+    }
+
+    @ApiOperation("取消订单")
+    @RequestMapping(value = "cancelOrder/{orderNo}", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent cancelOrder(@PathVariable("orderNo") String orderNo) {
+        xiaoJuService.cancelOrder(orderNo);
+        return ResultContent.build(ResultState.Success);
+    }
+
+    @ApiOperation("下单前查询最优可用券")
+    @RequestMapping(value = "queryOrderPromotionList", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<List<AllowancePromotionInfo>> queryOrderPromotionList(@RequestBody QueryCalPriceModel queryCalPriceModel) {
+        ResultContent<List<AllowancePromotionInfo>> listResultContent = xiaoJuService.queryOrderPromotionList(queryCalPriceModel);
+        return ResultContent.buildContent(listResultContent);
+    }
+
+    @ApiOperation("查询多个门店可用券")
+    @RequestMapping(value = "queryStorePromotionList", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<List<AllowancePromotionInfo>> queryStorePromotionList(@RequestBody List<String> storeIdList) {
+        ResultContent<List<AllowancePromotionInfo>> listResultContent = xiaoJuService.queryStorePromotionList(storeIdList);
+        return ResultContent.buildContent(listResultContent);
+    }
+
+    @ApiOperation("查询用户所有券列表")
+    @RequestMapping(value = "queryUserPromotionList", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<QueryUserPromotionListResponse> queryUserPromotionList(@RequestBody XiaoJuQueryUserPromotionListModel xiaoJuQueryUserPromotionListModel) {
+        ResultContent<QueryUserPromotionListResponse> listResultContent = xiaoJuService.queryUserPromotionList(xiaoJuQueryUserPromotionListModel);
+        return ResultContent.buildContent(listResultContent);
+    }
+
+    @ApiOperation("券发放")
+    @RequestMapping(value = "getPromotion", method = RequestMethod.POST)
+    @ResourceAuth(value = "user", type = AuthType.User)
+    public ResultContent<List<GenPromotionInfo>> getPromotion(@RequestBody QueryGetPromotionRequest queryGetPromotionRequest) {
+        ResultContent<List<GenPromotionInfo>> listResultContent = xiaoJuService.getPromotion(queryGetPromotionRequest);
+        return ResultContent.buildContent(listResultContent);
+    }
+
 
 }

+ 0 - 14
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/dao/Impl/XiaoJuStoreDaoImpl.java

@@ -35,18 +35,4 @@ public class XiaoJuStoreDaoImpl implements XiaoJuStoreDaoExtend {
     }
 
 
-//    public List<XiaoJuStore> findNearbyTargets1(NearbyModel nearbyModel) {
-//        Point point = new Point(nearbyModel.getLongitude(), nearbyModel.getLatitude());
-//        NearQuery query = NearQuery.near(point);
-//        GeoResults<XiaoJuStore> results = mongoTemplate.geoNear(query, XiaoJuStore.class);
-//
-//        List<XiaoJuStore> nearbyTargets = new ArrayList<>();
-//        for (GeoResult<XiaoJuStore> result : results) {
-//
-//            nearbyTargets.add(result.getContent());
-//        }
-//        return nearbyTargets;
-//    }
-
-
 }

+ 7 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/dao/XiaoJuOrderDao.java

@@ -0,0 +1,7 @@
+package com.zswl.cloud.springBtach.server.core.dao;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zswl.cloud.springBtach.server.core.domain.XiaoJuOrder;
+
+public interface XiaoJuOrderDao extends MongoDao<XiaoJuOrder> {
+}

+ 61 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/domain/XiaoJuOrder.java

@@ -0,0 +1,61 @@
+package com.zswl.cloud.springBtach.server.core.domain;
+
+import com.github.microservice.components.data.mongo.mongo.domain.SuperEntity;
+import com.xiaoju.open.oil.interfaces.domain.AllowanceInfo;
+import com.xiaoju.open.oil.interfaces.response.QueryNewOrderResponse;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.List;
+
+
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class XiaoJuOrder extends SuperEntity {
+
+
+    // 支付参数
+    private String outUserId;
+    private String mobile;
+    private String vagueMobile;
+    private String outOrderId;
+    private Float lat;
+    private Float lon;
+    private String storeId;
+    private long itemId;
+    private String gunNo;
+    private Integer originalAmount;
+    private Integer paymentAmount;
+    private Integer serviceFee;
+    private Integer litre;
+    private Integer vipPrice;
+    private Integer storePrice;
+    private Integer openChannel = 1;
+    private String openExtra;
+    private String outNewUserFlag;
+    private List<AllowanceInfo> promotionInfo;
+
+    // 响应结果
+    private String xjOrderId;
+    private String tradeId;
+
+
+    // 支付回调
+    private String orderId;
+    private String storeName;
+    private String cityName;
+    private String itemName;
+    private String quantity;
+    private String totalMoney;
+    private String realMoney;
+    private String orderStatus;
+    private String payTime;
+    private String refundTime;
+
+}

+ 294 - 55
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/XiaoJuService.java

@@ -1,23 +1,30 @@
 package com.zswl.cloud.springBtach.server.core.service;
 
 
+import cn.hutool.core.lang.Snowflake;
 import cn.hutool.json.JSONUtil;
 import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.client.content.ResultState;
 import com.github.microservice.auth.security.helper.AuthHelper;
+import com.github.microservice.auth.security.model.AuthDetails;
 import com.xiaoju.open.oil.commons.OilRequest;
 import com.xiaoju.open.oil.commons.config.OilConfig;
 import com.xiaoju.open.oil.core.QueryClient;
 import com.xiaoju.open.oil.core.QueryClientFactory;
 import com.xiaoju.open.oil.core.executor.ResponseDTO;
 import com.xiaoju.open.oil.interfaces.domain.AllowanceInfo;
+import com.xiaoju.open.oil.interfaces.domain.AllowancePromotionInfo;
+import com.xiaoju.open.oil.interfaces.domain.GenPromotionInfo;
 import com.xiaoju.open.oil.interfaces.request.*;
+import com.xiaoju.open.oil.interfaces.request.miniprogram.MiniCancelOrderStatusRequest;
 import com.xiaoju.open.oil.interfaces.response.*;
 import com.xiaoju.open.oil.security.secret.SecurityService;
-import com.zswl.cloud.springBatch.client.model.request.NearbyModel;
-import com.zswl.cloud.springBatch.client.model.request.QueryCalPriceModel;
-import com.zswl.cloud.springBatch.client.model.request.QueryCalPricesModel;
-import com.zswl.cloud.springBatch.client.model.request.XiaoJuStoreModel;
+import com.zswl.cloud.springBatch.client.model.request.*;
+import com.zswl.cloud.springBtach.server.core.dao.ApiLogDao;
+import com.zswl.cloud.springBtach.server.core.dao.XiaoJuOrderDao;
 import com.zswl.cloud.springBtach.server.core.dao.XiaoJuStoreDao;
+import com.zswl.cloud.springBtach.server.core.domain.ApiLog;
+import com.zswl.cloud.springBtach.server.core.domain.XiaoJuOrder;
 import com.zswl.cloud.springBtach.server.core.domain.XiaoJuStore;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.BeanUtils;
@@ -41,14 +48,28 @@ public class XiaoJuService {
     @Autowired
     OilConfig oilConfig;
 
+    @Autowired
+    XiaoJuOrderDao xiaoJuOrderDao;
+
+    @Autowired
+    Snowflake snowflake;
+
+    @Autowired
+    ApiLogDao apiLogDao;
+
     // 查询加油站详情
     public ResponseDTO notificationPushStoreInfoRequest(OilRequest oilRequest) {
 
-        log.info("加油站通知原始数据:{}", oilRequest);
 
         String s = SecurityService.genDecodeData(oilRequest.getData(), oilConfig.getDataSecret(), oilConfig.getDataSecretIV());
 
-        log.info("通知 加油站详情:{}", s);
+
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("notificationPushStoreInfoRequest");
+        apiLog.setRequest(s);
+        apiLog.setSystem("xiaoju");
+
+
         XiaoJuStore xiaoJuStore = JSONUtil.toBean(s, XiaoJuStore.class);
 
         XiaoJuStore byStoreId = xiaoJuStoreDao.findByStoreId(xiaoJuStore.getStoreId());
@@ -70,6 +91,8 @@ public class XiaoJuService {
         responseDTO.setMsg("请求成功");
         responseDTO.setData(data);
         responseDTO.setSig(sig);
+        apiLog.setResponse(JSONUtil.toJsonStr(responseDTO));
+        apiLogDao.save(apiLog);
         return responseDTO;
 
     }
@@ -79,6 +102,11 @@ public class XiaoJuService {
 
         String s = SecurityService.genDecodeData(oilRequest.getData(), oilConfig.getDataSecret(), oilConfig.getDataSecretIV());
 
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("notifyOrderInfo");
+        apiLog.setRequest(s);
+        apiLog.setSystem("xiaoju");
+
         log.info("通知 加油站详情:{}", s);
         NotificationReceiveRefundRequest xiaoJuStore = JSONUtil.toBean(s, NotificationReceiveRefundRequest.class);
 
@@ -91,25 +119,51 @@ public class XiaoJuService {
         responseDTO.setMsg("请求成功");
         responseDTO.setData(data);
         responseDTO.setSig(sig);
+        apiLog.setResponse(JSONUtil.toJsonStr(responseDTO));
+        apiLogDao.save(apiLog);
         return responseDTO;
 
     }
 
     public ResultContent<XiaoJuStore> queryStoreDetail(String storeId) {
         XiaoJuStore byStoreId = xiaoJuStoreDao.findByStoreId(storeId);
-//        QueryStoreDetailRequest queryStoreDetailRequest = new QueryStoreDetailRequest();
-//
-//        queryStoreDetailRequest.setOutUserId(authHelper.getCurrentUser().getUserId());
-//        queryStoreDetailRequest.setStoreId(storeId);
-//        queryStoreDetailRequest.setLat(byStoreId.getLat());
-//        queryStoreDetailRequest.setLon(byStoreId.getLon());
-//        queryStoreDetailRequest.setOpenChannel(1);
-//
-//        QueryClient queryClient = QueryClientFactory.create(oilConfig);
-//
-//        QueryStoreDetailResponse queryStoreDetailResponse = queryClient.api().queryStoreDetail(queryStoreDetailRequest);
-
-        return ResultContent.buildContent(byStoreId);
+        return ResultContent.build(ResultState.Success, byStoreId);
+    }
+
+    public ResultContent<QueryStoreDetailResponse> queryStoreDetail2(String storeId) {
+        AuthDetails currentUser = authHelper.getCurrentUser();
+        XiaoJuStore byStoreId = xiaoJuStoreDao.findByStoreId(storeId);
+        QueryStoreDetailRequest queryStoreDetailRequest = new QueryStoreDetailRequest();
+
+        queryStoreDetailRequest.setOutUserId(currentUser.getUserId());
+        queryStoreDetailRequest.setMobile(currentUser.getPhone());
+        queryStoreDetailRequest.setStoreId(storeId);
+        queryStoreDetailRequest.setLat(byStoreId.getLat());
+        queryStoreDetailRequest.setLon(byStoreId.getLon());
+        queryStoreDetailRequest.setOpenChannel(1);
+
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryStoreDetail");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryStoreDetailRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            QueryStoreDetailResponse queryStoreDetailResponse = queryClient.api().queryStoreDetail(queryStoreDetailRequest);
+
+
+            apiLog.setResponse(JSONUtil.toJsonStr(queryStoreDetailResponse));
+            apiLogDao.save(apiLog);
+
+
+            return ResultContent.buildContent(queryStoreDetailResponse);
+        } catch (Exception e) {
+
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
+
     }
 
     public ResultContent<List<QueryApiStorePriceResponse>> queryStorePrice(List<String> storeIdList) {
@@ -121,9 +175,21 @@ public class XiaoJuService {
 
 
         QueryClient queryClient = QueryClientFactory.create(oilConfig);
-
-        List<QueryApiStorePriceResponse> list1 = queryClient.api().queryStorePrice(queryApiStorePriceRequest);
-        return ResultContent.buildContent(list1);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryStorePrice");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryApiStorePriceRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            List<QueryApiStorePriceResponse> list1 = queryClient.api().queryStorePrice(queryApiStorePriceRequest);
+            apiLog.setResponse(JSONUtil.toJsonStr(list1));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(list1);
+        } catch (Exception e) {
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
     }
 
 
@@ -148,11 +214,22 @@ public class XiaoJuService {
         queryCalPriceRequest.setPromotionInfo(queryCalPriceModel.getAllowanceinfo());
 
         QueryClient queryClient = QueryClientFactory.create(oilConfig);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryCalPrice");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryCalPriceRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            QueryCalPriceResponse queryCalPriceResponse = queryClient.api().queryCalPrice(queryCalPriceRequest);
+            apiLog.setResponse(JSONUtil.toJsonStr(queryCalPriceResponse));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(queryCalPriceResponse);
+        } catch (Exception e) {
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
 
-        QueryCalPriceResponse queryCalPriceResponse = queryClient.api().queryCalPrice(queryCalPriceRequest);
-
-
-        return ResultContent.buildContent(queryCalPriceResponse);
     }
 
 
@@ -168,46 +245,208 @@ public class XiaoJuService {
         queryCalPriceRequest.setItemList(queryCalPricesModel.getItemList());
 
         QueryClient queryClient = QueryClientFactory.create(oilConfig);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryCalPrices");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryCalPriceRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            QueryCalBatchPriceResponse queryCalBatchPriceResponse = queryClient.api().queryCalPrices(queryCalPriceRequest);
+            apiLog.setResponse(JSONUtil.toJsonStr(queryCalBatchPriceResponse));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(queryCalBatchPriceResponse);
+        } catch (Exception e) {
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
+    }
+
+
+    // 创建订单
+    public ResultContent<QueryNewOrderResponse> queryNewOrder(XiaoJuQueryNewOrderModel xiaoJuQueryNewOrderModel) {
+        AuthDetails currentUser = authHelper.getCurrentUser();
+        String phone = currentUser.getPhone();
+        String userId = currentUser.getUserId();
 
-        QueryCalBatchPriceResponse queryCalBatchPriceResponse = queryClient.api().queryCalPrices(queryCalPriceRequest);
+        XiaoJuStore byStoreId = xiaoJuStoreDao.findByStoreId(xiaoJuQueryNewOrderModel.getStoreId());
+
+        String outOrderId = snowflake.nextIdStr();
+        QueryNewOrderRequest queryNewOrderRequest = new QueryNewOrderRequest();
+        queryNewOrderRequest.setOutUserId(userId);
+        queryNewOrderRequest.setMobile(phone);
+        queryNewOrderRequest.setOutOrderId(outOrderId);
+        queryNewOrderRequest.setLat(byStoreId.getLat());
+        queryNewOrderRequest.setLon(byStoreId.getLon());
+        queryNewOrderRequest.setStoreId(byStoreId.getStoreId());
+        queryNewOrderRequest.setItemId(xiaoJuQueryNewOrderModel.getItemId());
+        queryNewOrderRequest.setGunNo(xiaoJuQueryNewOrderModel.getGunNo());
+        queryNewOrderRequest.setOriginalAmount(xiaoJuQueryNewOrderModel.getOriginalAmount());
+        queryNewOrderRequest.setPaymentAmount(xiaoJuQueryNewOrderModel.getPaymentAmount());
+        queryNewOrderRequest.setServiceFee(xiaoJuQueryNewOrderModel.getServiceFee());
+        queryNewOrderRequest.setLitre(xiaoJuQueryNewOrderModel.getLitre());
+        queryNewOrderRequest.setVipPrice(xiaoJuQueryNewOrderModel.getVipPrice());
+        queryNewOrderRequest.setStorePrice(xiaoJuQueryNewOrderModel.getStorePrice());
+        queryNewOrderRequest.setPromotionInfo(xiaoJuQueryNewOrderModel.getPromotionInfo());
+
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryNewOrder");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryNewOrderRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            QueryNewOrderResponse queryNewOrderResponse = queryClient.api().queryNewOrder(queryNewOrderRequest);
+
+
+            XiaoJuOrder xiaoJuOrder = new XiaoJuOrder();
+            BeanUtils.copyProperties(queryNewOrderResponse, xiaoJuOrder);
+            BeanUtils.copyProperties(queryNewOrderRequest, xiaoJuOrder);
+
+            xiaoJuOrderDao.save(xiaoJuOrder);
+
+
+            apiLog.setResponse(JSONUtil.toJsonStr(queryNewOrderResponse));
+            apiLogDao.save(apiLog);
+
+            return ResultContent.buildContent(queryNewOrderResponse);
+        } catch (Exception e) {
+
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+
+        }
 
-        return ResultContent.buildContent(queryCalBatchPriceResponse);
 
     }
 
 
-    // 创建订单
-    public void queryNewOrder() {
-        QueryNewOrderRequest queryNewOrderRequest = new QueryNewOrderRequest();
-        queryNewOrderRequest.setOutUserId("a09kWkRLM2ZWcWs9");
-        queryNewOrderRequest.setMobile("13111222233");
-        queryNewOrderRequest.setOutOrderId("123456789");
-        queryNewOrderRequest.setLat(114.30F);
-        queryNewOrderRequest.setLon(14.23F);
-        queryNewOrderRequest.setStoreId("5211967762877389105");
-        queryNewOrderRequest.setItemId(4879454965524071453L);
-        queryNewOrderRequest.setGunNo("10");
-        queryNewOrderRequest.setOriginalAmount(20000);
-        queryNewOrderRequest.setPaymentAmount(18000);
-        queryNewOrderRequest.setServiceFee(20);
-        queryNewOrderRequest.setLitre(382);
-        queryNewOrderRequest.setVipPrice(460);
-        queryNewOrderRequest.setStorePrice(523);
-
-        // 优惠券
-        List<AllowanceInfo> allowanceInfos = new ArrayList<>();
-        AllowanceInfo allowanceInfo = new AllowanceInfo();
-        allowanceInfo.setAllowanceId("E1-4ji-1kiJSL");
-        allowanceInfo.setAllowanceType(2);
-        allowanceInfos.add(allowanceInfo);
-
-        queryNewOrderRequest.setPromotionInfo(allowanceInfos);
+    // 取消订单
+    public void cancelOrder(String orderNo) {
+        MiniCancelOrderStatusRequest cancelOrderStatusRequest = new MiniCancelOrderStatusRequest();
+        cancelOrderStatusRequest.setOutOrderId(orderNo);
+        cancelOrderStatusRequest.setXjOrderId("3476783454861722785");
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+        queryClient.apiMini().cancelOrder(cancelOrderStatusRequest);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryNewOrder");
+        apiLog.setRequest(JSONUtil.toJsonStr(cancelOrderStatusRequest));
+        apiLog.setSystem("xiaoju");
+        apiLog.setResponse(null);
+        apiLogDao.save(apiLog);
+
+    }
+
+
+    // 下单前查询最优可用券
+    public ResultContent<List<AllowancePromotionInfo>> queryOrderPromotionList(QueryCalPriceModel queryCalPriceModel) {
+        String userId = authHelper.getCurrentUser().getUserId();
+        QueryOrderPromotionListRequest request = new QueryOrderPromotionListRequest();
+        request.setOutUserId(userId);
+        request.setStoreId(queryCalPriceModel.getStoreId());
+        request.setAllowanceType(2);
+        request.setOrderAmount(queryCalPriceModel.getAmount());
 
         QueryClient queryClient = QueryClientFactory.create(oilConfig);
 
-        QueryNewOrderResponse queryNewOrderResponse = queryClient.api().queryNewOrder(queryNewOrderRequest);
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryOrderPromotionList");
+        apiLog.setRequest(JSONUtil.toJsonStr(request));
+        apiLog.setSystem("xiaoju");
+        try {
+            List<AllowancePromotionInfo> response = queryClient.promotion().queryOrderPromotionList(request);
+            apiLog.setResponse(JSONUtil.toJsonStr(response));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
 
+    }
+
+
+    // 查询多个门店可用券
+    public ResultContent<List<AllowancePromotionInfo>> queryStorePromotionList(List<String> storeIdList) {
+        AuthDetails currentUser = authHelper.getCurrentUser();
+        QueryStorePromotionListRequest request = new QueryStorePromotionListRequest();
+        request.setMobile(currentUser.getPhone());
+        request.setAllowanceType(2);
+        request.setOutUserId(currentUser.getUserId());
+        request.setStoreIdList(storeIdList);
+
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryStorePromotionList");
+        apiLog.setRequest(JSONUtil.toJsonStr(request));
+        apiLog.setSystem("xiaoju");
+        try {
+            List<AllowancePromotionInfo> response = queryClient.promotion().queryStorePromotionList(request);
+            apiLog.setResponse(JSONUtil.toJsonStr(response));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(response);
+        } catch (Exception e) {
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
+
+    }
 
+    // 查询用户所有券列表
+    public ResultContent<QueryUserPromotionListResponse> queryUserPromotionList(XiaoJuQueryUserPromotionListModel xiaoJuQueryUserPromotionListModel) {
+        AuthDetails currentUser = authHelper.getCurrentUser();
+        QueryUserPromotionListRequest request = new QueryUserPromotionListRequest();
+        request.setMobile(currentUser.getPhone());
+        request.setAllowanceType(2);
+        request.setOutUserId(currentUser.getUserId());
+        request.setStatus(xiaoJuQueryUserPromotionListModel.getStatus());
+        request.setPageIndex(xiaoJuQueryUserPromotionListModel.getPageIndex());
+        request.setPageSize(xiaoJuQueryUserPromotionListModel.getPageSize());
+
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryUserPromotionList");
+        apiLog.setRequest(JSONUtil.toJsonStr(request));
+        apiLog.setSystem("xiaoju");
+        try {
+            QueryUserPromotionListResponse response = queryClient.promotion().queryUserPromotionList(request);
+            apiLog.setResponse(JSONUtil.toJsonStr(response));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(response);
+        } catch (Exception e) {
+
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+        }
     }
 
+    // 券发放
+    public ResultContent<List<GenPromotionInfo>> getPromotion(QueryGetPromotionRequest queryGetPromotionRequest) {
+        QueryClient queryClient = QueryClientFactory.create(oilConfig);
+
+        ApiLog apiLog = new ApiLog();
+        apiLog.setService("queryUserPromotionList");
+        apiLog.setRequest(JSONUtil.toJsonStr(queryGetPromotionRequest));
+        apiLog.setSystem("xiaoju");
+        try {
+            List<GenPromotionInfo> response = queryClient.promotion().getPromotion(queryGetPromotionRequest);
+            apiLog.setResponse(JSONUtil.toJsonStr(response));
+            apiLogDao.save(apiLog);
+            return ResultContent.buildContent(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            apiLog.setResponse(e.getCause().getMessage());
+            apiLogDao.save(apiLog);
+            return ResultContent.build(ResultState.Fail, e.getCause().getMessage());
+
+        }
+    }
 }