|
|
@@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
-import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.EasyExcelFactory;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
|
@@ -31,6 +30,7 @@ import com.yc.ship.framework.common.util.collection.CollectionUtils;
|
|
|
import com.yc.ship.framework.common.util.object.BeanUtils;
|
|
|
import com.yc.ship.framework.common.util.object.ObjectUtils;
|
|
|
import com.yc.ship.framework.ip.core.utils.AreaUtils;
|
|
|
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import com.yc.ship.framework.security.core.LoginUser;
|
|
|
import com.yc.ship.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
|
|
|
@@ -40,9 +40,6 @@ import com.yc.ship.module.infra.api.config.ConfigApi;
|
|
|
import com.yc.ship.module.member.api.address.MemberAddressApi;
|
|
|
import com.yc.ship.module.member.api.user.MemberUserApi;
|
|
|
import com.yc.ship.module.member.api.user.dto.MemberUserRespDTO;
|
|
|
-import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
|
-import com.yc.ship.module.ota.api.dto.DistributorProductRespDTO;
|
|
|
-import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
|
|
|
import com.yc.ship.module.ota.dal.dataobject.distributor.DistributorDO;
|
|
|
import com.yc.ship.module.ota.dal.mysql.distributor.DistributorMapper;
|
|
|
import com.yc.ship.module.otc.api.agency.dto.AgencyUserLoginInfoRespDTO;
|
|
|
@@ -72,6 +69,7 @@ import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
|
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.otc.PrintRespVO;
|
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.refund.*;
|
|
|
import com.yc.ship.module.trade.convert.order.TradeOrderConvert;
|
|
|
+import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.contract.ContractDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.insurance.InsuranceDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDO;
|
|
|
@@ -103,8 +101,6 @@ import org.apache.poi.ss.usermodel.*;
|
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.apache.poi.ss.util.RegionUtil;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
-import org.redisson.api.RLock;
|
|
|
-import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -125,9 +121,6 @@ import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.ge
|
|
|
import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.getLoginUserNickname;
|
|
|
import static com.yc.ship.module.trade.enums.ApiConstants.*;
|
|
|
import static com.yc.ship.module.trade.enums.ErrorCodeConstants.*;
|
|
|
-import static com.yc.ship.module.trade.enums.TravelhubDictTypeConstants.PRODUCT_BASE_TYPE_SELF;
|
|
|
-import static com.yc.ship.module.trade.enums.TravelhubDictTypeConstants.YES;
|
|
|
-import static com.yc.ship.module.trade.service.order.TradeOrderService.CHANGE_ORDER_BIZ_LOCK;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -157,8 +150,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
@Resource
|
|
|
private MemberUserApi memberUserApi;
|
|
|
@Resource
|
|
|
- private OtaDistributorApi otaDistributorApi;
|
|
|
- @Resource
|
|
|
private MemberAddressApi memberAddressApi;
|
|
|
|
|
|
@Resource
|
|
|
@@ -194,8 +185,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
private StringRedisTemplate stringRedisTemplate;
|
|
|
@Resource
|
|
|
private TradeOrderDeliveryMapper tradeOrderDeliveryMapper;
|
|
|
- @Resource
|
|
|
- private RedissonClient redissonClient;
|
|
|
|
|
|
@Resource
|
|
|
private AgencyAuthUtils agencyAuthUtils;
|
|
|
@@ -240,78 +229,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
|
|
|
|
|
|
|
|
|
- @Override
|
|
|
- public CommonResult<OtcTradeOrderCreateRespVO> windowCreateOrder(LoginUser loginUser, OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
|
|
|
-
|
|
|
- CommonResult<TradeOrderRespDTO> result = doWindowCreateOrder(loginUser, otcTradeOrderCreateReqVO, SellMethodEnum.WINDOW);
|
|
|
- if (result.isError()) {
|
|
|
- return CommonResult.error(result);
|
|
|
- }
|
|
|
- OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
- //是否为关联订单
|
|
|
- if (otcTradeOrderCreateReqVO.getMainOrderId() != null) {
|
|
|
- SpringUtil.getBean(OtcTradeOrderServiceImpl.class).addOrder(respVO, otcTradeOrderCreateReqVO.getMainOrderId());
|
|
|
- }
|
|
|
-
|
|
|
- return CommonResult.success(respVO);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public CommonResult<OtcTradeOrderCreateRespVO> platCreateMoveOrder(LoginUser loginUser, ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
|
|
|
- if (loginUser.getDistributorId() != null) {
|
|
|
- shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
- }
|
|
|
- Asserts.isTrue(shipTradeOrderCreateReqVO.getDistributorId() != null, "分销商ID不能为空");
|
|
|
- OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO = TradeOrderConvert.INSTANCE.convert(shipTradeOrderCreateReqVO);
|
|
|
- //获取当前分销商信息
|
|
|
- DistributorDO distributorDto = distributorMapper.selectById(otcTradeOrderCreateReqVO.getDistributorId());
|
|
|
-
|
|
|
- //平台产品
|
|
|
- for (TradeOrderCreateReqDTO.OrderItem orderItem : otcTradeOrderCreateReqVO.getItemlList()) {
|
|
|
- DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getCheckedData();
|
|
|
- orderItem.setProductId(distributorProductRespDTO.getProductId().toString());
|
|
|
- orderItem.setProductType(PRODUCT_BASE_TYPE_SELF);
|
|
|
- for (TradeOrderCreateReqDTO.OrderDetail orderDetail : orderItem.getDetailList()) {
|
|
|
- orderDetail.setProductId(orderItem.getProductId());
|
|
|
- orderDetail.setProductType(orderItem.getProductType());
|
|
|
- }
|
|
|
- }
|
|
|
- otcTradeOrderCreateReqVO.getOrderProperty().setSourceId(distributorDto.getId().toString());
|
|
|
- otcTradeOrderCreateReqVO.getOrderProperty().setSourceName(distributorDto.getName());
|
|
|
- CommonResult<TradeOrderRespDTO> result = doWindowCreateOrder(loginUser, otcTradeOrderCreateReqVO, SellMethodEnum.OTC_MOVE_ORDER);
|
|
|
- if (result.isError()) {
|
|
|
- return CommonResult.error(result);
|
|
|
- }
|
|
|
- OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
- //是否为关联订单
|
|
|
- if (otcTradeOrderCreateReqVO.getMainOrderId() != null) {
|
|
|
- SpringUtil.getBean(OtcTradeOrderServiceImpl.class).addOrder(respVO, otcTradeOrderCreateReqVO.getMainOrderId());
|
|
|
- }
|
|
|
-
|
|
|
- return CommonResult.success(respVO);
|
|
|
- }
|
|
|
-
|
|
|
- private CommonResult<TradeOrderRespDTO> doWindowCreateOrder(LoginUser loginUser, OtcTradeOrderCreateReqVO otcTradeOrderCreateReqVO, SellMethodEnum sellMethodEnum) {
|
|
|
- TradeOrderCreateReqDTO reqDTO = TradeOrderConvert.INSTANCE.convert(otcTradeOrderCreateReqVO);
|
|
|
- TradeOrderCreateReqDTO.OrderProperty orderProperty = reqDTO.getOrderProperty();
|
|
|
- if (orderProperty == null) {
|
|
|
- orderProperty = new TradeOrderCreateReqDTO.OrderProperty();
|
|
|
- }
|
|
|
- orderProperty.setSellMethod(sellMethodEnum.getType());
|
|
|
- //补票销售渠道
|
|
|
- if (otcTradeOrderCreateReqVO.getIsTimePay() != null && otcTradeOrderCreateReqVO.getIsTimePay() == 1) {
|
|
|
- orderProperty.setSellMethod(SellMethodEnum.OTC_TIMEPAY_ORDER.getType());
|
|
|
- }
|
|
|
- //增加订单
|
|
|
- if (otcTradeOrderCreateReqVO.getMainOrderId() != null) {
|
|
|
- reqDTO.setIsAddOrder(YES);
|
|
|
- }
|
|
|
-
|
|
|
- setOrderPropertyFromLoginUser(loginUser, orderProperty, sellMethodEnum);
|
|
|
- reqDTO.setOrderProperty(orderProperty);
|
|
|
- return tradeOrderService.createOrder(reqDTO);
|
|
|
- }
|
|
|
-
|
|
|
private CommonResult<TradeOrderRespDTO> doShipCreateOrder(LoginUser loginUser, ShipTradeOrderCreateReqVO otcTradeOrderCreateReqVO) {
|
|
|
try {
|
|
|
ShipTradeOrderCreateReqVO.OrderProperty orderProperty = otcTradeOrderCreateReqVO.getOrderProperty();
|
|
|
@@ -360,135 +277,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 订单门票改签 ,暂时未启用,要用需检查
|
|
|
- */
|
|
|
- @Override
|
|
|
- public CommonResult<OtcTradeOrderCreateRespVO> changeTicket(LoginUser loginUser, OtcTradeOrderChangeReqVO otcTradeOrderChangeReqVO) {
|
|
|
- Asserts.isTrue(CollUtil.isNotEmpty(otcTradeOrderChangeReqVO.getOriginDetailIdList()), "改签明细ID不能为空");
|
|
|
- Asserts.isTrue(otcTradeOrderChangeReqVO.getMainOrderId() != null, "mainOrderId不能为空");
|
|
|
- TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(otcTradeOrderChangeReqVO.getMainOrderId());
|
|
|
-
|
|
|
- TradeOrderCreateReqDTO.OrderProperty orderProperty = otcTradeOrderChangeReqVO.getOrderProperty();
|
|
|
- if (orderProperty == null) {
|
|
|
- orderProperty = new TradeOrderCreateReqDTO.OrderProperty();
|
|
|
- }
|
|
|
- //后面有判断更改销售渠道
|
|
|
- orderProperty.setSellMethod(tradeOrderDO.getSellMethod());
|
|
|
- setOrderPropertyFromLoginUser(loginUser, orderProperty, SellMethodEnum.valueOf(orderProperty.getSellMethod()));
|
|
|
- otcTradeOrderChangeReqVO.setOrderProperty(orderProperty);
|
|
|
- TradeOrderChangeRespDTO respData = tradeOrderService.changeTicket(otcTradeOrderChangeReqVO, tradeOrderDO).getCheckedData();
|
|
|
- return CommonResult.success(BeanUtils.toBean(respData, OtcTradeOrderCreateRespVO.class));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 订单变更规格,退原订单,新建订单。库存保留
|
|
|
- */
|
|
|
- @Override
|
|
|
- public CommonResult<OtcTradeOrderCreateRespVO> changeOrder(LoginUser loginUser, OtcTradeOrderChangeReqVO otcTradeOrderChangeReqVO) {
|
|
|
- Asserts.isTrue(otcTradeOrderChangeReqVO.getMainOrderId() != null, "mainOrderId不能为空");
|
|
|
- TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(otcTradeOrderChangeReqVO.getMainOrderId());
|
|
|
- DistributorRespDTO distributorRespDTO = agencyAuthUtils.getLoginUserDistributorData();
|
|
|
- if (distributorRespDTO != null) {
|
|
|
- Asserts.isTrue(ObjectUtil.equal(distributorRespDTO.getId().toString(), tradeOrderDO.getSourceId()), "当前账号无该数据权限");
|
|
|
- }
|
|
|
-
|
|
|
- TradeOrderCreateReqDTO.OrderProperty orderProperty = otcTradeOrderChangeReqVO.getOrderProperty();
|
|
|
- if (orderProperty == null) {
|
|
|
- orderProperty = new TradeOrderCreateReqDTO.OrderProperty();
|
|
|
- }
|
|
|
- //后面有判断更改销售渠道
|
|
|
- orderProperty.setSellMethod(tradeOrderDO.getSellMethod());
|
|
|
- setOrderPropertyFromLoginUser(loginUser, orderProperty, SellMethodEnum.valueOf(orderProperty.getSellMethod()));
|
|
|
- otcTradeOrderChangeReqVO.setOrderProperty(orderProperty);
|
|
|
-
|
|
|
- if (ThreadLocalUtil.getAgencyId() != null) {
|
|
|
- //平台产品
|
|
|
- for (TradeOrderCreateReqDTO.OrderItem orderItem : otcTradeOrderChangeReqVO.getItemlList()) {
|
|
|
- DistributorProductRespDTO distributorProductRespDTO = otaDistributorApi.getDistributorProductById(Long.parseLong(orderItem.getProductId())).getCheckedData();
|
|
|
- orderItem.setProductId(distributorProductRespDTO.getProductId().toString());
|
|
|
- orderItem.setProductType(PRODUCT_BASE_TYPE_SELF);
|
|
|
- for (TradeOrderCreateReqDTO.OrderDetail orderDetail : orderItem.getDetailList()) {
|
|
|
- orderDetail.setProductId(orderItem.getProductId());
|
|
|
- orderDetail.setProductType(orderItem.getProductType());
|
|
|
- }
|
|
|
- }
|
|
|
- otcTradeOrderChangeReqVO.getOrderProperty().setSourceId(tradeOrderDO.getSourceId());
|
|
|
- otcTradeOrderChangeReqVO.getOrderProperty().setSourceName(tradeOrderDO.getSourceName());
|
|
|
- }
|
|
|
-
|
|
|
- TradeOrderChangeRespDTO respData = tradeOrderService.changeOrder(otcTradeOrderChangeReqVO, tradeOrderDO).getCheckedData();
|
|
|
- return CommonResult.success(BeanUtils.toBean(respData, OtcTradeOrderCreateRespVO.class));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 订单改签确认,
|
|
|
- */
|
|
|
- @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_CHANGE_CONFIRM)
|
|
|
- @Override
|
|
|
- public CommonResult<?> confirmChangeOrder(LoginUser loginUser, OtcTradeChangeOrderReqVO otcTradeChangeOrderReqVO) {
|
|
|
-
|
|
|
- String lockKey = String.format(CHANGE_ORDER_BIZ_LOCK, otcTradeChangeOrderReqVO.getMainOrderId());
|
|
|
- RLock lock = redissonClient.getLock(lockKey);
|
|
|
- try {
|
|
|
-
|
|
|
- lock.lock();
|
|
|
- TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(otcTradeChangeOrderReqVO.getMainOrderId());
|
|
|
- TradeOrderDO newTradeOrderDO = tradeOrderRepositoryService.getById(otcTradeChangeOrderReqVO.getOrderId());
|
|
|
- List<TradeDetailDO> changeDetailList = tradeOrderRepositoryService.getChangeDetailList(newTradeOrderDO.getId(), tradeOrderDO.getId());
|
|
|
-
|
|
|
- Asserts.isTrue(ObjectUtils.equalsAny(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNUSED.getStatus(), TradeOrderStatusEnum.REFUNDING.getStatus()
|
|
|
- , TradeOrderStatusEnum.PARTIAL_REFUND.getStatus()), "原订单状态不能改签确认{}", tradeOrderDO.getOrderStatus());
|
|
|
- //如果新订单都已经取消了也不能继续了
|
|
|
- Asserts.isTrue(ObjectUtils.equalsAny(newTradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.UNPAID.getStatus()), "新订单状态不能改签确认{}", newTradeOrderDO.getOrderStatus());
|
|
|
-
|
|
|
- if (CollUtil.isNotEmpty(changeDetailList)) {
|
|
|
- //窗口可以修改金额,搬单订单不能修改
|
|
|
- if (ObjectUtils.equalsAny(tradeOrderDO.getSellMethod(), SellMethodEnum.OTC_MOVE_ORDER.getType())) {
|
|
|
- BigDecimal changeAmount = changeDetailList.stream().map(TradeDetailDO::getActualPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal subPayAmount = newTradeOrderDO.getPayAmount().subtract(changeAmount);
|
|
|
- Asserts.isTrue(subPayAmount.compareTo(otcTradeChangeOrderReqVO.getRealPayAmount()) == 0, "操作金额不匹配{}", subPayAmount);
|
|
|
- }
|
|
|
- } else {
|
|
|
- BigDecimal subPayAmount = newTradeOrderDO.getPayAmount().subtract(tradeOrderDO.getPayAmount());
|
|
|
- if (ObjectUtil.equal(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.PARTIAL_REFUND.getStatus())) {
|
|
|
- //如果改签订单有退款,扣除退款金额
|
|
|
- BigDecimal orderRefundAmount = tradeRefundRepositoryService.getOrderOriginRefundAmount(tradeOrderDO.getId());
|
|
|
- subPayAmount = subPayAmount.add(orderRefundAmount);
|
|
|
- //防止有特殊情况造成核销的订单也申请了
|
|
|
- Long checkCount = tradeOrderRepositoryService.getCheckCount(tradeOrderDO.getId());
|
|
|
- if (checkCount != null && checkCount > 0) {
|
|
|
- Asserts.isTrue(false, "原订单已核销不能进行改签");
|
|
|
- }
|
|
|
- //获取需退门票
|
|
|
- changeDetailList = tradeOrderRepositoryService.getUnUsedDetailList(tradeOrderDO.getId());
|
|
|
- Long orderDetailCount = tradeOrderRepositoryService.getOrderDetailCount(newTradeOrderDO.getId());
|
|
|
- Asserts.isTrue(changeDetailList.size() == orderDetailCount.intValue(), "改签退票数量与新改签订单数量不一致");
|
|
|
- }
|
|
|
-
|
|
|
- Asserts.isTrue(subPayAmount.compareTo(otcTradeChangeOrderReqVO.getRealPayAmount()) == 0, "操作金额不匹配{}", subPayAmount);
|
|
|
- }
|
|
|
-
|
|
|
- //先退
|
|
|
- CommonResult<?> refundResult = refundBeforeChangeOrder(loginUser, otcTradeChangeOrderReqVO, tradeOrderDO, newTradeOrderDO, changeDetailList);
|
|
|
- if (refundResult.isError()) {
|
|
|
- return refundResult;
|
|
|
- }
|
|
|
- //再付
|
|
|
- CommonResult<?> payResult = payAfterChangeOrder(loginUser, otcTradeChangeOrderReqVO, tradeOrderDO, newTradeOrderDO);
|
|
|
- //记录订单日志
|
|
|
- TradeOrderLogUtils.setOrderInfo(tradeOrderDO.getId(), tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.REFUNDING.getStatus());
|
|
|
- return payResult;
|
|
|
-
|
|
|
- } finally {
|
|
|
- if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
|
|
- lock.unlock();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
private CommonResult<?> refundBeforeChangeOrder(LoginUser loginUser, OtcTradeChangeOrderReqVO otcTradeChangeOrderReqVO, TradeOrderDO tradeOrderDO, TradeOrderDO newTradeOrderDO, List<TradeDetailDO> changeDetailList) {
|
|
|
|
|
|
if (isChangeConfirmed(newTradeOrderDO.getId())) {
|
|
|
@@ -687,24 +475,24 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
List<TradeOrderDO> tradeOrderDoList = tradeOrderMapper.queryOrderByLast(tradeOrderDO.getOrderNo());
|
|
|
if (tradeOrderDoList != null && !tradeOrderDoList.isEmpty()) {
|
|
|
TradeOrderDO lastTradeOrder = tradeOrderDoList.get(0);
|
|
|
- tradeOrderMapper.updateOrderDeleted(orderId,1);
|
|
|
- tradeOrderMapper.updateOrderDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderUserMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderUserMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeDetailMapper.updateDeleted(orderId,1);
|
|
|
- tradeDetailMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeDetailBaseMapper.updateDeleted(orderId,1);
|
|
|
- tradeDetailBaseMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeVisitorMapper.updateDeleted(orderId,1);
|
|
|
- tradeVisitorMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderCountryMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderCountryMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderRoomModelMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderRoomModelMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderFloorMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderFloorMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderTotalMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
+ tradeOrderMapper.updateOrderDeleted(orderId, 1);
|
|
|
+ tradeOrderMapper.updateOrderDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderUserMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderUserMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeDetailMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeDetailMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeDetailBaseMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeDetailBaseMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeVisitorMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeVisitorMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderCountryMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderCountryMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderRoomModelMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderRoomModelMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderFloorMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderFloorMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderTotalMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
Map<String, Object> extMap = new HashMap<>();
|
|
|
extMap.put("result", "审核不通过");
|
|
|
TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(), extMap);
|
|
|
@@ -727,24 +515,24 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
List<TradeOrderDO> tradeOrderDoList = tradeOrderMapper.queryOrderByLast(tradeOrderDO.getOrderNo());
|
|
|
if (tradeOrderDoList != null && !tradeOrderDoList.isEmpty()) {
|
|
|
TradeOrderDO lastTradeOrder = tradeOrderDoList.get(0);
|
|
|
- tradeOrderMapper.updateOrderDeleted(orderId,1);
|
|
|
- tradeOrderMapper.updateOrderDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderUserMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderUserMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeDetailMapper.updateDeleted(orderId,1);
|
|
|
- tradeDetailMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeDetailBaseMapper.updateDeleted(orderId,1);
|
|
|
- tradeDetailBaseMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeVisitorMapper.updateDeleted(orderId,1);
|
|
|
- tradeVisitorMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderCountryMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderCountryMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderRoomModelMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderRoomModelMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderFloorMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderFloorMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
- tradeOrderTotalMapper.updateDeleted(orderId,1);
|
|
|
- tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(),0);
|
|
|
+ tradeOrderMapper.updateOrderDeleted(orderId, 1);
|
|
|
+ tradeOrderMapper.updateOrderDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderUserMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderUserMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeDetailMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeDetailMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeDetailBaseMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeDetailBaseMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeVisitorMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeVisitorMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderCountryMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderCountryMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderRoomModelMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderRoomModelMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderFloorMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderFloorMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
+ tradeOrderTotalMapper.updateDeleted(orderId, 1);
|
|
|
+ tradeOrderTotalMapper.updateDeleted(lastTradeOrder.getId(), 0);
|
|
|
|
|
|
Map<String, Object> extMap = new HashMap<>();
|
|
|
extMap.put("result", "审核撤回");
|
|
|
@@ -1392,45 +1180,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
return categoryList.get();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 访问这个接口的目前是平台,平台用于给外部旅行社搬单。
|
|
|
- * 且产品不关联门店
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<CategoryRespDTO> getCategoryAndSpuAllOuterOtc(Long distributorId, String travelDate) {
|
|
|
- if (distributorId == null || StrUtil.isBlank(travelDate)) {
|
|
|
- return Collections.emptyList();
|
|
|
- }
|
|
|
- DistributorDO distributorDO = distributorMapper.selectById(distributorId);
|
|
|
- // 平台租户
|
|
|
- Long tenantId = distributorDO.getAccountTenantId();
|
|
|
- Set<Long> categoryIdSet = new HashSet<>();
|
|
|
- List<ProductSpuRespDTO> productSpuList;
|
|
|
- List<CategoryRespDTO> categoryList = new ArrayList<>();
|
|
|
- String outType = "2";
|
|
|
-
|
|
|
- //获取平台产品
|
|
|
- productSpuList = tradeDetailMapper.selectSpuListByTenantId(null, tenantId, outType, travelDate);
|
|
|
- Set<Long> ids = productSpuList.stream().map(ProductSpuRespDTO::getCategoryId).collect(Collectors.toSet());
|
|
|
- if (!ids.isEmpty()) {
|
|
|
- categoryList = productApi.getCategoryListByIds(1, new ArrayList<>(ids)).getCheckedData();
|
|
|
- categoryIdSet = getIdGrouping(categoryList, 1);
|
|
|
- }
|
|
|
- //绑定子节点产品
|
|
|
- for (Long id : categoryIdSet) {
|
|
|
- List<ProductSpuRespDTO> collect = productSpuList.stream()
|
|
|
- .filter(spu -> Objects.equals(spu.getCategoryId(), id))
|
|
|
- .collect(Collectors.toList());
|
|
|
- categoryList.stream()
|
|
|
- .filter(p -> id.equals(p.getId()))
|
|
|
- .findFirst()
|
|
|
- .ifPresent(dto -> dto.setProductSpuRespDTOList(collect));
|
|
|
- }
|
|
|
-
|
|
|
- categoryList.sort(Comparator.comparing(CategoryRespDTO::getSortNum));
|
|
|
- return categoryList;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
public Set<Long> getIdGrouping(List<CategoryRespDTO> categoryList, Integer type) {
|
|
|
// 按照父级ID分组
|
|
|
@@ -1891,7 +1640,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
BigDecimal otherMoney = summary.getOtherMoney();
|
|
|
ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
- if(createVO.isMoveOrder()){
|
|
|
+ if (createVO.isMoveOrder()) {
|
|
|
shipTradeOrderCreateReqVO.setMoveOrder(true);
|
|
|
}
|
|
|
shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
@@ -1899,12 +1648,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
-// TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
|
|
|
-// tradeOrderBindDO.setId(IdWorker.getId());
|
|
|
-// tradeOrderBindDO.setType(1);
|
|
|
-// tradeOrderBindDO.setCustom(createVO.getSummary().getOrderMoney().toString());
|
|
|
-// tradeOrderBindDO.setRemark("create订单金额修改,订单金额:" + 0 + ",订单修改后金额:" + realAmount);
|
|
|
-// shipTradeOrderCreateReqVO.setTradeOrderBindDO(tradeOrderBindDO);
|
|
|
} else {
|
|
|
shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
@@ -1930,7 +1673,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
|
|
|
ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
- if (loginUser.getDistributorId() == null||createVO.isMoveOrder()) {
|
|
|
+ if (loginUser.getDistributorId() == null || createVO.isMoveOrder()) {
|
|
|
orderProperty.setSellMethod(SellMethodEnum.OTC_MOVE_ORDER.getType());
|
|
|
}
|
|
|
orderProperty.setSourceId(distributorDO.getId() + "");
|
|
|
@@ -1977,21 +1720,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
orderItem.setDetailList(detailList);
|
|
|
BigDecimal spuMoney = new BigDecimal(0);
|
|
|
- //[ {
|
|
|
- // "productId" : 1995379153741963265,
|
|
|
- // "required" : 1,
|
|
|
- // "price" : 50,
|
|
|
- // "tourist" : [ ]
|
|
|
- //}, {
|
|
|
- // "productId" : 1966419302406098945,
|
|
|
- // "required" : 1,
|
|
|
- // "price" : 50,
|
|
|
- // "tourist" : [ ]
|
|
|
- //}, {
|
|
|
- // "productId" : 1966037573074767874,
|
|
|
- // "price" : 100,
|
|
|
- // "tourist" : [ "c20d5bd5-9583-4986-9889-ecc127585bd8", "8dab0347-60d0-4c34-aab1-1f0e0260e3a6" ]
|
|
|
- //} ]
|
|
|
for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
//0 游船产品 1 附加产品 2:赠票
|
|
|
@@ -2132,7 +1860,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
int auditType = 0;
|
|
|
String orderNo = tradeOrderDO.getOrderNo();
|
|
|
Date updateTime = new Date();
|
|
|
-// List<TradeOrderCountryReqVO> countryData = createVO.getCountryData();
|
|
|
ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
@@ -2144,7 +1871,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
Long discountId = summary.getDiscountId();
|
|
|
shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
- if ((orderMoney != null && realAmount != null && realAmount.compareTo(orderMoney) != 0) ||!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount())) {
|
|
|
+ if ((orderMoney != null && realAmount != null && realAmount.compareTo(orderMoney) != 0) || !Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount())) {
|
|
|
shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
|
|
|
tradeOrderBindDO.setId(IdWorker.getId());
|
|
|
@@ -2318,7 +2045,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
String msg = "";
|
|
|
if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
- tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
|
|
|
+ AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, auditType).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
|
|
|
+ tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("audit_user", auditUserDO.getId()).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
|
|
|
msg = "修改提交成功,等待管理员审核";
|
|
|
}
|
|
|
|
|
|
@@ -2332,26 +2060,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private static ShipTradeOrderCreateReqVO.@NotNull Visitor getVisitor(TradeVistorReqVO tradeVistorReqVO) {
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = new ShipTradeOrderCreateReqVO.Visitor();
|
|
|
- visitor.setName(tradeVistorReqVO.getName());
|
|
|
- visitor.setMobile(tradeVistorReqVO.getMobile());
|
|
|
- visitor.setCredentialNo(tradeVistorReqVO.getCardNo());
|
|
|
- visitor.setCredentialType(tradeVistorReqVO.getCardType());
|
|
|
- visitor.setYczz(tradeVistorReqVO.getYichang());
|
|
|
- visitor.setCqzz(tradeVistorReqVO.getChongqing());
|
|
|
- visitor.setAge(tradeVistorReqVO.getAge());
|
|
|
- visitor.setBirthday(tradeVistorReqVO.getBirthday());
|
|
|
- visitor.setGender(tradeVistorReqVO.getGender());
|
|
|
- visitor.setNationality(tradeVistorReqVO.getNationality());
|
|
|
- visitor.setCohabitation(tradeVistorReqVO.getCohabitation());
|
|
|
- visitor.setRoomId(tradeVistorReqVO.getRoomId());
|
|
|
- visitor.setType(tradeVistorReqVO.getType());
|
|
|
- visitor.setRoomIndexId(tradeVistorReqVO.getRoomIndexId());
|
|
|
- visitor.setRoomModelId(tradeVistorReqVO.getRoomModelId());
|
|
|
- visitor.setFloor(tradeVistorReqVO.getFloor());
|
|
|
- return visitor;
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
public TradeOrderRespNewVO getOrderInfoNew(Long id) {
|
|
|
@@ -2478,7 +2186,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
TradeOrderConfirmationCountryRespVO::getNationalityName,
|
|
|
Collectors.summingInt(TradeOrderConfirmationCountryRespVO::getNum)
|
|
|
));
|
|
|
- countryMap.keySet().stream().forEach(key -> {
|
|
|
+ countryMap.keySet().forEach(key -> {
|
|
|
countryDesList.add(countryMap.get(key) + key);
|
|
|
});
|
|
|
orderRespNewVO.setCountryDesc(String.join(",", countryDesList));
|
|
|
@@ -2584,7 +2292,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
List<Map<String, Object>> roomData = new ArrayList<>();
|
|
|
List<TradeOrderConfirmationCountryRespVO> countryList = orderConfirmation.getCountryList();
|
|
|
if (countryList != null) {
|
|
|
- countryList.stream().forEach(item -> {
|
|
|
+ countryList.forEach(item -> {
|
|
|
String roomModelName = item.getRoomModelName();
|
|
|
if (item.getFloor() == null) {
|
|
|
if ("leader".equals(item.getType())) {
|
|
|
@@ -2645,41 +2353,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private int getPersonNum(TradeOrderRoomModelBaseVO roomModel) {
|
|
|
- int n = 0;
|
|
|
- n += (roomModel.getAdultAloneNum() + roomModel.getAdultTakeNum() + roomModel.getAdultPlusNum());
|
|
|
- n += (roomModel.getChildNonTakeNum() + roomModel.getChildTakeNum() + roomModel.getChildPlusNum());
|
|
|
- n += (roomModel.getBabyNonTakeNum() + roomModel.getBabyTakeNum() + roomModel.getBabyPlusNum());
|
|
|
- return n;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private String getPersonTypeDes(TradeOrderRoomModelBaseVO roomModel) {
|
|
|
- List<String> des = new ArrayList<>();
|
|
|
- int adultNum = (roomModel.getAdultAloneNum() + roomModel.getAdultTakeNum() + roomModel.getAdultPlusNum());
|
|
|
- int childNum = (roomModel.getChildNonTakeNum() + roomModel.getChildTakeNum() + roomModel.getChildPlusNum());
|
|
|
- int babyNum = (roomModel.getBabyNonTakeNum() + roomModel.getBabyTakeNum() + roomModel.getBabyPlusNum());
|
|
|
- if (adultNum > 0) {
|
|
|
- des.add("成人");
|
|
|
- }
|
|
|
- if (childNum > 0) {
|
|
|
- des.add("儿童");
|
|
|
- }
|
|
|
- if (babyNum > 0) {
|
|
|
- des.add("婴儿");
|
|
|
- }
|
|
|
- return String.join("/", des);
|
|
|
- }
|
|
|
-
|
|
|
private String getPersonTypeDes1(String type) {
|
|
|
- String des = "";
|
|
|
+ String des;
|
|
|
switch (type) {
|
|
|
- case "adultTake":
|
|
|
- case "adultPlus":
|
|
|
- case "leader":
|
|
|
- case "with":
|
|
|
- des = "成人";
|
|
|
- break;
|
|
|
case "childTake":
|
|
|
case "childPlus":
|
|
|
case "childNonTake":
|
|
|
@@ -2690,6 +2366,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
case "babyNonTake":
|
|
|
des = "婴儿";
|
|
|
break;
|
|
|
+ case "adultTake":
|
|
|
+ case "adultPlus":
|
|
|
+ case "leader":
|
|
|
+ case "with":
|
|
|
default:
|
|
|
des = "成人";
|
|
|
break;
|
|
|
@@ -2698,14 +2378,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
|
|
|
private String getPersonTypeDesEn1(String type) {
|
|
|
- String des = "";
|
|
|
+ String des;
|
|
|
switch (type) {
|
|
|
- case "adultTake":
|
|
|
- case "adultPlus":
|
|
|
- case "leader":
|
|
|
- case "with":
|
|
|
- des = "Adults";
|
|
|
- break;
|
|
|
case "childTake":
|
|
|
case "childPlus":
|
|
|
case "childNonTake":
|
|
|
@@ -2716,6 +2390,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
case "babyNonTake":
|
|
|
des = "Infants";
|
|
|
break;
|
|
|
+ case "adultTake":
|
|
|
+ case "adultPlus":
|
|
|
+ case "leader":
|
|
|
+ case "with":
|
|
|
default:
|
|
|
des = "Adults";
|
|
|
break;
|
|
|
@@ -2723,24 +2401,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
return des;
|
|
|
}
|
|
|
|
|
|
- private String getPersonTypeDesEn(TradeOrderRoomModelBaseVO roomModel) {
|
|
|
- List<String> des = new ArrayList<>();
|
|
|
- int adultNum = (roomModel.getAdultAloneNum() + roomModel.getAdultTakeNum() + roomModel.getAdultPlusNum());
|
|
|
- int childNum = (roomModel.getChildNonTakeNum() + roomModel.getChildTakeNum() + roomModel.getChildPlusNum());
|
|
|
- int babyNum = (roomModel.getBabyNonTakeNum() + roomModel.getBabyTakeNum() + roomModel.getBabyPlusNum());
|
|
|
- if (adultNum > 0) {
|
|
|
- des.add("Adults");
|
|
|
- }
|
|
|
- if (childNum > 0) {
|
|
|
- des.add("Children");
|
|
|
- }
|
|
|
- if (babyNum > 0) {
|
|
|
- des.add("Infants");
|
|
|
- }
|
|
|
- return String.join("/", des);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
static class MergeStrategy extends AbstractMergeStrategy {
|
|
|
|
|
|
@Override
|