Commit 9a822bc3 authored by unset's avatar unset

Merge branch 'master-vehicle-price' into dev-tiande

# Conflicts:
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
parents a7894d1f 9571e0db
package com.github.wxiaoqi.security.common.biz; package com.github.wxiaoqi.security.common.biz;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
...@@ -10,12 +11,16 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO; ...@@ -10,12 +11,16 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.Fn;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.function.Supplier;
/** /**
* Created by Mr.AG * Created by Mr.AG
...@@ -27,6 +32,9 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -27,6 +32,9 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
@Autowired @Autowired
protected M mapper; protected M mapper;
//第二个泛型class
protected Class<T> entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
public void setMapper(M mapper) { public void setMapper(M mapper) {
this.mapper = mapper; this.mapper = mapper;
} }
...@@ -35,11 +43,69 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -35,11 +43,69 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
return mapper.selectOne(entity); return mapper.selectOne(entity);
} }
public WeekendSqls<T> newWeekendSql() {
return WeekendSqls.<T>custom();
}
public T selectById(Object id) { public T selectById(Object id) {
return mapper.selectByPrimaryKey(id); return mapper.selectByPrimaryKey(id);
} }
public void updateByWeekendSelective(T target, Function<WeekendSqls<T>, WeekendSqls<T>> where) {
WeekendSqls whereSqls = where.apply(WeekendSqls.<T>custom());
Example.Builder builder = new Example.Builder(entityClass)
.where(whereSqls);
Example example = builder.build();
mapper.updateByExampleSelective(target, example);
}
public List<T> selectByWeekend(Function<WeekendSqls<T>, WeekendSqls<T>> where, String orderStr) {
WeekendSqls whereSqls = where.apply(WeekendSqls.<T>custom());
Example.Builder builder = new Example.Builder(entityClass)
.where(whereSqls);
Example example = builder.build();
if(StrUtil.isNotBlank(orderStr)) {
example.setOrderByClause(orderStr);
}
return selectByExample(example);
}
public List<T> selectByWeekendsOr(Supplier<List<WeekendSqls<T>>> where, String orderStr) {
List<WeekendSqls<T>> whereSqlss = where.get();
Example.Builder builder = new Example.Builder(entityClass);
for(WeekendSqls weekendSqls : whereSqlss) {
builder.andWhere(weekendSqls);
}
Example example = builder.build();
if(StrUtil.isNotBlank(orderStr)) {
example.setOrderByClause(orderStr);
}
return selectByExample(example);
}
public List<T> selectByWeekend(Function<WeekendSqls<T>, WeekendSqls<T>> where) {
return selectByWeekend(where, null);
}
public List<T> selectByAttrs(Fn<T, Object> attrFn, List attrFnList) {
return selectByExample(new Example.Builder(entityClass)
.where(WeekendSqls.<T>custom().andIn(attrFn, attrFnList)).build());
}
public List<T> selectBetween(Fn<T, Object> attrFn, Object start, Object end) {
return selectBetween(attrFn, start, end, null);
}
public List<T> selectBetween(Fn<T, Object> attrFn, Object start, Object end, Fn<T, Object> deleteAttrFn) {
WeekendSqls<T> weekendSqls = WeekendSqls.<T>custom()
.andGreaterThanOrEqualTo(attrFn, start)
.andLessThanOrEqualTo(attrFn, end);
if(null != deleteAttrFn) {
weekendSqls.andEqualTo(deleteAttrFn, 0);
}
return selectByExample(new Example.Builder(entityClass)
.where(weekendSqls).build());
}
public List<T> selectList(T entity) { public List<T> selectList(T entity) {
return mapper.select(entity); return mapper.select(entity);
......
...@@ -8,6 +8,7 @@ import com.xxfc.platform.order.entity.OrderItem; ...@@ -8,6 +8,7 @@ import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO; import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO; import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -68,12 +69,24 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -68,12 +69,24 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private Date startDate; private Date startDate;
/** /**
* 开始时间 * 结束时间
*/ */
private Date endDate; private Date endDate;
/**
* 开始时间字符串
*/
private String startDateStr;
/**
* 结束时间字符串
*/
private String endDateStr;
public void initDate() { public void initDate() {
this.startDate = DateUtil.date(getStartTime()); this.startDate = DateUtil.date(getStartTime());
this.endDate = DateUtil.date(getEndTime()); this.endDate = DateUtil.date(getEndTime());
this.startDateStr = DateUtil.formatDate(this.startDate);
this.startDateStr = DateUtil.formatDate(this.endDate);
} }
} }
...@@ -124,6 +124,9 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{ ...@@ -124,6 +124,9 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
@ApiModelProperty(value = "随车物品", hidden = true) @ApiModelProperty(value = "随车物品", hidden = true)
private List<OrderAccompanyDTO> accompanyItems; private List<OrderAccompanyDTO> accompanyItems;
@ApiModelProperty(value = "车辆id")
private String vehicleId;
public void setStartTime(Long startTime) { public void setStartTime(Long startTime) {
this.startTime = startTime; this.startTime = startTime;
this.bookStartDate = YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8))); this.bookStartDate = YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8)));
......
...@@ -35,6 +35,7 @@ import com.xxfc.platform.vehicle.common.RestResponse; ...@@ -35,6 +35,7 @@ import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.AccompanyingItemType; import com.xxfc.platform.vehicle.constant.AccompanyingItemType;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO; import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
...@@ -309,7 +310,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -309,7 +310,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData(); VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
detail.initDate(); detail.initDate();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData(); List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getByVehicleIdFeign(detail.getVehicleId(), detail.getStartDateStr(), detail.getEndDateStr(), dto.getUserid(), detail.getStartCompanyId()).getData();
// List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData();
// List<VehicleModelCalendarPriceDTO> metaVmcpds;
// for (VehicleHolidayPriceInfo vhpi : vhpis) {
// vhpi.getAllModelUse()
// }
List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds); List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds);
...@@ -333,17 +339,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -333,17 +339,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
} }
// //循环价格列表 获得对应消耗的免费天数 // //循环价格列表 获得对应消耗的免费天数
// for(VehicleModelCalendarPriceDTO vmcpd : vmcpds) {
// //如果新的相加消耗天数 大于 拥有天数
// if(freeDayNum+ vmcpd.getFreeDays() > dto.getRentFreeDays()) {
// //freeDayNum = dto.getRentFreeDays();
// break;
// }else {
// freeDayNum += detail.getDayNum();
// cutDayNum += 1;
// }
// }
// vehicleOrderItem.setCutNum(cutDayNum);
vehicleOrderItem.initDetail(dto.getRentFreeDays()); vehicleOrderItem.initDetail(dto.getRentFreeDays());
freeDayNum = vehicleOrderItem.getCutNum(); freeDayNum = vehicleOrderItem.getCutNum();
offsetNum = vehicleOrderItem.getOffsetNum(); offsetNum = vehicleOrderItem.getOffsetNum();
...@@ -367,25 +362,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -367,25 +362,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
String[] prices = StrUtil.isBlank(vehicleModel.getRentDiscountPrice()) String[] prices = StrUtil.isBlank(vehicleModel.getRentDiscountPrice())
?new String[]{vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString()} ?new String[]{vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString()}
:vehicleModel.getRentDiscountPrice().split(","); :vehicleModel.getRentDiscountPrice().split(",");
// HandleDiscountDTO handleDiscountDTO = new HandleDiscountDTO();
// handleDiscountDTO.setRebate(100);
// handleDiscountDTO.setModelAmount(vehicleModel.getPrice());
// switch (MemberEnum.getByCode(dto.getMemberLevel())) {
// case NORMAL:
// handleDiscountDTO = handleDiscount(dto, vehicleModel, prices, NORMAL);
// detail.getOrder().setHasMemberRight(SYS_TRUE);
// break;
// case GOLD:
// handleDiscountDTO = handleDiscount(dto, vehicleModel, prices, GOLD);
// detail.getOrder().setHasMemberRight(SYS_TRUE);
// break;
// case DIAMOND:
// handleDiscountDTO = handleDiscount(dto, vehicleModel, prices, DIAMOND);
// detail.getOrder().setHasMemberRight(SYS_TRUE);
// break;
// default:
// break;
// }
//设置是否使用会员权益 //设置是否使用会员权益
for(VMCalendarPriceCostDTO vmcpcd : vehicleOrderItem.getVehicleDetail()) { for(VMCalendarPriceCostDTO vmcpcd : vehicleOrderItem.getVehicleDetail()) {
if(!vmcpcd.getNo_discount_price().equals(vmcpcd.getPrice())) { if(!vmcpcd.getNo_discount_price().equals(vmcpcd.getPrice())) {
...@@ -395,7 +371,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -395,7 +371,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
} }
detail.setRebate(dto.getDiscount()); detail.setRebate(dto.getDiscount());
// vehicleOrderItem.setUnitPrice(handleDiscountDTO.getModelAmount());
} }
//计算价格 //计算价格
...@@ -577,6 +552,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -577,6 +552,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setNumberPlate(numberPlate); rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status); rentVehicleBookDTO.setStatus(status);
rentVehicleBookDTO.setUseType(detail.getUseType()); rentVehicleBookDTO.setUseType(detail.getUseType());
rentVehicleBookDTO.setVehicleId(detail.getVehicleId());
if (detail.getRentFreeDay() > 0) {//使用了免费天数 if (detail.getRentFreeDay() > 0) {//使用了免费天数
rentVehicleBookDTO.setMemberUse(detail.getAppUserDTO().getMemberType()); rentVehicleBookDTO.setMemberUse(detail.getAppUserDTO().getMemberType());
} }
......
...@@ -220,6 +220,10 @@ public interface VehicleFeign { ...@@ -220,6 +220,10 @@ public interface VehicleFeign {
@GetMapping("/branchCompany/compnays_area") @GetMapping("/branchCompany/compnays_area")
public List<BranchCompanyAreaDTO> findBranchCompnayAreaByIds(@RequestParam("companyIds") List<Integer> compnayIds); public List<BranchCompanyAreaDTO> findBranchCompnayAreaByIds(@RequestParam("companyIds") List<Integer> compnayIds);
@GetMapping(value = "/vehicleHolidayPriceInfo/getByVehicleIdFeign")
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getByVehicleIdFeign(
@RequestParam("vehicleId") String vehicleId, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate, @RequestParam("userId") Integer userId, @RequestParam("companyId") Integer companyId);
@ApiOperation("列表") @ApiOperation("列表")
@RequestMapping(value = "company/info/app/unauth/listByIds", method = RequestMethod.POST) @RequestMapping(value = "company/info/app/unauth/listByIds", method = RequestMethod.POST)
ObjectRestResponse<List<CompanyInfo>> listByIds(@RequestBody CompanyInfoFindDTO companyInfoFindDTO); ObjectRestResponse<List<CompanyInfo>> listByIds(@RequestBody CompanyInfoFindDTO companyInfoFindDTO);
......
...@@ -107,6 +107,9 @@ public class RentVehicleBookDTO extends PageParam { ...@@ -107,6 +107,9 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("会员免费类型") @ApiModelProperty("会员免费类型")
Integer memberUse; Integer memberUse;
@ApiModelProperty("车辆id")
String vehicleId;
/** /**
* 用途 1 租车 * 用途 1 租车
*/ */
......
...@@ -15,6 +15,8 @@ public class UsableVehicleModelVO { ...@@ -15,6 +15,8 @@ public class UsableVehicleModelVO {
@ApiModelProperty(value = "车型信息") @ApiModelProperty(value = "车型信息")
VehicleModel vehicleModel; VehicleModel vehicleModel;
private String vehicleIds;
@ApiModelProperty(value = "公司信息") @ApiModelProperty(value = "公司信息")
BranchCompany company; BranchCompany company;
......
package com.xxfc.platform.vehicle.pojo.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class VehicleHolidayPriceInfoVo {
private Integer festivalId;
private String festivalDay;
private String startTime;
private String endTime;
private BigDecimal rentPrice;
private Integer rentFreeDay;
}
package com.xxfc.platform.vehicle.pojo.vo;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import lombok.Data;
import java.util.List;
@Data
public class VehicleVO extends Vehicle {
private List<VehicleModelCalendarPriceDTO> priceDTOS;
}
\ No newline at end of file
...@@ -2,12 +2,19 @@ package com.xxfc.platform.vehicle.biz; ...@@ -2,12 +2,19 @@ package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.vehicle.entity.Vehicle; import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleCommonPriceInfo;
import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo; import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo;
import com.xxfc.platform.vehicle.mapper.VehicleHolidayPriceInfoMapper; import com.xxfc.platform.vehicle.mapper.VehicleHolidayPriceInfoMapper;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatter;
...@@ -15,10 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -15,10 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Set;
/** /**
* 车辆节假日价格信息表 * 车辆节假日价格信息表
...@@ -28,13 +33,30 @@ import java.util.Set; ...@@ -28,13 +33,30 @@ import java.util.Set;
* @date 2020-05-11 09:16:23 * @date 2020-05-11 09:16:23
*/ */
@Service @Service
@Slf4j
public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoMapper, VehicleHolidayPriceInfo> { public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoMapper, VehicleHolidayPriceInfo> {
private static final Integer DEFAULT_DISCOUNT = 100;
private static final Integer DEFAULT_FREE_DAYS = 1;
private static final Integer DEFAULT_MEMBER_LEVEL = 0;
private static final Integer DEFAULT_MEMBER_TYPE = 0;
private static final Integer MEMBER_TYPE_ALL = 1;
private static final Integer MEMBER_TYPE_REGISTER = 2;
private static final Integer MEMBER_TYPE_EXCHANGE = 3;
private static final Integer MEMBER_TYPE_FORBID = 4;
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
@Autowired @Autowired
VehicleBiz vehicleBiz; VehicleBiz vehicleBiz;
@Autowired
UserFeign userFeign;
@Autowired
VehicleCommonPriceInfoBiz vehicleCommonPriceInfoBiz;
public ObjectRestResponse addOrUpdate(VehicleHolidayPriceInfo vehicleHolidayPriceInfo ) { public ObjectRestResponse addOrUpdate(VehicleHolidayPriceInfo vehicleHolidayPriceInfo ) {
if (vehicleHolidayPriceInfo == null) { if (vehicleHolidayPriceInfo == null) {
return ObjectRestResponse.paramIsEmpty(); return ObjectRestResponse.paramIsEmpty();
...@@ -116,6 +138,87 @@ public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoM ...@@ -116,6 +138,87 @@ public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoM
return mapper.selectByExample(example); return mapper.selectByExample(example);
} }
public List<VehicleModelCalendarPriceDTO> getSynthesizePrice (String vehicleId, String startDate, String endDate, Integer userId, Integer companyId) {
List<VehicleModelCalendarPriceDTO> priceDTOS = CollUtil.newArrayList();
cn.hutool.core.date.DateTime beginOfStartDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
cn.hutool.core.date.DateTime endOfStartDate = DateUtil.endOfDay(DateUtil.parse(endDate));
//获取基本和周末价格
VehicleCommonPriceInfo vehicleCommonPriceInfo = vehicleCommonPriceInfoBiz.selectOne(new VehicleCommonPriceInfo(){{
setCompanyId(companyId);
setVehicleId(vehicleId);
}});
//Date currentDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
for(cn.hutool.core.date.DateTime currentDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
(currentDate.isAfterOrEquals(beginOfStartDate) || currentDate.isBeforeOrEquals(endOfStartDate));
currentDate = DateUtil.offsetDay(currentDate, 1)) {
cn.hutool.core.date.DateTime finalCurrentDate = currentDate;
VehicleModelCalendarPriceDTO dto = new VehicleModelCalendarPriceDTO(){{
setDate(DateUtil.beginOfDay(finalCurrentDate));
}};
if(currentDate.isWeekend()) {
dto.setNo_discount_price(vehicleCommonPriceInfo.getRentWeekendPrice());
dto.setPrice(vehicleCommonPriceInfo.getRentWeekendPrice());
dto.setFreeDays(vehicleCommonPriceInfo.getRentWeekendDay());
}else {
dto.setNo_discount_price(vehicleCommonPriceInfo.getRentPrice());
dto.setPrice(vehicleCommonPriceInfo.getRentPrice());
dto.setFreeDays(vehicleCommonPriceInfo.getRentFreeDay());
}
priceDTOS.add(dto);
}
//获取节假日价格
List<VehicleHolidayPriceInfo> vehicleHolidayPriceInfoList = getByVehicleIdAndDate(vehicleId, startDate, endDate);
if(CollUtil.isNotEmpty(vehicleHolidayPriceInfoList)) {
vehicleHolidayPriceInfoList.forEach(info -> {
priceDTOS.forEach(tmpDto -> {
if(DateUtil.isSameDay(info.getFestivalDate(), tmpDto.getDate())) {
tmpDto.setNo_discount_price(info.getRentPrice());
tmpDto.setPrice(info.getRentPrice());
tmpDto.setFreeDays(info.getRentFreeDay());
}
});
});
}
//获取会员折扣
//查询车辆信息
Vehicle vehicle = vehicleBiz.selectById(vehicleId);
//查询会员信息
//默认折扣
Integer discount = DEFAULT_DISCOUNT;
//会员默认等级
Integer memberLevel = DEFAULT_MEMBER_LEVEL;
Integer memberType = DEFAULT_MEMBER_TYPE;
if (Objects.nonNull(userId)) {
BaseUserMember baseUserMember = userFeign.findBaseUserMemberByUserId(userId.intValue());
log.info("用户会员信息:【{}】",baseUserMember);
discount = baseUserMember == null ? discount : baseUserMember.getDiscount();
memberLevel = baseUserMember == null ? memberLevel : baseUserMember.getMemberLevel();
memberType = baseUserMember == null ? memberType : baseUserMember.getMemberType();
}
//非会员禁用 非无会员
if(vehicle.getMemberUse() != MEMBER_TYPE_FORBID && DEFAULT_MEMBER_TYPE != memberType) {
//判断 允许所有会员,或者 memberType 和 车辆memberUse 相等
if(vehicle.getMemberUse().equals(MEMBER_TYPE_ALL) || (vehicle.getMemberUse().equals(memberType))) {
//设置会员价格
Integer finalDiscount = discount;
priceDTOS.forEach(dto -> {
dto.setPrice(dto.getNo_discount_price()
.multiply(new BigDecimal(""+ finalDiscount)
.divide(new BigDecimal("100"))));
});
}
}
return priceDTOS;
}
//获取当前车辆所有的节日价格 //获取当前车辆所有的节日价格
public ObjectRestResponse<List<VehicleHolidayPriceInfo>> getByVehicleId (String vehicleId) { public ObjectRestResponse<List<VehicleHolidayPriceInfo>> getByVehicleId (String vehicleId) {
...@@ -125,6 +228,10 @@ public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoM ...@@ -125,6 +228,10 @@ public class VehicleHolidayPriceInfoBiz extends BaseBiz<VehicleHolidayPriceInfoM
} }
public ObjectRestResponse getAll(Integer festivalId) {
return ObjectRestResponse.succ(mapper.getAll(festivalId));
}
public static Set<String> getAllDate(String startDate, String endDate) { public static Set<String> getAllDate(String startDate, String endDate) {
......
package com.xxfc.platform.vehicle.mapper; package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo; import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo;
import com.xxfc.platform.vehicle.pojo.vo.VehicleHolidayPriceInfoVo;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 车辆节假日价格信息表 * 车辆节假日价格信息表
* *
...@@ -11,5 +14,5 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,5 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2020-05-11 09:16:23 * @date 2020-05-11 09:16:23
*/ */
public interface VehicleHolidayPriceInfoMapper extends Mapper<VehicleHolidayPriceInfo> { public interface VehicleHolidayPriceInfoMapper extends Mapper<VehicleHolidayPriceInfo> {
List<VehicleHolidayPriceInfoVo> getAll(Integer festivalId);
} }
package com.xxfc.platform.vehicle.rest; package com.xxfc.platform.vehicle.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
...@@ -21,8 +22,10 @@ import com.xxfc.platform.vehicle.constant.VehicleMemberType; ...@@ -21,8 +22,10 @@ import com.xxfc.platform.vehicle.constant.VehicleMemberType;
import com.xxfc.platform.vehicle.entity.Vehicle; import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.pojo.*; import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -33,6 +36,7 @@ import java.time.LocalDateTime; ...@@ -33,6 +36,7 @@ import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*; import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP; import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP;
...@@ -123,7 +127,22 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements ...@@ -123,7 +127,22 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
} }
//设置显示是否有车 //设置显示是否有车
dto.setYearNo4Where(Boolean.TRUE); dto.setYearNo4Where(Boolean.TRUE);
return ObjectRestResponse.succ(vehicleBiz.searchUsableModel(dto)); PageDataVO<UsableVehicleModelVO> uvmvpdvs = vehicleBiz.searchUsableModel(dto);
// if(CollUtil.isNotEmpty(uvmvpdvs.getData())){
// uvmvpdvs.getData().forEach(data -> {
// if(StrUtil.isNotBlank(data.getVehicleIds())) {
// String[] strs = StrUtil.split(data.getVehicleIds(), ",");
// List<Vehicle> vehicleList = vehicleBiz.selectByWeekend(w -> {
// w.andIn(Vehicle::getId, CollUtil.toList(strs));
// return w;
// });
// vehicleList.forEach(vehicle -> {
// baseBiz
// });
// }
// });
// }
return ObjectRestResponse.succ(uvmvpdvs);
} }
/** /**
...@@ -181,6 +200,8 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements ...@@ -181,6 +200,8 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
setIsDel(SYS_FALSE); setIsDel(SYS_FALSE);
}}); }});
bookVehicleId = vehicle.getId(); bookVehicleId = vehicle.getId();
}else if(null != dto.getVehicleId()){
bookVehicleId = dto.getVehicleId();
}else { }else {
dto.setLimit(1); dto.setLimit(1);
dto.setPage(1); dto.setPage(1);
......
package com.xxfc.platform.vehicle.rest; package com.xxfc.platform.vehicle.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleHolidayPriceInfoBiz; import com.xxfc.platform.vehicle.biz.VehicleHolidayPriceInfoBiz;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo; import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
@RequestMapping("vehicleHolidayPriceInfo") @RequestMapping("vehicleHolidayPriceInfo")
public class VehicleHolidayPriceInfoController extends BaseController<VehicleHolidayPriceInfoBiz, VehicleHolidayPriceInfo> { public class VehicleHolidayPriceInfoController extends BaseController<VehicleHolidayPriceInfoBiz, VehicleHolidayPriceInfo> {
@Autowired
VehicleBiz vehicleBiz;
@PostMapping(value = "/saveOrUpdate") @PostMapping(value = "/saveOrUpdate")
public ObjectRestResponse saveOrUpdate(@RequestBody VehicleHolidayPriceInfo vehicleHolidayPriceInfo) { public ObjectRestResponse saveOrUpdate(@RequestBody VehicleHolidayPriceInfo vehicleHolidayPriceInfo) {
return baseBiz.addOrUpdate(vehicleHolidayPriceInfo); return baseBiz.addOrUpdate(vehicleHolidayPriceInfo);
...@@ -20,6 +34,40 @@ public class VehicleHolidayPriceInfoController extends BaseController<VehicleHol ...@@ -20,6 +34,40 @@ public class VehicleHolidayPriceInfoController extends BaseController<VehicleHol
return ObjectRestResponse.succ(baseBiz.getByVehicleIdAndDate(vehicleId, startDate, endDate)); return ObjectRestResponse.succ(baseBiz.getByVehicleIdAndDate(vehicleId, startDate, endDate));
} }
@GetMapping(value = "getByVehicleIdFeign")
@IgnoreUserToken
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getByVehicleIdFeign(String vehicleId, String startDate, String endDate, Integer userId, Integer companyId) {
return ObjectRestResponse.succ(baseBiz.getSynthesizePrice(vehicleId, startDate, endDate, userId, companyId));
}
@GetMapping(value = "calendarPrice")
@IgnoreUserToken
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> calendarPrice(String vehicleId, String startDate, String endDate, Integer companyId) {
Integer userId = Integer.valueOf(getCurrentUserId());
return ObjectRestResponse.succ(baseBiz.getSynthesizePrice(vehicleId, startDate, endDate, userId, companyId));
}
@GetMapping(value = "multiCalendarPrice")
@IgnoreUserToken
public ObjectRestResponse<List<VehicleVO>> multiCalendarPrice(String vehicleIds, String startDate, String endDate, Integer companyId) {
Integer userId = Integer.valueOf(getCurrentUserId());
List<VehicleVO> vehicleVOS = CollUtil.newArrayList();
if(StrUtil.isNotBlank(vehicleIds)) {
String[] strs = StrUtil.split(vehicleIds, ",");
List<Vehicle> vehicleList = vehicleBiz.selectByWeekend(w -> {
w.andIn(Vehicle::getId, CollUtil.toList(strs));
return w;
});
for (Vehicle vehicle : vehicleList) {
VehicleVO vehicleVO = BeanUtil.toBean(vehicle, VehicleVO.class);
vehicleVO.setPriceDTOS(baseBiz.getSynthesizePrice(vehicle.getId(), startDate, endDate, userId, companyId));
vehicleVOS.add(vehicleVO);
}
}
return ObjectRestResponse.succ(vehicleVOS);
}
@GetMapping(value = "getAllByVehicleId") @GetMapping(value = "getAllByVehicleId")
public ObjectRestResponse getAllByVehicleId(String vehicleId) { public ObjectRestResponse getAllByVehicleId(String vehicleId) {
return baseBiz.getByVehicleId(vehicleId); return baseBiz.getByVehicleId(vehicleId);
...@@ -29,4 +77,10 @@ public class VehicleHolidayPriceInfoController extends BaseController<VehicleHol ...@@ -29,4 +77,10 @@ public class VehicleHolidayPriceInfoController extends BaseController<VehicleHol
public ObjectRestResponse getOne(Integer id) { public ObjectRestResponse getOne(Integer id) {
return ObjectRestResponse.succ(baseBiz.selectById(id)); return ObjectRestResponse.succ(baseBiz.selectById(id));
} }
@GetMapping(value = "getAll")
public ObjectRestResponse getAll(Integer festivalId) {
return baseBiz.getAll(festivalId);
}
} }
\ No newline at end of file
...@@ -3,5 +3,10 @@ ...@@ -3,5 +3,10 @@
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleHolidayPriceInfoMapper"> <mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleHolidayPriceInfoMapper">
<select id="getAll" resultType=" com.xxfc.platform.vehicle.pojo.vo.VehicleHolidayPriceInfoVo">
select festival_id, festival_day, MIN(festival_date) as startTime, MAX(festival_date) as endTime, rent_price, rent_free_day from vehicle_holiday_price_info
GROUP BY festival_id,festival_day,rent_price, rent_free_day
HAVING festival_id = #{festivalId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -3,15 +3,10 @@ ...@@ -3,15 +3,10 @@
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleMapper"> <mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleMapper">
<resultMap id="searchUsableModelMap" type="com.xxfc.platform.vehicle.pojo.UsableVehicleModelVO"> <resultMap id="searchUsableModelMap" type="com.xxfc.platform.vehicle.pojo.UsableVehicleModelVO">
<!-- <collection column="company_id" property="id" ofType="com.xxfc.platform.vehicle.entity.BranchCompany" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />-->
<!-- <result column="company_id" property="companyId" jdbcType="VARCHAR" javaType="java.lang.Integer"/>-->
<!-- <result column="model_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<!-- <result column="vehicle_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<association property="company" column="company_id" <association property="company" column="company_id"
select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey"/> select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey"/>
<association property="vehicleModel" column="model_id" <association property="vehicleModel" column="model_id"
select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/> select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/>
<!-- <association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectByPrimaryKey" />-->
</resultMap> </resultMap>
<resultMap id="searchModel" type="com.xxfc.platform.vehicle.pojo.VehicleAndModelInfoVo"> <resultMap id="searchModel" type="com.xxfc.platform.vehicle.pojo.VehicleAndModelInfoVo">
...@@ -855,7 +850,7 @@ ...@@ -855,7 +850,7 @@
<select id="searchUsableModel" parameterType="java.util.Map" <select id="searchUsableModel" parameterType="java.util.Map"
resultMap="searchUsableModelMap"> resultMap="searchUsableModelMap">
(select distinct vm.id as model_id, bc.id as company_id (select distinct vm.id as model_id, bc.id as company_id, group_concat(v.id) vehicle_ids
<if test=" catas != null "> <if test=" catas != null ">
,GROUP_CONCAT(vc.cata_id) as catas ,GROUP_CONCAT(vc.cata_id) as catas
</if> </if>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment