Commit ab6e6898 authored by hanfeng's avatar hanfeng

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

# Conflicts:
#	xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/OrderVehicleCrosstownDto.java
parents b6e7a9ad dc55869c
......@@ -79,6 +79,11 @@ public class BaseUserMemberLevel implements Serializable {
@ApiModelProperty(value = "赠送免费天数")
private Integer number;
//免费天数价值
@Column(name = "days_price")
@ApiModelProperty(value = "免费天数价值")
private BigDecimal daysPrice;
@Column(name = "big_icon")
@ApiModelProperty(value = "大图标")
private String bigIcon;
......
......@@ -66,12 +66,12 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
log.info("----userId==="+userId+"----parentId===="+parentId+"----自己不能成为自己的上线");
return;
}
AppUserVo appUserVo=userDetailBiz.getUserInfoById(userId);
/* AppUserVo appUserVo=userDetailBiz.getUserInfoById(userId);
if (appUserVo==null){
log.info("----userId==="+userId+"----parentId===="+parentId+"----该用户不存在");
return;
}
appUserVo=userDetailBiz.getUserInfoById(parentId);
}*/
AppUserVo appUserVo=userDetailBiz.getUserInfoById(parentId);
if (appUserVo==null){
log.info("----userId==="+userId+"----parentId===="+parentId+"----该上线用户不存在");
return;
......
......@@ -61,4 +61,8 @@ public class QuestionParamDto extends PageParam {
private Long startTime;
private Long endTime;
private Integer commentCount;
private Integer praiseCount;
}
\ No newline at end of file
......@@ -84,4 +84,6 @@ public class ImQuestion {
*/
private Integer source;
private String address;
}
\ No newline at end of file
package com.xxfc.platform.im.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
......@@ -8,6 +10,7 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.im.dto.MsgTypeEnum;
import com.xxfc.platform.im.dto.QuestionParamDto;
......@@ -51,6 +54,11 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
questionParamDto.setUserId(Long.parseLong(appUserLogin.getId() + ""));
}
}
if (questionParamDto.getStartTime() != null) {
if(questionParamDto.getEndTime() == null) {
questionParamDto.setEndTime(System.currentTimeMillis());
}
}
Query query = new Query(questionParamDto);
PageDataVO<QuestionListVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getQuestionList(query.getSuper()));
AppUserDTO appUserDTO = userBiz.getUserInfo();
......@@ -94,6 +102,19 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
return ObjectRestResponse.succ();
}
public ObjectRestResponse update(ImQuestion imQuestion) {
if (imQuestion == null || imQuestion.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
ImQuestion oldValue = mapper.selectByPrimaryKey(imQuestion.getId());
if (oldValue == null) {
return ObjectRestResponse.createFailedResult(ResultCode.IM_MSG_NOT_EXIST_CODE, ResultCode.getMsg(ResultCode.IM_MSG_NOT_EXIST_CODE));
}
BeanUtil.copyProperties(imQuestion, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ();
}
/**
* 删除消息,修改isDel为true
*
......@@ -117,6 +138,18 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
return ObjectRestResponse.succ();
}
public ObjectRestResponse deleteById(Long id) {
if (id == null) {
return ObjectRestResponse.paramIsEmpty();
}
ImQuestion imQuestion = mapper.selectByPrimaryKey(id);
if (imQuestion == null) {
return ObjectRestResponse.createDefaultFail();
}
imQuestion.setIsDel(true);
updateSelectiveByIdRe(imQuestion);
return ObjectRestResponse.succ();
}
public ObjectRestResponse update(Long id, MsgTypeEnum type, UpdateTypeEnum updateType) {
if (id == null || type == null) {
......
......@@ -366,12 +366,12 @@ public class MsgBiz {
if (msgQueryDto.getSource() == 1) {
query.addCriteria(Criteria.where("source").is(msgQueryDto.getSource()));
} else {
query.addCriteria(Criteria.where("source").is(msgQueryDto.getSource()).orOperator(Criteria.where("source").is(null)));
query.addCriteria(Criteria.where("source").is(2));
}
}
//下单时间
if (msgQueryDto.getStartTime() != null) {
query.addCriteria(Criteria.where("body.time").gte(msgQueryDto.getStartTime()).orOperator(Criteria.where("body.time").lte(msgQueryDto.getEndTime())));
query.addCriteria(Criteria.where("body.time").gte(msgQueryDto.getStartTime())).addCriteria((Criteria.where("body.time").lte(msgQueryDto.getEndTime())));
}
//用户名
if (StringUtils.isNotBlank(msgQueryDto.getUsername())) {
......@@ -386,6 +386,7 @@ public class MsgBiz {
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), null);
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
goodPageInfo.setPageSize(totalSize % limit == 0 ? totalSize / limit : totalSize / limit + 1);
goodPageInfo.setTotal(totalSize);
return ObjectRestResponse.succ(goodPageInfo);
} else {
List<Integer> ids = new ArrayList<>();
......@@ -470,4 +471,20 @@ public class MsgBiz {
return ObjectRestResponse.succ(newValue);
}
public ObjectRestResponse deleteById(String id) {
if (StringUtils.isBlank(id)) {
return ObjectRestResponse.paramIsEmpty();
}
Query query = new Query(Criteria.where("_id").is(id));
Msg oldValue = mongoTemplate.findOne(query, Msg.class, "s_msg");
if (oldValue == null) {
return ObjectRestResponse.createFailedResult(ResultCode.IM_MSG_NOT_EXIST_CODE, ResultCode.getMsg(ResultCode.IM_MSG_NOT_EXIST_CODE));
}
DeleteResult deleteResult = mongoTemplate.remove(query, Msg.class, "s_msg");
if (deleteResult != null && deleteResult.getDeletedCount() == 1) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createFailedResult(ResultCode.IM_DELETE_FAIL_CODE, ResultCode.getMsg(ResultCode.IM_DELETE_FAIL_CODE));
}
}
......@@ -41,4 +41,16 @@ public class ImQuestionController {
public ObjectRestResponse delete(Long id) {
return imQuestionBiz.delete(id);
}
@GetMapping(value = "/bg/app/unauth/delete")
@ApiOperation(value = "删除问答信息")
public ObjectRestResponse deleteById(Long id) {
return imQuestionBiz.deleteById(id);
}
@PostMapping(value = "/bg/app/unauth/update")
@ApiOperation(value = "修改问答信息")
public ObjectRestResponse update(@RequestBody ImQuestion imQuestion) {
return imQuestionBiz.update(imQuestion);
}
}
......@@ -41,6 +41,10 @@ public class MsgController {
return msgBiz.deleteByList(ids);
}
@GetMapping(value = "/bg/app/unauth/delete")
public ObjectRestResponse deleteById(String id) {
return msgBiz.deleteById(id);
}
@PostMapping(value = "/bg/app/unauth/addMsg")
public ObjectRestResponse addMsg(@RequestBody AddMsgParam param) {
......@@ -56,4 +60,6 @@ public class MsgController {
public ObjectRestResponse getMsgList(@RequestBody MsgQueryDto msgQueryDto) {
return msgBiz.getMsgList(msgQueryDto);
}
}
......@@ -81,5 +81,4 @@ public class InProgressVO {
* 延期 详情列表
*/
List<VMCalendarPriceCostDTO> overAmountList = CollUtil.newArrayList();
}
......@@ -45,6 +45,10 @@ public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
List<DepositRefundRecord> depositRefundRecord;
private String checkUser;
private String checkTel;
/**
* 操作人
*/
......
......@@ -22,6 +22,13 @@ public class VehicleItemDTO extends OrderItem {
public static final int topNum = 2;
//已抵消天数
private Integer offsetNum = 0;
//免费金额
private BigDecimal freeAmount;
//标记是否单价一样
private Integer sameUnitPrice = 1;
public BigDecimal calculateVehicleUnitPrice(BigDecimal vehicleAmount, BigDecimal metaVehicleAmount, Boolean isSetRealAmount) {
if(isSetRealAmount) {
setRealAmount(vehicleAmount);
......@@ -97,37 +104,88 @@ public class VehicleItemDTO extends OrderItem {
}
public BigDecimal getUsedAmount(Integer useDays) {
List<VMCalendarPriceCostDTO> vmcpds = getVehicleDetail();
if(CollUtil.isEmpty(vmcpds)){
if(useDays > getTotalNum()) {
useDays = getTotalNum();
}
return getUnitPrice().multiply(new BigDecimal(useDays+ ""));
}
public BigDecimal getFreeAmount(Integer freeDays) {
BigDecimal usedAmount = BigDecimal.ZERO;
for(VMCalendarPriceCostDTO vmcpcd : vmcpds) {
usedAmount.add(vmcpcd.getPrice());
}
return usedAmount;
}
//由于免费天数可以抵消不是完整的天数,所以处理比较不同
public BigDecimal getFreeAmount(Integer offsetDay) {
List<VMCalendarPriceCostDTO> vmcpds = getVehicleDetail();
if(CollUtil.isEmpty(vmcpds)){
return getUnitPrice().multiply(new BigDecimal(freeDays+ ""));
if(null == offsetDay) {
return getUnitPrice().multiply(new BigDecimal(getCutNum()+ ""));
}else {
return getUnitPrice().multiply(new BigDecimal(offsetDay+ ""));
}
}
BigDecimal freeAmount = BigDecimal.ZERO;
for(int i = 0; i < getBuyNum(); i++) {
freeAmount = freeAmount.add(vmcpds.get(i).getPrice());
if(null != offsetDay) {
for(int i = 0; i < offsetDay; i++) {
freeAmount.add(vmcpds.get(i).getFreeAmount());
}
}else {
for(VMCalendarPriceCostDTO vmcpcd : vmcpds) {
freeAmount.add(vmcpcd.getFreeAmount());
}
}
return freeAmount;
}
// public Integer getActualNum() {
//
// }
public Integer mapFreeDays(Integer userDays) {
List<VMCalendarPriceCostDTO> vmcpds = getVehicleDetail();
if(userDays < getTotalNum()) {
userDays = getTotalNum();
}
if(CollUtil.isEmpty(vmcpds)){
return userDays;
}
Integer mapFreeDays = 0;
for(int i = 0; i < userDays; i++) {
mapFreeDays += vmcpds.get(i).getFreeDays();
}
return mapFreeDays;
}
public void initDetail(Integer ableFreeDays) {
if(StrUtil.isNotBlank(getDetail())) {
List<VehicleModelCalendarPriceDTO> metaList = JSONUtil.toList(JSONUtil.parseArray(getDetail()), VehicleModelCalendarPriceDTO.class);
//计算消费金额
List<VMCalendarPriceCostDTO> list = Convert.toList(VMCalendarPriceCostDTO.class, metaList);
ParamDTO paramDTO = initParam(ableFreeDays, list);
this.sameUnitPrice = paramDTO.getSameUnitPrice();
setCutNum(paramDTO.getFreeNum());
setOffsetNum(paramDTO.getOffsetNum());
setDetail(JSONUtil.parseArray(list).toString());
}
}
public ParamDTO initParam(Integer ableFreeDays, List<VMCalendarPriceCostDTO> list) {
ParamDTO paramDTO = new ParamDTO();
//循环价格列表 获得对应消耗的免费天数
//循环已标记的已使用免费天数
Integer cycleNum = 0;
BigDecimal tempUnitPrice = null;
for(VMCalendarPriceCostDTO dto : list) {
if(null == tempUnitPrice) {
tempUnitPrice = dto.getPrice();
}else if( !tempUnitPrice.equals(dto.getPrice())) {
paramDTO.setSameUnitPrice(0);
}
if(ableFreeDays > cycleNum && cycleNum+ dto.getFreeDays() > ableFreeDays) { //本次累加天数 大于 可用免费天数
setCutNum(ableFreeDays);
paramDTO.setFreeNum(ableFreeDays);
Integer up = (ableFreeDays - cycleNum);
Integer down = dto.getFreeDays();
......@@ -135,19 +193,33 @@ public class VehicleItemDTO extends OrderItem {
dto.setFreeAndConsumeAmount(dto.getPrice(), dto.getPrice().multiply(
new BigDecimal(up+ "").divide(new BigDecimal(down+ ""), 2, RoundingMode.HALF_UP))
.setScale(2, RoundingMode.HALF_UP));
paramDTO.setFreeAmount(paramDTO.getFreeAmount().add(dto.getFreeAmount()));
}else if(ableFreeDays > cycleNum){ //本次累加天数 小于等于 可用免费天数
setCutNum(getCutNum()+ dto.getFreeDays());
paramDTO.setFreeNum(paramDTO.getFreeNum()+ dto.getFreeDays());
//直接设置价格
dto.setFreeAndConsumeAmount(dto.getPrice(), dto.getPrice());
this.offsetNum += 1;
paramDTO.offsetNum += 1;
}else { //上次累加天数 大于 可用天数
//直接设置价格
dto.setFreeAndConsumeAmount(dto.getPrice(), BigDecimal.ZERO);
}
cycleNum += dto.getFreeDays();
}
setDetail(JSONUtil.parseArray(list).toString());
return paramDTO;
}
@Data
public class ParamDTO {
//已抵消天数
private Integer offsetNum = 0;
//标记是否单价一样
private Integer sameUnitPrice = 1;
//免费数量
private Integer freeNum = 0;
//免费金额
private BigDecimal freeAmount = BigDecimal.ZERO;
}
}
package com.xxfc.platform.order.pojo.price;
import cn.hutool.core.collection.CollUtil;
import com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO;
import lombok.Data;
......@@ -69,9 +70,33 @@ public class CancelStartedVO extends CostDetailExtend {
private BigDecimal damagesAmount = BigDecimal.ZERO;
/**
* 使用(消耗)详情列表
* 延期 详情列表
*/
List<VMCalendarPriceCostDTO> useAmountList;
//= CollUtil.newArrayList();
List<VMCalendarPriceCostDTO> overAmountList = CollUtil.newArrayList();
//标记是否单价一样
private Integer sameUseUnitPrice = 1;
//标记是否单价一样
private Integer sameOverUnitPrice = 1;
public void setSameUseUnitPriceFromList(List<VMCalendarPriceCostDTO> useAmountList) {
this.sameUseUnitPrice = judgeSame(useAmountList);
}
public void setSameOverUnitPriceFromList(List<VMCalendarPriceCostDTO> overAmountList) {
this.sameOverUnitPrice = judgeSame(overAmountList);
}
private Integer judgeSame(List<VMCalendarPriceCostDTO> useAmountList) {
BigDecimal tempUnitPrice = null;
for(VMCalendarPriceCostDTO vmcpcd : useAmountList) {
if(null == tempUnitPrice) {
tempUnitPrice = vmcpcd.getPrice();
}else if(tempUnitPrice.equals(vmcpcd.getPrice())) {
return 0;
}
}
return 1;
}
}
package com.xxfc.platform.order.pojo.price;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class CostDetailExtend {
......@@ -36,6 +39,11 @@ public class CostDetailExtend {
*/
public String paramJson = "";
/**
* 使用(消耗)详情列表
*/
List<VMCalendarPriceCostDTO> useAmountList = CollUtil.newArrayList();;
public void initParamJson() {
paramJson = JSONUtil.toJsonStr(this);
}
......
......@@ -76,4 +76,7 @@ public class RentVehiclePriceVO extends OrderPriceVO{
*/
List<VMCalendarPriceCostDTO> useAmountList;
//标记是否单价一样
private Integer sameUnitPrice = 1;
}
......@@ -302,9 +302,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
if(inProgressVO.getExtraAmount() != null) {
dedDetailDTO.setExcessCost(inProgressVO.getExtraAmount());
}
stringBuilder.append("违约金( ¥");
stringBuilder.append(amount);
stringBuilder.append(" x ");
// stringBuilder.append("违约金( ¥");
stringBuilder.append("违约金( ");
// stringBuilder.append(amount);
// stringBuilder.append(" x ");
stringBuilder.append(noUsedDay);
stringBuilder.append("天) = ");
stringBuilder.append(inProgressVO.getViolateAmount());
......@@ -315,12 +316,13 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
*/
} else if (userUsedDay - actualDay > 0) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("违约金( ¥");
// stringBuilder.append("违约金( ¥");
stringBuilder.append("违约金( ");
//延期的天数, 延期违约金是延期天数*200%
int extraUsedDay = userUsedDay - actualDay;
if(extraUsedDay > 0) {
stringBuilder.append(amount);
stringBuilder.append(" x ");
// stringBuilder.append(amount);
// stringBuilder.append(" x ");
stringBuilder.append(extraUsedDay);
stringBuilder.append("(天)");
stringBuilder.append(" x 2)");
......
......@@ -305,6 +305,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
types.add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode());
types.add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
types.add(DeductionTypeEnum.VIOLATE_DELAY.getCode());
types.add(DeductionTypeEnum.VIOLATE_CHANGE_C.getCode());
orderStatistics.setDefaultMoney(get(OrderAccountDeductions, types));
......
......@@ -467,6 +467,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv.setUsedfreeDayNum(inProgressVO.getUsedfreeDays());
csv.setUsedFreeAmount(inProgressVO.getUsedFreeDaysAmount());
csv.setHadConpon((StrUtil.isNotBlank(orderMQDTO.getCouponTickerNos())? Boolean.TRUE: Boolean.FALSE));
csv.setSameUseUnitPriceFromList(inProgressVO.getUseAmountList());
csv.setSameOverUnitPriceFromList(inProgressVO.getOverAmountList());
csv.setUseAmountList(inProgressVO.getUseAmountList());
csv.setOverAmountList(inProgressVO.getOverAmountList());
if(csv.getUsedDayNum() == orderMQDTO.getOrderRentVehicleDetail().getDayNum()) {
csv.setType(CostDetailExtend.FINLISH_ONTIME);
......
......@@ -267,12 +267,8 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
vehicleDepartureVo.setUse("用户租车");
vehicleDepartureVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
vehicleDepartureVo.setCheckMan(userDTO.getName());
if(StringUtils.isNotBlank(orderVehicleCrosstownDto.getLicensePhone())) {
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getLicensePhone());
} else {
vehicleDepartureVo.setCheckManTel("13656235623");
}
vehicleDepartureVo.setCheckMan(orderVehicleCrosstownDto.getCheckUser());
vehicleDepartureVo.setCheckManTel(orderVehicleCrosstownDto.getCheckTel());
try {
RestResponse restResponse = vehicleFeign.departureBySmall(vehicleDepartureVo);
log.error("返回信息: " + restResponse.toString());
......@@ -284,14 +280,9 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
vehicleArrivalVo.setVehicleId(orderRentVehicleDetail.getVehicleId());
vehicleArrivalVo.setArrivalBranchCompanyId(userDTO.getCompanyId());
vehicleArrivalVo.setMileage(orderVehicleCrosstownDto.getMileage());
vehicleArrivalVo.setRecycleMan(userDTO.getName());
vehicleArrivalVo.setRecycleManTel("13656235623");
vehicleArrivalVo.setRecycleMan(orderVehicleCrosstownDto.getCheckUser());
vehicleArrivalVo.setRecycleManTel(orderVehicleCrosstownDto.getCheckTel());
vehicleArrivalVo.setBookRecordId(orderRentVehicleDetail.getBookRecordId());
if (appUserDTO != null) {
vehicleArrivalVo.setRecycleManTel(appUserDTO.getUsername());
} else {
vehicleArrivalVo.setRecycleManTel("13565235623");
}
try {
RestResponse restResponse = vehicleFeign.arrivalBySmall(vehicleArrivalVo);
log.info("返回信息: " + restResponse.toString());
......
......@@ -84,16 +84,22 @@ public class OrderCalculateBiz {
@Autowired
BaseOrderBiz baseOrderBiz;
public InProgressVO inProgressCalculate(BaseOrder baseOrder, VehicleItemDTO vehicleItemDTO, Integer freeDays, Integer useDays, OrderAccountDetail oad, Boolean isCancel) {
public InProgressVO inProgressCalculate(BaseOrder baseOrder, VehicleItemDTO vehicleItemDTO, Integer useDays, OrderAccountDetail oad, Boolean isCancel) {
BigDecimal refundAmount = BigDecimal.ZERO;
BigDecimal consumeAmount = BigDecimal.ZERO;
BigDecimal topViolateAmount = BigDecimal.ZERO;
BigDecimal itemChangeAmount = BigDecimal.ZERO;
//免费天数
Integer freeDays = (null == vehicleItemDTO.getCutNum())?0 :vehicleItemDTO.getCutNum();
//融入日期价格
List<VehicleModelCalendarPriceDTO> vmcpds = JSONUtil.toList(JSONUtil.parseArray(vehicleItemDTO.getDetail()), VehicleModelCalendarPriceDTO.class);
List<VMCalendarPriceCostDTO> vmcpds = vehicleItemDTO.getVehicleDetail();
VehicleItemDTO.ParamDTO paramDTO = vehicleItemDTO.initParam(freeDays, vmcpds);
List<VMCalendarPriceCostDTO> useAmountList = CollUtil.newArrayList();
//抵消的天数
Integer offsetDays = paramDTO.getOffsetNum();
//商品真实价格
BigDecimal goodsRealAmount = baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount());
//其他消费金额 = 商品真实价格 - 主要商品真实价格 = (商品价格 - 优惠价格)- 主要商品真实价格
......@@ -103,24 +109,28 @@ public class OrderCalculateBiz {
inProgressVO.setUsedDays(useDays);
inProgressVO.setUsedAmount(vehicleItemDTO.getUsedAmount(useDays));
//使用的天数对应的免费天数
Integer useDaysMapFreeDays = vehicleItemDTO.mapFreeDays(useDays);
//计算:剩余免费天数
Integer backFreeDays = freeDays - useDays;
//待返还的免费天数
Integer backFreeDays = freeDays - useDaysMapFreeDays;
//待返还的优惠券编号
List<String> backCouponNos = Lists.newArrayList();
//剩余天数
Integer residueDays = vehicleItemDTO.getTotalNum() - useDays;
//过了出发时间取消订单 ,优先使用免费天数
if(backFreeDays <= 0) {
//设置免费天数
inProgressVO.setUsedfreeDays(freeDays);
inProgressVO.setUsedFreeDaysAmount(vehicleItemDTO.getFreeAmount(freeDays));
inProgressVO.setUsedFreeDaysAmount(vehicleItemDTO.getFreeAmount(null));
//消费天数
Integer consumeDays = useDays - freeDays;
Integer consumeDays = useDays - offsetDays;
//如果使用天数 大于 总天数
if(useDays > vehicleItemDTO.getTotalNum()) {
//消费天数
consumeDays = vehicleItemDTO.getTotalNum() - freeDays;
consumeDays = vehicleItemDTO.getTotalNum() - offsetDays;
}
//需要扣除订单费用
......@@ -128,8 +138,8 @@ public class OrderCalculateBiz {
//计算使用天数的费用
//融入日期价格
//consumeAmount = orderItem.getUnitPrice().multiply(new BigDecimal(consumeDays+""));
for(int i = freeDays; i < (freeDays+ consumeDays); i++) {
consumeAmount = consumeAmount.add(vmcpds.get(i).getPrice());
for(int i = offsetDays; i < (offsetDays+ consumeDays); i++) {
consumeAmount = consumeAmount.add(vmcpds.get(i).getConsumeAmount());
}
if(StrUtil.isNotBlank(baseOrder.getCouponTickerNos())) {
......@@ -149,14 +159,14 @@ public class OrderCalculateBiz {
}
}
//设置消费金额
//设置消费金额,添加租车以外的消费金额
consumeAmount = consumeAmount.add(otherItemRealAmount);
inProgressVO.setConsumeAmount(consumeAmount);
refundAmount = handleConsumeAmount(oad, refundAmount, consumeAmount, goodsRealAmount, inProgressVO);
}else {
//设置免费天数
inProgressVO.setUsedfreeDays(useDays);
inProgressVO.setUsedfreeDays(useDaysMapFreeDays);
inProgressVO.setUsedFreeDaysAmount(vehicleItemDTO.getFreeAmount(useDays));
//返回剩余免费天数,返回优惠券,订单款
......@@ -165,27 +175,21 @@ public class OrderCalculateBiz {
// inProgressVO.setBackFreeDays(backFreeDays);
//融入日期价格
Integer trueBackFreeDays = 0;
for(int i = (freeDays - backFreeDays); i < freeDays; i++) {
trueBackFreeDays += vmcpds.get(i).getFreeDays();
}
Integer trueBackFreeDays = backFreeDays;
inProgressVO.setBackFreeDays(trueBackFreeDays);
//返回优惠券
if(StrUtil.isNotBlank(baseOrder.getCouponTickerNos())) {
//返回所有优惠券
//没有租车消费金额,所以返回所有优惠券
inProgressVO.setBackCoupons(StrUtil.split(baseOrder.getCouponTickerNos(), ','));
}
//设置消费金额 由于返回了优惠券,所以添加优惠券之前减免的金额
//设置消费金额,添加租车以外的消费金额
consumeAmount = consumeAmount.add(otherItemRealAmount);
//修改bug,消费金额不需要添加优惠券金额
//.add(baseOrder.getCouponAmount());
inProgressVO.setConsumeAmount(consumeAmount);
refundAmount = handleConsumeAmount(oad, refundAmount, consumeAmount, goodsRealAmount, inProgressVO);
}
inProgressVO.setRefundOrderAmount(refundAmount);
......@@ -208,7 +212,7 @@ public class OrderCalculateBiz {
if(residueDays >= 2) {
residueDays = 2;
residueAmount = BigDecimal.ZERO;
for(int i = useDays; i < (useDays + residueDays + 1); i++) {
for(int i = useDays; i < (useDays + residueDays); i++) {
residueAmount = residueAmount.add(vmcpds.get(i).getPrice());
}
violateDesc += StrUtil.format("(封顶{}元)", residueAmount);
......@@ -268,12 +272,11 @@ public class OrderCalculateBiz {
setType(ItemTypeEnum.VEHICLE_MODEL.getCode());
setOrderId(baseOrder.getId());
}}), VehicleItemDTO.class);
Integer freeDays = (null == vehicleItemDTO.getCutNum())?0 :vehicleItemDTO.getCutNum();
return inProgressCalculate(baseOrder, vehicleItemDTO, freeDays, useDays, new OrderAccountDetail(), Boolean.FALSE);
return inProgressCalculate(baseOrder, vehicleItemDTO, useDays, new OrderAccountDetail(), Boolean.FALSE);
}
public InProgressVO calculateOrderComplete(BaseOrder baseOrder, OrderRentVehicleDetail orvd, OrderAccountDetail oad, VehicleItemDTO vehicleItemDTO, Integer useDays, Boolean isCancel) {
InProgressVO inProgressVO = inProgressCalculate(baseOrder, vehicleItemDTO, vehicleItemDTO.getCutNum(), useDays, oad, isCancel);
InProgressVO inProgressVO = inProgressCalculate(baseOrder, vehicleItemDTO, useDays, oad, isCancel);
//定金 - (额外消费金额 + 违约金)
oad.setDepositAmount(orvd.getDeposit().subtract(inProgressVO.getExtraAmount().add(inProgressVO.getViolateAmount())));
......@@ -297,6 +300,12 @@ public class OrderCalculateBiz {
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long bookTimeLag = endLong - startLong;
//默认 已使用了一天
if(bookTimeLag <= 0) {
return 1;
}
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();
......@@ -339,8 +348,7 @@ public class OrderCalculateBiz {
if(timeLag < 0 ) {
Integer useDays = getIncludeDays(orderPageVO.getOrderRentVehicleDetail().getStartTime(), DateTime.now().getMillis());
OrderAccountDetail oad = new OrderAccountDetail();
Integer freeDays = (null == vehicleItemDTO.getCutNum())?0 :vehicleItemDTO.getCutNum();
inProgressVO = inProgressCalculate(orderPageVO, vehicleItemDTO, freeDays, useDays, new OrderAccountDetail(), Boolean.FALSE);
inProgressVO = inProgressCalculate(orderPageVO, vehicleItemDTO, useDays, new OrderAccountDetail(), Boolean.FALSE);
topAmount = vehicleItemDTO.getTopAmount(useDays);
totalDeductAmount = oad.realTotalDeduct();
......
......@@ -175,7 +175,10 @@ public class OrderCancelBiz {
csv.setHadConpon((StrUtil.isNotBlank(baseOrder.getCouponTickerNos())? Boolean.TRUE: Boolean.FALSE));
csv.setViolateAmount(BigDecimal.ZERO);
csv.setViolateDesc("");
csv.setSameUseUnitPriceFromList(inProgressVO.getUseAmountList());
csv.setSameOverUnitPriceFromList(inProgressVO.getOverAmountList());
csv.setUseAmountList(inProgressVO.getUseAmountList());
csv.setOverAmountList(inProgressVO.getOverAmountList());
//如果有扣款项,则生成额外的费用明细
if(oad.getDeductions().size() > 0) {
......
......@@ -41,7 +41,7 @@ public class FeignHeadConfiguration {
* 遍历请求头里面的属性字段,将logId和token添加到新的请求头中转发到下游服务
* */
if ("Authorization".equalsIgnoreCase(name)) {
log.debug("添加自定义请求头key:" + name + ",value:" + value);
// log.debug("添加自定义请求头key:" + name + ",value:" + value);
requestTemplate.header(name, value);
} else {
//log.debug("FeignHeadConfiguration", "非自定义请求头key:" + name + ",value:" + value + "不需要添加!");
......
......@@ -111,7 +111,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
return ObjectRestResponse.succ(baseBiz.getTourHomePageOrderData(companyIds));
}
//只统计会员订单
if (TYPE_MEMBER.equals(type)||DATA_AUTHORITY.equals(user.getDataAll())) {
if (TYPE_MEMBER.equals(type)&&DATA_AUTHORITY.equals(user.getDataAll())) {
return ObjectRestResponse.succ(baseBiz.getMemberHomePageOrderData(companyIds));
}
//所有订单
......
......@@ -414,6 +414,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setRealVehicleAmount(vehicleOrderItem.getRealAmount());
rvp.setCouponDesc(couponDesc);
rvp.setUseAmountList(vehicleOrderItem.getVehicleDetail());
rvp.setSameUnitPrice(vehicleOrderItem.getSameUnitPrice());
rvp.initParamJson();
//设置收费明细
......
......@@ -33,4 +33,6 @@ public class VehicleModelDayPriceVo extends VehicleModelDTO implements Serializa
* 会员等级
*/
private Integer level;
private Integer freeDays;
}
......@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.Area;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.BranchCompanyStockInfo;
......@@ -416,4 +417,17 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
public List<Integer> getCompanyIds(String dataZone ,String dataCompany) {
return vehicleBiz.dataCompany(dataZone, dataCompany);
}
public ObjectRestResponse delCompanyByBaseId(Integer id) {
Example example = new Example(BranchCompany.class);
example.createCriteria().andEqualTo("companyBaseId", id);
example.createCriteria().andEqualTo("isDel", 0);
BranchCompany branchCompany = mapper.selectOneByExample(example);
if(branchCompany == null) {
return ObjectRestResponse.createFailedResult(ResCode.BRANCH_COMPANY_UNEXIST.getCode(), ResCode.BRANCH_COMPANY_UNEXIST.getDesc());
}
branchCompany.setIsDel(1);
updateSelectiveByIdRe(branchCompany);
return ObjectRestResponse.succ();
}
}
......@@ -8,7 +8,6 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.RandomUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.BranchCompanyStockInfoMapper;
......@@ -32,7 +31,6 @@ import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
@Service
@Slf4j
......@@ -388,6 +386,7 @@ public class CompanyBaseBiz extends BaseBiz<CompanyBaseMapper, CompanyBase> {
companyBase.setId(id);
companyBase.setIsDel(1);
updateSelectiveById(companyBase);
branchCompanyBiz.delCompanyByBaseId(id);
return ObjectRestResponse.succ();
}
......
......@@ -1182,17 +1182,19 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
public PageDataVO<UsableVehicleModelVO> searchUsableModel(UsableVeicleDTO dto) {
Map<String, Object> params = BeanUtil.beanToMap(dto);
if (StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params, Boolean.FALSE);
params = initBookSearchParam(dto, params, Boolean.FALSE);
}
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
Map<String, Object> finalParams = params;
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(finalParams));
}
public PageDataVO<UsableVehicleModelVO> searchUsableModelBackStage(UsableVeicleDTO dto) {
Map<String, Object> params = BeanUtil.beanToMap(dto);
if (StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params, Boolean.FALSE);
params = initBookSearchParam(dto, params, Boolean.FALSE);
}
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
Map<String, Object> finalParams = params;
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(finalParams));
}
public PageDataVO<UsableVehicleModelVO> hotModel(HotVeicleDTO dto) {
......@@ -1201,7 +1203,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
}
private void initBookSearchParam(UsableVeicleDTO dto, Map<String, Object> params, Boolean needDateExtend) {
private Map<String, Object> initBookSearchParam(UsableVeicleDTO dto, Map<String, Object> params, Boolean needDateExtend) {
List<String> notBookedDates = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getStartDate()) &&
StringUtils.isNotBlank(dto.getEndDate())) {
......@@ -1213,6 +1215,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
dto.getEndDate());
dto.setStartDateExtend(dto.getStartDate());
dto.setEndDateExtend(dto.getEndDate());
params = BeanUtil.beanToMap(dto);
}
}
......@@ -1232,6 +1235,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
//加入预定信息查询条件
fillBookedDateSearchParam(params, yearMonthAndDate, yearMonthAndDateNotBooked);
return params;
}
public PageDataVO<Vehicle> searchUsableVehicle(RentVehicleBookDTO dto) {
......@@ -1240,7 +1244,6 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
dto.setUseType(null);
}
Map<String, Object> params = BeanUtil.beanToMap(dto);
List<String> notBookedDates = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getBookEndDate()) &&
StringUtils.isNotBlank(dto.getBookEndDate())) {
......@@ -1248,10 +1251,13 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
dto.getBookEndDate());
dto.setStartDateExtend(dto.getBookStartDate());
dto.setEndDateExtend(dto.getBookEndDate());
// notBookedDates = convertDatePeriod2List(dto.getStartDateExtend(),
// dto.getEndDateExtend());
}
Map<String, Object> params = BeanUtil.beanToMap(dto);
//若传入预定信息查询条件,则查询对应月份预定信息查询条件(不超过3个月)
if (CollectionUtils.isEmpty(notBookedDates)) {
//return;
......
......@@ -146,6 +146,8 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
vehicleModelDayPriceVo.setPrice(aPrice);
Integer level = isNullOfVehicleModelPrice ? null : vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getLevel();
vehicleModelDayPriceVo.setLevel(level);
Integer freeDays = isNullOfVehicleModelPrice ? null : vehicleModelCalendarPriceMap.get(vehicleModelDTO.getVehicleModelId()).getFreeDays();
vehicleModelDayPriceVo.setFreeDays(freeDays);
vehicleModelDayPriceVos.add(vehicleModelDayPriceVo);
}
return vehicleModelDayPriceVos;
......@@ -239,6 +241,12 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long bookTimeLag = endLong - startLong;
//默认 已使用了一天
if(bookTimeLag <= 0) {
return 1;
}
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();
......
......@@ -200,7 +200,7 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneOffset.ofHours(8)).plusSeconds(30L);
dto.setBookStartDate(DateTimeFormatter.ofPattern(DATE_TIME_LINE).format(ldt));
}else {
dto.setBookStartDate(dto.getBookEndDateTime());
dto.setBookStartDate(dto.getBookStartDateTime());
}
dto.setBookEndDate(dto.getBookEndDateTime());
BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class);
......
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