From b359070a0edb46d1a5424e743e22f0a6d6bf23d0 Mon Sep 17 00:00:00 2001
From: 18631081161 <2088094923@qq.com>
Date: Thu, 2 Apr 2026 01:09:02 +0800
Subject: [PATCH] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/views/ChatRecords.vue | 15 +-
miniapp/pages.json | 7 +
miniapp/pages/food/food-order-detail.vue | 4 +
miniapp/pages/message/chat.vue | 127 +--
miniapp/pages/message/message.vue | 113 ++-
miniapp/pages/mine/earnings.vue | 50 +-
miniapp/pages/mine/mine.vue | 2 +
miniapp/pages/mine/profile.vue | 164 ++++
miniapp/pages/order-hall/order-hall.vue | 10 +-
miniapp/pages/order/complete-order.vue | 6 +-
miniapp/pages/order/order-detail.vue | 27 +-
miniapp/utils/api.js | 5 +
miniapp/utils/im.js | 239 ++---
miniapp/utils/request.js | 11 +-
server/Endpoints/AdminEndpoints.cs | 44 +-
server/Endpoints/AuthEndpoints.cs | 28 +
server/Endpoints/EarningEndpoints.cs | 30 +-
server/Endpoints/OrderEndpoints.cs | 30 +-
...260401162116_AddOrderImGroupId.Designer.cs | 916 ++++++++++++++++++
.../20260401162116_AddOrderImGroupId.cs | 29 +
.../Migrations/AppDbContextModelSnapshot.cs | 4 +
server/Models/Dtos/AuthDtos.cs | 11 +
server/Models/Dtos/OrderDtos.cs | 2 +
server/Models/Order.cs | 4 +
server/Services/TencentIMService.cs | 61 ++
server/Services/WxPayService.cs | 54 ++
26 files changed, 1640 insertions(+), 353 deletions(-)
create mode 100644 miniapp/pages/mine/profile.vue
create mode 100644 server/Migrations/20260401162116_AddOrderImGroupId.Designer.cs
create mode 100644 server/Migrations/20260401162116_AddOrderImGroupId.cs
diff --git a/admin/src/views/ChatRecords.vue b/admin/src/views/ChatRecords.vue
index dd8691a..0a54546 100644
--- a/admin/src/views/ChatRecords.vue
+++ b/admin/src/views/ChatRecords.vue
@@ -148,9 +148,15 @@ async function viewChat(row) {
chatMessages.value = []
try {
- const res = await request.get('/admin/chat-messages', {
- params: { ownerUserId: row.ownerId, runnerUserId: row.runnerId }
- })
+ const params = {}
+ // 优先用群ID(群聊模式)
+ if (row.imGroupId) {
+ params.groupId = row.imGroupId
+ } else {
+ // 兼容旧数据
+ params.groupId = `order_${row.id}`
+ }
+ const res = await request.get('/admin/chat-messages', { params })
chatMessages.value = parseIMMessages(res, row)
} catch (e) {
console.error('拉取聊天记录失败:', e)
@@ -160,7 +166,8 @@ async function viewChat(row) {
}
function parseIMMessages(imResponse, orderInfo) {
- const msgList = imResponse.MsgList || imResponse.msgList || []
+ // 群消息格式:RspMsgList
+ const msgList = imResponse.RspMsgList || imResponse.rspMsgList || imResponse.MsgList || imResponse.msgList || []
if (!msgList.length) return []
const ownerImId = `user_${orderInfo.ownerId}`
diff --git a/miniapp/pages.json b/miniapp/pages.json
index c8e8cb9..0c12137 100644
--- a/miniapp/pages.json
+++ b/miniapp/pages.json
@@ -153,6 +153,13 @@
"navigationStyle": "custom"
}
},
+ {
+ "path": "pages/mine/profile",
+ "style": {
+ "navigationBarTitleText": "编辑资料",
+ "navigationStyle": "custom"
+ }
+ },
{
"path": "pages/runner/certification",
"style": {
diff --git a/miniapp/pages/food/food-order-detail.vue b/miniapp/pages/food/food-order-detail.vue
index 557d9fd..b6691ea 100644
--- a/miniapp/pages/food/food-order-detail.vue
+++ b/miniapp/pages/food/food-order-detail.vue
@@ -379,6 +379,10 @@ export default {
border: none;
}
+.accept-btn::after {
+ border: none;
+}
+
/* 弹窗样式(复用) */
.modal-mask {
position: fixed;
diff --git a/miniapp/pages/message/chat.vue b/miniapp/pages/message/chat.vue
index f83b383..338ce23 100644
--- a/miniapp/pages/message/chat.vue
+++ b/miniapp/pages/message/chat.vue
@@ -203,7 +203,6 @@
+
+
diff --git a/miniapp/pages/order-hall/order-hall.vue b/miniapp/pages/order-hall/order-hall.vue
index 2e10eed..a0166e1 100644
--- a/miniapp/pages/order-hall/order-hall.vue
+++ b/miniapp/pages/order-hall/order-hall.vue
@@ -60,7 +60,7 @@
门店数量:{{ order.shopCount || 0 }}个
跑腿费:
- {{ order.commission }}元
+ {{ formatMoney(order.commission) }}元
@@ -92,7 +92,7 @@
{{ getItemTitle(order) }}
跑腿费:
- {{ order.commission }}元
+ {{ formatMoney(order.commission) }}元
@@ -293,7 +293,11 @@
getHelpTotalAmount(order) {
const commission = parseFloat(order.commission) || 0
const goodsAmount = parseFloat(order.goodsAmount) || 0
- return (commission + goodsAmount).toFixed(1)
+ return (commission + goodsAmount).toFixed(2)
+ },
+ /** 格式化金额为2位小数 */
+ formatMoney(val) {
+ return (parseFloat(val) || 0).toFixed(2)
},
/** 获取卡片标题 */
getItemTitle(order) {
diff --git a/miniapp/pages/order/complete-order.vue b/miniapp/pages/order/complete-order.vue
index 1dd3a1b..4db5a6e 100644
--- a/miniapp/pages/order/complete-order.vue
+++ b/miniapp/pages/order/complete-order.vue
@@ -169,12 +169,12 @@ export default {
// 通过 IM 通知单主
try {
await initIM()
- const targetImUserId = `user_${this.orderInfo.ownerId}`
- await sendCustomMessage(targetImUserId, {
+ const groupId = this.orderInfo.imGroupId || `order_${this.orderId}`
+ await sendCustomMessage(groupId, {
bizType: 'order-status',
action: 'InProgress→WaitConfirm',
description: '跑腿已提交完成,请在订单详情中确认'
- }, this.orderId)
+ })
} catch (ex) {}
uni.showToast({ title: '已提交完成', icon: 'success' })
diff --git a/miniapp/pages/order/order-detail.vue b/miniapp/pages/order/order-detail.vue
index a0b65a0..a735768 100644
--- a/miniapp/pages/order/order-detail.vue
+++ b/miniapp/pages/order/order-detail.vue
@@ -235,6 +235,7 @@