From 32a43e602e4a78478781532d31fbc38755188df7 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 28 二月 2025 09:32:15 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java               |    2 
 server/services/src/main/java/com/doumee/service/business/GoodsorderService.java                  |    4 
 server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java              |    2 
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java        |   60 ++++-
 server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java               |    2 
 server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java              |    2 
 server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java     |   42 ++-
 server/services/src/main/java/com/doumee/core/constants/Constants.java                            |    5 
 server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java                   |    8 
 server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java                         |   70 ++++--
 server/services/src/main/java/com/doumee/dao/business/model/Discount.java                         |   15 +
 server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java                   |    4 
 server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java          |    4 
 server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java           |   47 ++++
 server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java       |    4 
 server/web/src/main/java/com/doumee/api/web/BusinessApi.java                                      |   13 
 server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java                               |    4 
 server/platform/src/main/java/com/doumee/api/business/DiscountController.java                     |   11 +
 server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java                      |    4 
 server/services/src/main/resources/application-dev.yml                                            |   13 
 server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDetailResponse.java |    1 
 server/services/src/main/java/com/doumee/core/utils/DateUtil.java                                 |   21 +
 server/platform/src/main/java/com/doumee/task/ScheduleTool.java                                   |   12 +
 server/services/src/main/java/com/doumee/service/business/impl/DiscountLogServiceImpl.java        |   74 ++-----
 server/jtt808_parent/jtt808-protocol/src/test/java/org/yzh/protocol/TestHex.java                  |   32 +-
 server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java       |    3 
 server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java         |  103 +++++++---
 27 files changed, 370 insertions(+), 192 deletions(-)

diff --git a/server/jtt808_parent/jtt808-protocol/src/test/java/org/yzh/protocol/TestHex.java b/server/jtt808_parent/jtt808-protocol/src/test/java/org/yzh/protocol/TestHex.java
index 167a3fb..0fb87d4 100644
--- a/server/jtt808_parent/jtt808-protocol/src/test/java/org/yzh/protocol/TestHex.java
+++ b/server/jtt808_parent/jtt808-protocol/src/test/java/org/yzh/protocol/TestHex.java
@@ -18,23 +18,23 @@
  */
 public class TestHex {
 
-    @Test
-    public void testHex() throws Exception {
-        try (BufferedReader reader = reader("target/test-classes/JT808.txt")) {
-            reader.lines().filter(hex -> !hex.isEmpty()).forEach(hex -> BeanTest.selfCheck(hex));
-        }
-    }
+//    @Test
+//    public void testHex() throws Exception {
+//        try (BufferedReader reader = reader("target/test-classes/JT808.txt")) {
+//            reader.lines().filter(hex -> !hex.isEmpty()).forEach(hex -> BeanTest.selfCheck(hex));
+//        }
+//    }
 
-    @Test
-    public void testSubpackage() throws Exception {
-        try (BufferedReader reader = reader("target/test-classes/JT1078.txt")) {
-            reader.lines().filter(hex -> !hex.isEmpty()).forEach(hex -> {
-                JTMessage message = BeanTest.coder.decode(Unpooled.wrappedBuffer(ByteBufUtil.decodeHexDump(hex)));
-                if (message != null)
-                    System.out.println(BeanTest.gson.toJson(message));
-            });
-        }
-    }
+//    @Test
+//    public void testSubpackage() throws Exception {
+//        try (BufferedReader reader = reader("target/test-classes/JT1078.txt")) {
+//            reader.lines().filter(hex -> !hex.isEmpty()).forEach(hex -> {
+//                JTMessage message = BeanTest.coder.decode(Unpooled.wrappedBuffer(ByteBufUtil.decodeHexDump(hex)));
+//                if (message != null)
+//                    System.out.println(BeanTest.gson.toJson(message));
+//            });
+//        }
+//    }
 
     public static BufferedReader reader(String path) throws FileNotFoundException {
         return new BufferedReader(new InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8));
diff --git a/server/platform/src/main/java/com/doumee/api/business/DiscountController.java b/server/platform/src/main/java/com/doumee/api/business/DiscountController.java
index 5da9753..613739f 100644
--- a/server/platform/src/main/java/com/doumee/api/business/DiscountController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/DiscountController.java
@@ -67,6 +67,17 @@
         return ApiResponse.success(null);
     }
 
+    @ApiOperation("淇敼鐘舵��")
+    @PostMapping("/updStatus")
+    @RequiresPermissions("business:discount:update")
+    public ApiResponse updStatus(@RequestBody Discount discount) {
+        discountService.updStatus(discount);
+        return ApiResponse.success(null);
+    }
+
+
+
+
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @RequiresPermissions("business:discount:query")
diff --git a/server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java b/server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java
index 26f53d2..581578e 100644
--- a/server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/DiscountMemberController.java
@@ -85,7 +85,7 @@
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
     @RequiresPermissions("business:discountmember:query")
