merge(dev_jacy): mini-user version display and force exit (v3.4.13)

This commit is contained in:
2026-08-06 00:15:03 +08:00
4 changed files with 83 additions and 11 deletions
+67 -6
View File
@@ -4,6 +4,8 @@ import { fetchClientConfig } from './pay-wechat';
/** 与 package.json version 同步,供服务端 minClientVersion 比对 */
export const APP_VERSION = '3.4.13';
export const APP_VERSION_LABEL = `v${APP_VERSION}`;
function parseSemver(v: string): number[] {
return v.split('.').map((n) => parseInt(n, 10) || 0);
}
@@ -20,17 +22,76 @@ export function compareSemver(a: string, b: string): number {
return 0;
}
function exitMiniProgramIfSupported() {
if (process.env.TARO_ENV !== 'weapp') return;
if (typeof Taro.exitMiniProgram !== 'function') return;
void Taro.exitMiniProgram({});
}
/** 微信 CDN 有新包时引导 applyUpdate;返回是否已触发更新流程 */
function tryWeappForceUpdate(min: string): Promise<boolean> {
if (process.env.TARO_ENV !== 'weapp' || typeof Taro.getUpdateManager !== 'function') {
return Promise.resolve(false);
}
return new Promise((resolve) => {
const manager = Taro.getUpdateManager();
let settled = false;
const finish = (updated: boolean) => {
if (settled) return;
settled = true;
resolve(updated);
};
manager.onCheckForUpdate((res) => {
if (!res.hasUpdate) {
finish(false);
return;
}
manager.onUpdateReady(() => {
void Taro.showModal({
title: '版本过低',
content: `当前 ${APP_VERSION_LABEL} 低于要求版本 v${min},已检测到新版本,请立即更新后继续使用。`,
showCancel: false,
confirmText: '立即更新',
success: (r) => {
if (r.confirm) {
manager.applyUpdate();
finish(true);
} else {
finish(false);
}
},
fail: () => finish(false),
});
});
manager.onUpdateFailed(() => finish(false));
});
setTimeout(() => finish(false), 4000);
});
}
async function enforceMinClientVersion(min: string) {
const updated = await tryWeappForceUpdate(min);
if (updated) return;
await Taro.showModal({
title: '版本过低',
content: `当前 ${APP_VERSION_LABEL} 低于要求版本 v${min},请更新至最新版本后继续使用。`,
showCancel: false,
confirmText: '我知道了',
});
exitMiniProgramIfSupported();
}
export async function checkClientVersionGate() {
try {
const config = await fetchClientConfig();
const min = config.minClientVersion?.trim();
if (min && compareSemver(APP_VERSION, min) < 0) {
await Taro.showModal({
title: '版本过低',
content: '当前小程序版本过低,请更新至最新版本后继续使用。',
showCancel: false,
confirmText: '我知道了',
});
await enforceMinClientVersion(min);
}
} catch {
/* 配置拉取失败不阻塞启动 */
+2 -1
View File
@@ -23,6 +23,7 @@ import {
} from '../../lib/mini-wechat-profile';
import { isLoggedIn, logout, request, toast, type UserProfile } from '../../lib/api';
import { isWechatEnv } from '../../lib/weixin';
import { APP_VERSION_LABEL } from '../../lib/client-version';
import { maskPhone } from '../../lib/phone';
import {
DEFAULT_SHARE_DESC,
@@ -499,7 +500,7 @@ export default function MinePage() {
</View>
<View className="mine-footer">
<Text className="mine-version"></Text>
<Text className="mine-version"> {APP_VERSION_LABEL}</Text>
<Text className="mine-logout" onClick={() => logout()}>
退
</Text>
+1 -1
View File
@@ -48,7 +48,7 @@
| 版本 | 日期 | 说明 |
|------|------|------|
| **3.4.13** | 2026-08-05 | 推广码归因统计 + **指标事件日志/高峰趋势**、核销用户信息、技术支持工单优先级、mini-user 门店/商品/提货/版本/**物流增强(签收照/拨号/ETA/路由回调签收→已完成)**、H5 登录校验、合伙人微信暂停禁登、**OSS 图片超 10MB 客户端压缩**;开发设计见 [`杜康好客-v3.4.13-体验优化开发文档.md`](./杜康好客-v3.4.13-体验优化开发文档.md) |
| **3.4.13** | 2026-08-05 | 推广码归因统计 + **指标事件日志/高峰趋势**、核销用户信息、技术支持工单优先级、mini-user **我的页版本号/低于 min 强制退出**门店/商品/提货/**物流增强(签收照/拨号/ETA/路由回调签收→已完成)**、H5 登录校验、合伙人微信暂停禁登、**OSS 图片超 10MB 客户端压缩**;开发设计见 [`杜康好客-v3.4.13-体验优化开发文档.md`](./杜康好客-v3.4.13-体验优化开发文档.md) |
---
@@ -8,7 +8,7 @@
| 模块 | 内容 |
|------|------|
| admin-web | 推广码 attributionCount + **指标事件日志/ECharts 趋势**;核销记录用户信息;技术支持工单优先级;**大图上传前压缩** |
| mini-user | 门店电话脱敏+拨打埋点;门头/套餐展示;商品去分享+首图 preview;提货确认弹框;版本更新提示;**物流增强(签收照/拨号/时间线/ETA)**;**头像超 10MB 压缩** |
| mini-user | 门店电话脱敏+拨打埋点;门头/套餐展示;商品去分享+首图 preview;提货确认弹框;**我的页版本号 v3.4.x****低于 minClientVersion 强制更新/点我知道了退出**;**物流增强(签收照/拨号/时间线/ETA)**;**头像超 10MB 压缩** |
| h5-partner / h5-shop / h5-user | 登录 phone/code 前端校验;**OSS 图片超 10MB 自动 canvas 压缩后上传** |
| 后端 | 工单 priorityclient-config minClientVersion;合伙人微信暂停禁登;**Courier 适配器****log_promo_event 推广码指标日志** |
@@ -20,7 +20,7 @@
| ST1785924286682833 | 用户端-门店电话加密+拨打埋点 | ✅ maskPhone + store_phone_call |
| ST1785921693982470 | 技术支持-工单优先级 | ✅ priority 枚举 + HQ UI |
| ST1785921585900725 | 门店端扫一扫授权异常 | ✅ 已有(v3.4.12 前) |
| ST1785907536648201 | 版本不对提示更新 | ✅ UpdateManager + minClientVersion |
| ST1785907536648201 | 版本不对提示更新 | ✅ 我的页 v3.4.x + UpdateManager + **低于 min 强制更新/退出** |
| ST1785906800359657 | 合伙人暂停后禁登 | ✅ loginPartnerWechat status |
| ST1785906592340255 | PARTNER_H5 login 校验 | ✅ 前端空字段拦截 |
| ST1785906390321653 | 现场提货提交确认弹框 | ✅ showModal |
@@ -41,7 +41,7 @@
| 方法 | 路径 / 配置 | 说明 |
|------|-------------|------|
| GET | `/common/client-config` | 新增 `minClientVersion`env `MINI_USER_MIN_VERSION` |
| GET | `/common/client-config` | `minClientVersion``MINI_USER_MIN_VERSION`;客户端 semver 比对,低于则强制更新或退出 |
| — | `CommonSupportTicket.priority` | `LOW \| NORMAL \| HIGH \| URGENT`,默认 NORMAL |
| — | `loginPartnerWechat` | 非 ACTIVE 账号抛出「合伙人账号已停用」 |
| GET | `/trade/orders/:id/track` | 聚合:`nodes`(旧→新)、`signPhotoUrls``estimatedArrival`;经 `CourierService` 适配小飞侠 cmd 100102/100108/100301 |
@@ -66,6 +66,15 @@
**HQ UI**:推广码详情页 → 数据趋势 Card(DatePicker + 按日/按时 + ECharts 四曲线 + 事件 Table
### 3.2 mini-user 版本门控(ST1785907536648201
| 项 | 行为 |
|----|------|
| 我的页 | 左下角展示 `杜康好客 v3.4.x`(与 `APP_VERSION` / package.json 同步) |
| 启动校验 | `GET /common/client-config``minClientVersion``APP_VERSION` 低于最低版本时拦截 |
| 微信有新包 | `UpdateManager` 弹「立即更新」→ `applyUpdate()` |
| 无新包 / 仍过低 | 弹「版本过低」→ 点「我知道了」→ `Taro.exitMiniProgram()` 退出小程序 |
### 4. mini-user 物流(ST1785939375449985
| 页面 | 行为 |
@@ -139,6 +148,7 @@ POST https://api-test.dukanghaoke.com/api/v1/callbacks/courier/xfx/track
- [ ] 核销记录含 userNo/nickname/phone
- [ ] 技术支持可创建/筛选/编辑优先级
- [ ] 合伙人/门店登录空字段前端提示;暂停合伙人微信登录被拒
- [ ] mini-user:我的页左下角显示 `杜康好客 v3.4.x`;低于 `minClientVersion` 时强制更新,无新包则点「我知道了」退出小程序
- [ ] mini-user:电话脱敏、拨打埋点、提货确认、无分享按钮、首图 preview、门头/套餐正常
- [ ] mini-user:配送中物流摘要 + 签收照预览 + 电话拨号 + 时间线旧→新全点亮 + 预估送达
- [ ] 小飞侠路由回调 `POST /callbacks/courier/xfx/track`status=5 或 statusName 已签收 → 订单 **COMPLETED**;重复回调幂等