From 8d4b55098f883d93b8bd0f70742a15e75a0831b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Wed, 22 Jul 2026 13:19:10 +0800
Subject: [PATCH] =?UTF-8?q?feat(user):=20=E7=BB=9F=E4=B8=80VIP=E6=A6=82?=
=?UTF-8?q?=E5=BF=B5=E4=B8=BA=E5=BC=80=E5=8F=91=E8=80=85=E5=B9=B6=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E5=BC=80=E5=8F=91=E8=80=85=E7=99=BB=E5=BD=95=E5=8F=8A?=
=?UTF-8?q?=E7=94=B3=E8=AF=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将VIP相关文案、图标改为开发者,涉及用户中心、门店中心、审核页等
- 优化登录弹窗UI,改为红色系,提升视觉统一性和交互体验
- 关于我们页面品牌和公司信息内容更新,展示最新企业介绍和业务范围
- VIP升级页新增“所在城市”选择,使用微信原生地区选择器,完善地址信息
- 用户申请表单中新增城市字段及校验,提交时携带城市信息
- 优化审核页面文案,统称开发者身份,明确申请审核内容
- 修复UserRoleController.save接口bug,避免userId被无条件覆盖导致角色绑错
- 动态查询VIP角色ID,避免硬编码,支持多租户环境正确绑定角色
---
.idea/workspace.xml | 34 +++--
.workbuddy/memory/2026-07-22.md | 42 +++++-
src/api/shop/shopDealerApply/model/index.ts | 2 +
src/pages/store/center/index.tsx | 6 +-
src/pages/user/about/index.tsx | 151 ++++++++++++++------
src/pages/user/user.tsx | 4 +-
src/pages/user/vip-review/index.tsx | 16 +--
src/pages/user/vip-upgrade/index.config.ts | 2 +-
src/pages/user/vip-upgrade/index.tsx | 66 ++++++---
9 files changed, 221 insertions(+), 102 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b758c55..255e3cf 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,10 +4,16 @@
-
+
-
+
+
+
+
+
+
+
@@ -119,15 +125,7 @@
-
-
-
-
- 1775905047844
-
-
-
- 1775905047844
+
@@ -513,7 +511,15 @@
1784639229566
-
+
+
+ 1784653464775
+
+
+
+ 1784653464775
+
+
@@ -533,7 +539,6 @@
-
@@ -558,7 +563,8 @@
-
+
+
\ No newline at end of file
diff --git a/.workbuddy/memory/2026-07-22.md b/.workbuddy/memory/2026-07-22.md
index 9712c7e..69145d2 100644
--- a/.workbuddy/memory/2026-07-22.md
+++ b/.workbuddy/memory/2026-07-22.md
@@ -1,8 +1,36 @@
-# 2026-07-22
+# 2026-07-22 工作日志
-## 修复 UserRoleController.save 覆盖 userId 的 bug
-- 文件:`com.gxwebsoft.core/.../system/controller/UserRoleController.java`
-- 问题:原 `save` 用 `getLoginUser().getUserId()` **无条件覆盖**请求体 userId,导致 VIP 审核通过时角色绑到店员而非申请人。
-- 修复:改为 `if (userRole.getUserId() == null && loginUser != null) userRole.setUserId(loginUser.getUserId());`(仅当请求体未传 userId 时回退到登录用户)。
-- 影响:VIP 审核 `addUserRole({ userId: item.userId, ... })` 现在能正确把角色绑给申请人;其它不传 userId 的调用方行为不变。
-- 注意:UserRole 的 `tenantId` 由 MyBatis-Plus 多租户插件按请求头自动写入 INSERT,前端传的 tenantId 仅作冗余。
+## 开发者登录弹窗 UI 美化
+- 文件:`src/pages/user/about/index.tsx`
+- 美化了 Input(圆角12px、高度48px、柔和背景色)、Button(蓝色渐变、阴影、圆角14px)、验证码按钮(与输入框等高、倒计时优化)
+- 弹窗整体:圆角加大、内边距增加、宽度收窄
+
+## 开发者登录弹窗样式改为红色系
+- 文件:`src/pages/user/about/index.tsx`
+- Input 边框:`transparent` → `#e53e3e`(红色),背景 `#f7f8fa` → `#fff5f5`(淡红)
+- 获取验证码按钮:激活态添加 `backgroundColor: #e53e3e`、`borderColor: #e53e3e`
+- 登录按钮:渐变从蓝色 `#4f8cff→#3b6fd4` 改为红色 `#fc5c5c→#e53e3e`,阴影同步改为红色
+
+## 关于我们页面介绍内容改写
+- 文件:`src/pages/user/about/index.tsx`
+- 公司:南宁市网宿信息科技有限公司,品牌:威数谱软件(websopy)
+- 重写品牌故事(三个段落)、核心业务(6项软件相关)、联系我们(公司名称/总部/电话/邮箱/官网)、版权信息
+- 头部 Logo 文字「鑫」→「威」,版本号显示 websopy v1.0.0
+
+## VIP 概念替换为「开发者」(文案统一)
+- 起因:用户要求把 `pages/user/vip-upgrade/index` 的 VIP 概念换成「开发者」。后台审核页 `vip-review` 已定义 `VIP_ROLE_NAME='开发者'`,概念本就一致。
+- 改动文件与要点:
+ - `vip-upgrade/index.tsx` + `index.config.ts`:导航栏/分享标题/主副标题/状态说明/温馨提示/权益区块标题及权益项描述,全部「VIP会员」→「开发者」;顶部图标 👑→🔰;表单标签「门店名称/门店地址」→「开发团队/公司地址」(placeholder、toast 同步),底层字段 realName/address 不变。
+ - `user.tsx`:用户中心入口「升级VIP会员」👑→「申请开发者」🔰。
+ - `store/center/index.tsx`:门店中心入口「VIP会员审核/审核客户VIP会员申请」👑→「开发者审核/审核客户开发者申请」🔰。
+ - `vip-review/index.tsx`:导航栏标题、通过/驳回弹窗文案、审核说明、列表字段标签(门店名称/门店地址→开发团队/公司地址)统一为「开发者」。
+- 注意:仅改可见文案与图标,**未重命名**页面路由/文件夹(vip-upgrade、vip-review)、变量名(VIP_ROLE_CODE、pendingVipCount 等)及定价逻辑(dealerPrice/VIP 状态判断仍保留原标识符,因对应后端角色与缓存 key)。
+- 用户确认方式:先给文案对照表,经 AskUserQuestion 确认表单标签与图标及范围后执行。
+
+## VIP 升级页新增「所在城市」选择
+- 文件:`src/pages/user/vip-upgrade/index.tsx`、`src/api/shop/shopDealerApply/model/index.ts`
+- 在「办公地址」上方新增「所在城市 *」字段:复用微信原生 `Picker mode='region'`(省市区三级),与 `pages/user/address-edit.tsx` 风格一致。
+- 状态:`cityValue: string[]` + 派生 `cityText`(以空格连接);`Picker` 的 `disabled` 跟随 `isReadonly`(审核中/已通过只读)。
+- `ShopDealerApply` 模型新增 `city?: string`(注释:省 市 区,空格分隔)。
+- 提交时 `addShopDealerApply` 增加 `city: cityText`;读取历史申请时 `setCityValue(latest.city.split(' '))`;保存校验增加「请选择所在城市」。
+- 注意:仅前端扩展字段,后端是否落库 `city` 存疑(模型此前只有 address),需后端 schema 支持才能真正持久化。
diff --git a/src/api/shop/shopDealerApply/model/index.ts b/src/api/shop/shopDealerApply/model/index.ts
index 8e9a9ac..59ad4c6 100644
--- a/src/api/shop/shopDealerApply/model/index.ts
+++ b/src/api/shop/shopDealerApply/model/index.ts
@@ -32,6 +32,8 @@ export interface ShopDealerApply {
updateTime?: string;
// 门店名称
merchantName?: string;
+ // 所在城市(省 市 区,以空格分隔)
+ city?: string;
// 门店地址
address?: string;
}
diff --git a/src/pages/store/center/index.tsx b/src/pages/store/center/index.tsx
index 80ae31c..1203d7f 100644
--- a/src/pages/store/center/index.tsx
+++ b/src/pages/store/center/index.tsx
@@ -45,9 +45,9 @@ const FEATURE_CARDS = [
},
{
key: 'vip-review',
- icon: '👑',
- title: 'VIP会员审核',
- desc: '审核客户VIP会员申请',
+ icon: '🔰',
+ title: '开发者审核',
+ desc: '审核客户开发者身份的申请',
url: '/pages/user/vip-review/index',
color: '#7c3aed',
bgColor: '#ede9fe',
diff --git a/src/pages/user/about/index.tsx b/src/pages/user/about/index.tsx
index f513699..82b6dcd 100644
--- a/src/pages/user/about/index.tsx
+++ b/src/pages/user/about/index.tsx
@@ -132,23 +132,29 @@ const AboutPage: React.FC = () => {
{/* 头部品牌区 */}
- 鑫
+ 威
- 威硕谱软件
- 威硕谱软件 v1.0.0
+ 威数谱软件
+ websopy v1.0.0
- {/* 公司简介 */}
+ {/* 公司简介 / 品牌故事 */}
- 公司简介
+ 品牌故事
- 威硕谱软件是一家专注于家用电器销售、安装及维修服务的本地经营部。
- 我们提供冰箱、洗衣机、空调、电视、厨房电器、生活小家电等多种品类,涵盖售前咨询、
- 售后安装、维护保养及故障维修等一站式家电服务。
+ 威数谱软件(websopy)是南宁市网宿信息科技有限公司旗下的数字化服务品牌,
+ 致力于为中小企业提供一站式软件产品与信息化解决方案。我们以"让每一家企业
+ 都能轻松用上专业的软件"为使命,依托云计算、移动互联网与大数据技术,
+ 打造覆盖企业管理、营销获客到客户服务的全链路软件矩阵。
- 经营部秉承"诚信经营、服务至上"的理念,以优质的产品和贴心的服务赢得了本地客户的信赖。
- 我们致力于让每一位顾客都能买得放心、用得安心,享受便捷的家电生活体验。
+ 自创立以来,威数谱始终秉持"专业、务实、共赢"的价值观,已为零售、家电、
+ 本地生活等多个行业的数百家客户提供服务。我们相信,技术的价值在于落地——
+ 用更简单的产品、更透明的服务,帮助客户把生意做得更好。
+
+
+ 未来,威数谱将继续以产品力为核心,与合作伙伴携手同行,让数字化能力成为
+ 中小企业稳健增长的底座。
@@ -156,19 +162,19 @@ const AboutPage: React.FC = () => {
核心业务
{[
- { icon: '📺', title: '家电零售', desc: '电视、冰箱、洗衣机等全品类家电销售' },
- { icon: '❄️', title: '空调服务', desc: '空调销售、安装、加氟、清洗及维修' },
- { icon: '🍳', title: '厨房电器', desc: '油烟机、燃气灶、热水器等厨卫电器' },
- { icon: '🛠️', title: '安装维修', desc: '专业师傅上门安装、检测及故障维修' },
- { icon: '🔧', title: '保养维护', desc: '定期清洗保养,延长家电使用寿命' },
- { icon: '✅', title: '品质保障', desc: '正品货源、透明报价、售后无忧' },
+ { icon: '🖥️', title: '企业管理软件', desc: 'ERP / CRM / OA 等数字化管理工具' },
+ { icon: '🌐', title: '品牌官网建设', desc: '企业官网、品牌站、营销落地页定制' },
+ { icon: '📱', title: '移动应用开发', desc: '微信小程序、跨端 APP 定制开发' },
+ { icon: '🔗', title: '系统集成对接', desc: '第三方平台 API 对接与数据打通' },
+ { icon: '📊', title: '数据智能分析', desc: '经营数据可视化与业务洞察' },
+ { icon: '✅', title: '技术服务支持', desc: '部署运维、培训陪跑、售后无忧' },
].map((item, idx) => (
{item.icon}
-
+
{item.title}
{item.desc}
@@ -181,10 +187,12 @@ const AboutPage: React.FC = () => {
联系我们
{[
- { label: '经营部名称', value: '威硕谱软件' },
- { label: '经营地址', value: '大新里南718号' },
- { label: '联系电话', value: '18269229683' },
- { label: '营业时间', value: '9:00 ~ 18:00' },
+ { label: '公司名称', value: '南宁市网宿信息科技有限公司' },
+ { label: '品牌名称', value: '威数谱软件(websopy)' },
+ { label: '公司总部', value: '南宁市良庆区五象大道401号五象航洋城(总部基地)1号楼1226室' },
+ { label: '联系电话', value: '0771-5386339' },
+ { label: '电子邮箱', value: 'websopy@163.com' },
+ { label: '官方网站', value: 'websoft.top / websopy.com' },
].map((item, idx) => (
{item.label}
@@ -196,78 +204,131 @@ const AboutPage: React.FC = () => {
{/* 底部版权 */}
- Copyright © 2024 威硕谱软件
- All Rights Reserved
+ Copyright © 2024 南宁市网宿信息科技有限公司
+ 威数谱软件 websopy · All Rights Reserved
{/* 隐藏的开发者登录弹窗 */}
{showLogin && (
e.stopPropagation()}
>
-
- 开发者登录
+ {/* 标题栏 */}
+
+ 开发者登录
✕
-
+
仅限开发测试使用,通过手机号+验证码登录指定账号
-
+ {/* 手机号输入框 */}
+
setFormData({ ...formData, phone: val })}
- style={{ backgroundColor: '#f5f5f5', borderRadius: '8px' }}
+ style={{
+ backgroundColor: '#fff5f5',
+ borderRadius: '12px',
+ height: '48px',
+ paddingLeft: '16px',
+ paddingRight: '16px',
+ fontSize: '15px',
+ border: '1.5px solid #e53e3e',
+ boxSizing: 'border-box',
+ }}
/>
-
- setFormData({ ...formData, code: val })}
- style={{ backgroundColor: '#f5f5f5', borderRadius: '8px' }}
- />
+ {/* 验证码输入 + 获取按钮 */}
+
+
+ setFormData({ ...formData, code: val })}
+ style={{
+ backgroundColor: '#fff5f5',
+ borderRadius: '12px',
+ height: '48px',
+ paddingLeft: '16px',
+ paddingRight: '12px',
+ fontSize: '15px',
+ border: '1.5px solid #e53e3e',
+ boxSizing: 'border-box',
+ }}
+ />
+
+ {/* 登录按钮 */}
diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx
index f4cc24d..2ffbae2 100644
--- a/src/pages/user/user.tsx
+++ b/src/pages/user/user.tsx
@@ -101,8 +101,8 @@ const UserPage: React.FC = () => {
})
const menuItems = [
- // 升级VIP会员 - 醒目样式
- { icon: '👑', label: '升级VIP会员', url: '/pages/user/vip-upgrade/index', highlight: true, requireAuth: true },
+ // 申请成为开发者 - 醒目样式
+ { icon: '🔰', label: '申请成为开发者', url: '/pages/user/vip-upgrade/index', highlight: true, requireAuth: true },
// 门店中心:仅门店店员/店长显示(通过 /shop/shop-store-user/my 判断)
...(storeInfo ? [{ icon: '🏪', label: '门店中心', url: '/pages/store/center/index', requireAuth: true }] : []),
{ icon: '💰', label: '我的钱包', url: '/pages/user/wallet', requireAuth: true },
diff --git a/src/pages/user/vip-review/index.tsx b/src/pages/user/vip-review/index.tsx
index 455ce10..115b28b 100644
--- a/src/pages/user/vip-review/index.tsx
+++ b/src/pages/user/vip-review/index.tsx
@@ -9,7 +9,7 @@ import { TenantId } from '@/config/app'
import { getMyClerk } from '@/api/shop/shopStoreUser'
definePageConfig({
- navigationBarTitleText: 'VIP会员审核',
+ navigationBarTitleText: '开发者审核',
})
// Tab 配置
@@ -24,7 +24,7 @@ const TABS: { key: TabKey; label: string; status: number }[] = [
// VIP 角色信息(对应 system/role 表)
// 角色 ID 不写死,按 roleCode + 当前租户ID 动态查询
const VIP_ROLE_CODE = 'developer'
-const VIP_ROLE_NAME = '认证开发者'
+const VIP_ROLE_NAME = '开发者'
// 获取当前租户 ID(登录时写入 storage,未登录时回退到默认租户)
function getCurrentTenantId(): number | string | undefined {
@@ -181,7 +181,7 @@ const VipReviewPage: React.FC = () => {
const handleApprove = (item: ShopDealerApply) => {
Taro.showModal({
title: '确认通过',
- content: `确认通过「${item.realName || item.merchantName || '该用户'}」的VIP会员申请?\n\n请确认已实地考察核实门店名称和地址。`,
+ content: `确认通过「${item.realName || item.merchantName || '该用户'}」的开发者申请?\n\n请确认已实地考察核实开发团队名称与公司地址。`,
confirmColor: '#22c55e',
success: async (res) => {
if (!res.confirm) return
@@ -216,7 +216,7 @@ const VipReviewPage: React.FC = () => {
const handleReject = (item: ShopDealerApply) => {
Taro.showModal({
title: '驳回申请',
- content: `确认驳回「${item.realName || item.merchantName || '该用户'}」的VIP会员申请?`,
+ content: `确认驳回「${item.realName || item.merchantName || '该用户'}」的开发者申请?`,
confirmColor: '#ef4444',
success: async (res) => {
if (!res.confirm) return
@@ -291,12 +291,12 @@ const VipReviewPage: React.FC = () => {
{renderStatusTag(item.applyStatus!)}
- {/* 门店信息 */}
+ {/* 开发团队及公司信息 */}
🏪
- 门店名称
+ 开发团队
{item.merchantName || item.realName || '-'}
@@ -305,7 +305,7 @@ const VipReviewPage: React.FC = () => {
📍
- 门店地址
+ 公司地址
{item.address || '-'}
@@ -371,7 +371,7 @@ const VipReviewPage: React.FC = () => {
审核说明
- 请实地考察核实申请人的门店名称和地址是否与实际一致,确认无误后给予通过,升级为VIP会员。
+ 请实地考察核实申请人的开发团队名称与公司地址是否与实际一致,确认无误后给予通过,升级为开发者。
diff --git a/src/pages/user/vip-upgrade/index.config.ts b/src/pages/user/vip-upgrade/index.config.ts
index c780477..5d1ad0a 100644
--- a/src/pages/user/vip-upgrade/index.config.ts
+++ b/src/pages/user/vip-upgrade/index.config.ts
@@ -1,5 +1,5 @@
export default {
- navigationBarTitleText: '升级VIP会员',
+ navigationBarTitleText: '申请成为开发者',
enableShareAppMessage: true,
enableShareTimeline: true,
}
diff --git a/src/pages/user/vip-upgrade/index.tsx b/src/pages/user/vip-upgrade/index.tsx
index beefbf4..5eb4f00 100644
--- a/src/pages/user/vip-upgrade/index.tsx
+++ b/src/pages/user/vip-upgrade/index.tsx
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react'
-import { View, Text, Input } from '@tarojs/components'
+import { View, Text, Input, Picker } from '@tarojs/components'
import Taro from '@tarojs/taro'
import { useUser } from '@/hooks/useUser'
import { useShare } from '@/hooks/useShare'
@@ -7,7 +7,7 @@ import { addShopDealerApply, listShopDealerApply } from '@/api/shop/shopDealerAp
import type { ShopDealerApply } from '@/api/shop/shopDealerApply/model'
definePageConfig({
- navigationBarTitleText: '升级VIP会员',
+ navigationBarTitleText: '申请成为开发者',
enableShareAppMessage: true,
enableShareTimeline: true,
})
@@ -16,11 +16,14 @@ const VipUpgradePage: React.FC = () => {
const { user, isLoggedIn } = useUser()
// 分享 / 朋友圈
useShare({
- title: '升级VIP会员,享专属优惠价',
+ title: '成为认证开发者,享专属权益',
path: '/pages/user/vip-upgrade',
})
const [realName, setRealName] = useState('')
const [address, setAddress] = useState('')
+ // 所在城市(省市区三级,使用微信原生地区选择器)
+ const [cityValue, setCityValue] = useState([])
+ const cityText = cityValue.join(' ')
const [loading, setLoading] = useState(false)
const [existingApply, setExistingApply] = useState(null)
@@ -30,7 +33,7 @@ const VipUpgradePage: React.FC = () => {
return
}
if (user) {
- // 门店名称和地址统一从 shop-dealer-apply 表读取
+ // 开发团队名称与公司地址统一从 shop-dealer-apply 表读取
listShopDealerApply({ userId: (user as any)?.userId || (user as any)?.id })
.then(data => {
if (!data || data.length === 0) return
@@ -40,6 +43,7 @@ const VipUpgradePage: React.FC = () => {
setExistingApply(latest)
setRealName(latest.realName || '')
setAddress(latest.address || '')
+ setCityValue(latest.city ? String(latest.city).split(' ').filter(Boolean) : [])
}
})
.catch(() => {})
@@ -48,11 +52,15 @@ const VipUpgradePage: React.FC = () => {
const handleSave = async () => {
if (!realName.trim()) {
- Taro.showToast({ title: '请输入门店名称', icon: 'none' })
+ Taro.showToast({ title: '请输入开发团队名称', icon: 'none' })
+ return
+ }
+ if (!cityText) {
+ Taro.showToast({ title: '请选择所在城市', icon: 'none' })
return
}
if (!address.trim()) {
- Taro.showToast({ title: '请输入门店地址', icon: 'none' })
+ Taro.showToast({ title: '请输入公司地址', icon: 'none' })
return
}
setLoading(true)
@@ -60,6 +68,7 @@ const VipUpgradePage: React.FC = () => {
await addShopDealerApply({
userId: (user as any)?.userId || (user as any)?.id,
realName: realName.trim(),
+ city: cityText,
address: address.trim(),
applyType: 10, // 需后台审核
applyStatus: 10, // 待审核
@@ -91,11 +100,11 @@ const VipUpgradePage: React.FC = () => {
- 👑
+ 🔰
- 升级VIP会员
+ 申请开发者
- {existingApply?.applyStatus === 20 ? '恭喜您已是VIP会员' : '填写门店信息,申请VIP会员资格'}
+ {existingApply?.applyStatus === 20 ? '恭喜您已成为开发者' : '填写开发团队及公司地址,申请成为开发者身份'}
@@ -115,8 +124,8 @@ const VipUpgradePage: React.FC = () => {
{existingApply.applyStatus === 10
- ? '您的VIP申请正在审核中,请耐心等待。审核结果将通过消息通知您。'
- : '恭喜!您的VIP会员申请已审核通过,现在可以享受全部VIP专属权益。'}
+ ? '您的开发者申请正在审核中,请耐心等待。审核结果将通过消息通知您。'
+ : '恭喜!您的开发者申请已审核通过,现在可以享受全部开发者专属权益。'}
@@ -133,7 +142,7 @@ const VipUpgradePage: React.FC = () => {
温馨提示
- 请填写您的门店信息,提交后管理员将进行审核。审核通过后即可享受VIP会员专属权益,包括更高佣金、专属折扣等特权。
+ 请填写您的开发团队及公司地址信息,提交后管理员将进行审核。审核通过后即可享受开发者专属权益,包括更高佣金、专属折扣等特权。
@@ -142,12 +151,12 @@ const VipUpgradePage: React.FC = () => {
{/* 表单 */}
- {/* 门店名称 */}
+ {/* 开发团队 */}
- 门店名称 *
+ 开发团队 *
setRealName(e.detail.value)}
maxlength={50}
@@ -155,12 +164,25 @@ const VipUpgradePage: React.FC = () => {
/>
- {/* 门店地址 */}
+ {/* 所在城市 */}
+ setCityValue(e.detail.value || [])} disabled={isReadonly}>
+
+ 所在城市 *
+
+
+ {cityText || '请选择所在城市'}
+
+ ▶
+
+
+
+
+ {/* 公司地址 */}
- 门店地址 *
+ 办公地址 *
setAddress(e.detail.value)}
maxlength={100}
@@ -169,15 +191,15 @@ const VipUpgradePage: React.FC = () => {
- {/* VIP权益预览 */}
+ {/* 开发者权益预览 */}
- VIP会员专属权益
+ 开发者专属权益
{[
{ icon: '💎', title: '更高佣金', desc: '享受高额团队佣金' },
- { icon: '🎁', title: '专属折扣', desc: '购物享VIP专属价' },
+ { icon: '🎁', title: '专属折扣', desc: '购物享开发者专属价' },
{ icon: '⚡', title: '优先发货', desc: '订单优先处理配送' },
- { icon: '🎧', title: '专属客服', desc: '一对一VIP服务' },
+ { icon: '🎧', title: '专属客服', desc: '一对一开发者服务' },
].map(item => (