-    public ApiResponse findById(@PathVariable String id) {
+    public ApiResponse<DiscountMember> findById(@PathVariable String id) {
         return ApiResponse.success(discountMemberService.getDetail(id));
     }
 
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
index 7f564cc..f27e18d 100644
--- a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -32,6 +32,7 @@
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author 姹熻箘韫�
@@ -92,6 +93,7 @@
     public ApiResponse<PageData<Goodsorder>> findPage (@RequestBody PageWrap<Goodsorder> pageWrap) {
         return ApiResponse.success(goodsorderService.findPage(pageWrap));
     }
+
     @ApiOperation("绾夸笂浜ゆ槗姹囨�绘暟鎹帴鍙�")
     @PostMapping("/getTotalData")
     @RequiresPermissions("business:goodsorder:query")
@@ -118,7 +120,8 @@
         for (Goodsorder goodsorder:goodsorders) {
             DiscountGoodsorderExportVO discountGoodsorderExportVO = new DiscountGoodsorderExportVO();
             BeanUtils.copyProperties(goodsorder,discountGoodsorderExportVO);
-            discountGoodsorderExportVO.setPayMoney(discountGoodsorderExportVO.getPayMoney());
+            discountGoodsorderExportVO.setPayMoney(discountGoodsorderExportVO.getMoney());
+            discountGoodsorderExportVO.setOrigin(Constants.ZERO);
             discountGoodsorderExportVOList.add(discountGoodsorderExportVO);
         }
         ExcelExporter.build(DiscountGoodsorderExportVO.class).exportWithFirstAndEnd(discountGoodsorderExportVOList, "璁㈠崟鍒楄〃_"+System.currentTimeMillis(),"璁㈠崟鍒楄〃_"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
@@ -170,6 +173,9 @@
     @PostMapping("/backGoodsorder")
     @RequiresPermissions("business:goodsorder:query")
     public ApiResponse backGoodsorder(@RequestBody GoodsorderBackDTO goodsorderBackDTO){
+        if(Objects.nonNull(goodsorderBackDTO) && Objects.isNull(goodsorderBackDTO.getBackType())){
+            goodsorderBackDTO.setBackType(Constants.ONE);
+        }
         goodsorderService.backGoodsorder(goodsorderBackDTO);
         return ApiResponse.success(null);
     }
diff --git a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
index 4682063..e755ee9 100644
--- a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -98,6 +98,18 @@
 
 
     /**
+     * 瀹氭椂鍏抽棴 瓒呮椂鏈敮浠樼殑璁㈠崟
+     * 30 绉掑埛鏂颁竴娆�
+     * @throws Exception
+     */
+    @Scheduled(cron = "0/15 * * * * ? ")
+    public void autCancel() throws Exception {
+        log.info("=====================寮�濮嬪畾鏃跺埛鏂板叧闂秴鏃舵湭鏀粯鐨勮鍗�=======================");
+        goodsorderService.autCancel();
+        log.info("=====================缁撴潫瀹氭椂鍒锋柊鍏抽棴瓒呮椂鏈敮浠樼殑璁㈠崟=======================");
+    }
+
+    /**
      * 绔欑偣杞﹁締婊℃灦鐜囬璀�
      * @throws Exception
      */
diff --git a/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java b/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
index 6d9c460..c11eb84 100644
--- a/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
+++ b/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
@@ -38,7 +38,7 @@
     public void updateById(SystemDictData systemDictData) {
         SystemDictData queryDto = new SystemDictData();
         queryDto.setDictId(systemDictData.getDictId());
-        queryDto.setCode(systemDictData.getCode());
+        queryDto.setLabel(systemDictData.getLabel());
         queryDto.setDeleted(Constants.ZERO);
         SystemDictData dictData = systemDictDataService.findOne(queryDto);
         if (dictData != null && !dictData.getId().equals(systemDictData.getId())) {
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index fdca607..be8dae9 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -126,7 +126,7 @@
 
         PLATFORM_REFUND(3,"骞冲彴閫�娆�", "骞冲彴閫�娆�"),
 
-        DISCOUNT(4,"骞冲彴濂楅", "骞冲彴濂楅")
+        DISCOUNT(4,"濂楅璐拱", "濂楅璐拱")
 
         ;
         String name;
@@ -207,6 +207,9 @@
         public static final String LEASE_NOTICE_URL = "LEASE_NOTICE_URL";
         //鎶奸噾
         public static final String RENT_DEPOSIT = "RENT_DEPOSIT";
+        //鐢佃溅涓村仠鑷姩鍏抽攣鏃堕暱锛堝垎閽燂級
+        public static final String PAUSE_AUTO_CLOSE_TIME = "PAUSE_AUTO_CLOSE_TIME";
+
         //娓╅Θ鎻愮ず
         public static final String TIPS = "TIPS";
         //娓╅Θ鎻愮ず
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index 575ab4e..ca3082d 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -68,11 +68,28 @@
         return dt1;
     }
 
+
+
+    public static Date StringToDateFormat(String DATE,String format) {
+        if(StringUtils.isBlank(DATE)){
+            return null;
+        }
+        DateFormat df = new SimpleDateFormat(format);
+        Date dt1 = null;
+        try {
+            dt1 = df.parse(DATE);
+        } catch (Exception exception) {
+            exception.printStackTrace();
+        }
+        return dt1;
+    }
+
+
     public static String getXDaysAfter(Date date, Integer days){
         Timestamp currentTimestamp = new Timestamp(date.getTime());
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(currentTimestamp);
-        calendar.add(Calendar.DAY_OF_YEAR, days-1); // 鍦ㄥ綋鍓嶆椂闂村熀纭�涓婃坊鍔犳寚瀹氱殑澶╂暟
+        calendar.add(Calendar.DAY_OF_YEAR, days); // 鍦ㄥ綋鍓嶆椂闂村熀纭�涓婃坊鍔犳寚瀹氱殑澶╂暟
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         return formatter.format(calendar.getTime());
     }
@@ -2771,7 +2788,7 @@
 
     public static void main(String[] args) {
         try {
-            System.out.println(DateUtil.getBetweenDays("2025-02-13","2025-02-15"));
+            System.out.println(DateUtil.getCurrDate());
         } catch (Exception ex) {
             ex.printStackTrace();
         }
diff --git a/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java b/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java
index fecd6b6..2a42d95 100644
--- a/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java
+++ b/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java
@@ -44,9 +44,9 @@
         Map<String, TemplateData> m = new HashMap<>(4);
         m.put("character_string1", new TemplateData(bikeCode));
         //瑙i攣鏃堕棿
-        m.put("date3", new TemplateData(DateUtil.getDate(startTime,"yyyy-MM-dd HH:mm")));
+        m.put("date3", new TemplateData(DateUtil.getFomartDate(startTime,"yyyy/MM/dd HH:mm")));
         //涓婇攣鏃堕棿
-        m.put("date4", new TemplateData(DateUtil.getDate(endTime,"yyyy-MM-dd HH:mm")));
+        m.put("date4", new TemplateData(DateUtil.getFomartDate(endTime,"yyyy/MM/dd HH:mm")));
         //娓╅Θ鎻愰啋
         m.put("thing5", new TemplateData("涓存椂閿佽溅宸茶秴杩囨渶澶ф椂闀匡紝宸茶嚜鍔ㄨ繕杞�"));
         wxMsgVo.setPage(goodsOrderUrl + goodsOrderId);
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
index 722c77f..45eb9a3 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
@@ -28,7 +28,7 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鍒涘缓浜�")
@@ -37,7 +37,7 @@
 
     @ApiModelProperty(value = "缂栬緫鏃堕棿")
     @ExcelColumn(name="缂栬緫鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date editDate;
 
     @ApiModelProperty(value = "缂栬緫浜�")
@@ -160,7 +160,18 @@
     @ApiModelProperty(value = "姣忔棩鍗曚环", example = "1")
     private BigDecimal dayPrice;
 
+    @ApiModelProperty(value = "灏忕▼搴忔煡璇娇鐢�", hidden = true)
+    @TableField(exist = false)
+    private Integer minShow;
 
+    @ApiModelProperty(value = "鍒涘缓浜哄悕绉�")
+    @TableField(exist = false)
+    private String creatorName;
+
+
+    @ApiModelProperty(value = "鏈�鍚庣紪杈戜汉")
+    @TableField(exist = false)
+    private String editorName;
 
     @TableField(exist = false)
     @ApiModelProperty(value = "鍥剧墖鍏ㄨ矾寰�", example = "1")
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java
index 5de1fdd..c47be07 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountLog.java
@@ -28,7 +28,7 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鍒涘缓浜�")
@@ -37,7 +37,7 @@
 
     @ApiModelProperty(value = "缂栬緫鏃堕棿")
     @ExcelColumn(name="缂栬緫鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date editDate;
 
     @ApiModelProperty(value = "缂栬緫浜�")
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
index f81fa77..ac0e439 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -27,14 +27,14 @@
     private String id;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鍒涘缓浜�")
     private String creator;
 
     @ApiModelProperty(value = "缂栬緫鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date editDate;
 
     @ApiModelProperty(value = "缂栬緫浜�")
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java
index 72855ff..a78efb6 100644
--- a/server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/DiscountGoodsorderExportVO.java
@@ -45,11 +45,11 @@
     private String openid;
 
     @ApiModelProperty(value = "鏀粯鏂瑰紡 0寰俊 1鏀粯瀹�")
-    @ExcelColumn(name="鏀粯鏂瑰紡",index = 7 ,width = 10,valueMapping = "0=寰俊锛�1=鏀粯瀹濓紱",align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="鏀粯鏂瑰紡",index = 7 ,width = 10,valueMapping = "0=寰俊;1=鏀粯瀹�;",align = HorizontalAlignment.CENTER)
     private Integer payWay;
 
     @ApiModelProperty(value = "璁㈠崟鏉ユ簮")
-    @ExcelColumn(name="璁㈠崟鏉ユ簮",index = 8 ,width = 10,valueMapping = "0=灏忕▼搴忕锛�",align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="璁㈠崟鏉ユ簮",index = 8 ,width = 10,valueMapping = "0=灏忕▼搴忕;",align = HorizontalAlignment.CENTER)
     private Integer origin;
 
 
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
index d1a0e73..6c1fa5d 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
@@ -44,7 +44,7 @@
     @ApiModelProperty(value = "璁㈠崟涓婚敭")
     private String goodsOrderId;
 
-    @ApiModelProperty(value = "楠戣鐘舵�侊細-1=鏈獞琛岋紱0=璇锋眰寮�閿佷腑 ;1=楠戣涓�; 2=宸茶繕杞�;  3=寮�閿佸け璐ワ紱")
+    @ApiModelProperty(value = "楠戣鐘舵�侊細-1=鏈獞琛岋紱0=璇锋眰寮�閿佷腑 ;1=楠戣涓�; 2=宸茶繕杞�;  3=寮�閿佸け璐ワ紱4=涓存椂闅忚溅锛�")
     private Integer rideStatus;
 
     @ApiModelProperty(value = "灏忕▼搴忔槸鍚﹀仠姝㈡湇鍔� 0鍚� 1鏄�")
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDetailResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDetailResponse.java
index 78b7566..13f4795 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDetailResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDetailResponse.java
@@ -14,7 +14,6 @@
 @ApiModel("楠戣璁板綍鐘舵�佷俊鎭繑鍥炵被")
 public class MemberRidesDetailResponse {
 
-
     @ApiModelProperty(value = "楠戣璁板綍涓婚敭")
     private String id;
 
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java
index 83f5279..a9fb0b5 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java
@@ -72,9 +72,6 @@
     @ApiModelProperty(value = "楠戣璁板綍涓婚敭")
     private String rideId;
 
-    @ApiModelProperty(value = "杞﹁締绫诲瀷")
-    private String bikeTypeName;
-
     @ApiModelProperty(value = "濂楅鍗′俊鎭�")
     private DiscountMember discountMember;
 
diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
index 91f0931..9a570bf 100644
--- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -209,5 +209,7 @@
 
     void autoCancelRefunOrder();
 
-    DiscountMember getUseDiscount(String memberId, Integer driveTime);
+    DiscountMember getUseDiscount(String memberId, Integer driveTime,Integer type);
+
+    void autCancel();
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
index e0a6288..d32fd5d 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
@@ -235,7 +235,7 @@
                 low = Double.parseDouble(collect.get(Constants.LOW_BIKE_VOLTAGE).getCode());
             }catch (Exception e){
             }
-            if(pageWrap.getModel().getType() == Constants.ONE){
+            if(pageWrap.getModel().getLowVoltage() == Constants.ONE){
                 //浣庣數閲�
                 queryWrapper.lt(Bikes::getVoltage,low);
             }else{
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountLogServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountLogServiceImpl.java
index bebd94a..fddabd9 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountLogServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountLogServiceImpl.java
@@ -1,20 +1,26 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.Constants;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.DiscountLogMapper;
 import com.doumee.dao.business.model.DiscountLog;
+import com.doumee.dao.business.model.DiscountMember;
+import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.DiscountLogService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鐢ㄦ埛濂楅鍗′娇鐢ㄨ皟鏁存棩蹇楄〃Service瀹炵幇
@@ -87,60 +93,26 @@
     @Override
     public PageData<DiscountLog> findPage(PageWrap<DiscountLog> pageWrap) {
         IPage<DiscountLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<DiscountLog> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<DiscountLog> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(DiscountLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(DiscountLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(DiscountLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(DiscountLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getInfo() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getInfo, pageWrap.getModel().getInfo());
-        }
-        if (pageWrap.getModel().getDiscountMemberId() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getDiscountMemberId, pageWrap.getModel().getDiscountMemberId());
-        }
-        if (pageWrap.getModel().getType() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getType, pageWrap.getModel().getType());
-        }
-        if (pageWrap.getModel().getRideTime() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getRideTime, pageWrap.getModel().getRideTime());
-        }
-        if (pageWrap.getModel().getRidePrice() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getRidePrice, pageWrap.getModel().getRidePrice());
-        }
-        if (pageWrap.getModel().getEditInfo() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getEditInfo, pageWrap.getModel().getEditInfo());
-        }
-        if (pageWrap.getModel().getEditDays() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getEditDays, pageWrap.getModel().getEditDays());
-        }
-        if (pageWrap.getModel().getGoodsorderId() != null) {
-            queryWrapper.lambda().eq(DiscountLog::getGoodsorderId, pageWrap.getModel().getGoodsorderId());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
+        DiscountLog model = pageWrap.getModel();
+        queryWrapper.selectAll(DiscountLog.class)
+                .selectAs(SystemUser::getRealname,DiscountLog::getCreatorName)
+                .leftJoin(SystemUser.class,SystemUser::getId,DiscountLog::getCreator)
+                .eq(DiscountLog::getIsdeleted, Constants.ZERO)
+                .eq(Objects.nonNull(model.getType()),DiscountLog::getType,model.getType())
+                .eq(StringUtils.isNotBlank(model.getDiscountMemberId()),DiscountLog::getDiscountMemberId,model.getDiscountMemberId());
+        PageData<DiscountLog> pageData = PageData.from(discountLogMapper.selectJoinPage(page, DiscountLog.class,queryWrapper));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(pageData.getRecords())){
+            for (DiscountLog discountLog:pageData.getRecords()) {
+                if(Constants.equalsInteger(discountLog.getType(),Constants.ZERO)&&Objects.nonNull(discountLog.getRidePrice())){
+                    discountLog.setRidePrice(
+                            Constants.translateMoney(discountLog.getRidePrice())
+                    );
+                }
             }
         }
-        return PageData.from(discountLogMapper.selectPage(page, queryWrapper));
+        return pageData;
     }
 
     @Override
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
index 07658ac..aab545c 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
@@ -104,18 +104,20 @@
         if(Objects.isNull(discountMember)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        List<DiscountLog> discountLogList = discountLogMapper.selectJoinList(DiscountLog.class,new MPJLambdaWrapper<DiscountLog>()
-                .selectAll(DiscountLog.class)
-                .selectAs(SystemUser::getRealname,DiscountLog::getCreatorName)
-                .eq(DiscountLog::getDiscountMemberId,discountMember.getId())
-                .eq(DiscountLog::getIsdeleted,Constants.ZERO)
-                .orderByDesc(DiscountLog::getId)
-        );
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(discountLogList)){
-            discountMember.setDiscountLogList(discountLogList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
-            discountMember.setOptLogList(discountLogList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
-            discountMember.setUseTimes(discountMember.getDiscountLogList().size());
-        }
+//        List<DiscountLog> discountLogList = discountLogMapper.selectJoinList(DiscountLog.class,new MPJLambdaWrapper<DiscountLog>()
+//                .selectAll(DiscountLog.class)
+//                .selectAs(SystemUser::getRealname,DiscountLog::getCreatorName)
+//                .leftJoin(SystemUser.class,SystemUser::getId,DiscountLog::getCreator)
+//                .eq(DiscountLog::getDiscountMemberId,discountMember.getId())
+//                .eq(DiscountLog::getIsdeleted,Constants.ZERO)
+//                .orderByDesc(DiscountLog::getId)
+//        );
+//        discountMember.setUseTimes(discountMember.getDiscountLogList().size());
+//        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(discountLogList)){
+//            discountMember.setDiscountLogList(discountLogList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
+//            discountMember.setOptLogList(discountLogList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()));
+//
+//        }
         return discountMember;
     }
 
@@ -138,12 +140,15 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         DiscountMember model = pageWrap.getModel();
         queryWrapper.selectAll(DiscountMember.class)
+                .selectAs(Member::getOpenid,DiscountMember::getOpenid)
+                .select(" ( select count(1) from discount_log d where d.discount_member_id = t.id and d.type = 0 ) ",DiscountMember::getUseTimes)
                 .leftJoin(Member.class,Member::getId,DiscountMember::getMemberId)
                 .like(StringUtils.isNotBlank(model.getCode()),DiscountMember::getCode,model.getCode())
                 .like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName())
                 .like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid())
                 .eq(Objects.nonNull(model.getStatus()),DiscountMember::getStatus,model.getStatus())
-                .orderByDesc(DiscountMember::getId);
+                .ne(DiscountMember::getStatus,Constants.TWO)
+                .orderByDesc(DiscountMember::getCode);
         return PageData.from(discountMemberJoinMapper.selectJoinPage(page, DiscountMember.class,queryWrapper));
     }
 
@@ -164,9 +169,12 @@
                 .orderByDesc(DiscountMember::getId);
         List<DiscountMember> list = discountMemberJoinMapper.selectJoinList(DiscountMember.class,queryWrapper);
         if(CollectionUtils.isEmpty(list)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈠埌鍙姤搴熺殑濂楅鍗′俊鎭�");
+            return;
         }
         for (DiscountMember discountMember:list) {
+            if(!Constants.equalsInteger(discountMember.getStatus(),Constants.ZERO)){
+                continue;
+            }
             discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda()
                     .set(DiscountMember::getStatus,Constants.ONE)
                     .eq(DiscountMember::getId,discountMember.getId())
@@ -183,7 +191,6 @@
             discountLog.setGoodsorderId(discountMember.getGoodsorderId());
             discountLogMapper.insert(discountLog);
         }
-        //閫�娆炬搷浣�
     }
 
 
@@ -191,7 +198,7 @@
     @Override
     public void adjust(DiscountMemberDTO model){
         if(Objects.isNull(model)
-        || Objects.isNull(model.getAddDays())){
+            || Objects.isNull(model.getAddDays())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -228,8 +235,9 @@
             discountLog.setDiscountMemberId(discountMember.getId());
             discountLog.setType(Constants.TWO);
             discountLog.setGoodsorderId(discountMember.getGoodsorderId());
-            discountLog.setEditInfo(model.getInfo());
+            discountLog.setInfo(model.getInfo());
             discountLog.setEditDays(model.getAddDays());
+            discountLog.setEditInfo("灏嗘湁鏁堟湡澧炲姞"+model.getAddDays()+"澶�, 璋冩暣鍚庢湁鏁堟湡鑷�"+useEndDate);
             discountLogMapper.insert(discountLog);
 
         }
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
index 6e6895b..a8c5a63 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
@@ -31,6 +31,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -60,6 +61,8 @@
         discount.setIsdeleted(Constants.ZERO);
         discount.setCreateDate(new Date());
         discount.setCreator(userInfo.getId());
+        discount.setEditDate(new Date());
+        discount.setEditor(userInfo.getId());
         if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO)){
             discount.setUseDays((int) (DateUtil.getBetweenDays(DateUtil.dateToString(discount.getUseStartDate(),"yyyy-MM-dd"),DateUtil.dateToString(discount.getUseEndDate(),"yyyy-MM-dd"))));
         }
@@ -68,7 +71,7 @@
     }
 
 
