jiangping
2023-10-13 36e617a6f1bfdec28104a1fa427b9e5d189213c6
Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/parkBike into dev
已添加6个文件
已修改6个文件
320 ■■■■■ 文件已修改
admin/src/api/business/actionLog.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/backgroundRefund.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/assets/images/404-tip.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/assets/images/404.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/actionLog.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/backgroundRefund.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/bikeLocation.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/ActionLogController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
  })
}
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
  })
}
admin/src/assets/images/404-tip.png
admin/src/assets/images/404.png
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>
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>
admin/src/views/business/bikeLocation.vue
@@ -66,4 +66,7 @@
    this.search()
  }
}
/**
 *
 */
</script>
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) {
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));
    }
}
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表)")
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(),"一口价价格不可为空");
        }
        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(),"节假一口价价格不可为空");
        }
        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(),"一口价价格不可为空");
        }
        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(),"节假一口价价格不可为空");
        }
        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);
    }
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