|
|
@@ -3,6 +3,8 @@ package com.yc.ship.module.trade.service.order.impl;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.yc.ship.framework.common.lang.Asserts;
|
|
|
@@ -11,6 +13,8 @@ import com.yc.ship.framework.common.util.collection.CollectionUtils;
|
|
|
import com.yc.ship.framework.common.util.object.ObjectUtils;
|
|
|
import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import com.yc.ship.framework.security.core.LoginUser;
|
|
|
+import com.yc.ship.module.ota.api.OtaDistributorApi;
|
|
|
+import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
|
|
|
import com.yc.ship.module.otc.api.agency.dto.AgencyUserLoginInfoRespDTO;
|
|
|
import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
|
|
|
import com.yc.ship.module.trade.api.contract.ContractApi;
|
|
|
@@ -20,7 +24,9 @@ import com.yc.ship.module.trade.api.dto.TradeRefundAuditReqDTO;
|
|
|
import com.yc.ship.module.trade.api.dto.TradeRefundCalculateRespDTO;
|
|
|
import com.yc.ship.module.trade.api.dto.TradeRefundCreateReqDTO;
|
|
|
import com.yc.ship.module.trade.api.dto.TradeRefundRespDTO;
|
|
|
+import com.yc.ship.module.trade.api.invoice.dto.InvoicingReqDTO;
|
|
|
import com.yc.ship.module.trade.controller.admin.order.vo.refund.*;
|
|
|
+import com.yc.ship.module.trade.convert.invoice.InvoiceConvert;
|
|
|
import com.yc.ship.module.trade.convert.order.TradeRefundConvert;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.audituser.AuditUserDO;
|
|
|
import com.yc.ship.module.trade.dal.dataobject.order.TradeDetailDO;
|
|
|
@@ -34,7 +40,11 @@ import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
|
|
|
import com.yc.ship.module.trade.dal.mysql.refund.CancelAuditMapper;
|
|
|
import com.yc.ship.module.trade.dal.mysql.tradeOrderaudit.TradeOrderAuditMapper;
|
|
|
import com.yc.ship.module.trade.enums.RefundChannelEnum;
|
|
|
+import com.yc.ship.module.trade.enums.TradeOrderOperateTypeEnum;
|
|
|
import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
|
|
|
+import com.yc.ship.module.trade.framework.annotation.TradeOrderLog;
|
|
|
+import com.yc.ship.module.trade.framework.common.TradeOrderLogUtils;
|
|
|
+import com.yc.ship.module.trade.service.invoice.InvoiceService;
|
|
|
import com.yc.ship.module.trade.service.order.AdminTradeOrderService;
|
|
|
import com.yc.ship.module.trade.service.order.TradeOrderRepositoryService;
|
|
|
import com.yc.ship.module.trade.service.order.bo.TradeVisitorBO;
|
|
|
@@ -46,10 +56,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
@@ -87,6 +94,10 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
|
|
|
private ContractApi contractApi;
|
|
|
@Resource
|
|
|
private TradeOrderRepositoryService tradeOrderRepositoryService;
|
|
|
+ @Resource
|
|
|
+ private OtaDistributorApi distributorApi;
|
|
|
+ @Resource
|
|
|
+ private InvoiceService invoiceService;
|
|
|
|
|
|
@Override
|
|
|
public CommonResult<TradeRefundCreateRespVO> refund(LoginUser loginUser, TradeRefundCreateReqVO refundCreateReqVO) {
|
|
|
@@ -328,6 +339,7 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MANUL_CANCEL)
|
|
|
public CommonResult<?> cancelOrder(Long orderId) {
|
|
|
TradeOrderDO tradeOrderDO = tradeOrderRepositoryService.getById(orderId);
|
|
|
Asserts.isTrue(tradeOrderDO != null, "订单不存在");
|
|
|
@@ -346,6 +358,7 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
|
|
|
|
|
|
AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, 4).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
|
|
|
tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", 4).set("audit_user", auditUserDO == null ? "" : auditUserDO.getAuditUser()).set("order_status", TradeOrderStatusEnum.CANCEL_AUDIT.getStatus()).set("audit_status", 1).eq("id", tradeOrderDO.getId()));
|
|
|
+ TradeOrderLogUtils.setOrderInfo(orderId, tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.CANCEL_AUDIT.getStatus());
|
|
|
return CommonResult.success("订单取消审核中");
|
|
|
// }else{
|
|
|
// return tradeOrderPayService.cancelOrder(orderId);
|
|
|
@@ -366,4 +379,63 @@ public class AdminTradeOrderServiceImpl implements AdminTradeOrderService {
|
|
|
return tradeRefundService.cancelRefund(refundId);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public CommonResult<?> orderApplyInvoice(String jsonStr) {
|
|
|
+ JSONObject reqObj = JSONUtil.parseObj(jsonStr);
|
|
|
+ List<String> orderNoList = Arrays.asList(reqObj.getStr("orderNos").split(","));
|
|
|
+ String otaId = reqObj.getStr("otaId");
|
|
|
+ String remark = reqObj.getStr("remark");
|
|
|
+ if(StringUtils.isNotBlank(otaId)){
|
|
|
+ //平台开旅行社发票
|
|
|
+ DistributorRespDTO distributorRespDTO = distributorApi.getDistributorById(Long.parseLong(otaId));
|
|
|
+ if (distributorRespDTO==null){
|
|
|
+ throw exception(INVOICING_FAIL);
|
|
|
+ }
|
|
|
+ InvoicingReqDTO reqDTO = InvoiceConvert.INSTANCE.convertOtc(distributorRespDTO);
|
|
|
+ reqDTO.setOrderIdList(orderNoList);
|
|
|
+ reqDTO.setTitleType(1);
|
|
|
+ reqDTO.setRemark(remark);
|
|
|
+ reqDTO.setPrice(reqObj.getBigDecimal("amount"));
|
|
|
+ reqDTO.setTotalPrice(reqObj.getBigDecimal("totalAmount"));
|
|
|
+ return invoiceService.applyInvoicing(reqDTO);
|
|
|
+ }
|
|
|
+ LoginUser loginUser = getLoginUser();
|
|
|
+ CommonResult<DistributorRespDTO> distributorResult = distributorApi.getDistributorByAccountTenantId(loginUser.getTenantId());
|
|
|
+ if (distributorResult.isError()){
|
|
|
+ throw exception(INVOICING_FAIL);
|
|
|
+ }
|
|
|
+ DistributorRespDTO distributorRespDTO = distributorResult.getCheckedData();
|
|
|
+ InvoicingReqDTO reqDTO = InvoiceConvert.INSTANCE.convertOtc(distributorRespDTO);
|
|
|
+ reqDTO.setOrderIdList(orderNoList);
|
|
|
+ reqDTO.setTitleType(1);
|
|
|
+ reqDTO.setRemark(remark);
|
|
|
+ reqDTO.setPrice(reqObj.getBigDecimal("amount"));
|
|
|
+ reqDTO.setTotalPrice(reqObj.getBigDecimal("totalAmount"));
|
|
|
+ return invoiceService.applyInvoicing(reqDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult<?> platApplyInvoice(String jsonStr) {
|
|
|
+ JSONObject reqObj = JSONUtil.parseObj(jsonStr);
|
|
|
+ List<String> orderNoList = Arrays.asList(reqObj.getStr("orderNos").split(","));
|
|
|
+ String otaId = reqObj.getStr("otaId");
|
|
|
+ String remark = reqObj.getStr("remark");
|
|
|
+ if(StringUtils.isBlank(otaId)){
|
|
|
+ throw exception(INVOICING_FAIL_OTA);
|
|
|
+ }
|
|
|
+ //平台开旅行社发票
|
|
|
+ DistributorRespDTO distributorRespDTO = distributorApi.getDistributorById(Long.parseLong(otaId));
|
|
|
+ if (distributorRespDTO == null){
|
|
|
+ throw exception(INVOICING_FAIL);
|
|
|
+ }
|
|
|
+ InvoicingReqDTO reqDTO = InvoiceConvert.INSTANCE.convertOtc(distributorRespDTO);
|
|
|
+ reqDTO.setOrderIdList(orderNoList);
|
|
|
+ reqDTO.setTitleType(1);
|
|
|
+ reqDTO.setIsPlat(1);
|
|
|
+ reqDTO.setRemark(remark);
|
|
|
+ reqDTO.setPrice(reqObj.getBigDecimal("amount"));
|
|
|
+ reqDTO.setTotalPrice(reqObj.getBigDecimal("totalAmount"));
|
|
|
+ return invoiceService.applyInvoicing(reqDTO);
|
|
|
+ }
|
|
|
+
|
|
|
}
|