-    public void vaildReq(Discount discount) {
+    public void vaildReq(Discount discount){
         if(Objects.isNull(discount)
                 || StringUtils.isBlank(discount.getName())
                 || Objects.isNull(discount.getType())
@@ -95,13 +98,21 @@
                 ( discount.getUseStartDate().getTime()>discount.getUseEndDate().getTime()) ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浣跨敤鏃舵淇℃伅閿欒");
         }
-
         //鎸囧畾鏃ユ湡鐢熸晥
         if(Constants.equalsInteger(discount.getUseType(),Constants.TWO) &&
                 ( discount.getUseStartDate().getTime()<discount.getStartDate().getTime() ||
                         discount.getUseStartDate().getTime() > discount.getEndDate().getTime()
                 ) ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浣跨敤鏃舵淇℃伅閿欒");
+        }
+        if(Objects.isNull(discount.getSaleDayLimit())){
+            discount.setSaleDayLimit(Constants.ZERO);
+        }
+        if(Objects.isNull(discount.getSaleLimit())){
+            discount.setSaleLimit(Constants.ZERO);
+        }
+        if(Constants.equalsInteger(discount.getUseType(),Constants.TWO)){
+            discount.setUseEndDate( DateUtil.StringToDateFormat(DateUtil.getXDaysAfter(discount.getUseStartDate(),discount.getUseDays()),"yyyy-MM-dd"));
         }
     }
 
@@ -146,6 +157,24 @@
 
     @Override
     public void updateById(Discount discount) {
+        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(Objects.isNull(discount)
+        || StringUtils.isBlank(discount.getId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        Discount model = discountMapper.selectById(discount.getId());
+        if(Objects.isNull(model)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈鐢ㄦ棤娉曡繘琛屼慨鏀�");
+        }
+        this.vaildReq(discount);
+        discount.setEditDate(new Date());
+        discount.setEditor(userInfo.getId());
+        if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO)){
+            discount.setUseDays((int) (DateUtil.getBetweenDays(DateUtil.dateToString(discount.getUseStartDate(),"yyyy-MM-dd"),DateUtil.dateToString(discount.getUseEndDate(),"yyyy-MM-dd"))));
+        }
         discountMapper.updateById(discount);
     }
 
@@ -162,9 +191,12 @@
     @Override
     public Discount findById(String id) {
         Discount discount = discountJoinMapper.selectOne(new MPJLambdaWrapper<Discount>()
-                        .selectAll(Discount.class)
+                .selectAll(Discount.class)
+                .select(" s1.realname ",Discount::getCreatorName)
+                .select(" s2.realname ",Discount::getEditorName)
                 .select(" (select count(1) from goodsorder g where g.obj_type = 0 and g.obj_id = t.id and g.pay_status = 1 ) ",Discount::getSaleNum)
-                .leftJoin(SystemUser.class,SystemUser::getId,Discount::getCreator)
+                .leftJoin(" system_user s1 on s1.id = t.creator")
+                .leftJoin(" system_user s2 on s2.id = t.editor")
                 .eq(Discount::getId,id)
         );
         if(Objects.isNull(discount)){
@@ -205,7 +237,9 @@
                 .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.ONE),Discount::getIsbike, Constants.ONE)
                 .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.TWO),Discount::getIselecbike, Constants.ONE)
                 .eq(Discount::getIsdeleted, Constants.ZERO)
