Commit 3fc19f5c authored by jiaorz's avatar jiaorz

Merge remote-tracking branch 'origin/dev' into dev

parents cc5a49f7 29918bd7
...@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO; ...@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -41,6 +42,7 @@ import java.util.stream.Collectors; ...@@ -41,6 +42,7 @@ import java.util.stream.Collectors;
@Transactional @Transactional
@DependsOn("appUserPositionBiz") @DependsOn("appUserPositionBiz")
@Service @Service
@Slf4j
public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, AppUserPositionTemp> implements InitializingBean { public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, AppUserPositionTemp> implements InitializingBean {
@Autowired @Autowired
...@@ -299,4 +301,38 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -299,4 +301,38 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
} }
public void setPostionIdByPhone(String phone){
try {
Example example = new Example(AppUserPositionTemp.class);
example.createCriteria().andEqualTo("phone", phone).andEqualTo("isDel", 0);
List<AppUserPositionTemp> list = selectByExample(example);
if (CollectionUtils.isEmpty(list)){
log.info("----用户无身份----phone==="+phone);
return;
}
AppUserPositionTemp positionTemp=list.get(0);
if (positionTemp.getUserId()>0){
log.info("----用户已存在身份----phone==="+phone);
return;
}
//根据手机号查询userId
AppUserLogin userLogin = loginBiz.checkeUserLogin(phone);
if (userLogin==null) {
log.info("----用户不存在----phone==="+phone);
return;
}
Integer userId=userLogin.getId();
positionTemp.setUserId(userId);
int num=updateSelectiveByIdRe(positionTemp);
if (num>0){
Integer postionId=positionTemp.getPositionId();
log.info("----用户---postionId===="+postionId+"----phone==="+phone);
detailBiz.updateUserPositionByUserId(userId, postionId);
}
}catch (Exception e){
e.printStackTrace();
}
}
} }
...@@ -111,6 +111,9 @@ public class AppPermissionService { ...@@ -111,6 +111,9 @@ public class AppPermissionService {
@Autowired @Autowired
private AppUserPhoneNotesBiz notesBiz; private AppUserPhoneNotesBiz notesBiz;
@Autowired
private AppUserPositionTempBiz positionTempBiz;
public AppUserInfo validate(String username, String password) { public AppUserInfo validate(String username, String password) {
AppUserInfo info = new AppUserInfo(); AppUserInfo info = new AppUserInfo();
...@@ -331,6 +334,8 @@ public class AppPermissionService { ...@@ -331,6 +334,8 @@ public class AppPermissionService {
//创建钱包 //创建钱包
walletBiz.createWalletByUserId(appUserLogin.getId()); walletBiz.createWalletByUserId(appUserLogin.getId());
log.info("注册:创建钱包: " + userid+"---time===="+System.currentTimeMillis()/1000L); log.info("注册:创建钱包: " + userid+"---time===="+System.currentTimeMillis()/1000L);
//临时身份绑定
positionTempBiz.setPostionIdByPhone(username);
// 登录结果要做做统一处理 // 登录结果要做做统一处理
JSONObject data = autoLogin(userid, username, headimgurl, nickname,code,activityCode,1); JSONObject data = autoLogin(userid, username, headimgurl, nickname,code,activityCode,1);
...@@ -967,6 +972,8 @@ public class AppPermissionService { ...@@ -967,6 +972,8 @@ public class AppPermissionService {
log.error("注册:新增用户详情: " + userid); log.error("注册:新增用户详情: " + userid);
//创建钱包 //创建钱包
walletBiz.createWalletByUserId(appUserLogin.getId()); walletBiz.createWalletByUserId(appUserLogin.getId());
//临时身份绑定
positionTempBiz.setPostionIdByPhone(username);
//临时会员绑定 //临时会员绑定
insertUserMemberByUserIdAndPhone(userid, username); insertUserMemberByUserIdAndPhone(userid, username);
//上线绑定 //上线绑定
......
...@@ -27,6 +27,7 @@ public class Coupon implements Serializable { ...@@ -27,6 +27,7 @@ public class Coupon implements Serializable {
public static final Integer CHANNEL_RENT = 1; public static final Integer CHANNEL_RENT = 1;
public static final Integer CHANNEL_TOUR = 2; public static final Integer CHANNEL_TOUR = 2;
public static final Integer CHANNEL_CAMPSITE = 3; public static final Integer CHANNEL_CAMPSITE = 3;
public static final Integer CHANNEL_MEMBER = 4;
/** /**
* 主键id * 主键id
......
...@@ -21,7 +21,7 @@ import java.util.List; ...@@ -21,7 +21,7 @@ import java.util.List;
public class VehicleItemDTO extends OrderItem { public class VehicleItemDTO extends OrderItem {
public static final int topNum = 2; public static final int topNum = 2;
//已抵消天数 //已抵消天数
private Integer offsetNum; private Integer offsetNum = 0;
public BigDecimal calculateVehicleUnitPrice(BigDecimal vehicleAmount, BigDecimal metaVehicleAmount, Boolean isSetRealAmount) { public BigDecimal calculateVehicleUnitPrice(BigDecimal vehicleAmount, BigDecimal metaVehicleAmount, Boolean isSetRealAmount) {
if(isSetRealAmount) { if(isSetRealAmount) {
setRealAmount(vehicleAmount); setRealAmount(vehicleAmount);
...@@ -138,7 +138,7 @@ public class VehicleItemDTO extends OrderItem { ...@@ -138,7 +138,7 @@ public class VehicleItemDTO extends OrderItem {
}else if(ableFreeDays > cycleNum){ //本次累加天数 小于等于 可用免费天数 }else if(ableFreeDays > cycleNum){ //本次累加天数 小于等于 可用免费天数
setCutNum(getCutNum()+ dto.getFreeDays()); setCutNum(getCutNum()+ dto.getFreeDays());
//直接设置价格 //直接设置价格
dto.setFreeAndConsumeAmount(dto.getPrice(), BigDecimal.ZERO); dto.setFreeAndConsumeAmount(dto.getPrice(), dto.getPrice());
this.offsetNum += 1; this.offsetNum += 1;
}else { //上次累加天数 大于 可用天数 }else { //上次累加天数 大于 可用天数
//直接设置价格 //直接设置价格
......
...@@ -15,4 +15,10 @@ public class AddMemberDTO extends AddOrderCommonDTO{ ...@@ -15,4 +15,10 @@ public class AddMemberDTO extends AddOrderCommonDTO{
@ApiModelProperty(value = "会员等级") @ApiModelProperty(value = "会员等级")
private Integer memberLevel; private Integer memberLevel;
/**
* 优惠券*
*/
@ApiModelProperty(value = "优惠卷卷号")
private String tickerNos;
} }
package com.xxfc.platform.order.rest; package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
...@@ -46,7 +47,8 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz, ...@@ -46,7 +47,8 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,
@ApiOperation(value = "确认会员订单") @ApiOperation(value = "确认会员订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto) { public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto) {
MemberBO bo = BeanUtil.toBean(dto, MemberBO.class); MemberBO bo = BeanUtil.toBean(dto, MemberBO.class);
bo.setTickerNo(StrUtil.isNotBlank(dto.getTickerNos())?
StrUtil.splitTrim(dto.getTickerNos(), ","):null);
//查询会员等级实体 //查询会员等级实体
// bo.setBaseUserMemberLevel(userFeign.memberEntityList(BeanUtil.beanToMap(new BaseUserMemberLevel(){{ // bo.setBaseUserMemberLevel(userFeign.memberEntityList(BeanUtil.beanToMap(new BaseUserMemberLevel(){{
// setId(dto.getMemberLevelId()); // setId(dto.getMemberLevelId());
......
...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; ...@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
...@@ -99,6 +100,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -99,6 +100,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@PostConstruct @PostConstruct
public void init() { public void init() {
this.channel = Coupon.CHANNEL_MEMBER;
this.orderTypeEnum = OrderTypeEnum.MEMBER; this.orderTypeEnum = OrderTypeEnum.MEMBER;
} }
......
...@@ -240,7 +240,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -240,7 +240,8 @@ 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> vmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData(); List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData();
List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds);
//设置Item //设置Item
...@@ -274,9 +275,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -274,9 +275,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
// } // }
// } // }
// vehicleOrderItem.setCutNum(cutDayNum); // vehicleOrderItem.setCutNum(cutDayNum);
vehicleOrderItem.initDetail(dto.getRentFreeDays());
freeDayNum = vehicleOrderItem.getCutNum(); freeDayNum = vehicleOrderItem.getCutNum();
offsetNum = vehicleOrderItem.getOffsetNum(); offsetNum = vehicleOrderItem.getOffsetNum();
vehicleOrderItem.initDetail(dto.getRentFreeDays());
vehicleDayNum = detail.getDayNum() - offsetNum; vehicleDayNum = detail.getDayNum() - offsetNum;
detail.getOrder().setHasMemberRight(SYS_TRUE); detail.getOrder().setHasMemberRight(SYS_TRUE);
}else { }else {
...@@ -284,6 +285,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -284,6 +285,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
vehicleDayNum = detail.getDayNum(); vehicleDayNum = detail.getDayNum();
} }
vmcpds = vehicleOrderItem.getVehicleDetail();
detail.setFreeDays(freeDayNum); detail.setFreeDays(freeDayNum);
//计算价格 //计算价格
...@@ -330,7 +332,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -330,7 +332,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//计算价格 //计算价格
if(vehicleDayNum > 0) { if(vehicleDayNum > 0) {
for(int i = offsetNum; i < vmcpds.size(); i++) { for(int i = offsetNum; i < vmcpds.size(); i++) {
vehicleAmount = vehicleAmount.add(vmcpds.get(i).getPrice()); vehicleAmount = vehicleAmount.add(vmcpds.get(i).getConsumeAmount());
metaVehicleAmount = metaVehicleAmount.add(vmcpds.get(i).getNo_discount_price()); metaVehicleAmount = metaVehicleAmount.add(vmcpds.get(i).getNo_discount_price());
} }
}else { }else {
......
...@@ -5,6 +5,9 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMember; ...@@ -5,6 +5,9 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign; 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.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.entity.VehicleModelCalendarPrice; import com.xxfc.platform.vehicle.entity.VehicleModelCalendarPrice;
import com.xxfc.platform.vehicle.mapper.VehicleModelCalendarPriceMapper; import com.xxfc.platform.vehicle.mapper.VehicleModelCalendarPriceMapper;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO; import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
...@@ -32,6 +35,8 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -32,6 +35,8 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -49,12 +54,13 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -49,12 +54,13 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
private static final Integer DEFAULT_FREE_DAYS = 1; private static final Integer DEFAULT_FREE_DAYS = 1;
private static final Integer DEFAULT_MEMBER_LEVEL = 0; private static final Integer DEFAULT_MEMBER_LEVEL = 0;
private static final String PRICE_VAL = "price"; private static final String PRICE_VAL = "price";
private static final String BASE_PRICE_VAL="basePrice"; private static final String BASE_PRICE_VAL = "basePrice";
private static final String DAYS_VAL = "freeDays"; private static final String DAYS_VAL = "freeDays";
private final VehicleModelHolidayPriceBiz vehicleModelHolidayPriceBiz; private final VehicleModelHolidayPriceBiz vehicleModelHolidayPriceBiz;
private final VehicleModelBiz vehicleModelBiz; private final VehicleModelBiz vehicleModelBiz;
private final UserFeign userFeign; private final UserFeign userFeign;
private final ThirdFeign thirdFeign;
/** /**
...@@ -69,7 +75,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -69,7 +75,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
List<Date> dateList = vehicleModelCalendarPrices.stream().peek(x -> { List<Date> dateList = vehicleModelCalendarPrices.stream().peek(x -> {
VehicleModelCalendarPrice calendarPrice = new VehicleModelCalendarPrice(); VehicleModelCalendarPrice calendarPrice = new VehicleModelCalendarPrice();
BeanUtils.copyProperties(x, calendarPrice); BeanUtils.copyProperties(x, calendarPrice);
Date date = DateUtils.localDateToDate(LocalDate.parse(x.getDate())); Date date = DateUtils.localDateToDate(LocalDate.parse(x.getDate()));
calendarPrice.setVehicleModelDay(date); calendarPrice.setVehicleModelDay(date);
calendarPrice.setCrtTime(new Date()); calendarPrice.setCrtTime(new Date());
calendarPrice.setCrtUserId(userId); calendarPrice.setCrtUserId(userId);
...@@ -138,7 +144,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -138,7 +144,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
vehicleModelDayPriceVo.setMultiple(multiple); vehicleModelDayPriceVo.setMultiple(multiple);
BigDecimal aPrice = isNullOfVehicleModelPrice ? BigDecimal.ZERO : vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getPrice(); BigDecimal aPrice = isNullOfVehicleModelPrice ? BigDecimal.ZERO : vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getPrice();
vehicleModelDayPriceVo.setPrice(aPrice); vehicleModelDayPriceVo.setPrice(aPrice);
Integer level = isNullOfVehicleModelPrice? null:vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getLevel(); Integer level = isNullOfVehicleModelPrice ? null : vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getLevel();
vehicleModelDayPriceVo.setLevel(level); vehicleModelDayPriceVo.setLevel(level);
vehicleModelDayPriceVos.add(vehicleModelDayPriceVo); vehicleModelDayPriceVos.add(vehicleModelDayPriceVo);
} }
...@@ -176,7 +182,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -176,7 +182,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
Map<Date, Optional<VehicleModelCalendarPriceSaveDTO>> result = vehicleModelCalendarPriceSaveDTOS.stream() Map<Date, Optional<VehicleModelCalendarPriceSaveDTO>> result = vehicleModelCalendarPriceSaveDTOS.stream()
.collect(Collectors.groupingBy(VehicleModelCalendarPriceSaveDTO::getVehicleModelDay, Collectors.maxBy(Comparator.comparing(VehicleModelCalendarPriceSaveDTO::getId)))); .collect(Collectors.groupingBy(VehicleModelCalendarPriceSaveDTO::getVehicleModelDay, Collectors.maxBy(Comparator.comparing(VehicleModelCalendarPriceSaveDTO::getId))));
vehicleModelCalendarPriceSaveDTOS = result.values().stream().map(x->x.orElseGet(null)).filter(Objects::nonNull).collect(Collectors.toList()); vehicleModelCalendarPriceSaveDTOS = result.values().stream().map(x -> x.orElseGet(null)).filter(Objects::nonNull).collect(Collectors.toList());
return vehicleModelCalendarPriceSaveDTOS; return vehicleModelCalendarPriceSaveDTOS;
} }
...@@ -190,7 +196,26 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -190,7 +196,26 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
* @return * @return
*/ */
public List<VehicleModelCalendarPriceDTO> findVehicleModelCalendarPriceByDateAndVehilceIdAndUserId(Date startDate, Date endDate, Integer vehicleModelId, Integer userId) { public List<VehicleModelCalendarPriceDTO> findVehicleModelCalendarPriceByDateAndVehilceIdAndUserId(Date startDate, Date endDate, Integer vehicleModelId, Integer userId) {
return findVehicleModelCalendarPrice(startDate, endDate, vehicleModelId, userId); LocalDate startLocalDate = DateUtils.dateToLocalDate(startDate);
LocalDate endLocalDate = DateUtils.dateToLocalDate(endDate);
Integer days = getIncludeDays(startDate.getTime(), endDate.getTime());
boolean isSelect = false;
List<VehicleModelCalendarPriceDTO> vehicleModelCalendarPrice = findVehicleModelCalendarPrice(startDate,endDate, vehicleModelId, userId);
for (int i = 0, y = 0; i < vehicleModelCalendarPrice.size(); i++) {
VehicleModelCalendarPriceDTO vehicleModelCalendarPriceDTO = vehicleModelCalendarPrice.get(i);
LocalDate current_date = DateUtils.dateToLocalDate(vehicleModelCalendarPriceDTO.getDate());
if (y == 0) {
isSelect = (current_date.isAfter(startLocalDate) && current_date.isBefore(endLocalDate)) || current_date.isEqual(startLocalDate) || current_date.isEqual(endLocalDate);
}
if (isSelect) {
if (y < days) {
vehicleModelCalendarPriceDTO.setIsSelect(isSelect ? true : false);
y++;
}
}
}
return vehicleModelCalendarPrice.stream().filter(x->Objects.nonNull(x.getIsSelect())).collect(Collectors.toList());
} }
/** /**
...@@ -205,21 +230,61 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -205,21 +230,61 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
public List<VehicleModelCalendarPriceDTO> listVehicleModelCalendarPriceByDateAndVehicleModelIdAndUserId(Date startDate, Date endDate, Integer vehicleModelId, Integer userId) { public List<VehicleModelCalendarPriceDTO> listVehicleModelCalendarPriceByDateAndVehicleModelIdAndUserId(Date startDate, Date endDate, Integer vehicleModelId, Integer userId) {
LocalDate startLocalDate = DateUtils.dateToLocalDate(startDate); LocalDate startLocalDate = DateUtils.dateToLocalDate(startDate);
LocalDate endLocalDate = DateUtils.dateToLocalDate(endDate); LocalDate endLocalDate = DateUtils.dateToLocalDate(endDate);
boolean isSelect = false;
//处理后延伸的开始时间 //处理后延伸的开始时间
AtomicReference<Date> startReference = new AtomicReference<>(startDate); AtomicReference<Date> startReference = new AtomicReference<>(startDate);
//处理后延伸的结束时间 //处理后延伸的结束时间
AtomicReference<Date> endReference = new AtomicReference<>(endDate); AtomicReference<Date> endReference = new AtomicReference<>(endDate);
transformStartDateAndEndDate(startReference, endReference); transformStartDateAndEndDate(startReference, endReference);
List<VehicleModelCalendarPriceDTO> vehicleModelCalendarPrice = findVehicleModelCalendarPrice(startReference.get(), endReference.get(), vehicleModelId, userId); List<VehicleModelCalendarPriceDTO> vehicleModelCalendarPrice = findVehicleModelCalendarPrice(startReference.get(), endReference.get(), vehicleModelId, userId);
for (VehicleModelCalendarPriceDTO vehicleModelCalendarPriceDTO : vehicleModelCalendarPrice) { Integer days = getIncludeDays(startDate.getTime(), endDate.getTime());
for (int i = 0, y = 0; i < vehicleModelCalendarPrice.size(); i++) {
VehicleModelCalendarPriceDTO vehicleModelCalendarPriceDTO = vehicleModelCalendarPrice.get(i);
LocalDate current_date = DateUtils.dateToLocalDate(vehicleModelCalendarPriceDTO.getDate()); LocalDate current_date = DateUtils.dateToLocalDate(vehicleModelCalendarPriceDTO.getDate());
boolean isSelect = (current_date.isAfter(startLocalDate) && current_date.isBefore(endLocalDate)) || current_date.isEqual(startLocalDate) || current_date.isEqual(endLocalDate); if (y == 0) {
vehicleModelCalendarPriceDTO.setIsSelect(isSelect ? true : false); isSelect = (current_date.isAfter(startLocalDate) && current_date.isBefore(endLocalDate)) || current_date.isEqual(startLocalDate) || current_date.isEqual(endLocalDate);
}
if (isSelect) {
if (y < days) {
vehicleModelCalendarPriceDTO.setIsSelect(isSelect ? true : false);
y++;
}
}
} }
return vehicleModelCalendarPrice; return vehicleModelCalendarPrice;
} }
/**
* 计算包含多少天
*
* @param startLong
* @param endLong
* @return
*/
public Integer getIncludeDays(Long startLong, Long endLong) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Long hourLong = (60L * 60L * 1000L);
Long dayLong = hourLong * 24;
Long bufferLong = Long.valueOf(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.RENT_TIME_BUFFER).getDetail()) * hourLong;
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long bookTimeLag = endLong - startLong;
log.info("bookTimeLag {}", new BigDecimal(bookTimeLag + ""));
log.info("divide {}", new BigDecimal((24 * 60 * 60 * 1000) + ""));
Integer bookDays = new BigDecimal(bookTimeLag + "").divide(new BigDecimal(dayLong + ""), 0, RoundingMode.DOWN).intValue();
Long excess = bookTimeLag % dayLong;
if (excess > bufferLong) {
bookDays += 1;
}
if (0 == bookDays) {
bookDays = 1;
}
return bookDays;
}
/** /**
* 日历价格查询 * 日历价格查询
* *
...@@ -246,10 +311,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -246,10 +311,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
BigDecimal vehicle_base_price = new BigDecimal(0); BigDecimal vehicle_base_price = new BigDecimal(0);
BigDecimal vehicle_price = vehicleModelBiz.findVehicleModelPriceByVehicleModelId(vehicleModelId); BigDecimal vehicle_price = vehicleModelBiz.findVehicleModelPriceByVehicleModelId(vehicleModelId);
vehicle_base_price = vehicle_base_price.add(vehicle_price); vehicle_base_price = vehicle_base_price.add(vehicle_price);
log.info("用户id【{}】",userId); log.info("用户id【{}】", userId);
if (Objects.nonNull(userId)) { if (Objects.nonNull(userId)) {
BaseUserMember baseUserMember = userFeign.findBaseUserMemberByUserId(userId); BaseUserMember baseUserMember = userFeign.findBaseUserMemberByUserId(userId);
log.info("用户会员信息:【{}】",baseUserMember); log.info("用户会员信息:【{}】", baseUserMember);
discount = baseUserMember == null ? discount : baseUserMember.getDiscount(); discount = baseUserMember == null ? discount : baseUserMember.getDiscount();
memberLevel = baseUserMember == null ? memberLevel : baseUserMember.getMemberLevel(); memberLevel = baseUserMember == null ? memberLevel : baseUserMember.getMemberLevel();
} }
...@@ -319,10 +384,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -319,10 +384,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
* @return * @return
*/ */
public Map<String, Object> transfromPriceAndFreeDaysByDate(Map<Date, VehicleModelHolidayPriceDTO> festivalDayMap, Date current_date, BigDecimal vehicle_price, Integer discount) { public Map<String, Object> transfromPriceAndFreeDaysByDate(Map<Date, VehicleModelHolidayPriceDTO> festivalDayMap, Date current_date, BigDecimal vehicle_price, Integer discount) {
log.info("参数:【{}==当前时间:{}==价格:{}==折扣:{}】",festivalDayMap,current_date,vehicle_price,discount); log.info("参数:【{}==当前时间:{}==价格:{}==折扣:{}】", festivalDayMap, current_date, vehicle_price, discount);
Map<String, Object> vehicle_price_days_map = new HashMap<>(3); Map<String, Object> vehicle_price_days_map = new HashMap<>(3);
Integer free_days = DEFAULT_FREE_DAYS; Integer free_days = DEFAULT_FREE_DAYS;
vehicle_price_days_map.put(BASE_PRICE_VAL,vehicle_price); vehicle_price_days_map.put(BASE_PRICE_VAL, vehicle_price);
if (MapUtil.isNotEmpty(festivalDayMap)) { if (MapUtil.isNotEmpty(festivalDayMap)) {
VehicleModelHolidayPriceDTO vehicleModelHolidayPriceDTO = festivalDayMap.get(current_date); VehicleModelHolidayPriceDTO vehicleModelHolidayPriceDTO = festivalDayMap.get(current_date);
if (Objects.nonNull(vehicleModelHolidayPriceDTO)) { if (Objects.nonNull(vehicleModelHolidayPriceDTO)) {
...@@ -333,7 +398,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -333,7 +398,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
vehicle_price = vehicle_price.multiply(new BigDecimal(Objects.toString(discount / 100.00))); vehicle_price = vehicle_price.multiply(new BigDecimal(Objects.toString(discount / 100.00)));
vehicle_price_days_map.put(PRICE_VAL, vehicle_price); vehicle_price_days_map.put(PRICE_VAL, vehicle_price);
vehicle_price_days_map.put(DAYS_VAL, free_days); vehicle_price_days_map.put(DAYS_VAL, free_days);
log.info("(节假日|非节假日未设置的)价格和免费天数 处理【{}】",vehicle_price_days_map); log.info("(节假日|非节假日未设置的)价格和免费天数 处理【{}】", vehicle_price_days_map);
return vehicle_price_days_map; return vehicle_price_days_map;
} }
...@@ -375,7 +440,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -375,7 +440,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
LocalDate endLocalDate = now.with(TemporalAdjusters.lastDayOfMonth()); LocalDate endLocalDate = now.with(TemporalAdjusters.lastDayOfMonth());
LocalDate startLocalDate = now.withDayOfMonth(1); LocalDate startLocalDate = now.withDayOfMonth(1);
startDate = DateUtils.localDateToDate(startLocalDate); startDate = DateUtils.localDateToDate(startLocalDate);
endDate = DateUtils.localDateToDate(endLocalDate); endDate = DateUtils.localDateToDate(endLocalDate);
} else { } else {
int days = 0; int days = 0;
...@@ -383,10 +448,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -383,10 +448,10 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
LocalDate startLocalDate = DateUtils.dateToLocalDate(startDate); LocalDate startLocalDate = DateUtils.dateToLocalDate(startDate);
int start_week = startLocalDate.getDayOfWeek().getValue(); int start_week = startLocalDate.getDayOfWeek().getValue();
if (START_OF_WEEK < start_week && start_week < END_OF_WEEK) { if (START_OF_WEEK < start_week && start_week < END_OF_WEEK) {
days =start_week - START_OF_WEEK; days = start_week - START_OF_WEEK;
} else { } else {
if (END_OF_WEEK == start_week) { if (END_OF_WEEK == start_week) {
days = END_OF_WEEK-1; days = END_OF_WEEK - 1;
} }
} }
LocalDate start_startLocalDate = startLocalDate.minusDays(days); LocalDate start_startLocalDate = startLocalDate.minusDays(days);
...@@ -400,7 +465,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -400,7 +465,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
days = END_OF_WEEK - end_week; days = END_OF_WEEK - end_week;
} else { } else {
if (START_OF_WEEK == end_week) { if (START_OF_WEEK == end_week) {
days =END_OF_WEEK - 1; days = END_OF_WEEK - 1;
} }
} }
LocalDate end_endLocalDate = endLocalDate.plusDays(days); LocalDate end_endLocalDate = endLocalDate.plusDays(days);
...@@ -417,7 +482,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr ...@@ -417,7 +482,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
AtomicReference<Date> start = new AtomicReference<>(Date.from(LocalDate.parse("2019-10-03").atStartOfDay(ZoneId.systemDefault()).toInstant())); AtomicReference<Date> start = new AtomicReference<>(Date.from(LocalDate.parse("2019-10-03").atStartOfDay(ZoneId.systemDefault()).toInstant()));
AtomicReference<Date> end = new AtomicReference<>(Date.from(LocalDate.parse("2019-10-29").atStartOfDay(ZoneId.systemDefault()).toInstant())); AtomicReference<Date> end = new AtomicReference<>(Date.from(LocalDate.parse("2019-10-29").atStartOfDay(ZoneId.systemDefault()).toInstant()));
transformStartDateAndEndDate(start,end); transformStartDateAndEndDate(start, end);
System.out.println(start.get()); System.out.println(start.get());
System.out.println(end.get()); System.out.println(end.get());
} }
......
...@@ -16,8 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -16,8 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDate; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -47,8 +48,8 @@ public class VehicleModelCalendarPriceController { ...@@ -47,8 +48,8 @@ public class VehicleModelCalendarPriceController {
if (StringUtils.isEmpty(start) || StringUtils.isEmpty(end)) { if (StringUtils.isEmpty(start) || StringUtils.isEmpty(end)) {
throw new BaseException("缺少开始时间或结束时间"); throw new BaseException("缺少开始时间或结束时间");
} }
Date startDate = Date.from(LocalDate.parse(start).atStartOfDay(ZoneId.systemDefault()).toInstant()); Date startDate = Date.from(LocalDateTime.parse(start, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")).toInstant(ZoneOffset.ofHours(8)));
Date endDate = Date.from(LocalDate.parse(end).atStartOfDay(ZoneId.systemDefault()).toInstant()); Date endDate = Date.from(LocalDateTime.parse(end,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")).toInstant(ZoneOffset.ofHours(8)));
List<VehicleModelCalendarPriceDTO> vehicleModelCalendarPriceVos = vehicleModelCalendarPriceBiz.listVehicleModelCalendarPriceByDateAndVehicleModelIdAndUserId(startDate, endDate, vehicleModelId, appUserDTO.getUserid()); List<VehicleModelCalendarPriceDTO> vehicleModelCalendarPriceVos = vehicleModelCalendarPriceBiz.listVehicleModelCalendarPriceByDateAndVehicleModelIdAndUserId(startDate, endDate, vehicleModelId, appUserDTO.getUserid());
return ObjectRestResponse.succ(vehicleModelCalendarPriceVos); return ObjectRestResponse.succ(vehicleModelCalendarPriceVos);
} }
...@@ -72,8 +73,8 @@ public class VehicleModelCalendarPriceController { ...@@ -72,8 +73,8 @@ public class VehicleModelCalendarPriceController {
@RequestParam(value = "vehicleModelId") Integer vehicleModelId, @RequestParam(value = "vehicleModelId") Integer vehicleModelId,
AppUserDTO appUserDTO) { AppUserDTO appUserDTO) {
Date startDateDay = DateUtil.beginOfDay(DateUtil.date(startDate)); Date startDateDay = new Date(startDate);
Date endDateDay = DateUtil.beginOfDay(DateUtil.date(endDate)); Date endDateDay = new Date(endDate);
return ObjectRestResponse.succ(vehicleModelCalendarPriceBiz.findVehicleModelCalendarPriceByDateAndVehilceIdAndUserId(startDateDay, endDateDay, vehicleModelId, appUserDTO.getUserid())); return ObjectRestResponse.succ(vehicleModelCalendarPriceBiz.findVehicleModelCalendarPriceByDateAndVehilceIdAndUserId(startDateDay, endDateDay, vehicleModelId, appUserDTO.getUserid()));
} }
......
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