完善tao订单详情;完善tao订单确认;

This commit is contained in:
启航老齐 2025-10-02 10:22:11 +08:00
parent cc53b811ed
commit 08d44baf85
12 changed files with 326 additions and 63 deletions

View File

@ -89,7 +89,7 @@
<artifactId>open-sdk</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/open-sdk-1.10.1.jar</systemPath>
<systemPath>${project.basedir}/libs/open-sdk-1.10.2.jar</systemPath>
</dependency>
<dependency>

View File

@ -23,7 +23,7 @@
<artifactId>open-sdk</artifactId>
<version>1.0.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/open-sdk-1.10.1.jar</systemPath>
<systemPath>${project.basedir}/libs/open-sdk-1.10.2.jar</systemPath>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>

View File

@ -3,6 +3,7 @@ package cn.qihangerp.api.tao;
import cn.qihangerp.module.open.tao.domain.TaoOrder;
import cn.qihangerp.module.open.tao.domain.TaoOrderItem;
import cn.qihangerp.open.tao.response.TaoOrderDetailResponse;
import cn.qihangerp.open.tao.response.TaoOrderListResponse;
import org.springframework.util.StringUtils;
@ -35,7 +36,7 @@ public class OrderAssembleHelper {
order.setPostFee(StringUtils.hasText(trade.getPost_fee()) ? BigDecimal.valueOf(Double.parseDouble(trade.getPost_fee())) : null);
order.setDiscountFee(StringUtils.hasText(trade.getDiscount_fee()) ? BigDecimal.valueOf(Double.parseDouble(trade.getDiscount_fee())) : null);
order.setPayment(BigDecimal.valueOf(Double.parseDouble(trade.getPayment())));
order.setReceivedPayment(StringUtils.hasText(trade.getDiscount_fee()) ? BigDecimal.valueOf(Double.parseDouble(trade.getReceived_payment())) : null);
order.setReceivedPayment(StringUtils.hasText(trade.getReceived_payment()) ? BigDecimal.valueOf(Double.parseDouble(trade.getReceived_payment())) : null);
} catch (Exception ee) {
ee.printStackTrace();
}
@ -82,7 +83,7 @@ public class OrderAssembleHelper {
orderItem.setPayment(StringUtils.hasText(item.getPayment()) ? Double.parseDouble(item.getPayment()):0.0);
orderItem.setPrice(StringUtils.hasText(item.getPrice()) ? BigDecimal.valueOf(Double.parseDouble(item.getPrice())): BigDecimal.valueOf(0));
orderItem.setPicPath(item.getPic_path());
orderItem.setNumIid(item.getNum_iid());
orderItem.setNumIid(item.getNum_iid()+"");
orderItem.setSkuId(item.getSku_id());
// orderItem.setOuterIid(item.getOuterIid());
orderItem.setOuterSkuId(item.getOuter_sku_id());
@ -109,4 +110,98 @@ public class OrderAssembleHelper {
return order;
}
public static TaoOrder assembleOrder(TaoOrderDetailResponse trade) {
TaoOrder order = new TaoOrder();
order.setTid(trade.getTid());
order.setTitle(trade.getTitle());
order.setType(trade.getType());
order.setSellerFlag(trade.getSellerFlag() + "");
// order.setHasBuyerMessage(trade.isHas_buyer_message() + "");
// order.setCreditCardFee(trade.getCredit_card_fee());
order.setCreated(trade.getCreated());
order.setModified(trade.getModified());
order.setPayTime(trade.getPayTime());
// order.setPrice(Double.parseDouble(trade.getPrice()));
try {
order.setTotalFee(StringUtils.hasText(trade.getTotalFee()) ? Double.parseDouble(trade.getTotalFee()) : null);
order.setAdjustFee(StringUtils.hasText(trade.getAdjustFee()) ? Double.parseDouble(trade.getAdjustFee()) : null);
order.setPostFee(StringUtils.hasText(trade.getPostFee()) ? BigDecimal.valueOf(Double.parseDouble(trade.getPostFee())) : null);
order.setDiscountFee(StringUtils.hasText(trade.getDiscountFee()) ? BigDecimal.valueOf(Double.parseDouble(trade.getDiscountFee())) : null);
order.setPayment(BigDecimal.valueOf(Double.parseDouble(trade.getPayment())));
order.setReceivedPayment(StringUtils.hasText(trade.getReceivedPayment()) ? BigDecimal.valueOf(Double.parseDouble(trade.getReceivedPayment())) : null);
} catch (Exception ee) {
ee.printStackTrace();
}
order.setBuyerNick(trade.getBuyerNick());
order.setBuyerOpenUid(trade.getBuyerOpenUid());
order.setAlipayNo(trade.getAlipayNo());
// order.setBuyerAlipayNo(trade.getBuyerAlipayNo());
// order.setBuyerEmail(trade.getBuyerEmail());
// order.setBuyerMemo(trade.getBuyerMemo());
// order.setBuyerMessage(trade.getBuyerMessage());
// order.setMarkDesc(trade.getMarkDesc());
// order.setSellerMemo(trade.getSellerMemo());
// order.setReceiverCountry(trade.getReceiverCountry());
order.setReceiverState(trade.getReceiverState());
order.setReceiverCity(trade.getReceiverCity());
order.setReceiverDistrict(trade.getReceiverDistrict());
order.setReceiverTown(trade.getReceiverTown());
order.setReceiverAddress(trade.getReceiverAddress());
order.setReceiverName(trade.getReceiverName());
order.setReceiverMobile(trade.getReceiverMobile());
// order.setReceiverPhone(trade.getReceiverPhone());
order.setSid(trade.getSid());
// order.setYfxFee(trade.getYfxFee());
order.setHasYfx(trade.getHasYfx() + "");
// order.setLogisticsInvoiceNo(trade.getinvoice);
// order.setNumIid(trade.getNumIid() + "");
// order.setNum(trade.getNum().intValue());
order.setStatus(trade.getStatus());
// order.setConsignTime(trade.getConsignTime());
// order.setEndTime(trade.getEndTime());
order.setOaid(trade.getOaid());
List<TaoOrderItem> items = new ArrayList<>();
for (var item : trade.getOrders().getOrder()) {
TaoOrderItem orderItem = new TaoOrderItem();
orderItem.setTitle(item.getTitle());
orderItem.setTid(Long.parseLong(trade.getTid()));
orderItem.setOid(Long.parseLong(item.getOid()));
orderItem.setTotalFee(StringUtils.hasText(item.getTotalFee()) ? BigDecimal.valueOf(Double.parseDouble(item.getTotalFee())): BigDecimal.valueOf(0));
orderItem.setDiscountFee(StringUtils.hasText(item.getDiscountFee()) ? BigDecimal.valueOf(Double.parseDouble(item.getDiscountFee())): BigDecimal.valueOf(0));
orderItem.setAdjustFee(StringUtils.hasText(item.getAdjustFee()) ?BigDecimal.valueOf(Double.parseDouble(item.getAdjustFee())): BigDecimal.valueOf(0));
orderItem.setDivideOrderFee( StringUtils.hasText(item.getDivideOrderFee()) ? Double.parseDouble(item.getDivideOrderFee()):null);
orderItem.setPartMjzDiscount(StringUtils.hasText(item.getPartMjzDiscount()) ? Double.parseDouble(item.getPartMjzDiscount()):0.0);
orderItem.setPayment(StringUtils.hasText(item.getPayment()) ? Double.parseDouble(item.getPayment()):0.0);
orderItem.setPrice(StringUtils.hasText(item.getPrice()) ? BigDecimal.valueOf(Double.parseDouble(item.getPrice())): BigDecimal.valueOf(0));
orderItem.setPicPath(item.getPicPath());
orderItem.setNumIid(item.getNumIid());
orderItem.setSkuId(item.getSkuId());
orderItem.setOuterIid(item.getOuterIid());
orderItem.setOuterSkuId(item.getOuterSkuId());
orderItem.setSkuPropertiesName(item.getSkuPropertiesName());
orderItem.setItemMealId(item.getItemMealId());
orderItem.setItemMealName(item.getItemMealName());
orderItem.setNum(item.getNum());
orderItem.setRefundStatus(item.getRefundStatus());
orderItem.setStatus(item.getStatus());
orderItem.setBuyerRate(item.getBuyerRate() + "");
orderItem.setSellerRate(item.getSellerRate() + "");
orderItem.setRefundId(item.getRefundId());
// orderItem.setSellerType(item.getSeller_type());
orderItem.setCid(item.getCid());
orderItem.setEndTime(item.getEndTime());
orderItem.setConsignTime(item.getConsignTime());
// orderItem.setShippingType(item.getShippingType());
orderItem.setLogisticsCompany(item.getLogisticsCompany());
orderItem.setInvoiceNo(item.getLogisticsCode());
items.add(orderItem);
}
order.setItems(items);
return order;
}
}