-                .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus());
+                .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus())
+                .apply( Objects.nonNull(modele.getMinShow())," now() BETWEEN t.start_date and  ( t.end_date   + INTERVAL '1 day' ) ")
+        ;
                 queryWrapper.orderByDesc(Discount::getCreateDate);
         PageData<Discount> pageData = PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper));
         for (Discount discount:pageData.getRecords()) {
@@ -219,8 +253,7 @@
     @Override
     public void dealPrice(Discount discount){
         if(Objects.isNull(discount)
-            || Objects.isNull(discount.getUseEndDate())
-            || Objects.isNull(discount.getUseStartDate())
+            || Objects.isNull(discount.getUseDays())
             || Objects.isNull(discount.getPrice())
             || discount.getPrice().compareTo(BigDecimal.ZERO)==0
         ){
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index f46ffd0..fed4866 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -295,8 +295,10 @@
         MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(Goodsorder.class);
         queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid);
+        queryWrapper.selectAs(DiscountMember::getName, Goodsorder::getDiscountName);
         queryWrapper.leftJoin(Member.class, Member::getId  ,Goodsorder::getMemberId);
-        queryWrapper.select("(select r.name from discount_member r where r.isdeleted=0  and r.goodsorder_id=t.id limit 1) as discountName");
+        queryWrapper.leftJoin(DiscountMember.class, DiscountMember::getGoodsorderId  ,Goodsorder::getId);
+//        queryWrapper.select("(select r.name from discount_member r where r.isdeleted=0  and r.goodsorder_id=t.id limit 1) as discountName");
         queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id  and  r.status in(0,2)) as refund_date");
         queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status in(0,2)) as refund_money");
         //鏃堕棿娈电瓫閫�
@@ -310,11 +312,13 @@
         queryWrapper.like(model.getCode() !=null,Goodsorder::getCode,model.getCode());
         queryWrapper.like(model.getId() !=null,Goodsorder::getId,model.getId());
         queryWrapper.eq(model.getStatus() !=null,Goodsorder::getStatus,model.getStatus());
+        queryWrapper.eq(model.getPayWay() !=null,Goodsorder::getPayWay,model.getPayWay());
         queryWrapper.like(model.getOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getOnlineOrderid());
         queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid());
         queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
         //濡傛灉鏄獞琛岃鍗曞彧鏄剧ず鏀粯鎴愬姛鐨�
         queryWrapper.eq(Constants.equalsInteger(model.getType(),Constants.ZERO),Goodsorder::getPayStatus,Constants.ONE);
+        queryWrapper.in(Constants.equalsInteger(model.getType(),Constants.ONE),Goodsorder::getStatus,Constants.ONE,Constants.ZERO);
 
         return  queryWrapper;
     }
@@ -336,7 +340,7 @@
         if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ONE)){
             queryWrapper.eq(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey());
         }
-        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDiscountName()),Goodsorder::getDiscountName,pageWrap.getModel().getDiscountName());
+        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDiscountName()),DiscountMember::getName,pageWrap.getModel().getDiscountName());
         IPage<Goodsorder> goodsorderIPage = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
         if (!CollectionUtils.isEmpty(goodsorderIPage.getRecords())){
             goodsorderIPage.getRecords().forEach(s->{
@@ -382,6 +386,7 @@
                 discountMapper.selectList(new QueryWrapper<Discount>().lambda()
                         .eq(Discount::getIsdeleted,Constants.ZERO)
                         .eq(Discount::getStatus,Constants.ZERO)
+                        .apply(" now() BETWEEN start_date and  ( end_date   + INTERVAL '1 day' )  ")
                         .orderByDesc(Discount::getId)
                         .last(" limit 3 ")
                 )
@@ -452,7 +457,7 @@
                         memberRidesResponse.setVoltageStatus(this.getVoltageStatus(bikes));
                     }
                     //鏌ヨ褰撳墠鐨勯獞琛屽椁�
-                    memberRidesResponse.setDiscountMember(this.getUseDiscount(memberId,Constants.ZERO));
+                    memberRidesResponse.setDiscountMember(this.getUseDiscount(memberId,Constants.ZERO,memberRides.getType()));
                     homeResponse.setMemberRidesResponse(memberRidesResponse);
                 }
             }
@@ -534,6 +539,7 @@
         if(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED);
         }
