jiangping
2023-10-12 7de15911c90c5861d6e26e29550b6c60b09952c7
修复
已修改3个文件
74 ■■■■■ 文件已修改
server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java
@@ -136,7 +136,7 @@
    private String pricingDetailId;
    @ApiModelProperty(value = "是否节假日 0不是 1是")
    private String isHoliday;
    private Integer isHoliday;
    @ApiModelProperty(value = "还车类型 0正常还车 1强制还车")
server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
@@ -9,6 +9,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -66,7 +68,7 @@
    @ApiModelProperty(value = "工作日起步价格(分)", example = "1")
    @ExcelColumn(name="工作日起步价格(分)")
    private Integer basePrice;
    private BigDecimal basePrice;
    @ApiModelProperty(value = "工作日超出时间(分钟)", example = "1")
    @ExcelColumn(name="工作日超出时间(分钟)")
@@ -74,7 +76,7 @@
    @ApiModelProperty(value = "工作日超出价格(分)", example = "1")
    @ExcelColumn(name="工作日超出价格(分)")
    private Integer unitPrice;
    private BigDecimal unitPrice;
    @ApiModelProperty(value = "节假日起步时间(分钟)", example = "1")
    @ExcelColumn(name="节假日起步时间(分钟)")
@@ -82,7 +84,7 @@
    @ApiModelProperty(value = "节假日起步价格(分)", example = "1")
    @ExcelColumn(name="节假日起步价格(分)")
    private Integer holidayBasePrice;
    private BigDecimal holidayBasePrice;
    @ApiModelProperty(value = "节假日超出时间(分钟)", example = "1")
    @ExcelColumn(name="节假日超出时间(分钟)")
@@ -90,7 +92,7 @@
    @ApiModelProperty(value = "节假日超出时间单价(分)", example = "1")
    @ExcelColumn(name="节假日超出时间单价(分)")
    private Integer holidayUnitPrice;
    private BigDecimal holidayUnitPrice;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -381,7 +381,6 @@
        if (memberRidesMapper.selectCount(new QueryWrapper<MemberRides>().eq("member_id", memberId).in("status", 0, 1)) > Constants.ZERO) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "存在骑行中车辆,无法扫码");
        }
        ;
        Locks locks = locksMapper.selectOne(new QueryWrapper<Locks>().eq("code", code).eq("isdeleted", Constants.ZERO).last("limit 1"));
        if (Objects.isNull(locks)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "扫码无效,未查询到锁头信息");
@@ -393,11 +392,13 @@
        if (StringUtils.isBlank(locks.getBikeCode())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "当前扫码锁头无车辆信息,无法进行开锁");
        }
        MemberRides memberRides = new MemberRides();
        //根据车型查询计价方案
        isValidePricingType(locks,memberRides) ;
        MqttLog flag = deviceService.openLock(locks);
        MemberRidesDetailResponse memberRidesDetailResponse = new MemberRidesDetailResponse();
        if (flag.getResult() == 0) {
            //存储骑行记录
            MemberRides memberRides = new MemberRides();
            memberRides.setId(Constants.getUUID());
            memberRides.setIsdeleted(Constants.ZERO);
            memberRides.setMemberId(memberId);
@@ -432,6 +433,63 @@
        return memberRidesDetailResponse;
    }
    private boolean isValidePricingType(Locks locks,MemberRides memberRides ) {
        Bikes bike= new Bikes();
        bike.setLockId(locks.getId());
        bike.setSiteId(locks.getSiteId());
        //查询车辆信息
        bike = bikesMapper.selectOne(new QueryWrapper<>(bike).last("limit 1"));
        if(bike == null && StringUtils.isBlank(bike.getParamId())){
            //如果车辆类型是空
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 该车型暂时不能借车操作哦,请更换其他车型重试!");
        }
        Date date =new Date();
        QueryWrapper<PricingParam> param = new QueryWrapper<>();
        param.lambda().eq(PricingParam::getStatus,Constants.ZERO);
        param.lambda().eq(PricingParam::getIsdeleted,Constants.ZERO);
        param.lambda().le(PricingParam::getStartDate,date);
        param.lambda().ge(PricingParam::getEndDate,date);
        param.lambda().last(" limit 1" ) ;
        param.lambda().orderByAsc(PricingParam::getSortnum);
        //查询优先级最高(排序码最小的)可用配价方案
        PricingParam pp = pricingParamMapper.selectOne(param);
        if(pp == null){
            //如果车辆未设置配价方案,提示开锁失败!
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 该车型暂时不能借车操作哦,请更换其他车型重试哦!");
        }
        QueryWrapper<PricingDetail> detail = new QueryWrapper<>();
        detail.lambda().eq(PricingDetail::getPricePramId,bike.getParamId());
        detail.lambda().eq(PricingDetail::getIsdeleted,Constants.ZERO);
        detail.lambda().last(" limit 1" ) ;
        //查询优先级最高(排序码最小的)可用配价方案
        PricingDetail pricingDetail = pricingDetailMapper.selectOne(detail);
        if(pricingDetail == null){
            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), " 该车型暂时不能借车操作哦,请更换其他车型重试哦~");
        }
        String nowDate = DateUtil.getDateLong(date);
        Holidays holidays = new Holidays();
        holidays.setHoliday(nowDate);
        holidays.setIsdeleted(Constants.ZERO);
        //检查是否节假日
        if(holidaysMapper.selectCount(new QueryWrapper<>(holidays)) >0){
            //如果是节假日
            memberRides.setBasePrice(pricingDetail.getHolidayBasePrice());
            memberRides.setBaseTime(pricingDetail.getHolidayBaseTime());
            memberRides.setUnitPrice(pricingDetail.getHolidayUnitPrice());
            memberRides.setUnitTime(pricingDetail.getHolidayUnitTime());
            memberRides.setIsHoliday(Constants.ONE);
        }else{
            //如果是工作日
            memberRides.setBasePrice(pricingDetail.getBasePrice());
            memberRides.setBaseTime(pricingDetail.getBaseTime());
            memberRides.setUnitPrice(pricingDetail.getUnitPrice());
            memberRides.setUnitTime(pricingDetail.getUnitTime());
            memberRides.setIsHoliday(Constants.ZERO);
        }
        return true;
    }
    @Override
    public MemberRidesDetailResponse refreshLock(String id){
        MemberRides memberRides = memberRidesMapper.selectById(id);