Commit de0e0e3a authored by 周健威's avatar 周健威

修改旅游下单代码

parent d0451ca1
......@@ -75,14 +75,21 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
public void updateById(T entity) {
EntityUtils.setUpdatedInfo(entity);
mapper.updateByPrimaryKey(entity);
updateByIdRe(entity);
}
public void updateSelectiveById(T entity) {
updateSelectiveByIdRe(entity);
}
public int updateByIdRe(T entity) {
EntityUtils.setUpdatedInfo(entity);
return mapper.updateByPrimaryKey(entity);
}
public int updateSelectiveByIdRe(T entity) {
EntityUtils.setUpdatedInfo(entity);
mapper.updateByPrimaryKeySelective(entity);
return mapper.updateByPrimaryKeySelective(entity);
}
public List<T> selectByExample(Object example) {
......
......@@ -4,8 +4,8 @@ package com.github.wxiaoqi.security.common.constant;
* Created by ace on 2017/8/29.
*/
public class CommonConstants {
public static final int SYS_TRUE = 1;
public static final int SYS_FALSE = 0;
public static final Integer SYS_TRUE = 1;
public static final Integer SYS_FALSE = 0;
public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button";
// 用户token异常
......
......@@ -15,7 +15,7 @@ import javax.persistence.Table;
public class AppUserDetail {
@Id
@GeneratedValue(generator = "JDBC")
private int id;
private Integer id;
private Integer userid;
@Column(name = "is_member")
private Integer isMember;
......
......@@ -15,7 +15,7 @@ import javax.persistence.Table;
public class AppUserLogin {
@Id
@GeneratedValue(generator = "JDBC")
private int id;
private Integer id;
@Column(name = "im_userid")
private Integer imUserid;
@Column(name = "im_password")
......
......@@ -13,6 +13,12 @@
<artifactId>xx-order-api</artifactId>
<dependencies>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-activity-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-vehicle-api</artifactId>
......
......@@ -229,6 +229,13 @@ public class OrderTourDetail implements Serializable {
@Column(name = "start_zone_id")
@ApiModelProperty(value = "出发公司区域id")
private Integer startZoneId;
@Column(name = "has_insure")
@ApiModelProperty(value = "是否保险标记 1--要保险;0--不需要")
Integer hasInsure;
@Column(name = "site_id")
@ApiModelProperty(value = "出发的站点id")
private Integer siteId;
}
......@@ -3,6 +3,7 @@ package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
......@@ -17,4 +18,9 @@ import java.util.List;
public class MemberBO extends OrderMemberDetail implements OrderDetail {
private BaseOrder order;
private BaseUserMemberLevel baseUserMemberLevel;
/**
* 优惠券*
*/
private List<Coupon> coupons;
}
package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
......@@ -8,6 +9,8 @@ import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import lombok.Data;
import java.util.List;
@Data
public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail {
private BaseOrder order;
......@@ -19,4 +22,9 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
*/
private Integer rentFreeDay;
private AppUserDTO appUserDTO;
/**
* 优惠券*
*/
private List<Coupon> coupons;
}
......@@ -2,6 +2,7 @@ package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
......@@ -19,5 +20,9 @@ public class TourBO extends OrderTourDetail implements OrderDetail {
TourGood tourGood;
List<TourUser> tourUsers;
AppUserDTO appUserDTO;
private Integer siteId;
/**
* 优惠券*
*/
private List<Coupon> coupons;
}
......@@ -37,4 +37,20 @@ public class TourPriceVO extends OrderPriceVO{
//儿童真实总价(优惠后的价格)
@ApiModelProperty(value = "儿童真实总价(优惠后的价格)")
private BigDecimal realChildPrice;
//保险费用
@ApiModelProperty(value = "保险费用")
private BigDecimal insureAmount;
//保险单价
@ApiModelProperty(value = "保险单价")
private BigDecimal insurePrice;
//天数
@ApiModelProperty(value = "天数")
private Integer dayNum;
//总人数
@ApiModelProperty(value = "总人数")
private Integer totalNumber;
}
package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
......@@ -93,12 +91,18 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
*/
public void cancel(BaseOrder baseOrder) {
if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) {
this.updateSelectiveById(new BaseOrder(){{
int updateResult = this.updateSelectiveByIdRe(new BaseOrder(){{
setId(baseOrder.getId());
setStatus(OrderStatusEnum.ORDER_CANCEL.getCode());
setCancelReason(baseOrder.getCancelReason());
setVersion(baseOrder.getVersion());
}});
//如果取消失败,则抛异常
if(updateResult <= 0) {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
//触发退款流程
//判断是否已支付
if(baseOrder.getHasPay().equals(SYS_TRUE)) {
......@@ -107,33 +111,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal refundAmont = orvd.getDeposit().add(baseOrder.getGoodsAmount());
String refundTradeNo = thirdFeign.refund(new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setRefundAmount(refundAmont.multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
}}).getData();
//如果返回的流水为空,则当做失败
Integer refundStatus = SYS_TRUE;
if(StrUtil.isBlank(refundTradeNo)) {
refundStatus = SYS_FALSE;
}
//创建订单退款记录
OrderRefund orderRefund = new OrderRefund(){{
setOrderId(baseOrder.getId());
setRefundAmount(refundAmont);
setRefundTime(System.currentTimeMillis());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
setTradeNo(refundTradeNo);
setRefundType(RefundTypeEnum.RentVehicle.getCode());
}};
orderRefund.setRefundStatus(refundStatus);
orderRefundBiz.insertSelective(orderRefund);
//退款流程
refundProcess(baseOrder, orvd);
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
......@@ -168,6 +148,36 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
}
private void refundProcess(BaseOrder baseOrder, OrderRentVehicleDetail orvd) {
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal refundAmont = orvd.getDeposit().add(baseOrder.getGoodsAmount());
String refundTradeNo = thirdFeign.refund(new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setRefundAmount(refundAmont.multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
}}).getData();
//如果返回的流水为空,则当做失败
Integer refundStatus = SYS_TRUE;
if(StrUtil.isBlank(refundTradeNo)) {
refundStatus = SYS_FALSE;
}
//创建订单退款记录
OrderRefund orderRefund = new OrderRefund(){{
setOrderId(baseOrder.getId());
setRefundAmount(refundAmont);
setRefundTime(System.currentTimeMillis());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
setTradeNo(refundTradeNo);
setRefundType(RefundTypeEnum.RentVehicle.getCode());
}};
orderRefund.setRefundStatus(refundStatus);
orderRefundBiz.insertSelective(orderRefund);
}
/**
* 支付回调处理
* @param orderNo
......@@ -216,7 +226,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
//暂无处理
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
}});
//站点总人数添加
tourFeign.updateTourGoodPersonNum(otd.getVerificationId(), TourFeign.TOTAL_PERSON, otd.getTotalNumber());
}
this.updateSelectiveById(updateOrder);
} else {
......
......@@ -19,6 +19,10 @@ import java.util.Map;
@Configuration
public class RabbitUserConfig {
public static final String ORDER_CANCEL_EXC = "order_cancel_delay_exchange";
public static final String ORDER_CANCEL_QUE = "order_cancel_delay_queue";
public static final String ORDER_CANCEL_KEY = "order_cancel_delay_key";
/**
* 延时队列交换机
* 注意这里的交换机类型:CustomExchange
......@@ -28,7 +32,7 @@ public class RabbitUserConfig {
public CustomExchange delayExchange(){
Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange("delay_exchange","x-delayed-message",true, false,args);
return new CustomExchange(ORDER_CANCEL_EXC,"x-delayed-message",true, false, args);
}
/**
......@@ -37,16 +41,16 @@ public class RabbitUserConfig {
*/
@Bean
public Queue delayQueue(){
return new Queue("delay_queue",true);
return new Queue(ORDER_CANCEL_QUE,true);
}
/**
/**
* 给延时队列绑定交换机
* @return
*/
@Bean
public Binding cfgDelayBinding(Queue cfgDelayQueue, CustomExchange cfgUserDelayExchange){
return BindingBuilder.bind(cfgDelayQueue).to(cfgUserDelayExchange).with("delay_key").noargs();
return BindingBuilder.bind(cfgDelayQueue).to(cfgUserDelayExchange).with(ORDER_CANCEL_KEY).noargs();
}
}
package com.xxfc.platform.order.mqhandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.rabbitmq.client.Channel;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -11,6 +15,8 @@ import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import static com.xxfc.platform.order.config.RabbitUserConfig.ORDER_CANCEL_QUE;
/**
* activeMq消费者类
* @author zhanghang
......@@ -19,24 +25,30 @@ import java.util.List;
@Slf4j
@Component
public class RabbitConsumer {
// @Autowired
// private CcqCustomerCfgService ccqCustomerCfgService;
@Autowired
BaseOrderBiz baseOrderBiz;
/**
* 默认情况下,如果没有配置手动ACK, 那么Spring Data AMQP 会在消息消费完毕后自动帮我们去ACK
* 存在问题:如果报错了,消息不会丢失,但是会无限循环消费,一直报错,如果开启了错误日志很容易就吧磁盘空间耗完
* 解决方案:手动ACK,或者try-catch 然后在 catch 里面将错误的消息转移到其它的系列中去
* spring.rabbitmq.listener.simple.acknowledge-mode = manual
* @param list 监听的内容
*/
@RabbitListener(queues = "delay_queue")
public void cfgUserReceiveDealy(List<Integer> list, Message message, Channel channel) throws IOException {
@RabbitListener(queues = ORDER_CANCEL_QUE)
public void orderCancelReceiveDealy(BaseOrder baseOrder, Message message, Channel channel) throws IOException {
log.info("===============接收队列接收消息====================");
log.info("接收时间:{},接受内容:{}", LocalDateTime.now(), list.toString());
log.info("接收时间:{},接受内容:{}", LocalDateTime.now(), baseOrder.toString());
//通知 MQ 消息已被接收,可以ACK(从队列中删除)了
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
try {
} catch (Exception e) {
baseOrderBiz.cancel(baseOrder);
}catch (BaseException e) {
if(ResultCode.DB_OPERATION_FAIL_CODE == e.getStatus()) {
log.info("取消操作被取消");
}
}catch (Exception e) {
log.error("============消费失败,尝试消息补发再次消费!==============");
log.error(e.getMessage());
/**
......
package com.xxfc.platform.order.mqhandler;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -8,6 +9,9 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
import static com.xxfc.platform.order.config.RabbitUserConfig.ORDER_CANCEL_EXC;
import static com.xxfc.platform.order.config.RabbitUserConfig.ORDER_CANCEL_KEY;
/**
* rabbitMq生产者类
* @author zhanghang
......@@ -20,21 +24,21 @@ public class RabbitProduct {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendDelayMessage(List<Integer> list) {
public void sendDelayMessage(BaseOrder baseOrder, Long delayTime) {
//这里的消息可以是任意对象,无需额外配置,直接传即可
log.info("===============延时队列生产消息====================");
log.info("发送时间:{},发送内容:{}", LocalDateTime.now(), list.toString());
log.info("发送时间:{},发送内容:{}", LocalDateTime.now(), baseOrder.toString());
this.rabbitTemplate.convertAndSend(
"delay_exchange",
"delay_key",
list,
ORDER_CANCEL_EXC,
ORDER_CANCEL_KEY,
baseOrder,
message -> {
//注意这里时间可以使long,而且是设置header
message.getMessageProperties().setHeader("x-delay", 60000);
message.getMessageProperties().setHeader("x-delay", delayTime);
return message;
}
);
log.info("{}ms后执行", 60000);
log.info("{}ms后执行", delayTime);
}
}
......@@ -21,6 +21,7 @@ import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO;
......@@ -43,6 +44,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
......@@ -62,6 +64,8 @@ public class BaseOrderController extends CommonBaseController {
UserFeign userFeign;
@Resource
VehicleFeign vehicleFeign;
@Autowired
RabbitProduct rabbitProduct;
@Autowired
OrderMemberDetailBiz orderMemberDetailBiz;
......@@ -277,6 +281,17 @@ public class BaseOrderController extends CommonBaseController {
}
return ObjectRestResponse.succ();
}
@RequestMapping(value = "/app/unauth/send-msg", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "mq发送消息")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse sendMsg() {
rabbitProduct.sendDelayMessage(baseOrderBiz.selectById(93), 1000L * 60);
return ObjectRestResponse.succ();
}
/**
* 订单查询类
*/
......
......@@ -17,6 +17,7 @@ import com.xxfc.platform.order.pojo.AddTourDTO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.TourPriceVO;
import com.xxfc.platform.order.service.OrderTourService;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.feign.TourFeign;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
......@@ -70,6 +71,8 @@ public class OrderTourController extends BaseController<OrderTourDetailBiz,Order
bo.setAppUserDTO(getUserInfo());
bo.setAdultNum(vo.getNumber());
bo.setChildNum(vo.getChildNumber());
TourGood tourGood = tourFeign.usableGet(bo.getGoodId()).getData();
bo.setTourGood(tourGood);
return ObjectRestResponse.succ(orderTourService.calculatePrice(bo));
}
......@@ -93,5 +96,8 @@ public class OrderTourController extends BaseController<OrderTourDetailBiz,Order
@ApiModelProperty(value = "儿童个数")
Integer childNumber;
@ApiModelProperty(value = "是否保险标记 1--要保险;0--不需要")
Integer hasInsure;
}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
......@@ -23,6 +24,9 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
@Autowired
protected Biz detailBiz;
@Autowired
RabbitProduct rabbitProduct;
@Autowired
protected BaseOrderBiz baseOrderBiz;
......
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.biz.OrderTourDetailBiz;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.order.pojo.price.TourPriceVO;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.entity.TourGoodVerification;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import com.xxfc.platform.vehicle.entity.SysRegion;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -36,10 +21,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Log4j
......@@ -99,6 +80,9 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
bo.getOrder().setName(bo.getBaseUserMemberLevel().getName());
super.handleDetail(bo);
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), 1000L * 60 * 30);
}
@Override
......
......@@ -43,7 +43,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
private static Integer DISCOUNT_STATUS_NONE = 0;
private static Integer DISCOUNT_STATUS_MEMBER = 1;
private static Integer DISCOUNT_STATUS_FIXED = 2;
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
VehicleFeign vehicleFeign;
......@@ -90,6 +89,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
}
super.handleDetail(bo);
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), 1000L * 60 * 30);
}
@Override
......
......@@ -3,26 +3,18 @@ package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.biz.OrderTourDetailBiz;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderCostDetail;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.order.pojo.price.TourPriceVO;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.entity.TourGood;
......@@ -31,7 +23,6 @@ import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import com.xxfc.platform.vehicle.entity.SysRegion;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import lombok.extern.log4j.Log4j;
......@@ -46,6 +37,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@Service
@Log4j
public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, TourBO> {
......@@ -59,11 +53,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
private static Integer IS_CHILD = 1;
// private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00");
// private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
private static Integer LEVEL_DEFAULT = 0;
private static Integer NUMBER_ZERO = 0;
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");-
private static BigDecimal INSURE_PRICE = new BigDecimal("5.00"); //保险
@Autowired
OrderCostDetailBiz orderCostDetailBiz;
......@@ -123,6 +115,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber(), TourFeign.STOCK_SUBTRACT);
super.handleDetail(bo);
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), 1000L * 60 * 30);
}
@Override
......@@ -138,6 +133,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal tourAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal insureAmount = BigDecimal.ZERO;
if(StrUtil.isNotBlank(detail.getTourUserIds())) {
List<TourUser> users = new ArrayList<TourUser>();
......@@ -171,13 +167,17 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
}});
TourSpePriceVo tourSpePriceVo = objectRestResponse.getData();
//需要保险
if(SYS_FALSE.equals(detail.getHasInsure())) {
//人数 * 天数 * 价格
insureAmount = insureAmount.add(INSURE_PRICE.multiply(new BigDecimal(String.valueOf(detail.getTotalNumber() * detail.getTourGood().getNumber()))));
}
//总价
tourAmount = tourAmount.add(tourSpePriceVo.getTotalPrice()).add(tourSpePriceVo.getChildPrice());
//商品价格
goodsAmount = goodsAmount.add(tourAmount);
//总价格
orderAmount = orderAmount.add(goodsAmount);
orderAmount = orderAmount.add(goodsAmount).add(insureAmount);
//真实价格
realAmount = realAmount.add(tourSpePriceVo.getRealPrice()).add(tourSpePriceVo.getRealChildPrice());
......@@ -188,6 +188,10 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
tpv.setRealAmount(realAmount);
tpv.setNumber(detail.getAdultNum());
tpv.setChildNumber(detail.getChildNum());
tpv.setInsurePrice(INSURE_PRICE);
tpv.setDayNum(detail.getTourGood().getNumber());
tpv.setInsureAmount(insureAmount);
tpv.setTotalNumber(detail.getTotalNumber());
//设置收费明细
costDetail(tpv, handlechildren(detail));
......@@ -202,6 +206,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
if(NUMBER_ZERO < detail.getChildNum()) {
childrenStr.append(",${tem_0202}");
}
if(SYS_TRUE.equals(detail.getHasInsure())) {
childrenStr.append(",${tem_0203}");
}
String str = childrenStr.toString();
if(str.length() > 0) {
......
......@@ -29,6 +29,8 @@ public interface TourFeign {
public static final int STOCK_SUBTRACT = 1;
public static final int STOCK_PLUS = 2;
public static final String TOTAL_PERSON = "total_person";
/**
* 计算价格
* @param spePriceDto
......@@ -54,7 +56,7 @@ public interface TourFeign {
@GetMapping("/tourUser/app/unauth/getTourUsers")
public ObjectRestResponse<List<TourUser>> getTourUsers(@RequestParam String ids);
@GetMapping("/tourGoodVerification/entityList")
@GetMapping("/tourGood/verfication/entityList")
public ObjectRestResponse<List<TourGoodVerification>> entityList(@RequestParam Map<String, Object> entity);
/**
......
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