+        goodsorder.setMoney(Constants.translateMoney(goodsorder.getMoney()));
         goodsorderDetailVO.setGoodsOrder(goodsorder);
         Member member = memberMapper.selectById(goodsorder.getMemberId());
         if(Objects.nonNull(member)){
@@ -555,6 +561,13 @@
                         .eq(Refund::getObjId,goodsorder.getId())
                         .orderByDesc(Refund::getId)
         );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(refunds)){
+            for (Refund refund:refunds) {
+                if(Objects.nonNull(refund.getMoney())){
+                    refund.setMoney(Constants.translateMoney(refund.getMoney()));
+                }
+            }
+        }
         goodsorderDetailVO.setRefundList(refunds);
 
         return goodsorderDetailVO;
@@ -614,7 +627,7 @@
                 freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
             }catch (Exception e){
             }
-            closeMoney = getCloseMoneyByRides(memberRides,freeTime,true,goodsorder.getMoney(),goodsorder.getMemberId()).getAmount();
+            closeMoney = getCloseMoneyByRides(memberRides,freeTime,true,goodsorder.getMoney(),goodsorder.getMemberId(),true).getAmount();
             //瀹為檯缁撶畻浠锋牸锛岃褰曞湪鏈�楂樿溅鍨嬭褰曚笂
 //            memberRides.get(0).setActualPrice(closeMoney);
         }
@@ -779,7 +792,7 @@
         transactionsMapper.insert(transactions);
     }
 
-    private RidesDetailResponse  getCloseMoneyByRides(List<MemberRides> memberRides,int freeTime,boolean isClose,BigDecimal yjMoney,String memberId) {
+    private RidesDetailResponse  getCloseMoneyByRides(List<MemberRides> memberRides,int freeTime,boolean isClose,BigDecimal yjMoney,String memberId,Boolean unOver) {
         RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
         ridesDetailResponse.setHaveDisCount(Constants.ZERO);
         BigDecimal closeMoney = new BigDecimal(0.00);
@@ -816,9 +829,10 @@
             topRides.setActualPrice(closeMoney);
         } 
         //鏌ヨ鏄惁瀛樺湪濂楅淇℃伅
-        DiscountMember discountMember = this.getUseDiscount(memberId,durationSum);
+        DiscountMember discountMember = this.getUseDiscount(memberId,durationSum,Objects.nonNull(topRides)?topRides.getType():null);
         //璁$畻鎶垫墸閲戦
-        if(Objects.nonNull(discountMember) && discountMember.getSurplusTime() > Constants.ZERO && Objects.nonNull(topRides)){
+        //unOver 鏄惁鏈粨绠� 鏈粨绠楃殑璁㈠崟鏍规嵁褰撳墠濂楅鏌ヨ  宸茬粨绠楃殑璁㈠崟鏍规嵁宸茬敓鎴愮殑鏁版嵁杩涜鏌ヨ
+        if(Objects.nonNull(discountMember) && Objects.nonNull(topRides) && unOver){
             //瀛樺偍鎶垫墸璁板綍
             DiscountLog discountLog = new DiscountLog();
             discountLog.setIsdeleted(Constants.ZERO);
@@ -830,7 +844,7 @@
             discountLog.setEditInfo("楠戣鎶垫墸");
             discountLog.setGoodsorderId(topRides.getOrdreId());
             //濡傛灉楠戣鏃堕棿灏忎簬绛変簬鍓╀綑鏃堕棿 鍒欑洿鎺ユ坊鍔� 楠戣鍗′娇鐢ㄦ暟鎹�  淇瀹為檯鏀粯閲戦
-            if(discountMember.getSurplusTime() >= durationSum){
+            if(Constants.equalsInteger(discountMember.getLimitType(),Constants.ZERO) || discountMember.getSurplusTime() >= durationSum){
                 discountLog.setRideTime(durationSum);
                 discountLog.setRidePrice(closeMoney);
                 topRides.setActualPrice(BigDecimal.ZERO);
@@ -838,9 +852,10 @@
             }else{
                 int baseTime =Constants.formatIntegerNum(topRides.getBaseTime());
                 BigDecimal closeDisCountMoney = Constants.formatDecimalNum(topRides.getBasePrice());
-                //濡傛灉鏄竴鍙d环鏂瑰紡锛屼环鏍肩洿鎺ヤ负涓�鍙d环baseMoney,濡傛灉涓嶆槸璁$畻姝e父浠锋牸
+                //鍑忓幓浼樻儬鏃堕暱鍓╀綑鏃堕暱
                 Integer durationDisCountSum = durationSum - discountMember.getSurplusTime();
-                discountLog.setRideTime(discountMember.getSurplusTime());
+                discountLog.setRideTime(durationDisCountSum<=Constants.ZERO?discountMember.getSurplusTime():Constants.ZERO);
+                //濡傛灉鏄竴鍙d环鏂瑰紡锛屼环鏍肩洿鎺ヤ负涓�鍙d环baseMoney,濡傛灉涓嶆槸璁$畻姝e父浠锋牸
                 if(baseTime != -1){//涓嶆槸涓�鍙d环
                     if(durationDisCountSum > baseTime && Constants.formatIntegerNum(topRides.getUnitTime())>0){
                         //濡傛灉瓒呭嚭浜嗚捣姝ヤ环鏍硷紝璁$畻瓒呭嚭浠锋牸
@@ -848,14 +863,25 @@
                         //璁$畻閲戦绱瓒呭嚭閮ㄩ棬浠锋牸锛堣秴鍑烘椂闂村崟浣�*瓒呭嚭鍗曚綅鏃堕棿浠锋牸锛�
                         closeDisCountMoney = closeDisCountMoney.add(unit.multiply(Constants.formatDecimalNum(topRides.getUnitPrice())));
                     }
-                    discountLog.setRidePrice(closeMoney.subtract(closeDisCountMoney));
+                    discountLog.setRidePrice(durationDisCountSum<=Constants.ZERO?closeMoney.subtract(closeDisCountMoney):BigDecimal.ZERO);
                 }else{
                     discountLog.setRidePrice(BigDecimal.ZERO);
                 }
             }
-            discountLogMapper.insert(discountLog);
-            ridesDetailResponse.setHaveDisCount(Constants.ONE);
+            if(isClose&&discountLog.getRideTime()>Constants.ZERO){
+                discountLogMapper.insert(discountLog);
+            }
+            ridesDetailResponse.setHaveDisCount(discountLog.getRideTime()>Constants.ZERO?Constants.ONE:Constants.ZERO);
             ridesDetailResponse.setDisCountMoney(discountLog.getRidePrice());
+        }else if(Objects.nonNull(discountMember) && Objects.nonNull(topRides)
+                && !unOver ){
+            //宸茶繕杞﹀垯鏌ヨ鏄惁鏈� 濂楅鍗′娇鐢ㄨ褰�
+            List<DiscountLog> discountLogList = discountLogMapper.selectList(new QueryWrapper<DiscountLog>().lambda().eq(DiscountLog::getGoodsorderId,topRides.getOrdreId()).eq(DiscountLog::getType,Constants.ZERO)
+                    .eq(DiscountLog::getIsdeleted,Constants.ZERO));
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(discountLogList)){
+                ridesDetailResponse.setHaveDisCount(Constants.ONE);
+                ridesDetailResponse.setDisCountMoney(discountLogList.stream().map(i->i.getRidePrice()).reduce(BigDecimal.ZERO,BigDecimal::add));
+            }
         }
         //濡傛灉璁㈠崟浠锋牸灏侀《浜嗭紝鍙栬鍗� 浠锋牸
         if(Constants.compareBigdecimal(closeMoney, yjMoney) ==1){
@@ -888,7 +914,6 @@
         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(Objects.isNull(goodsorderBackDTO)
         || StringUtils.isBlank(goodsorderBackDTO.getOrderId())
-                || StringUtils.isBlank(goodsorderBackDTO.getReason())
                 || Objects.isNull(goodsorderBackDTO.getBackType())
                 || Objects.isNull(goodsorderBackDTO.getMoney())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -1060,7 +1085,8 @@
                 .selectAs(BaseParam::getSortnum,MemberRides::getSortnum)
                 .leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId)
                 .eq(MemberRides::getOrdreId,id)
-                .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey())
+                .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey()
+                        ,Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey(),Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey())
                 .orderByDesc(MemberRides::getCreateDate));
         if (!CollectionUtils.isEmpty(memberRides)){
             //棰勮缁撶畻浠锋牸鍜岃绠楁椂闀�
@@ -1096,7 +1122,8 @@
                 return memberRidesResponse;
             }).collect(Collectors.toList());
             //绱鍜岄绠楃粨绠楅噾棰�
-            RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,freeTime,false,goodsorder.getMoney(),goodsorder.getMemberId());
+            RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,freeTime,false,goodsorder.getMoney(),goodsorder.getMemberId(),
+                    Constants.equalsInteger(goodsorder.getStatus(),Constants.GOODSORDER_STATUS.CLOSE.getKey())?false:true);
             if(Constants.formatIntegerNum(goodsorder.getStatus())!= Constants.goodsorderStatus.pay){
                 //濡傛灉闈炲凡鏀粯浣嗘湭缁撶畻锛屼娇鐢ㄨ鍗曢噾棰�
                 ridesDetailResponse.setAmount(goodsorder.getCloseMoney());
@@ -1174,8 +1201,13 @@
         discountMember.setMemberId(memberId);
         discountMember.setStatus(Constants.TWO);
         discountMember.setGoodsorderId(goodsorderId);
+        if(!Constants.equalsInteger(discountMember.getUseType(),Constants.ZERO)){
+            if(Constants.equalsInteger(discountMember.getUseType(),Constants.ONE)){
+                discountMember.setUseStartDate(DateUtil.StringToDateFormat(DateUtil.getCurrDate(),"yyyy-MM-dd"));
+            }
+            discountMember.setUseEndDate( DateUtil.StringToDateFormat(DateUtil.getXDaysAfter(discountMember.getUseStartDate(),discountMember.getUseDays()-1),"yyyy-MM-dd"));
+        }
         discountMemberMapper.insert(discountMember);
-
         Goodsorder goodsorder = new Goodsorder();
         goodsorder.setId(goodsorderId);
         goodsorder.setCreateDate(new Date());
@@ -1207,7 +1239,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌濂楅淇℃伅");
         }
         if(!(Constants.equalsInteger(discount.getIsdeleted(),Constants.ZERO)
-            ||Constants.equalsInteger(discount.getStatus(),Constants.ZERO))){
+             && Constants.equalsInteger(discount.getStatus(),Constants.ZERO))){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅宸蹭笅鏋讹紝鏃犳硶杩涜璐拱锛岃鍒锋柊鏌ョ湅");
         }
         if(!(discount.getStartDate().getTime() < System.currentTimeMillis()
@@ -1215,7 +1247,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅寮�鏀炬椂闂存湭鍒�,鏃犳硶杩涜璐拱");
         }
         //楠岃瘉鏄惁瓒呰繃浠婃棩鍙敭鍗栨暟閲�
-        if(Objects.nonNull(discount.getSaleDayLimit())){
+        if(Objects.nonNull(discount.getSaleDayLimit())&&discount.getSaleDayLimit()>Constants.ZERO){
             if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda()
                     .eq(Goodsorder::getType,Constants.ONE)
                     .eq(Goodsorder::getObjId,discount.getId())
@@ -1225,13 +1257,12 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅浠婃棩鍙戣閲忓凡鍞絼锛岃鏄庢棩鏌ョ湅锛�");
             }
         }
-        if(Objects.nonNull(discount.getSaleLimit())){
+        if(Objects.nonNull(discount.getSaleLimit())&&discount.getSaleLimit()>Constants.ZERO){
             if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda()
                     .eq(Goodsorder::getType,Constants.ONE)
                     .eq(Goodsorder::getObjId,discount.getId())
                     .in(Goodsorder::getStatus,Constants.ZERO,Constants.ONE)
-                    .apply(" EXTRACT(YEAR FROM create_date) = EXTRACT(YEAR FROM CURRENT_DATE) ")
-            )>=discount.getSaleDayLimit()){
+            )>=discount.getSaleLimit()){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅鍙戣閲忓凡鍞絼锛�");
             }
         }
@@ -1240,8 +1271,8 @@
 
 
     private Object getWxPayResponse(Goodsorder goodsorder,String openid){
+        Object response = null; 
         //璋冭捣鏀粯
-        Object response = null;
         PrepayRequest request = new PrepayRequest();
         request.setAttach("createGoodsOrder");
         request.setDescription(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)?"妫灄鍏洯鑷杞﹂獞琛屾娂閲戞敮浠�":"妫灄鍏洯鑷杞﹁喘涔伴獞琛屽椁愭敮浠�");
@@ -1368,6 +1399,7 @@
         Goodsorder goodsorder = this.goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>()
                 .eq("member_id",memberId)
                 .eq("status",Constants.goodsorderStatus.pay)
+                .eq("type",Constants.ZERO)
                 .last(" limit 1 "));
         if(Objects.isNull(goodsorder)){
             throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"鏃犻獞琛岃鍗曡褰�");
@@ -1514,7 +1546,10 @@
      * @param memberId
      */
     @Override
-    public DiscountMember getUseDiscount(String memberId,Integer driveTime){
+    public DiscountMember getUseDiscount(String memberId,Integer driveTime,Integer type){
+        if(Objects.isNull(type)){
+            return null;
+        }
         String today = DateUtil.getToday();
         //鍒ゆ柇浠婂ぉ鏄惁涓鸿妭鍋囨棩
         Holidays holidays = new Holidays();
@@ -1528,9 +1563,13 @@
                         "and  d.isdeleted = 0 and  d.type = 0 and   EXTRACT(DAY FROM d.create_date) = EXTRACT(DAY FROM CURRENT_DATE) ) " , DiscountMember::getUseTime)//鏌ヨ浠婃棩宸蹭娇鐢ㄦ椂闂�
                 .eq(DiscountMember::getStatus,Constants.ZERO)
                 .eq(DiscountMember::getMemberId,memberId)
-                .le(DiscountMember::getUseStartDate, Utils.Date.getStart(DateUtil.stringToDate(today,"yyyy-MM-dd")))
-                .ge(DiscountMember::getUseEndDate, Utils.Date.getEnd(DateUtil.stringToDate(today,"yyyy-MM-dd")))
+                .apply("  t.use_start_date <= '"+today+"' and t.use_end_date >= '"+today+"' ")
+
+                .eq(Constants.equalsInteger(holiday,Constants.ZERO),DiscountMember::getUseWorkday,Constants.ONE)
                 .eq(Constants.equalsInteger(holiday,Constants.ONE),DiscountMember::getUseHoliday,Constants.ONE)
+
+                .eq(Constants.equalsInteger(type,Constants.ZERO),DiscountMember::getIsbike,Constants.ONE)
+                .eq(Constants.equalsInteger(type,Constants.ONE),DiscountMember::getIselecbike,Constants.ONE)
                 .orderByDesc(DiscountMember::getLimitType)
                 .orderByDesc(DiscountMember::getLimitTime)
         );
@@ -1556,22 +1595,23 @@
                 if(list.size()>Constants.ZERO){
                     //d1鍦ㄥ墠鍒欏崌搴� 鍙嶄箣闄嶅簭
                     list.sort((d1,d2)-> Integer.compare(d2.getSurplusTime(),d1.getSurplusTime()));
+                    return list.get(Constants.ZERO);
                 }
-                return list.get(Constants.ZERO);
             }else{
                 //鏃犳棤鏈熼檺鐨勫椁� 浼樺厛鏌ヨ鍓╀綑鏃堕暱澶т簬楠戣鏃堕暱鐨勪俊鎭�(鍙栨椂闂存渶灏忕殑濂楅) 鍐嶆煡璇㈠皬浜庨獞琛屾椂闀跨殑濂楅
                 List<DiscountMember>  list =  discountMemberList.stream().filter(i->i.getSurplusTime()>=driveTime).collect(Collectors.toList());
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
                     if(list.size()>Constants.ZERO){
                         //d1鍦ㄥ墠鍒欏崌搴� 鍙嶄箣闄嶅簭
-                        list.sort((d1,d2)-> Integer.compare(d2.getSurplusTime(),d1.getSurplusTime()));
+                        list.sort((d1,d2)-> Integer.compare(d1.getSurplusTime(),d2.getSurplusTime()));
+                        return list.get(Constants.ZERO);
                     }
-                    return list.get(Constants.ZERO);
+                  
                 }
                 list =  discountMemberList.stream().filter(i->i.getSurplusTime()<driveTime).collect(Collectors.toList());
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
                     if(list.size()>Constants.ZERO){
-                        list.sort((d1,d2)-> Integer.compare(d1.getSurplusTime(),d2.getSurplusTime()));
+                        list.sort((d1,d2)-> Integer.compare(d2.getSurplusTime(),d1.getSurplusTime()));
                     }
                     return list.get(Constants.ZERO);
                 }
