From c705665b4521552f4823f01a69a1da67b669528c Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Thu, 14 Jan 2021 17:40:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=81=9C=E8=AE=B0=E5=BD=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E6=94=B9=E6=88=90=E5=BC=B9=E7=AA=97=EF=BC=8C?= =?UTF-8?q?=E8=AF=81=E4=BB=B6=E9=AA=8C=E8=AF=81=E6=96=B9=E6=B3=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysOrderPauseController.java | 9 +++- .../custom/mapper/SysOrderPauseMapper.java | 8 +++ .../custom/service/ISysOrderPauseService.java | 7 +++ .../impl/SysCommissionDayServiceImpl.java | 41 ++++++++++---- .../impl/SysOrderPauseServiceImpl.java | 15 ++++++ .../mapper/custom/SysOrderPauseMapper.xml | 15 ++++++ stdiet-ui/src/utils/ruoyi.js | 18 +++++-- stdiet-ui/src/views/custom/customer/index.vue | 10 ++-- stdiet-ui/src/views/custom/order/index.vue | 27 +++++++++- .../src/views/custom/order/orderPause.vue | 54 +++++++++++++++---- 10 files changed, 171 insertions(+), 33 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java index 47be4db42..5c84378a5 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java @@ -1,6 +1,5 @@ package com.stdiet.web.controller.custom; -import java.text.SimpleDateFormat; import java.util.List; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -77,6 +76,10 @@ public class SysOrderPauseController extends BaseController @PostMapping public AjaxResult add(@RequestBody SysOrderPause sysOrderPause) { + int count = sysOrderPauseService.getCountByOrderIdAndPauseDate(sysOrderPause); + if(count > 0){ + return AjaxResult.error("时间范围重叠,请检查时间"); + } return toAjax(sysOrderPauseService.insertSysOrderPause(sysOrderPause)); } @@ -88,6 +91,10 @@ public class SysOrderPauseController extends BaseController @PutMapping public AjaxResult edit(@RequestBody SysOrderPause sysOrderPause) { + int count = sysOrderPauseService.getCountByOrderIdAndPauseDate(sysOrderPause); + if(count > 0){ + return AjaxResult.error("时间范围重叠,请检查时间"); + } return toAjax(sysOrderPauseService.updateSysOrderPause(sysOrderPause)); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java index ed18b78d8..8845ad381 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; import com.stdiet.custom.domain.SysOrderPause; +import org.apache.ibatis.annotations.Param; /** * 订单服务暂停Mapper接口 @@ -58,4 +59,11 @@ public interface SysOrderPauseMapper * @return 结果 */ public int deleteSysOrderPauseByIds(Long[] ids); + + /** + * 根据订单ID、时间范围查询数量 + * @param sysOrderPause + * @return + */ + int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java index bfcfdd83b..c2bd331e2 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java @@ -58,4 +58,11 @@ public interface ISysOrderPauseService * @return 结果 */ public int deleteSysOrderPauseById(Long id); + + /** + * 根据订单ID、时间范围查询数量 + * @param sysOrderPause + * @return + */ + int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java index 616534e38..c7941a128 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java @@ -67,12 +67,9 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { SysOrderPause sysOrderPause = new SysOrderPause(); sysOrderPause.setOrderId(orderId); List pausesList = sysOrderPauseMapper.selectSysOrderPauseList(sysOrderPause); - //每年每月暂停天数,key为年份加月份,如:2021年1月=20211 - Map everyYearMonthPauseDay = getEveryYearMonthPauseDay(pausesList); - //该笔订单暂停总天数 - int pauseTotalDay = getTotalByMap(everyYearMonthPauseDay); - - return getServerEndDate(DateUtils.dateToLocalDate(sysOrder.getStartTime()), sysOrder.getServeTimeId().intValue()/30, sysOrder.getGiveServeDay(), pauseTotalDay); + sysOrder.setOrderPauseList(pausesList); + SysOrderCommisionDayDetail sysOrderCommisionDayDetail = statisticsOrderMessage(sysOrder); + return sysOrderCommisionDayDetail.getServerEndDate(); } return null; } @@ -245,14 +242,16 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { int serverMonth = sysOrder.getServeTimeId().intValue()/30; //赠送时长 int giveDay = sysOrder.getGiveServeDay().intValue(); + //服务到期时间(加赠送时间,不加暂停时间) + LocalDate serverEndDate = serverStartDate.plusMonths(serverMonth).plusDays(giveDay); //订单金额 BigDecimal orderAmount = sysOrder.getAmount(); //每年每月暂停天数,key为年份加月份,如:2021年1月=20211 - Map everyYearMonthPauseDay = getEveryYearMonthPauseDay(sysOrder.getOrderPauseList()); + Map everyYearMonthPauseDay = getEveryYearMonthPauseDay(sysOrder.getOrderPauseList(), serverStartDate, serverEndDate); //该笔订单暂停总天数 int pauseTotalDay = getTotalByMap(everyYearMonthPauseDay); - //根据开始时间、服务月数、赠送天数、暂停天数算出该笔订单服务到期时间 - LocalDate serverEndDate = getServerEndDate(serverStartDate, serverMonth, giveDay, pauseTotalDay); + //服务到期时间加上暂停时间 + serverEndDate = serverEndDate.plusDays(pauseTotalDay); //计算每年每月服务天数 Map everyYearMonthServerDay = getEveryYearMonthDayCount(serverStartDate, serverEndDate, everyYearMonthPauseDay); //服务总天数 @@ -282,25 +281,45 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { * 获取每年每月暂停天数 * @Param list 暂停记录集合 * */ - public Map getEveryYearMonthPauseDay(List list){ + public Map getEveryYearMonthPauseDay(List list, LocalDate serverStartDate, LocalDate serverEndDate){ Map pauseMap = new TreeMap<>(new MyComparator()); + if(list == null){ + return pauseMap; + } for (SysOrderPause sysOrderPause : list) { if(sysOrderPause.getPauseStartDate() == null || sysOrderPause.getPauseEndDate() == null){ continue; } LocalDate pauseStartDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseStartDate()); LocalDate pauseEndDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseEndDate()); + //判断暂停时间段是否在服务周期范围内 + if(ChronoUnit.DAYS.between(pauseEndDate, serverStartDate) > 0 || ChronoUnit.DAYS.between(serverEndDate, pauseStartDate) > 0){ + continue; + } + if(ChronoUnit.DAYS.between(pauseStartDate, serverStartDate) > 0){ + pauseStartDate = serverStartDate; + } + if(ChronoUnit.DAYS.between(serverEndDate, pauseEndDate) > 0){ + pauseEndDate = serverEndDate; + } //根据暂停记录获取该条记录在每年每月的暂停天数 Map orderYearMonthPauseDay = getEveryYearMonthDayCount(pauseStartDate, pauseEndDate, null); + int totalDay = 0; //每条暂停记录的暂停天数进行汇总 for (String key : orderYearMonthPauseDay.keySet()) { + totalDay += orderYearMonthPauseDay.get(key).intValue(); if(pauseMap.containsKey(key)){ pauseMap.put(key, pauseMap.get(key) + orderYearMonthPauseDay.get(key)); }else{ pauseMap.put(key, orderYearMonthPauseDay.get(key)); } } + //服务到期时间刷新 + serverEndDate = serverEndDate.plusDays(totalDay); } + /*for(String key : pauseMap.keySet()){ + System.out.println(key+":"+pauseMap.get(key).intValue()); + }*/ return pauseMap; } @@ -422,5 +441,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { System.out.println(localDate.getDayOfMonth()); System.out.println(localDate.getDayOfWeek()); System.out.println(localDate.getDayOfYear()); + + System.out.println(ChronoUnit.DAYS.between(LocalDate.of(2021, 1,14), LocalDate.now())); } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java index 971676220..8c70e5271 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java @@ -1,7 +1,10 @@ package com.stdiet.custom.service.impl; +import java.time.LocalDate; +import java.util.Date; import java.util.List; import com.stdiet.common.utils.DateUtils; +import com.stdiet.custom.service.ISysCommissionDayService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.stdiet.custom.mapper.SysOrderPauseMapper; @@ -20,6 +23,9 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService @Autowired private SysOrderPauseMapper sysOrderPauseMapper; + @Autowired + private ISysCommissionDayService sysCommissionDayService; + /** * 查询订单服务暂停 * @@ -93,4 +99,13 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService { return sysOrderPauseMapper.deleteSysOrderPauseById(id); } + + /** + * 根据订单ID、时间范围查询数量 + * @param sysOrderPause + * @return + */ + public int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause){ + return sysOrderPauseMapper.getCountByOrderIdAndPauseDate(sysOrderPause); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml index c0accccc4..0bd2ad5ad 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml @@ -18,6 +18,10 @@ + + id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag + + select id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag from sys_order_pause sop @@ -97,4 +101,15 @@ + + + \ No newline at end of file diff --git a/stdiet-ui/src/utils/ruoyi.js b/stdiet-ui/src/utils/ruoyi.js index 442a66f0a..60ca0d6db 100644 --- a/stdiet-ui/src/utils/ruoyi.js +++ b/stdiet-ui/src/utils/ruoyi.js @@ -272,11 +272,15 @@ export function validatorIDCard(idcode, type) { return {code: 1, msg: '校验通过'}; } }else if(type === 4){ - if(idcode != null && idcode != undefined && idcode.trim() != ""){ - //暂时先放开 - return {code: 1, msg: '校验通过'}; - } - return {code: -1, msg: '护照号格式不正确'}; + // 护照 + // 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等 + // 样本: 141234567, G12345678, P1234567 + var reg = /^([a-zA-z]|[0-9]){5,17}$/; + if (reg.test(idcode) === false) { + return {code: -1, msg: '护照号不合规'}; + } else { + return {code: 1, msg: '校验通过'}; + } } else if (type === 5) { // 军官证 @@ -291,3 +295,7 @@ export function validatorIDCard(idcode, type) { } } +export function isPassPortCard(card) { + +} + diff --git a/stdiet-ui/src/views/custom/customer/index.vue b/stdiet-ui/src/views/custom/customer/index.vue index 134362012..8a1c6e99e 100644 --- a/stdiet-ui/src/views/custom/customer/index.vue +++ b/stdiet-ui/src/views/custom/customer/index.vue @@ -74,16 +74,16 @@ - + - + - - + +