View File

@ -205,20 +205,10 @@ public class TaoOrderApiController {
// ApiResultVo<TaoOrderResponse> resultVo = OrderApiHelper.pullOrderDetail(taoRequest.getOrderId(), url, appKey, appSecret, sessionKey);
ApiResultVo<TaoOrderDetailResponse> resultVo = TaoOrderApiHelper.pullOrderDetail(taoRequest.getOrderId(), appKey, appSecret, sessionKey);
ApiResultVo<TaoOrderDetailResponse> resultVo = TaoOrderApiHelper.pullOrderDetail(taoRequest.getOrderId().toString(), appKey, appSecret, sessionKey);
if (resultVo.getCode() == ResultVoEnum.SUCCESS.getIndex()) {
TaoOrder taoOrder = new TaoOrder();
BeanUtils.copyProperties(resultVo.getData(),taoOrder);
// List<TaoOrderItem> orderItems = new ArrayList<>();
// if(resultVo.getData().getItems()!=null && resultVo.getData().getItems().size()>0){
// for (var item : resultVo.getData().getItems()) {
// TaoOrderItem orderItem = new TaoOrderItem();
// BeanUtils.copyProperties(item,orderItem);
// orderItems.add(orderItem);
// }
// }
// taoOrder.setItems(orderItems);
TaoOrder taoOrder = OrderAssembleHelper.assembleOrder(resultVo.getData());
var result = orderService.saveOrder(taoRequest.getShopId(), taoOrder);
if (result.getCode() == ResultVoEnum.DataExist.getIndex()) {
//已经存在

View File

@ -408,6 +408,9 @@ public class TaoOrder implements Serializable {
// 天猫商家订单使用的红包金额
private Long tmallCouponFee;
private Integer auditStatus;
private Date auditTime;
@TableField(exist = false)
private List<TaoOrderItem> items;

View File

@ -78,7 +78,7 @@ public class TaoOrderItem implements Serializable {
/**
* 商品数字ID
*/
private Long numIid;
private String numIid;
/**
* 商品的最小库存单位Sku的id.可以通过taobao.item.sku.get获取详细的Sku信息天猫的SKUID
@ -412,14 +412,14 @@ PAY_PENDING(国际信用卡支付付款确认中)
/**
* 商品数字ID
*/
public Long getNumIid() {
public String getNumIid() {
return numIid;
}
/**
* 商品数字ID
*/
public void setNumIid(Long numIid) {
public void setNumIid(String numIid) {
this.numIid = numIid;
}

View File

@ -84,6 +84,8 @@
<result property="isPartConsign" column="is_part_consign" jdbcType="VARCHAR"/>
<result property="sid" column="sid" jdbcType="VARCHAR"/>
<result property="hasYfx" column="has_yfx" jdbcType="VARCHAR"/>
<result property="auditStatus" column="audit_status" jdbcType="INTEGER"/>
<result property="auditTime" column="audit_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
@ -112,6 +114,6 @@
alipay_no,buyer_alipay_no,buyer_email,
seller_alipay_no,has_post_fee,timeout_action_time,
snapshot_url,promotion,yfx_fee,has_yfx,sid,
send_time,is_part_consign
send_time,is_part_consign,audit_status,audit_time
</sql>
</mapper>

View File

@ -44,4 +44,12 @@ export function pushOms(data) {
})
}
// 确认订单
export function confirmOrder(data) {
return request({
url: '/api/open-api/tao/order/confirmOrder',
method: 'post',
data: data
})
}

View File

@ -63,36 +63,36 @@
@click="handlePull"
>API拉取订单</el-button>
</el-col>
<el-col :span="1.5">
<el-button
:loading="pullLoading"
type="primary"
plain
icon="el-icon-download"
size="mini"
@click="handlePullDetailByTid"
>API拉取单个订单</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-top-right"
size="mini"
:disabled="multiple"
@click="handlePushOms"
>重新推送选中订单到订单库</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-refresh"
size="mini"
:disabled="single"
@click="handlePullUpdate"
>手动更新订单</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- :loading="pullLoading"-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handlePullDetailByTid"-->
<!-- >API拉取单个订单</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-top-right"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handlePushOms"-->
<!-- >重新推送选中订单到订单库</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-refresh"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handlePullUpdate"-->
<!-- >手动更新订单</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -186,16 +186,24 @@
<el-tag v-if="scope.row.status === 'PAID_FORBID_CONSIGN'">禁止发货</el-tag>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- :loading="pullLoading"-->
<!-- size="mini"-->
<!-- icon="el-icon-refresh"-->
<!-- @click="handlePullUpdate(scope.row)"-->
<!-- >更新订单</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button style="padding-right: 6px;padding-left: 6px"
v-if="scope.row.auditStatus === 0"
size="mini"
type="success" plain
icon="el-icon-success"
@click="handleConfirm(scope.row)"
v-hasPermi="['dou:order:edit']"
>确认订单</el-button>
<el-button style="padding-right: 6px;padding-left: 6px"
:loading="pullLoading"
size="mini"
icon="el-icon-refresh"
@click="handlePullUpdate(scope.row)"
>更新订单</el-button>
</template>
</el-table-column>
</el-table>
<pagination
@ -205,23 +213,136 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 订单审核订单详情对话框 -->
<el-dialog :title="detailTitle" :visible.sync="detailOpen" width="1000px" append-to-body >
<el-form ref="form" :model="form" :rules="rules" label-width="100px" inline>
<el-descriptions title="订单信息">
<el-descriptions-item label="ID">{{form.id}}</el-descriptions-item>
<el-descriptions-item label="订单号">{{form.orderId}}</el-descriptions-item>
<el-descriptions-item label="店铺">
{{ shopList.find(x=>x.id === form.shopId)?shopList.find(x=>x.id === form.shopId).name:'' }}
</el-descriptions-item>
<el-descriptions-item label="订单来源">
<el-tag size="small" >{{form.btypeDesc}}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="订单状态">
<el-tag size="small" >{{ form.orderStatusDesc }}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="主状态">
<el-tag size="small" >{{ form.mainStatusDesc }}</el-tag>
</el-descriptions-item>
<!-- <el-descriptions-item label="成团状态">-->
<!-- <el-tag size="small" v-if="form.groupStatus ===0 ">拼团中</el-tag>-->
<!-- <el-tag size="small" v-if="form.groupStatus ===1 ">已成团</el-tag>-->
<!-- <el-tag size="small" v-if="form.groupStatus ===2 ">团失败</el-tag>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="买家备注">
{{form.buyerWords}}
</el-descriptions-item>
<el-descriptions-item label="卖家备注">
{{form.sellerWords}}
</el-descriptions-item>
<el-descriptions-item label="取消原因">
{{form.cancelReason}}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ parseTime(form.createTime*1000) }}
</el-descriptions-item>
<el-descriptions-item label="支付时间"> {{ parseTime(form.payTime*1000) }}</el-descriptions-item>
<el-descriptions-item label="更新时间"> {{ parseTime(form.updateTime*1000) }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="付款信息">
<!-- <el-descriptions-item label="商品总额">{{form.goodsAmount}}</el-descriptions-item>-->
<!-- <el-descriptions-item label="团长免单金额">{{form.capitalFreeDiscount}}</el-descriptions-item>-->
<el-descriptions-item label="商家优惠金额">{{form.promotionShopAmount}}</el-descriptions-item>
<el-descriptions-item label="平台优惠金额">{{form.promotionTalentAmount}}</el-descriptions-item>
<el-descriptions-item label="运费">{{form.postAmount}}</el-descriptions-item>
<el-descriptions-item label="实际支付金额">{{form.orderAmount}}</el-descriptions-item>
<el-descriptions-item label="支付方式"> {{ form.payAmount }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="收货信息">
<el-descriptions-item label="收件人姓名">{{form.maskPostReceiver}}</el-descriptions-item>
<el-descriptions-item label="收件人手机号">{{form.maskPostTel}}</el-descriptions-item>
<el-descriptions-item label="省市区">{{form.provinceName}}{{form.cityName}}{{form.townName}}</el-descriptions-item>
<el-descriptions-item label="详细地址">{{form.maskPostAddress}}</el-descriptions-item>
</el-descriptions>
<!-- <el-descriptions title="发货信息">-->
<!-- &lt;!&ndash; <el-descriptions-item label="发货方式">-->
<!-- <el-tag v-if="form.shipType === 1" type="danger">供应商代发</el-tag>-->
<!-- <el-tag v-if="form.shipType === 0" type="danger">仓库发货</el-tag>-->
<!-- </el-descriptions-item> &ndash;&gt;-->
<!-- <el-descriptions-item label="物流公司">{{form.logisticsCompany}}</el-descriptions-item>-->
<!-- <el-descriptions-item label="物流单号">{{form.logisticsCode}}</el-descriptions-item>-->
<!-- <el-descriptions-item label="发货时间">{{form.logisticsTime}}</el-descriptions-item>-->
<!-- </el-descriptions>-->
<el-divider content-position="center">订单商品</el-divider>
<el-table :data="form.items" style="margin-bottom: 10px;">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="商品图片" width="80">
<template slot-scope="scope">
<el-image style="width: 70px; height: 70px" :src="scope.row.productPic"></el-image>
</template>
</el-table-column>
<el-table-column label="商品标题" prop="productName" ></el-table-column>
<el-table-column label="SKU" prop="goodsSpec" width="150"></el-table-column>
<el-table-column label="sku编码" prop="specNum"></el-table-column>
<el-table-column label="单价" prop="goodsPrice"></el-table-column>
<el-table-column label="数量" prop="comboNum"></el-table-column>
<el-table-column label="商品金额" prop="totalAmount"></el-table-column>
</el-table>
<el-divider content-position="center" v-if="isAudit" >收件人</el-divider>
<el-form-item label="收件人姓名" prop="maskPostReceiver" v-if="isAudit">
<el-input v-model="form.maskPostReceiver" placeholder="请输入收件人姓名" style="width:350px" />
</el-form-item>
<el-form-item label="收件人电话" prop="maskPostTel" v-if="isAudit">
<el-input v-model="form.maskPostTel" placeholder="请输入收件人电话" style="width:350px" />
</el-form-item>
<el-form-item label="省市区" prop="provinces" v-if="isAudit">
<el-cascader style="width:350px"
size="large"
:options="pcaTextArr"
v-model="form.provinces">
</el-cascader>
</el-form-item>
<el-form-item label="详细地址" prop="maskPostAddress" v-if="isAudit">
<el-input v-model="form.maskPostAddress" placeholder="请输入收件地址" style="width:350px" />
</el-form-item>
<!-- <el-form-item label="发货方式" prop="shipType" v-if="isAudit">-->
<!-- <el-select v-model="form.shipType" placeholder="发货类型" style="width:350px">-->
<!-- <el-option label="供应商代发" value="1"></el-option>-->
<!-- <el-option label="仓库发货" value="0"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer" v-if="isAudit">
<el-button type="primary" @click="submitConfirmForm" v-if="form.auditStatus===0">确认发货</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listOrder, pullOrder, getOrder, pushOms, pullOrderDetail} from "@/api/tao/order";
import {listOrder, pullOrder, getOrder, pushOms, pullOrderDetail,confirmOrder} from "@/api/tao/order";
import { listShop } from "@/api/shop/shop";
import { searchSku } from "@/api/goods/goods";
import {MessageBox} from "element-ui";
import {isRelogin} from "../../../utils/request";
import Clipboard from "clipboard";
import {pcaTextArr} from "element-china-area-data";
export default {
name: "OrderTao",
data() {
return {
pcaTextArr,
//
loading: true,
//
@ -233,6 +354,8 @@ export default {
single: true,
detailOpen: false,
multiple: true,
isAudit: false,
detailTitle:'',
//
total: 0,
//
@ -417,6 +540,48 @@ export default {
this.$modal.msgSuccess("推送成功");
}).catch(() => {});
},
handleConfirm(row) {
this.reset();
const id = row.id || this.ids
getOrder(id).then(response => {
this.form = response.data;
this.form.provinces = []
this.form.provinces.push(response.data.provinceName)
this.form.provinces.push(response.data.cityName)
this.form.provinces.push(response.data.townName)
this.detailOpen = true;
this.detailTitle = "确认订单";
this.isAudit = true
});
},
submitConfirmForm(){
this.$refs["form"].validate(valid => {
if (valid) {
const form = {
orderId:this.form.id,
province:this.form.provinces[0],
city:this.form.provinces[1],
town:this.form.provinces[2],
address:this.form.maskPostAddress,
receiver:this.form.maskPostReceiver,
mobile:this.form.maskPostTel
}
confirmOrder(form).then(response => {
if(response.code===200){
this.$modal.msgSuccess("订单确认成功");
this.detailOpen = false;
this.isAudit = false
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
})
},
}
};
</script>