@@ -1582,10 +1622,11 @@
 
 
 
+    @Override
     public void autCancel(){
         goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
                 .set(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CANCEL.getKey())
-                    .set(Goodsorder::getEditDate,DateUtil.getCurrDateTime())
+                .set(Goodsorder::getEditDate,DateUtil.getCurrDateTime())
                 .eq(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.UN_PAY.getKey())
                 .apply(" NOW() >= create_date  + INTERVAL '30 min'  ")
         );
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index 9608680..4437b8a 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -398,7 +398,7 @@
             }
         }else{
             //濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
-            bike =   sendCloseElecBikeRequest(memberRides.getBikeCode(),Constants.ONE);
+            bike  = sendCloseElecBikeRequest(model.getOrdreId(),memberRides.getBikeCode());
         }
         logInfo = bike!=null?bike.getForceBackInfo():null;
         Integer freeRentTime = Integer.valueOf(collect.get(Constants.FREE_RENT_TIME).getCode());
@@ -438,7 +438,7 @@
     /**
      *  濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
      */
-    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+    private Bikes sendCloseElecBikeRequest(String goodOrderId,String bikeCode) {
         Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
                 .eq(Bikes::getType,Constants.ONE)
                 .eq(Bikes::getIsdeleted,Constants.ZERO)
@@ -448,30 +448,62 @@
             return null;
         }
         bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
-        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+        if(StringUtils.isNotBlank(bike.getDeviceSn())) {
             try {
                 //璇锋眰鍦板潃
-                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
                 JSONObject param = new JSONObject();
-                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
-                param.put("type",type);//0寮�閿� 1鍏抽攣
-                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+                param.put("id", goodOrderId);
+                String res = HttpsUtil.postJsonString(url, param.toJSONString());
                 JSONObject json = JSONObject.parseObject(res);
-                if(json.get("code").equals("200")){
+                if (json.get("code").equals("200")) {
                     //鍙戣捣鎸囦护鎴愬姛
                     bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
-                }else{
-                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+                } else {
+                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�" + json.get("msg"));
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }else{
             bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
         }
-        bikesMapper.updateById(bike);
         return bike;
     }
+//    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+//        Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
+//                .eq(Bikes::getType,Constants.ONE)
+//                .eq(Bikes::getIsdeleted,Constants.ZERO)
+//                .eq(Bikes::getCode,bikeCode)
+//        );
+//        if(bike == null){
+//            return null;
+//        }
+//        bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
+//        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+//            try {
+//                //璇锋眰鍦板潃
+//                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+//                JSONObject param = new JSONObject();
+//                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
+//                param.put("type",type);//0寮�閿� 1鍏抽攣
+//                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+//                JSONObject json = JSONObject.parseObject(res);
+//                if(json.get("code").equals("200")){
+//                    //鍙戣捣鎸囦护鎴愬姛
+//                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
+//                }else{
+//                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+//                }
+//            }catch (Exception e){
+//                e.printStackTrace();
+//            }
+//        }else{
+//            bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
+//        }
+//        bikesMapper.updateById(bike);
+//        return bike;
+//    }
 
     public static void main(String[] args) {
         String url = "http://localhost:10025/jtt808/device/8500";
@@ -771,7 +803,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"褰撳墠杞﹁締绫诲瀷鏃犳硶绉熻祦锛岃鑱旂郴绠$悊鍛橈紒");
         }
         memberRidesResponse.setBikeCode(bike.getCode());
-        memberRidesResponse.setBikeTypeName(baseParam.getName());
+        memberRidesResponse.setBikeType(baseParam.getName());
         MemberRides memberRides = new MemberRides();
         this.dealMemberRidesData(baseParam.getId(),memberRides);
         memberRidesResponse.setBasePrice(memberRides.getBasePrice());
@@ -783,7 +815,7 @@
                 memberRidesResponse.getUnitPrice()
                 ,memberRidesResponse.getUnitTime()));
         //鏌ヨ褰撳墠鐨勯獞琛屽椁�
-        memberRidesResponse.setDiscountMember(goodsorderService.getUseDiscount(memberId,Constants.ZERO));
+        memberRidesResponse.setDiscountMember(goodsorderService.getUseDiscount(memberId,Constants.ZERO,bikeType));
         return memberRidesResponse;
     }
 
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
index f09b5a2..a235b29 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
@@ -192,13 +192,13 @@
                 //璐拱濂楅 澶勭悊鍐呭
                  DiscountMember discountMember = discountMemberMapper.selectById(transactions.getObjId());
                  if(Objects.nonNull(discountMember)){
-                     transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
+                     transactions.setContent(discountMember.getName() +" | 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +" 鑷� "+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
                  }
             }else if(Constants.equalsInteger(transactions.getType(),Constants.TRANSACTIONS_TYPE.PLATFORM_REFUND.getKey())){
                 DiscountMember discountMember = discountMemberMapper.selectOne(
                         new QueryWrapper<DiscountMember>().lambda().eq(DiscountMember::getGoodsorderId, transactions.getOrderId()).last("limit 1"));
                 if(Objects.nonNull(discountMember)){
-                    transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
+                    transactions.setContent(discountMember.getName() +" | 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +" 鑷� "+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
                 }
             }
         }
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index c481f6a..b9061a1 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -50,12 +50,13 @@
     apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT
     serialNumer: 368B835A194384FD583B83B77977B84127D2F655
     mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
-    notifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxPayNotify
-    refundNotifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxRefundNotify
-#    notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
-    keyPath: D://apiclient_cert.p12
-    privateCertPath: D://apiclient_cert.pem
-    privateKeyPath: D://apiclient_key.pem
+#    notifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxPayNotify
+#    refundNotifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxRefundNotify
+    notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
+    refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
+    keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12
+    privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem
+    privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem
     #鏈嶅姟鍟�-------------end---
     existsSub: 1
     appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24
diff --git a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
index 1c5ee93..8414b7f 100644
--- a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
@@ -181,6 +181,7 @@
     public ApiResponse<PageData<Discount>> discountPage (@RequestBody PageWrap<Discount> pageWrap) {
         Discount discount = new Discount();
         discount.setStatus(Constants.ZERO);
+        discount.setMinShow(Constants.ZERO);
         pageWrap.setModel(discount);
         return ApiResponse.success(discountService.findPage(pageWrap));
     }
@@ -326,10 +327,9 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse openElecBike(@RequestBody OpenElecBikeRequest param) {
+    public ApiResponse<MemberRidesDetailResponse> openElecBike(@RequestBody OpenElecBikeRequest param) {
         param.setMemberId(getMemberId());
-        jtt808Service.openLock(param);
-        return  ApiResponse.success( null);
+        return  ApiResponse.success(jtt808Service.openLock(param));
     }
 
     @LoginRequired
@@ -344,5 +344,10 @@
         return  ApiResponse.success( null);
     }
 
-
+    @ApiOperation(value = "寮哄埗杩樿溅", notes = "寮哄埗杩樿溅")
+    @PostMapping("/forceBack")
+    public ApiResponse forceBack(@RequestBody Goodsorder goodsorder) {
+        jtt808Service.forceBack(goodsorder.getId());
+        return  ApiResponse.success( null);
+    }
 }
diff --git a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
index ecf63d4..c77a7a0 100644
--- a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
+++ b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
@@ -80,7 +80,6 @@
     @Autowired
     private MemberRidesJoinMapper memberRidesJoinMapper;
 
-
     @Autowired
     private PricingParamMapper pricingParamMapper;
 
@@ -102,6 +101,10 @@
         return  data;
     }
 
+    /**
+     * 鎵嬪姩杩樿溅
+     * @param param
+     */
     @Transactional(rollbackFor = {BusinessException.class})
     public   void backElecBike(BackElecBikeRequest param) {
         Member member = memberMapper.selectById(param.getMemberId());
@@ -113,6 +116,22 @@
         gparam.setStatus(Constants.goodsorderStatus.pay);
         gparam.setType(Constants.ZERO);
         Goodsorder goodsorder =  goodsorderService.findOne(gparam);
+        this.backBike(goodsorder);
+    }
+
+    /**
+     * 鑷姩杩樿溅
+     * @param id
+     */
+    @Transactional
+    public void forceBack(String id){
+        Goodsorder goodsorder =  goodsorderService.findById(id);
+        this.backBike(goodsorder);
+    }
+
+
+    @Transactional(rollbackFor = {BusinessException.class})
+    public void backBike(Goodsorder goodsorder){
         if(Objects.isNull(goodsorder)){
             throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"鏃犻獞琛岃鍗曡褰�");
         }
