|
|
@@ -51,8 +51,8 @@ import com.yc.ship.module.product.api.dto.*;
|
|
|
import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.priceroommodeltype.PriceRoomModelTypeDO;
|
|
|
import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
|
|
|
-import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeNewDO;
|
|
|
import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
|
|
|
+import com.yc.ship.module.product.framework.lock.ProductRedisKeyConstants;
|
|
|
import com.yc.ship.module.product.service.priceroommodeltype.PriceRoomModelTypeService;
|
|
|
import com.yc.ship.module.product.service.voyage.VoyageService;
|
|
|
import com.yc.ship.module.resource.api.route.RouteApi;
|
|
|
@@ -105,6 +105,8 @@ 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.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -115,6 +117,7 @@ import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneOffset;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -228,6 +231,9 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
@Resource
|
|
|
private VoyageApi voyageApi;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private RedissonClient redissonClient;
|
|
|
+
|
|
|
|
|
|
public final static String AGENCY_LOGIN_INFO = "agencyLoginInfo";
|
|
|
|
|
|
@@ -489,7 +495,6 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public PageResult<TradeOrderRespVO> getMiniTradeOrderPage(TradeOrderPageReqVO pageReqVO) {
|
|
|
IPage<TradeOrderRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
|
|
@@ -1341,159 +1346,169 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
} else {
|
|
|
orderNo = ship.getCode() + "-" + date + "-" + code + "-" + (maxOrderNo + 1);
|
|
|
}
|
|
|
- TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
- BigDecimal realAmount = summary.getRealMoney();
|
|
|
- BigDecimal orderMoney = summary.getOrderMoney();
|
|
|
- Long discountId = summary.getDiscountId();
|
|
|
- BigDecimal realOrderMoney = summary.getRealOrderMoney();
|
|
|
- BigDecimal otherMoney = summary.getOtherMoney();
|
|
|
- ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
- shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
- if (createVO.isMoveOrder()) {
|
|
|
- shipTradeOrderCreateReqVO.setMoveOrder(true);
|
|
|
- }
|
|
|
- shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
- if (orderMoney != null && realAmount != null && realAmount.compareTo(orderMoney) != 0) {
|
|
|
- shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
- shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
- shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
- } else {
|
|
|
- shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
- shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
- shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
- }
|
|
|
- shipTradeOrderCreateReqVO.setDiscountId(discountId);
|
|
|
- if (realOrderMoney != null) {
|
|
|
- shipTradeOrderCreateReqVO.setPayAmount(realOrderMoney);
|
|
|
- }
|
|
|
- shipTradeOrderCreateReqVO.setRealMoney(realAmount);
|
|
|
- shipTradeOrderCreateReqVO.setIsRead(0);
|
|
|
- shipTradeOrderCreateReqVO.setOtherMoney(otherMoney);
|
|
|
-
|
|
|
- ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
|
|
|
- orderUser.setContactName(createVO.getLinkMan());
|
|
|
- orderUser.setMobile(createVO.getLinkMobile());
|
|
|
- orderUser.setEmail(createVO.getLinkEmail());
|
|
|
- shipTradeOrderCreateReqVO.setOrderUser(orderUser);
|
|
|
- shipTradeOrderCreateReqVO.setRemark(createVO.getRemark());
|
|
|
- shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd());
|
|
|
-
|
|
|
- shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
- shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
-
|
|
|
- ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
- orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
- if (loginUser.getDistributorId() == null || createVO.isMoveOrder()) {
|
|
|
- orderProperty.setSellMethod(SellMethodEnum.OTC_MOVE_ORDER.getType());
|
|
|
- }
|
|
|
- orderProperty.setSourceId(distributorDO.getId() + "");
|
|
|
- orderProperty.setSourceName(distributorDO.getName());
|
|
|
- if (storeInfo != null) {
|
|
|
- orderProperty.setStoreId(storeInfo.getId());
|
|
|
- orderProperty.setStoreName(storeInfo.getName());
|
|
|
- }
|
|
|
-
|
|
|
- shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
-
|
|
|
- ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
- List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
- List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
- visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
- visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
- visitorDetailId.setProductType(0);
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
- visitorList.add(visitor);
|
|
|
- visitorDetailId.setVisitorList(visitorList);
|
|
|
- visitorDetailId.setCount(1);
|
|
|
- detailList.add(visitorDetailId);
|
|
|
- }
|
|
|
- orderItem.setDetailList(detailList);
|
|
|
- BigDecimal spuMoney = new BigDecimal(0);
|
|
|
- for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- //0 游船产品 1 附加产品 2:赠票
|
|
|
- if (tradeSpuReqVO.getProductId() != null && !tradeSpuReqVO.getTourist().isEmpty()) {
|
|
|
- orderDetail1.setProductType(1);
|
|
|
- } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
- orderDetail1.setProductType(2);
|
|
|
+ //现在给整个订单号的加锁
|
|
|
+ String lockKey = String.format(ProductRedisKeyConstants.ORDER_REDIS_KEY_PREFIX, orderNo);
|
|
|
+ RLock lock = redissonClient.getLock(lockKey);
|
|
|
+ try {
|
|
|
+ lock.lock(60, TimeUnit.SECONDS);
|
|
|
+ TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
+ BigDecimal realAmount = summary.getRealMoney();
|
|
|
+ BigDecimal orderMoney = summary.getOrderMoney();
|
|
|
+ Long discountId = summary.getDiscountId();
|
|
|
+ BigDecimal realOrderMoney = summary.getRealOrderMoney();
|
|
|
+ BigDecimal otherMoney = summary.getOtherMoney();
|
|
|
+ ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
+ shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
+ if (createVO.isMoveOrder()) {
|
|
|
+ shipTradeOrderCreateReqVO.setMoveOrder(true);
|
|
|
+ }
|
|
|
+ shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
+ if (orderMoney != null && realAmount != null && realAmount.compareTo(orderMoney) != 0) {
|
|
|
+ shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
} else {
|
|
|
- continue;
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
+ shipTradeOrderCreateReqVO.setAmount(orderMoney);
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(realAmount);
|
|
|
+ }
|
|
|
+ shipTradeOrderCreateReqVO.setDiscountId(discountId);
|
|
|
+ if (realOrderMoney != null) {
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(realOrderMoney);
|
|
|
+ }
|
|
|
+ shipTradeOrderCreateReqVO.setRealMoney(realAmount);
|
|
|
+ shipTradeOrderCreateReqVO.setIsRead(0);
|
|
|
+ shipTradeOrderCreateReqVO.setOtherMoney(otherMoney);
|
|
|
+
|
|
|
+ ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
|
|
|
+ orderUser.setContactName(createVO.getLinkMan());
|
|
|
+ orderUser.setMobile(createVO.getLinkMobile());
|
|
|
+ orderUser.setEmail(createVO.getLinkEmail());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderUser(orderUser);
|
|
|
+ shipTradeOrderCreateReqVO.setRemark(createVO.getRemark());
|
|
|
+ shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd());
|
|
|
+
|
|
|
+ shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
+
|
|
|
+ ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
+ orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
+ if (loginUser.getDistributorId() == null || createVO.isMoveOrder()) {
|
|
|
+ orderProperty.setSellMethod(SellMethodEnum.OTC_MOVE_ORDER.getType());
|
|
|
+ }
|
|
|
+ orderProperty.setSourceId(distributorDO.getId() + "");
|
|
|
+ orderProperty.setSourceName(distributorDO.getName());
|
|
|
+ if (storeInfo != null) {
|
|
|
+ orderProperty.setStoreId(storeInfo.getId());
|
|
|
+ orderProperty.setStoreName(storeInfo.getName());
|
|
|
}
|
|
|
- List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
- for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
- TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
- visitorList1.add(visitor);
|
|
|
|
|
|
- visitorList1.add(visitor);
|
|
|
- spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
+
|
|
|
+ ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
+ List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
+ visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
+ visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
+ visitorDetailId.setProductType(0);
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
+ visitorList.add(visitor);
|
|
|
+ visitorDetailId.setVisitorList(visitorList);
|
|
|
+ visitorDetailId.setCount(1);
|
|
|
+ detailList.add(visitorDetailId);
|
|
|
}
|
|
|
- orderDetail1.setVisitorList(visitorList1);
|
|
|
- orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
- orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
- orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
+ orderItem.setDetailList(detailList);
|
|
|
+ BigDecimal spuMoney = new BigDecimal(0);
|
|
|
+ for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ //0 游船产品 1 附加产品 2:赠票
|
|
|
+ if (tradeSpuReqVO.getProductId() != null && !tradeSpuReqVO.getTourist().isEmpty()) {
|
|
|
+ orderDetail1.setProductType(1);
|
|
|
+ } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
+ orderDetail1.setProductType(2);
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
+ for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
+ TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
+ visitorList1.add(visitor);
|
|
|
+
|
|
|
+ visitorList1.add(visitor);
|
|
|
+ spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
+ }
|
|
|
+ orderDetail1.setVisitorList(visitorList1);
|
|
|
+ orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
+ orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
+ orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
|
|
|
- orderDetail1.setCount(visitorList1.size());
|
|
|
- detailList.add(orderDetail1);
|
|
|
- }
|
|
|
+ orderDetail1.setCount(visitorList1.size());
|
|
|
+ detailList.add(orderDetail1);
|
|
|
+ }
|
|
|
|
|
|
- shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
|
+ shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
|
|
|
|
- shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
|
+ shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
|
|
|
|
- Date travelDate = shipTradeOrderCreateReqVO.getTravelDate();
|
|
|
- if (loginUser.getDistributorId() != null && DateUtil.compare(DateUtil.beginOfDay(shipTradeOrderCreateReqVO.getTravelDate()), new Date()) < 0) {
|
|
|
- Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
|
|
|
- }
|
|
|
+ Date travelDate = shipTradeOrderCreateReqVO.getTravelDate();
|
|
|
+ if (loginUser.getDistributorId() != null && DateUtil.compare(DateUtil.beginOfDay(shipTradeOrderCreateReqVO.getTravelDate()), new Date()) < 0) {
|
|
|
+ Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
|
|
|
+ }
|
|
|
|
|
|
- if (DateUtil.compare(travelDate, new Date()) < 0) {
|
|
|
- Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
|
|
|
- }
|
|
|
- CommonResult<TradeOrderRespDTO> result;
|
|
|
- try {
|
|
|
- result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
- } catch (Exception e) {
|
|
|
- return CommonResult.error(500, e.getMessage());
|
|
|
- }
|
|
|
- if (result.isError()) {
|
|
|
- return CommonResult.error(result.getCode(), result.getMsg());
|
|
|
- }
|
|
|
- TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
- Long orderId = result.getCheckedData().getOrderId();
|
|
|
- tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
|
- tradeOrderTotalDO.setOldOrderId(orderId);
|
|
|
- tradeOrderTotalDO.setOtherRemark(summary.getOtherRemark());
|
|
|
- tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
-
|
|
|
- // 创建订单房型数据
|
|
|
- List<TradeOrderRoomModelDO> tradeOrderRoomDOList = new ArrayList<>();
|
|
|
- List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
|
- roomModelList.forEach(roomModel -> {
|
|
|
- TradeOrderRoomModelDO tradeOrderRoomDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
|
|
|
- tradeOrderRoomDO.setOrderId(orderId);
|
|
|
- tradeOrderRoomDO.setOrderNo(orderNo);
|
|
|
- tradeOrderRoomDO.setDiscount(tradeOrderRoomDO.getUnitPrice().subtract(tradeOrderRoomDO.getRealMoney()));
|
|
|
- tradeOrderRoomDOList.add(tradeOrderRoomDO);
|
|
|
- });
|
|
|
+ if (DateUtil.compare(travelDate, new Date()) < 0) {
|
|
|
+ Asserts.isTrue(false, "选择的游玩日期不能早于当前时间");
|
|
|
+ }
|
|
|
+ CommonResult<TradeOrderRespDTO> result;
|
|
|
+ try {
|
|
|
+ result = doShipCreateOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return CommonResult.error(500, e.getMessage());
|
|
|
+ }
|
|
|
+ if (result.isError()) {
|
|
|
+ return CommonResult.error(result.getCode(), result.getMsg());
|
|
|
+ }
|
|
|
+ TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
+ Long orderId = result.getCheckedData().getOrderId();
|
|
|
+ tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
|
+ tradeOrderTotalDO.setOldOrderId(orderId);
|
|
|
+ tradeOrderTotalDO.setOtherRemark(summary.getOtherRemark());
|
|
|
+ tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
+
|
|
|
+ // 创建订单房型数据
|
|
|
+ List<TradeOrderRoomModelDO> tradeOrderRoomDOList = new ArrayList<>();
|
|
|
+ List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
|
+ roomModelList.forEach(roomModel -> {
|
|
|
+ TradeOrderRoomModelDO tradeOrderRoomDO = BeanUtils.toBean(roomModel, TradeOrderRoomModelDO.class);
|
|
|
+ tradeOrderRoomDO.setOrderId(orderId);
|
|
|
+ tradeOrderRoomDO.setOrderNo(orderNo);
|
|
|
+ tradeOrderRoomDO.setDiscount(tradeOrderRoomDO.getUnitPrice().subtract(tradeOrderRoomDO.getRealMoney()));
|
|
|
+ tradeOrderRoomDOList.add(tradeOrderRoomDO);
|
|
|
+ });
|
|
|
|
|
|
- int auditType = 0;
|
|
|
- BigDecimal leaderTotalMoney = summary.getLeaderTotalMoney();
|
|
|
- if (leaderTotalMoney != null && leaderTotalMoney.compareTo(new BigDecimal(0)) > 0) {
|
|
|
- auditType = 3;
|
|
|
- }
|
|
|
- if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
- tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER).set("audit_status", 1).eq("id", orderId));
|
|
|
- }
|
|
|
- if (!tradeOrderRoomDOList.isEmpty()) {
|
|
|
- tradeOrderRoomModelMapper.deleteByOrderId(orderId);
|
|
|
- tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomDOList);
|
|
|
+ int auditType = 0;
|
|
|
+ BigDecimal leaderTotalMoney = summary.getLeaderTotalMoney();
|
|
|
+ if (leaderTotalMoney != null && leaderTotalMoney.compareTo(new BigDecimal(0)) > 0) {
|
|
|
+ auditType = 3;
|
|
|
+ }
|
|
|
+ if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
+ tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER).set("audit_status", 1).eq("id", orderId));
|
|
|
+ }
|
|
|
+ if (!tradeOrderRoomDOList.isEmpty()) {
|
|
|
+ tradeOrderRoomModelMapper.deleteByOrderId(orderId);
|
|
|
+ tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomDOList);
|
|
|
+ }
|
|
|
+ OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
+ return CommonResult.success(respVO);
|
|
|
+ } finally {
|
|
|
+ if (lock.isHeldByCurrentThread() && lock.isLocked()) {
|
|
|
+ lock.unlock();
|
|
|
+ }
|
|
|
}
|
|
|
- OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
- return CommonResult.success(respVO);
|
|
|
}
|
|
|
|
|
|
private static ShipTradeOrderCreateReqVO.@NotNull Visitor getVisitor1(TradeVistorReqVO tradeVistorReqVO) {
|
|
|
@@ -1544,173 +1559,182 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
}
|
|
|
int auditType = 0;
|
|
|
String orderNo = tradeOrderDO.getOrderNo();
|
|
|
- Date updateTime = new Date();
|
|
|
- ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
- shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
- shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
- shipTradeOrderCreateReqVO.setTravelDate(tradeOrderDO.getTravelDate());
|
|
|
- shipTradeOrderCreateReqVO.setOrderId(orderId);
|
|
|
- shipTradeOrderCreateReqVO.setIsRead(0);
|
|
|
- TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
- BigDecimal realAmount = summary.getRealMoney();
|
|
|
- BigDecimal orderMoney = summary.getOrderMoney();
|
|
|
- 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())) {
|
|
|
- shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
- TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
|
|
|
- tradeOrderBindDO.setId(IdWorker.getId());
|
|
|
- tradeOrderBindDO.setType(1);
|
|
|
- tradeOrderBindDO.setBindId(orderId);
|
|
|
- tradeOrderBindDO.setCustom("");
|
|
|
- tradeOrderBindDO.setRemark("modify订单金额修改,订单金额:" + orderMoney + ",订单修改后实际金额:" + realAmount);
|
|
|
- shipTradeOrderCreateReqVO.setTradeOrderBindDO(tradeOrderBindDO);
|
|
|
- } else {
|
|
|
- shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
- }
|
|
|
- if (tradeOrderDO.getOrderStatus() == 6) {
|
|
|
- shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
- }
|
|
|
- shipTradeOrderCreateReqVO.setDiscountId(discountId);
|
|
|
- if (createVO.getSummary().getRealOrderMoney() != null) {
|
|
|
- shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getRealOrderMoney());
|
|
|
- }
|
|
|
- ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
|
|
|
- orderUser.setContactName(createVO.getLinkMan());
|
|
|
- orderUser.setMobile(createVO.getLinkMobile());
|
|
|
- orderUser.setEmail(createVO.getLinkEmail());
|
|
|
- shipTradeOrderCreateReqVO.setOrderUser(orderUser);
|
|
|
- shipTradeOrderCreateReqVO.setRemark(createVO.getRemark());
|
|
|
- shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd());
|
|
|
- shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
- shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
-
|
|
|
- ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
- orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
- orderProperty.setSourceId(distributorDO.getId() + "");
|
|
|
- orderProperty.setSourceName(distributorDO.getName());
|
|
|
- if (storeInfo != null) {
|
|
|
- orderProperty.setStoreId(storeInfo.getId());
|
|
|
- orderProperty.setStoreName(storeInfo.getName());
|
|
|
- }
|
|
|
- orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
- shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
- ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
- List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
- List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
- visitorDetailId.setPrice(tradeVistorReqVO.getPrice());
|
|
|
- visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
- visitorDetailId.setProductType(0);
|
|
|
- ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
- visitorList.add(visitor);
|
|
|
- visitorDetailId.setVisitorList(visitorList);
|
|
|
- visitorDetailId.setCount(1);
|
|
|
- visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
- visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
- visitorDetailId.setProductType(0);
|
|
|
- detailList.add(visitorDetailId);
|
|
|
- }
|
|
|
- BigDecimal spuMoney = new BigDecimal(0);
|
|
|
- for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
- ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- //0 游船产品 1 附加产品 2:赠票
|
|
|
- if (tradeSpuReqVO.getProductId() != null && !tradeSpuReqVO.getTourist().isEmpty()) {
|
|
|
- orderDetail1.setProductType(1);
|
|
|
- } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
- orderDetail1.setProductType(2);
|
|
|
+ //现在给整个订单号的加锁
|
|
|
+ String lockKey = String.format(ProductRedisKeyConstants.ORDER_REDIS_KEY_PREFIX, orderNo);
|
|
|
+ RLock lock = redissonClient.getLock(lockKey);
|
|
|
+ try {
|
|
|
+ lock.lock(60, TimeUnit.SECONDS);
|
|
|
+ Date updateTime = new Date();
|
|
|
+ ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO = BeanUtils.toBean(createVO, ShipTradeOrderCreateReqVO.class);
|
|
|
+ shipTradeOrderCreateReqVO.setDistributorId(loginUser.getDistributorId());
|
|
|
+ shipTradeOrderCreateReqVO.setGroupNo(createVO.getGroupNo());
|
|
|
+ shipTradeOrderCreateReqVO.setTravelDate(tradeOrderDO.getTravelDate());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderId(orderId);
|
|
|
+ shipTradeOrderCreateReqVO.setIsRead(0);
|
|
|
+ TradeOrderTotalVO summary = createVO.getSummary();
|
|
|
+ BigDecimal realAmount = summary.getRealMoney();
|
|
|
+ BigDecimal orderMoney = summary.getOrderMoney();
|
|
|
+ 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())) {
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
+ TradeOrderBindDO tradeOrderBindDO = new TradeOrderBindDO();
|
|
|
+ tradeOrderBindDO.setId(IdWorker.getId());
|
|
|
+ tradeOrderBindDO.setType(1);
|
|
|
+ tradeOrderBindDO.setBindId(orderId);
|
|
|
+ tradeOrderBindDO.setCustom("");
|
|
|
+ tradeOrderBindDO.setRemark("modify订单金额修改,订单金额:" + orderMoney + ",订单修改后实际金额:" + realAmount);
|
|
|
+ shipTradeOrderCreateReqVO.setTradeOrderBindDO(tradeOrderBindDO);
|
|
|
} else {
|
|
|
- continue;
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(0);
|
|
|
+ }
|
|
|
+ if (tradeOrderDO.getOrderStatus() == 6) {
|
|
|
+ shipTradeOrderCreateReqVO.setConfirmType(1);
|
|
|
+ }
|
|
|
+ shipTradeOrderCreateReqVO.setDiscountId(discountId);
|
|
|
+ if (createVO.getSummary().getRealOrderMoney() != null) {
|
|
|
+ shipTradeOrderCreateReqVO.setPayAmount(createVO.getSummary().getRealOrderMoney());
|
|
|
}
|
|
|
- List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
- for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
- TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
+ ShipTradeOrderCreateReqVO.OrderUser orderUser = new ShipTradeOrderCreateReqVO.OrderUser();
|
|
|
+ orderUser.setContactName(createVO.getLinkMan());
|
|
|
+ orderUser.setMobile(createVO.getLinkMobile());
|
|
|
+ orderUser.setEmail(createVO.getLinkEmail());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderUser(orderUser);
|
|
|
+ shipTradeOrderCreateReqVO.setRemark(createVO.getRemark());
|
|
|
+ shipTradeOrderCreateReqVO.setIsYd(createVO.getIsYd());
|
|
|
+ shipTradeOrderCreateReqVO.setTravelDate(createVO.getBoardingTime());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderNo(orderNo);
|
|
|
+
|
|
|
+ ShipTradeOrderCreateReqVO.OrderProperty orderProperty = new ShipTradeOrderCreateReqVO.OrderProperty();
|
|
|
+ orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
+ orderProperty.setSourceId(distributorDO.getId() + "");
|
|
|
+ orderProperty.setSourceName(distributorDO.getName());
|
|
|
+ if (storeInfo != null) {
|
|
|
+ orderProperty.setStoreId(storeInfo.getId());
|
|
|
+ orderProperty.setStoreName(storeInfo.getName());
|
|
|
+ }
|
|
|
+ orderProperty.setSellMethod(SellMethodEnum.OTC.getType());
|
|
|
+ shipTradeOrderCreateReqVO.setOrderProperty(orderProperty);
|
|
|
+ ShipTradeOrderCreateReqVO.OrderItem orderItem = new ShipTradeOrderCreateReqVO.OrderItem();
|
|
|
+ List<ShipTradeOrderCreateReqVO.OrderDetail> detailList = new ArrayList<>();
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
+ visitorDetailId.setPrice(tradeVistorReqVO.getPrice());
|
|
|
+ visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
+ visitorDetailId.setProductType(0);
|
|
|
ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
- visitorList1.add(visitor);
|
|
|
- spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
+ visitorList.add(visitor);
|
|
|
+ visitorDetailId.setVisitorList(visitorList);
|
|
|
+ visitorDetailId.setCount(1);
|
|
|
+ visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
+ visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
+ visitorDetailId.setProductType(0);
|
|
|
+ detailList.add(visitorDetailId);
|
|
|
+ }
|
|
|
+ BigDecimal spuMoney = new BigDecimal(0);
|
|
|
+ for (TradeSpuReqVO tradeSpuReqVO : createVO.getSpuList()) {
|
|
|
+ ShipTradeOrderCreateReqVO.OrderDetail orderDetail1 = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
+ //0 游船产品 1 附加产品 2:赠票
|
|
|
+ if (tradeSpuReqVO.getProductId() != null && !tradeSpuReqVO.getTourist().isEmpty()) {
|
|
|
+ orderDetail1.setProductType(1);
|
|
|
+ } else if (tradeSpuReqVO.getProductId() != null && tradeSpuReqVO.getRequired() != null && tradeSpuReqVO.getRequired() == 1) {
|
|
|
+ orderDetail1.setProductType(2);
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<ShipTradeOrderCreateReqVO.Visitor> visitorList1 = new ArrayList<>();
|
|
|
+ for (String touristId : tradeSpuReqVO.getTourist()) {
|
|
|
+ TradeVistorReqVO tradeVistorReqVO = createVO.getTourist().stream().filter(v -> v.getId().equals(touristId)).findFirst().orElseGet(TradeVistorReqVO::new);
|
|
|
+ ShipTradeOrderCreateReqVO.Visitor visitor = getVisitor1(tradeVistorReqVO);
|
|
|
+ visitorList1.add(visitor);
|
|
|
+ spuMoney = spuMoney.add(tradeSpuReqVO.getPrice());
|
|
|
+ }
|
|
|
+ orderDetail1.setVisitorList(visitorList1);
|
|
|
+ orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
+ orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
+ orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
+ orderDetail1.setCount(visitorList1.size());
|
|
|
+ detailList.add(orderDetail1);
|
|
|
}
|
|
|
- orderDetail1.setVisitorList(visitorList1);
|
|
|
- orderDetail1.setProductId(tradeSpuReqVO.getProductId() + "");
|
|
|
- orderDetail1.setPrice(tradeSpuReqVO.getPrice());
|
|
|
- orderDetail1.setOriginPrice(tradeSpuReqVO.getPrice());
|
|
|
- orderDetail1.setCount(visitorList1.size());
|
|
|
- detailList.add(orderDetail1);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- orderItem.setDetailList(detailList);
|
|
|
- shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
|
- shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
|
- Date travelDate = tradeOrderDO.getTravelDate();
|
|
|
- if (loginUser.getDistributorId() != null && DateUtil.compare(DateUtil.beginOfDay(travelDate), DateUtil.offsetDay(new Date(), 3)) < 0) {
|
|
|
- return CommonResult.error(500, "已过最晚修改时间");
|
|
|
- }
|
|
|
-
|
|
|
- if (loginUser.getDistributorId() == null && DateUtil.compare(travelDate, DateUtil.offsetDay(new Date(), -2)) < 0) {
|
|
|
- return CommonResult.error(500, "已过最晚修改时间");
|
|
|
- }
|
|
|
- shipTradeOrderCreateReqVO.setUpdateTime(updateTime);
|
|
|
- shipTradeOrderCreateReqVO.setOldtradeOrderDO(tradeOrderDO);
|
|
|
- TradeOrderTotalDO oldTradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, orderId));
|
|
|
- shipTradeOrderCreateReqVO.setOldtradeOrderTotalDO(oldTradeOrderTotal);
|
|
|
- TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
|
|
|
- String changedFields1 = com.yc.ship.module.trade.utils.BeanUtils.getChangedFields(oldTradeOrderTotal, tradeOrderTotalDO);
|
|
|
- System.err.println("changedFields1=" + changedFields1);
|
|
|
|
|
|
- shipTradeOrderCreateReqVO.setChangedFields1(changedFields1);
|
|
|
- CommonResult<TradeOrderRespDTO> result = doShipModifyOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
- if (result.isError()) {
|
|
|
- return CommonResult.error(result.getCode(), result.getMsg());
|
|
|
- }
|
|
|
- Long neworderId = result.getCheckedData().getOrderId();
|
|
|
+ orderItem.setDetailList(detailList);
|
|
|
+ shipTradeOrderCreateReqVO.setItemlList(Collections.singletonList(orderItem));
|
|
|
+ shipTradeOrderCreateReqVO.setSpuAmount(spuMoney);
|
|
|
+ Date travelDate = tradeOrderDO.getTravelDate();
|
|
|
+ if (loginUser.getDistributorId() != null && DateUtil.compare(DateUtil.beginOfDay(travelDate), DateUtil.offsetDay(new Date(), 3)) < 0) {
|
|
|
+ return CommonResult.error(500, "已过最晚修改时间");
|
|
|
+ }
|
|
|
|
|
|
- tradeOrderTotalMapper.update(new LambdaUpdateWrapper<TradeOrderTotalDO>()
|
|
|
- .set(TradeOrderTotalDO::getDeleted, 1)
|
|
|
- .set(TradeOrderTotalDO::getUpdateTime, updateTime)
|
|
|
- .eq(TradeOrderTotalDO::getOldOrderId, orderId)
|
|
|
- );
|
|
|
- tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
|
- tradeOrderTotalDO.setOldOrderId(neworderId);
|
|
|
- tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
+ if (loginUser.getDistributorId() == null && DateUtil.compare(travelDate, DateUtil.offsetDay(new Date(), -2)) < 0) {
|
|
|
+ return CommonResult.error(500, "已过最晚修改时间");
|
|
|
+ }
|
|
|
+ shipTradeOrderCreateReqVO.setUpdateTime(updateTime);
|
|
|
+ shipTradeOrderCreateReqVO.setOldtradeOrderDO(tradeOrderDO);
|
|
|
+ TradeOrderTotalDO oldTradeOrderTotal = tradeOrderTotalMapper.selectOne(new LambdaQueryWrapper<TradeOrderTotalDO>().eq(TradeOrderTotalDO::getOldOrderId, orderId));
|
|
|
+ shipTradeOrderCreateReqVO.setOldtradeOrderTotalDO(oldTradeOrderTotal);
|
|
|
+ TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
|
|
|
+
|
|
|
+ String changedFields1 = com.yc.ship.module.trade.utils.BeanUtils.getChangedFields(oldTradeOrderTotal, tradeOrderTotalDO);
|
|
|
+ System.err.println("changedFields1=" + changedFields1);
|
|
|
+
|
|
|
+ shipTradeOrderCreateReqVO.setChangedFields1(changedFields1);
|
|
|
+ CommonResult<TradeOrderRespDTO> result = doShipModifyOrder(loginUser, shipTradeOrderCreateReqVO);
|
|
|
+ if (result.isError()) {
|
|
|
+ return CommonResult.error(result.getCode(), result.getMsg());
|
|
|
+ }
|
|
|
+ Long neworderId = result.getCheckedData().getOrderId();
|
|
|
+
|
|
|
+ tradeOrderTotalMapper.update(new LambdaUpdateWrapper<TradeOrderTotalDO>()
|
|
|
+ .set(TradeOrderTotalDO::getDeleted, 1)
|
|
|
+ .set(TradeOrderTotalDO::getUpdateTime, updateTime)
|
|
|
+ .eq(TradeOrderTotalDO::getOldOrderId, orderId)
|
|
|
+ );
|
|
|
+ tradeOrderTotalDO.setOrderId(IdWorker.getId());
|
|
|
+ tradeOrderTotalDO.setOldOrderId(neworderId);
|
|
|
+ tradeOrderTotalMapper.insert(tradeOrderTotalDO);
|
|
|
+
|
|
|
+ //创建订单房型数据
|
|
|
+ List<TradeOrderRoomModelDO> list = new ArrayList<>();
|
|
|
+ List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
|
+ roomModelList.forEach(item -> {
|
|
|
+ TradeOrderRoomModelDO tradeOrderRoomModelDO = BeanUtils.toBean(item, TradeOrderRoomModelDO.class);
|
|
|
+ tradeOrderRoomModelDO.setId(IdWorker.getId());
|
|
|
+ tradeOrderRoomModelDO.setOrderId(neworderId);
|
|
|
+ tradeOrderRoomModelDO.setDiscount(tradeOrderRoomModelDO.getUnitPrice().subtract(tradeOrderRoomModelDO.getRealMoney()));
|
|
|
+ tradeOrderRoomModelDO.setOrderNo(orderNo);
|
|
|
+ list.add(tradeOrderRoomModelDO);
|
|
|
+ });
|
|
|
|
|
|
- //创建订单房型数据
|
|
|
- List<TradeOrderRoomModelDO> list = new ArrayList<>();
|
|
|
- List<TradeOrderRoomModelVO> roomModelList = createVO.getRoomModelList();
|
|
|
- roomModelList.forEach(item -> {
|
|
|
- TradeOrderRoomModelDO tradeOrderRoomModelDO = BeanUtils.toBean(item, TradeOrderRoomModelDO.class);
|
|
|
- tradeOrderRoomModelDO.setId(IdWorker.getId());
|
|
|
- tradeOrderRoomModelDO.setOrderId(neworderId);
|
|
|
- tradeOrderRoomModelDO.setDiscount(tradeOrderRoomModelDO.getUnitPrice().subtract(tradeOrderRoomModelDO.getRealMoney()));
|
|
|
- tradeOrderRoomModelDO.setOrderNo(orderNo);
|
|
|
- list.add(tradeOrderRoomModelDO);
|
|
|
- });
|
|
|
+ if (!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount()) && loginUser.getDistributorId() != null) {
|
|
|
+ auditType = 4;
|
|
|
+ }
|
|
|
+ if (!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount()) && loginUser.getDistributorId() == null) {
|
|
|
+ auditType = 3;
|
|
|
+ }
|
|
|
+ String msg = "";
|
|
|
+ if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
+ 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 == null ? "" : auditUserDO.getAuditUser()).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
|
|
|
+ msg = "修改提交成功,等待管理员审核";
|
|
|
+ }
|
|
|
|
|
|
- if (!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount()) && loginUser.getDistributorId() != null) {
|
|
|
- auditType = 4;
|
|
|
- }
|
|
|
- if (!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount()) && loginUser.getDistributorId() == null) {
|
|
|
- auditType = 3;
|
|
|
- }
|
|
|
- String msg = "";
|
|
|
- if (auditType > 0 && createVO.getIsYd() != 1) {
|
|
|
- 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 == null ? "" : auditUserDO.getAuditUser()).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
|
|
|
- msg = "修改提交成功,等待管理员审核";
|
|
|
- }
|
|
|
+ tradeOrderRoomModelMapper.deleteByOrderId(orderId);
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ tradeOrderRoomModelMapper.insertBatch(list);
|
|
|
+ }
|
|
|
|
|
|
- tradeOrderRoomModelMapper.deleteByOrderId(orderId);
|
|
|
- if (!list.isEmpty()) {
|
|
|
- tradeOrderRoomModelMapper.insertBatch(list);
|
|
|
+ OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
+ return CommonResult.success(respVO, msg);
|
|
|
+ } finally {
|
|
|
+ if (lock.isHeldByCurrentThread() && lock.isLocked()) {
|
|
|
+ lock.unlock();
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
|
|
|
- return CommonResult.success(respVO, msg);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1854,10 +1878,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
Long roomModelId = Long.valueOf(key.split("_")[0]);
|
|
|
Integer floor = Integer.valueOf(key.split("_")[1]);
|
|
|
ResourceRoomModelDO roomModelDO = roomModelDOMap.get(roomModelId);
|
|
|
- if(roomModelDO != null) {
|
|
|
- useRoomDesList.add(useNumMap.get(key) + roomModelDO.getShowName()+"("+floor+"F)");
|
|
|
- }else {
|
|
|
- useRoomDesList.add(useNumMap.get(key) + "已删除房型" + "("+floor+"F)");
|
|
|
+ if (roomModelDO != null) {
|
|
|
+ useRoomDesList.add(useNumMap.get(key) + roomModelDO.getShowName() + "(" + floor + "F)");
|
|
|
+ } else {
|
|
|
+ useRoomDesList.add(useNumMap.get(key) + "已删除房型" + "(" + floor + "F)");
|
|
|
}
|
|
|
});
|
|
|
orderRespNewVO.setUseRoomTotalDesc(String.join(",", useRoomDesList));
|