暂停记录优化,改成弹窗,证件验证方法优化

This commit is contained in:
xiezhijun
2021-01-14 17:40:19 +08:00
parent 0857197c65
commit c705665b45
10 changed files with 171 additions and 33 deletions

View File

@ -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);
}

View File

@ -58,4 +58,11 @@ public interface ISysOrderPauseService
* @return 结果
*/
public int deleteSysOrderPauseById(Long id);
/**
* 根据订单ID、时间范围查询数量
* @param sysOrderPause
* @return
*/
int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause);
}

View File

@ -67,12 +67,9 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
SysOrderPause sysOrderPause = new SysOrderPause();
sysOrderPause.setOrderId(orderId);
List<SysOrderPause> pausesList = sysOrderPauseMapper.selectSysOrderPauseList(sysOrderPause);
//每年每月暂停天数key为年份加月份如:2021年1月=20211
Map<String, Integer> 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<String, Integer> everyYearMonthPauseDay = getEveryYearMonthPauseDay(sysOrder.getOrderPauseList());
Map<String, Integer> everyYearMonthPauseDay = getEveryYearMonthPauseDay(sysOrder.getOrderPauseList(), serverStartDate, serverEndDate);
//该笔订单暂停总天数
int pauseTotalDay = getTotalByMap(everyYearMonthPauseDay);
//根据开始时间、服务月数、赠送天数、暂停天数算出该笔订单服务到期时间
LocalDate serverEndDate = getServerEndDate(serverStartDate, serverMonth, giveDay, pauseTotalDay);
//服务到期时间加上暂停时间
serverEndDate = serverEndDate.plusDays(pauseTotalDay);
//计算每年每月服务天数
Map<String, Integer> everyYearMonthServerDay = getEveryYearMonthDayCount(serverStartDate, serverEndDate, everyYearMonthPauseDay);
//服务总天数
@ -282,25 +281,45 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
* 获取每年每月暂停天数
* @Param list 暂停记录集合
* */
public Map<String, Integer> getEveryYearMonthPauseDay(List<SysOrderPause> list){
public Map<String, Integer> getEveryYearMonthPauseDay(List<SysOrderPause> list, LocalDate serverStartDate, LocalDate serverEndDate){
Map<String, Integer> 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<String, Integer> 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()));
}
}

View File

@ -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);
}
}

View File

@ -18,6 +18,10 @@
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="baseSelectField">
id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag
</sql>
<sql id="selectSysOrderPauseVo">
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
</sql>
@ -97,4 +101,15 @@
</foreach>
</update>
<!-- 根据订单ID、时间范围查询数量 -->
<select id="getCountByOrderIdAndPauseDate" parameterType="SysOrderPause" resultType="int">
select count(id) from sys_order_pause where del_flag = 0 and order_id = #{orderId}
AND (#{pauseStartDate} >= pause_start_date AND pause_end_date >= #{pauseStartDate}
OR #{pauseEndDate} >= pause_start_date AND pause_end_date >= #{pauseEndDate})
<if test="id != null">
and id <![CDATA[ <> ]]> #{id}
</if>
order by id desc
</select>
</mapper>