@@ -127,15 +146,15 @@
                 if(Constants.equalsInteger(rides.getStatus(),Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey())
                         &&Constants.equalsInteger(rides.getType(),Constants.ONE)){
                     //濡傛灉鏄數杞﹀苟涓旀槸楠戣涓� 杩涜鍏抽攣澶勭悊
-//                    Bikes  bike = getElecBikeByCode(rides.getBikeCode());
-//                    //鏌ヨ鍋滆溅绔欑偣淇℃伅
-//                    if(bike.getSiteId() ==null){
-//                        throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰鍓嶅線鍋滆溅鐐瑰仠杞︼紒");
-//                    }
-//                    lockBikes(bike.getDeviceSn(),Constants.ZERO);//鍙戣捣鍏抽攣鎸囦护璇锋眰
+                    Bikes  bike = getElecBikeByCode(rides.getBikeCode());
+                    //鏌ヨ鍋滆溅绔欑偣淇℃伅
+                    if(bike.getSiteId() ==null){
+                        throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰鍓嶅線鍋滆溅鐐瑰仠杞︼紒");
+                    }
+                    lockBikes(bike.getDeviceSn(),Constants.ZERO);//鍙戣捣鍏抽攣鎸囦护璇锋眰
                     backIds.add(rides.getId());
                     rides.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());//宸茶繕杞�
-//                    rides.setBackSiteId(bike.getSiteId());//杩樿溅绔欑偣
+                    rides.setBackSiteId(bike.getSiteId());//杩樿溅绔欑偣
 
                     rides.setBackDate(new Date());
                     Integer freeRentTime = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
@@ -194,7 +213,7 @@
         APIResult<T0201_0500> data = result.block();
         if(!data.isSuccess()){
             //濡傛灉寮�閿佸け璐ワ紝鍒欒繑鍥炲紓甯�
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝"+(type ==0?"杞﹁締寮�閿�":"杞﹁締鍏抽攣")+"澶辫触锛岃绋嶅悗閲嶈瘯锛屾垨鑰呰仈绯诲洯鍖虹鐞嗕汉鍛橈紒");
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝"+(type ==0?"杞﹁締鍏抽攣":"杞﹁締寮�閿�")+"澶辫触锛岃绋嶅悗閲嶈瘯锛屾垨鑰呰仈绯诲洯鍖虹鐞嗕汉鍛橈紒");
         }
     }
 
@@ -243,6 +262,7 @@
         Goodsorder gparam = new Goodsorder();
         gparam.setMemberId(param.getMemberId());
         gparam.setStatus(Constants.goodsorderStatus.pay);
+        gparam.setType(Constants.ZERO);
         Goodsorder goodsorder =  goodsorderService.findOne(gparam);
         if(Objects.isNull(goodsorder)){
             throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鎮ㄥ綋鍓嶆湁楠戣涓鍗曡褰�");
@@ -256,9 +276,9 @@
         if(memberRides ==null || memberRides.getBikeCode() == null){
             throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鎮ㄥ綋鍓嶆湁楠戣涓褰�");
         }
-//        Bikes bike = getElecBikeByCode(memberRides.getBikeCode());
-//        //鏌ヨ鍋滆溅浣嶇疆鏄惁绗﹀悎鍋滆溅浣嶇疆瑙勮寖
-//        checkPausePostionBiz(bike);
+        Bikes bike = getElecBikeByCode(memberRides.getBikeCode());
+        //鏌ヨ鍋滆溅浣嶇疆鏄惁绗﹀悎鍋滆溅浣嶇疆瑙勮寖
+        checkPausePostionBiz(bike);
         memberRides.setPauseDate(new Date());
         memberRides.setEditDate(memberRides.getBackDate());
         memberRides.setStatus(Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey());
@@ -373,7 +393,7 @@
             //濡傛灉杞﹁締绫诲瀷鏄┖
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 璇ヨ溅鍨嬫殏鏃朵笉鑳藉�熻溅鎿嶄綔鍝︼紝璇锋洿鎹㈠叾浠栬溅鍨嬮噸璇曪紒");
         }
-        cacheOpenLock.put(bike.getCode(), 1);
+        cacheOpenLock.put(openElecBikeRequest.getCode(), 1);
         try {
             //鍒ゆ柇褰撳墠鏄惁宸叉敮浠樻娂閲�
             Goodsorder goodsorder = goodsorderService.findOneByWrapper(new QueryWrapper<Goodsorder>()
@@ -404,7 +424,7 @@
             //鏍规嵁杞﹀瀷鏌ヨ璁′环鏂规
             isValidePricingType(bike,memberRides) ;
             MemberRidesDetailResponse memberRidesDetailResponse = new MemberRidesDetailResponse();
-//            this.lockBikes(bike.getDeviceSn(),1);
+            this.lockBikes(bike.getDeviceSn(),1);
             //瀛樺偍楠戣璁板綍
             memberRides.setId(Constants.getUUID());
             memberRides.setIsdeleted(Constants.ZERO);
@@ -420,10 +440,12 @@
             memberRidesJoinMapper.insert(memberRides);
             BeanUtils.copyProperties(memberRides, memberRidesDetailResponse);
             return memberRidesDetailResponse;
-        }catch (Exception e){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寮�閿佸け璐ワ紝璇疯仈绯荤鐞嗗憳");
+        }catch (BusinessException biz){
+            throw  biz;
+        }catch (Exception biz){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR);
         }finally {
-            cacheOpenLock.remove(bike.getCode());
+            cacheOpenLock.remove(openElecBikeRequest.getCode());
         }
     }
 
@@ -437,6 +459,7 @@
         Goodsorder gparam = new Goodsorder();
         gparam.setMemberId(param.getMemberId());
         gparam.setStatus(Constants.goodsorderStatus.pay);
+        gparam.setType(Constants.ZERO);
         Goodsorder goodsorder =  goodsorderService.findOne(gparam);
         if(Objects.isNull(goodsorder)){
             throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鎮ㄥ綋鍓嶆湁楠戣涓鍗曡褰�");
@@ -536,9 +559,10 @@
                 .eq(MemberRides::getIsdeleted,Constants.ZERO)
                 .eq(MemberRides::getType,Constants.ONE)
                 .eq(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey())
-                .apply(" NOW() >= t.create_date  + INTERVAL '2 hours' ")
+                .apply(" NOW() >= (t.create_date  + INTERVAL '"+systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PAUSE_AUTO_CLOSE_TIME).getCode()+" min') ")
         );
 
+        ;
         for (MemberRides timeOutRides:memberRidesList) {
             Goodsorder goodsorder = goodsorderService.findById(timeOutRides.getOrdreId());
             //鏌ヨ楠戣璁板綍
@@ -557,6 +581,10 @@
                         rides.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());//宸茶繕杞�
                         rides.setBackSiteId(bike.getSiteId());//杩樿溅绔欑偣
                         rides.setBackDate(new Date());
+                        Integer freeRentTime = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
+                        Integer rideTime = DateUtil.betweenMin(rides.getRentDate(), rides.getBackDate());
+                        //璁$畻楠戣璁¤垂鏃堕暱
+                        rides.setDuration( rideTime > freeRentTime  ? rideTime : 0 );
                         rides.setEditDate(rides.getBackDate());
                         memberRidesJoinMapper.updateById(rides);//鏇存柊楠戣鐘舵�佷负宸茶繕杞�
                     }
@@ -570,10 +598,10 @@
             //鍙戦�佸皬绋嬪簭閫氱煡
             Member member = memberMapper.selectById(goodsorder.getMemberId());
             if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenid())){
-                sendWxMessage.bookingsCancel(member.getOpenid(),goodsorder.getId(), WxMiniConfig.wxMaService.getAccessToken(),timeOutRides.getBikeCode(),goodsorder.getPayDate(),goodsorder.getEndDate());
+                sendWxMessage.bookingsCancel(member.getOpenid(),goodsorder.getId(),
+                        WxMiniConfig.wxMaService.getAccessToken(),
+                        timeOutRides.getBikeCode(),goodsorder.getPayDate(),goodsorder.getEditDate());
             }
-
-
         }
     }
 

--
Gitblit v1.9.3