From 36e617a6f1bfdec28104a1fa427b9e5d189213c6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 13 十月 2023 18:09:07 +0800
Subject: [PATCH] Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/parkBike into dev

---
 admin/src/assets/images/404-tip.png                                                          |    0 
 admin/src/api/business/backgroundRefund.js                                                   |   17 ++
 server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java           |   20 +++
 server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java               |    4 
 admin/src/assets/images/404.png                                                              |    0 
 server/platform/src/main/java/com/doumee/api/business/ActionLogController.java               |    2 
 admin/src/views/business/bikeLocation.vue                                                    |    3 
 admin/src/views/business/backgroundRefund.vue                                                |  103 +++++++++++++++++
 server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java |   67 +++++++---
 admin/src/api/business/actionLog.js                                                          |   17 ++
 admin/src/views/business/actionLog.vue                                                       |   82 +++++++++++++
 server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java  |    5 
 12 files changed, 294 insertions(+), 26 deletions(-)

diff --git a/admin/src/api/business/actionLog.js b/admin/src/api/business/actionLog.js
new file mode 100644
index 0000000..2bf436e
--- /dev/null
+++ b/admin/src/api/business/actionLog.js
@@ -0,0 +1,17 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/actionLog/findRidePae', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/actionLog/exportRideExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
diff --git a/admin/src/api/business/backgroundRefund.js b/admin/src/api/business/backgroundRefund.js
new file mode 100644
index 0000000..34b6f60
--- /dev/null
+++ b/admin/src/api/business/backgroundRefund.js
@@ -0,0 +1,17 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/refund/findPlatPage', data, {
+    trim: true
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/refund/exportPlatExcel', data, {
+    trim: true,
+    download: true
+  })
+}
+
diff --git a/admin/src/assets/images/404-tip.png b/admin/src/assets/images/404-tip.png
new file mode 100644
index 0000000..5182634
--- /dev/null
+++ b/admin/src/assets/images/404-tip.png
Binary files differ
diff --git a/admin/src/assets/images/404.png b/admin/src/assets/images/404.png
new file mode 100644
index 0000000..a386e02
--- /dev/null
+++ b/admin/src/assets/images/404.png
Binary files differ
diff --git a/admin/src/views/business/actionLog.vue b/admin/src/views/business/actionLog.vue
new file mode 100644
index 0000000..5eded99
--- /dev/null
+++ b/admin/src/views/business/actionLog.vue
@@ -0,0 +1,82 @@
+<template>
+  <TableLayout :permissions="['business:actionLog:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+
+      <el-form-item label="鐢ㄦ埛" prop="openid">
+        <el-input v-model="searchForm.openid" placeholder="璇疯緭鍏ョ敤鎴�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="杞﹁締缂栫爜" prop="bikeCode">
+        <el-input v-model="searchForm.bikeCode" placeholder="璇疯緭鍏ヨ溅杈嗙紪鐮�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎿嶄綔浜�" prop="creator">
+        <el-select v-model="searchForm.userId" placeholder="璇烽�夋嫨">
+          <el-option label="鏈綊杩�" :value="1">
+          </el-option>
+          <el-option label="宸插綊杩�" :value="1">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:actionLog:exportExcel']">
+        <li>
+          <el-button type="primary" :loading="isWorking.export" v-permissions="['business:actionLog:exportExcel']"
+            @click="exportExcel">瀵煎嚭</el-button>
+        </li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border>
+        <el-table-column prop="openid" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
+        <el-table-column prop="bikeCode" label="杞﹁締缂栫爜" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="rentSiteId" label="鍊熷嚭绔欑偣" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="rentDate" label="鍊熷嚭鏃堕棿" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="type" label="璋冩暣绫诲瀷" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            <div>{{ row.type == 0 ? '寮哄埗杩樿溅' : '楠戣鏃堕暱淇敼' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="creator" label="鎿嶄綔浜�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="actReason" label="鍘熷洜" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="paactInforamId" label="澶囨敞" min-width="100px" align="center"></el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+  name: 'MemberRides',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data() {
+    return {
+      // 鎼滅储
+      searchForm: {
+        openid: '',
+        creator: '',
+        bikeCode: '',
+      },
+    }
+  },
+  created() {
+    this.config({
+      module: '鐢ㄦ埛楠戣璁板綍琛�',
+      api: '/business/actionLog',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  }
+}
+</script>
diff --git a/admin/src/views/business/backgroundRefund.vue b/admin/src/views/business/backgroundRefund.vue
new file mode 100644
index 0000000..607889c
--- /dev/null
+++ b/admin/src/views/business/backgroundRefund.vue
@@ -0,0 +1,103 @@
+<template>
+  <TableLayout :permissions="['business:actionLog:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+
+      <el-form-item label="鐢ㄦ埛" prop="openid">
+        <el-date-picker
+          v-model="value1"
+          type="daterange"
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡"
+          format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+          @change="selectDate"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item label="鎿嶄綔浜�" prop="creator">
+        <el-select v-model="searchForm.creator" placeholder="璇烽�夋嫨">
+          <el-option label="鏈綊杩�" :value="1">
+          </el-option>
+          <el-option label="宸插綊杩�" :value="1">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:actionLog:exportExcel']">
+        <li>
+          <el-button type="primary" :loading="isWorking.export" v-permissions="['business:actionLog:exportExcel']"
+            @click="exportExcel">瀵煎嚭</el-button>
+        </li>
+      </ul>
+      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border>
+        <el-table-column prop="openid" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
+        <el-table-column prop="payOnlineOrderid" label="绯荤粺鍗曞彿" min-width="100px" align="center"></el-table-column>
+        <!-- payOnlineOrderid  鏀粯鎶奸噾浜ゆ槗鍗曞彿 -->
+        <!-- onlineOrderid 鍦ㄧ嚎浜ゆ槗鍗曞彿 -->
+        <!-- preOrderid 浜ゆ槗棰勮鍗曞彿 -->
+        <el-table-column prop="onlineOrderid" label="浜ゆ槗鍗曞彿" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="canBalance" label="褰撳墠鍙��鍥炴娂閲�(鍏�)" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="money" label="閫�鍥炴娂閲�(鍏�)" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="creator" label="鎿嶄綔浜�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="actReason" label="鍘熷洜" min-width="100px" align="center"></el-table-column>
+      </el-table>
+      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+      </pagination>
+    </template>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+  name: 'MemberRides',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data() {
+    return {
+      value1: [],
+      // 鎼滅储
+      searchForm: {
+        startDate: '',
+        endDate: '',
+        creator: '',
+      },
+    }
+  },
+  created() {
+    this.config({
+      module: '鐢ㄦ埛楠戣璁板綍琛�',
+      api: '/business/backgroundRefund',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    selectDate(v) {
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      if (v) {
+        this.searchForm.startDate = v[0]
+        this.searchForm.endDate = v[1]
+      }
+      this.search()
+    },
+    reset() {
+      this.searchForm.startDate = ''
+      this.searchForm.endDate = ''
+      this.value1 = []
+      this.search()
+    },
+  },
+}
+</script>
diff --git a/admin/src/views/business/bikeLocation.vue b/admin/src/views/business/bikeLocation.vue
index e3932e5..ec5987d 100644
--- a/admin/src/views/business/bikeLocation.vue
+++ b/admin/src/views/business/bikeLocation.vue
@@ -66,4 +66,7 @@
     this.search()
   }
 }
+/**
+ * 
+ */
 </script>
diff --git a/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java b/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
index 2fa0f30..067266d 100644
--- a/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
@@ -75,7 +75,7 @@
     public ApiResponse<PageData<ActionLog>> findPage (@RequestBody PageWrap<ActionLog> pageWrap) {
         return ApiResponse.success(actionLogService.findPage(pageWrap));
     }
-    @ApiOperation("鍒嗛〉鏌ヨ")
+    @ApiOperation("鍒嗛〉鏌ヨ-璋冩暣璁板綍")
     @PostMapping("/findRidePae")
     @RequiresPermissions("business:actionlog:query")
     public ApiResponse<PageData<ActionLog>> findRidePae (@RequestBody PageWrap<ActionLog> pageWrap) {
diff --git a/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java b/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
index f329cd4..c06e0d4 100644
--- a/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
@@ -3,6 +3,7 @@
 import com.doumee.api.BaseController;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.Constants;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -15,6 +16,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,7 +36,7 @@
     @ApiOperation("鏂板缓")
     @PostMapping("/create")
     @RequiresPermissions("business:pricingdetail:create")
-    public ApiResponse create(@RequestBody PricingDetail pricingDetail) {
+    public ApiResponse create(@RequestBody @Valid PricingDetail pricingDetail) {
         return ApiResponse.success(pricingDetailService.create(pricingDetail));
     }
 
@@ -87,4 +89,20 @@
     public ApiResponse findById(@PathVariable String id) {
         return ApiResponse.success(pricingDetailService.findById(id));
     }
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param pricePramId 瀹炰綋瀵硅薄
+     * @return List<PricingDetail>
+     */
+    @ApiOperation("鏍规嵁瀹氫环閰嶇疆ID鏌ヨ")
+    @GetMapping("/findListByPricePramId")
+    @RequiresPermissions("business:pricingdetail:query")
+    public ApiResponse<List<PricingDetail>> findList(@RequestParam String pricePramId){
+        PricingDetail pricingDetail = new PricingDetail();
+        pricingDetail.setPricePramId(pricePramId);
+        pricingDetail.setIsdeleted(Constants.ZERO);
+        return ApiResponse.success(pricingDetailService.findList(pricingDetail));
+    }
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
index e87fb89..2581f7a 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
@@ -10,6 +10,8 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -51,10 +53,12 @@
 
     @ApiModelProperty(value = "瀹氫环鏂规缂栫爜(鍏宠仈price_param)")
     @ExcelColumn(name="瀹氫环鏂规缂栫爜(鍏宠仈price_param)")
+    @NotBlank(message = "瀹氫环鏂规缂栫爜涓嶅厑璁镐负绌�")
     private String pricePramId;
 
     @ApiModelProperty(value = "杞﹁締绫诲瀷缂栫爜(鍏宠仈bike_types琛級")
     @ExcelColumn(name="杞﹁締绫诲瀷缂栫爜(鍏宠仈bike_types琛級")
+    @NotBlank(message = "杞﹁締绫诲瀷涓嶅厑璁镐负绌�")
     private String bikeTypeId;
 
     @ApiModelProperty(value = "杞﹁締绫诲瀷缂栫爜(鍏宠仈bike_types琛級")
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
index b274ad8..c07143d 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
@@ -45,28 +45,7 @@
     @Override
     public String create(PricingDetail pricingDetail) {
 
-        if ((pricingDetail.getBaseTime() < 0) &&
-                Objects.isNull(pricingDetail.getBasePrice())){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"涓�鍙d环浠锋牸涓嶅彲涓虹┖");
-        }
-
-        if ((pricingDetail.getBaseTime() > 0) &&
-                (Objects.isNull(pricingDetail.getBasePrice())
-                || Objects.isNull(pricingDetail.getUnitTime())
-                || Objects.isNull(pricingDetail.getUnitPrice()))){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"闃舵瀹氫环鍙傛暟涓嶅彲涓虹┖");
-        }
-
-        if ( Objects.isNull(pricingDetail.getBasePrice()) && (pricingDetail.getHolidayBasePrice().compareTo(BigDecimal.ZERO)<Constants.ZERO)
-                ){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鑺傚亣涓�鍙d环浠锋牸涓嶅彲涓虹┖");
-        }
-
-        if ((Objects.isNull(pricingDetail.getHolidayBasePrice())
-                        || Objects.isNull(pricingDetail.getHolidayBasePrice())
-                        || Objects.isNull(pricingDetail.getHolidayBasePrice()))&&(pricingDetail.getHolidayBasePrice().compareTo(BigDecimal.ZERO)>Constants.ZERO)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鑺傚亣闃舵瀹氫环鍙傛暟涓嶅彲涓虹┖");
-        }
+        checkPricingDetail(pricingDetail);
         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         PricingDetail insert = new PricingDetail();
         insert.setCreateDate(new Date());
@@ -90,6 +69,46 @@
         return pricingDetail.getId();
     }
 
+    private void checkPricingDetail(PricingDetail pricingDetail){
+        if ((Objects.nonNull(pricingDetail.getBaseTime()) &&  pricingDetail.getBaseTime() < 0) &&
+                Objects.isNull(pricingDetail.getBasePrice())){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"涓�鍙d环浠锋牸涓嶅彲涓虹┖");
+        }
+
+        if ((Objects.nonNull(pricingDetail.getBaseTime()) && pricingDetail.getBaseTime() > 0) &&
+                (Objects.isNull(pricingDetail.getBasePrice())
+                        || Objects.isNull(pricingDetail.getUnitTime())
+                        || Objects.isNull(pricingDetail.getUnitPrice()))){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"闃舵瀹氫环鍙傛暟涓嶅彲涓虹┖");
+        }
+
+        if ( (Objects.nonNull(pricingDetail.getHolidayBaseTime()) && pricingDetail.getHolidayBaseTime() < 0)
+                && ( Objects.isNull(pricingDetail.getHolidayBasePrice()))
+        ){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鑺傚亣涓�鍙d环浠锋牸涓嶅彲涓虹┖");
+        }
+
+        if (((Objects.nonNull(pricingDetail.getHolidayBaseTime()) && pricingDetail.getHolidayBaseTime() > 0))
+                && (Objects.isNull(pricingDetail.getHolidayBasePrice())
+                || Objects.isNull(pricingDetail.getHolidayUnitTime())
+                || Objects.isNull(pricingDetail.getHolidayUnitPrice()))){
+
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鑺傚亣闃舵瀹氫环鍙傛暟涓嶅彲涓虹┖");
+        }
+
+        QueryWrapper<PricingDetail> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .eq(PricingDetail::getIsdeleted,Constants.ZERO)
+                .eq(PricingDetail::getBikeTypeId,pricingDetail.getBikeTypeId())
+                .eq(PricingDetail::getPricePramId,pricingDetail.getPricePramId());
+        Integer exitCount = pricingDetailMapper.selectCount(wrapper);
+
+        if (exitCount > Constants.ZERO){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇ヨ溅鍨嬪凡閰嶇疆");
+        }
+
+    }
+
     @Override
     public void deleteById(String id) {
         pricingDetailMapper.deleteById(id);
@@ -111,6 +130,10 @@
 
     @Override
     public void updateById(PricingDetail pricingDetail) {
+        checkPricingDetail(pricingDetail);
+        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        pricingDetail.setEditDate(new Date());
+        pricingDetail.setEditor(principal.getId());
         pricingDetailMapper.updateById(pricingDetail);
     }
 
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
index a77d0db..48cfe8a 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
@@ -46,8 +46,9 @@
         insert.setEndDate(pricingParam.getEndDate());
         insert.setSortnum(pricingParam.getSortnum());
         insert.setStatus(Constants.ZERO);
-        pricingParamMapper.insert(pricingParam);
-        return pricingParam.getId();
+        insert.setInfo(pricingParam.getInfo());
+        pricingParamMapper.insert(insert);
+        return insert.getId();
     }
 
     @Override

--
Gitblit v1.9.3