Files
websopy-taro/.idea/workspace.xml
T
gxwebsoft d085e02ecf refactor(cms): 迁移CMS模块接口到独立cms-api服务
- 新增cmsRequest工具,基于request封装,默认baseURL为cms-api
- 改用cmsRequest替换所有cms相关请求,确保请求走独立域名
- 配置三环境新增CMS_API_BASE_URL及导出CmsBaseUrl常量
- 解决CMS接口走shop-api时返回404的问题,避免小程序域名白名单冲突
- 统一修改34个cms API模块的261处调用,保持接口行为一致
- 修复部分拼接全URL方式改为相对路径调用cmsRequest
- 更新注释说明并调整相关接口调用代码
- 兼容macOS sed替换问题,采用perl命令完成批量替换
2026-08-11 11:05:22 +08:00

563 lines
66 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="2de94e4f-0587-4c9b-8bfd-e87e0ae95b81" name="更改" comment="refactor(cms): 迁移CMS模块接口到独立cms-api服务&#10;&#10;- 新增cmsRequest工具,基于request封装,默认baseURL为cms-api&#10;- 改用cmsRequest替换所有cms相关请求,确保请求走独立域名&#10;- 配置三环境新增CMS_API_BASE_URL及导出CmsBaseUrl常量&#10;- 解决CMS接口走shop-api时返回404的问题,避免小程序域名白名单冲突&#10;- 统一修改34个cms API模块的261处调用,保持接口行为一致&#10;- 修复部分拼接全URL方式改为相对路径调用cmsRequest&#10;- 更新注释说明并调整相关接口调用代码&#10;- 兼容macOS sed替换问题,采用perl命令完成批量替换" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
<option name="RESET_MODE" value="HARD" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 7
}</component>
<component name="ProjectId" id="3CCElusNNIyc7lgX61jkNQo02h3" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;junie.onboarding.icon.badge.shown&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;/Users/gxwebsoft/VUE/websopy-taro/src/passport&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.stylelint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.stylelint&quot;: &quot;/Users/gxwebsoft/VUE/websopy-taro/node_modules/stylelint&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;pnpm&quot;,
&quot;npm.build:weapp.executor&quot;: &quot;Run&quot;,
&quot;npm.dev:weapp.executor&quot;: &quot;Run&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
&quot;to.speed.mode.migration.done&quot;: &quot;true&quot;,
&quot;ts.external.directory.path&quot;: &quot;/Users/gxwebsoft/VUE/websopy-taro/node_modules/typescript/lib&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/passport" />
<recent name="$PROJECT_DIR$/src/api" />
<recent name="$PROJECT_DIR$/src/api/passport/wx-login" />
<recent name="$PROJECT_DIR$" />
</key>
</component>
<component name="RunManager" selected="npm.dev:weapp">
<configuration name="build:weapp" type="js.build_tools.npm" temporary="true" nameIsGenerated="true">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="build:weapp" />
</scripts>
<node-interpreter value="project" />
<envs />
<method v="2" />
</configuration>
<configuration name="dev:weapp" type="js.build_tools.npm" temporary="true" nameIsGenerated="true">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="dev:weapp" />
</scripts>
<node-interpreter value="project" />
<envs />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="npm.dev:weapp" />
<item itemvalue="npm.build:weapp" />
</list>
</recent_temporary>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-js-predefined-d6986cc7102b-e03c56caf84a-JavaScript-WS-252.23892.411" />
</set>
</attachedChunks>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="2de94e4f-0587-4c9b-8bfd-e87e0ae95b81" name="更改" comment="" />
<created>1775881305279</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1775881305279</updated>
<workItem from="1775881306434" duration="12652000" />
<workItem from="1775910653750" duration="20840000" />
<workItem from="1777873063244" duration="20000" />
<workItem from="1778089953570" duration="7000" />
<workItem from="1778308774420" duration="947000" />
<workItem from="1780559793276" duration="400000" />
<workItem from="1782803615391" duration="418000" />
<workItem from="1782804285999" duration="4025000" />
<workItem from="1782813891753" duration="1850000" />
<workItem from="1782876148090" duration="4787000" />
<workItem from="1782903749109" duration="4000" />
<workItem from="1782971387128" duration="7154000" />
<workItem from="1784093204572" duration="6082000" />
<workItem from="1784131049625" duration="2304000" />
<workItem from="1784133736973" duration="4614000" />
<workItem from="1784585070286" duration="3047000" />
<workItem from="1784638429525" duration="16147000" />
<workItem from="1784798575885" duration="4896000" />
<workItem from="1784873955217" duration="3822000" />
<workItem from="1786371937331" duration="10089000" />
</task>
<task id="LOCAL-00031" summary="refactor(api): 规范前端API接口地址并统一路径前缀&#10;&#10;- 修正开发者、小程序和企业相关API的基础URL,避免重复添加/api前缀&#10;- 统一调整developer、enterprise、invite等模块接口路径,保持与后端Controller一致&#10;- 新增权限申请及消息通知相关API,并完善相关函数实现&#10;- 规范请求参数传递,移除多余包装,改用直接传递对象方式&#10;- 新增API Key重置、版本发布/回滚等接口支持&#10;&#10;feat(invite): 重构邀请登录流程支持未注册快速加入&#10;&#10;- 完整重写invite页,分离已注册用户和未注册用户的按钮显示和交互&#10;- 实现未注册用户微信手机号授权后自动注册登录及自动加入应用&#10;- 已注册用户直接确认加入应用,无需手机号授权弹窗&#10;- 统一使用getPhoneNumber按钮处理两种状态并修复“授权码不能为空”报错&#10;- 前端配合后端改造,支持已登录用户可直接通过Authorization头加入应用&#10;&#10;fix(developer): 修复开发者中心应用加载问题&#10;&#10;- 修复只查询创建的应用导致邀请加入的应用不显示的问题&#10;- 同时请求创建应用和参与应用接口,合并并去重应用列表&#10;- 新增pageJoinedApp接口调用及合并逻辑,提高应用列表完整性和体验">
<option name="closed" value="true" />
<created>1782803960387</created>
<option name="number" value="00031" />
<option name="presentableId" value="LOCAL-00031" />
<option name="project" value="LOCAL" />
<updated>1782803960387</updated>
</task>
<task id="LOCAL-00032" summary="refactor(api): 规范前端API接口地址并统一路径前缀&#10;&#10;- 修正开发者、小程序和企业相关API的基础URL,避免重复添加/api前缀&#10;- 统一调整developer、enterprise、invite等模块接口路径,保持与后端Controller一致&#10;- 新增权限申请及消息通知相关API,并完善相关函数实现&#10;- 规范请求参数传递,移除多余包装,改用直接传递对象方式&#10;- 新增API Key重置、版本发布/回滚等接口支持&#10;&#10;feat(invite): 重构邀请登录流程支持未注册快速加入&#10;&#10;- 完整重写invite页,分离已注册用户和未注册用户的按钮显示和交互&#10;- 实现未注册用户微信手机号授权后自动注册登录及自动加入应用&#10;- 已注册用户直接确认加入应用,无需手机号授权弹窗&#10;- 统一使用getPhoneNumber按钮处理两种状态并修复“授权码不能为空”报错&#10;- 前端配合后端改造,支持已登录用户可直接通过Authorization头加入应用&#10;&#10;fix(developer): 修复开发者中心应用加载问题&#10;&#10;- 修复只查询创建的应用导致邀请加入的应用不显示的问题&#10;- 同时请求创建应用和参与应用接口,合并并去重应用列表&#10;- 新增pageJoinedApp接口调用及合并逻辑,提高应用列表完整性和体验">
<option name="closed" value="true" />
<created>1782803963602</created>
<option name="number" value="00032" />
<option name="presentableId" value="LOCAL-00032" />
<option name="project" value="LOCAL" />
<updated>1782803963602</updated>
</task>
<task id="LOCAL-00033" summary="feat(app): 添加应用入口文件和配置文件&#10;&#10;- 新增 index.tsx 作为应用的主入口文件&#10;- 新增 index.config.ts 用于应用的配置管理">
<option name="closed" value="true" />
<created>1782804027400</created>
<option name="number" value="00033" />
<option name="presentableId" value="LOCAL-00033" />
<option name="project" value="LOCAL" />
<updated>1782804027400</updated>
</task>
<task id="LOCAL-00034" summary="feat(app): 添加应用入口文件和配置文件&#10;&#10;- 新增 index.tsx 作为应用的主入口文件&#10;- 新增 index.config.ts 用于应用的配置管理">
<option name="closed" value="true" />
<created>1782804461646</created>
<option name="number" value="00034" />
<option name="presentableId" value="LOCAL-00034" />
<option name="project" value="LOCAL" />
<updated>1782804461646</updated>
</task>
<task id="LOCAL-00035" summary="fix(tailwind): 更新配置以兼容微信小程序&#10;&#10;- 启用 autoprefixer 并新增 postcss-nested 插件支持嵌套语法&#10;- 扩展主题颜色,添加 primary 色系&#10;- 更新 content 路径包含 public/index.html&#10;- 禁用 preflight 以移除默认样式重置&#10;- 移除多数 corePlugins 禁用项,保留 preflight 禁用,简化兼容性配置">
<option name="closed" value="true" />
<created>1782805513768</created>
<option name="number" value="00035" />
<option name="presentableId" value="LOCAL-00035" />
<option name="project" value="LOCAL" />
<updated>1782805513768</updated>
</task>
<task id="LOCAL-00036" summary="feat(postcss): 添加插件移除微信小程序不兼容Tailwind规则&#10;&#10;- 实现 postcss-remove-wxss-incompatible 插件&#10;- 移除反斜杠转义的重要性修饰符类选择器(.\!xxx)&#10;- 删除依赖 :not 和兄弟选择器的 .space-[x|y]-* 规则&#10;- 删除依赖 :not 和兄弟选择器的 .divide-[x|y]-* 规则&#10;- 解决微信小程序 WXSS 不支持的 CSS 特性问题">
<option name="closed" value="true" />
<created>1782808735147</created>
<option name="number" value="00036" />
<option name="presentableId" value="LOCAL-00036" />
<option name="project" value="LOCAL" />
<updated>1782808735147</updated>
</task>
<task id="LOCAL-00037" summary="feat(postcss): 添加插件移除微信小程序不兼容Tailwind规则&#10;&#10;- 实现 postcss-remove-wxss-incompatible 插件&#10;- 移除反斜杠转义的重要性修饰符类选择器(.\!xxx)&#10;- 删除依赖 :not 和兄弟选择器的 .space-[x|y]-* 规则&#10;- 删除依赖 :not 和兄弟选择器的 .divide-[x|y]-* 规则&#10;- 解决微信小程序 WXSS 不支持的 CSS 特性问题">
<option name="closed" value="true" />
<created>1782808737652</created>
<option name="number" value="00037" />
<option name="presentableId" value="LOCAL-00037" />
<option name="project" value="LOCAL" />
<updated>1782808737652</updated>
</task>
<task id="LOCAL-00038" summary="feat(postcss): 添加插件移除微信小程序不兼容Tailwind规则&#10;&#10;- 实现 postcss-remove-wxss-incompatible 插件&#10;- 移除反斜杠转义的重要性修饰符类选择器(.\!xxx)&#10;- 删除依赖 :not 和兄弟选择器的 .space-[x|y]-* 规则&#10;- 删除依赖 :not 和兄弟选择器的 .divide-[x|y]-* 规则&#10;- 解决微信小程序 WXSS 不支持的 CSS 特性问题">
<option name="closed" value="true" />
<created>1782808741979</created>
<option name="number" value="00038" />
<option name="presentableId" value="LOCAL-00038" />
<option name="project" value="LOCAL" />
<updated>1782808741979</updated>
</task>
<task id="LOCAL-00039" summary="fix(pay): 优化订阅号获取逻辑并调整支付组件样式&#10;&#10;- 优先从小程序码 scene 参数读取 subscriptionNo,提升参数兼容性&#10;- 对 scene 参数进行解码,避免编码引起的问题&#10;- 移除支付组件价格显示处的固定颜色设置,增强样式灵活性">
<option name="closed" value="true" />
<created>1782810191833</created>
<option name="number" value="00039" />
<option name="presentableId" value="LOCAL-00039" />
<option name="project" value="LOCAL" />
<updated>1782810191833</updated>
</task>
<task id="LOCAL-00040" summary="fix(utils): 优化小程序端复制文本功能体验&#10;&#10;- 小程序端直接调用原生 wx.setClipboardData,避免 Taro Promise 封装问题&#10;- 避免微信小程序重复显示复制成功提示和误报复制失败&#10;- 失败时仅在小程序端输出错误日志,非小程序端显示提示&#10;- 修改首页外链跳转逻辑,支持相对路径跳转,小程序内外链复制提示提升用户体验&#10;- 更新项目内剪切板使用规范文档,说明复制行为调整及符合相应规范要求">
<option name="closed" value="true" />
<created>1782814230613</created>
<option name="number" value="00040" />
<option name="presentableId" value="LOCAL-00040" />
<option name="project" value="LOCAL" />
<updated>1782814230613</updated>
</task>
<task id="LOCAL-00041" summary="fix(utils): 优化小程序端复制文本功能体验&#10;&#10;- 小程序端直接调用原生 wx.setClipboardData,避免 Taro Promise 封装问题&#10;- 避免微信小程序重复显示复制成功提示和误报复制失败&#10;- 失败时仅在小程序端输出错误日志,非小程序端显示提示&#10;- 修改首页外链跳转逻辑,支持相对路径跳转,小程序内外链复制提示提升用户体验&#10;- 更新项目内剪切板使用规范文档,说明复制行为调整及符合相应规范要求">
<option name="closed" value="true" />
<created>1782814693982</created>
<option name="number" value="00041" />
<option name="presentableId" value="LOCAL-00041" />
<option name="project" value="LOCAL" />
<updated>1782814693982</updated>
</task>
<task id="LOCAL-00042" summary="fix(index): 优化外链提示及删除复制咨询模板功能&#10;&#10;- 替换小程序内外链打开方式提示为弹窗提醒用户手动复制&#10;- 删除复制咨询模板功能及相关按钮&#10;- 修改联系我们文案,突出直接电话沟通或需求反馈&#10;- 移除无用导入的复制文本工具函数copyText">
<option name="closed" value="true" />
<created>1782814719111</created>
<option name="number" value="00042" />
<option name="presentableId" value="LOCAL-00042" />
<option name="project" value="LOCAL" />
<updated>1782814719111</updated>
</task>
<task id="LOCAL-00043" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782879460607</created>
<option name="number" value="00043" />
<option name="presentableId" value="LOCAL-00043" />
<option name="project" value="LOCAL" />
<updated>1782879460607</updated>
</task>
<task id="LOCAL-00044" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782881600013</created>
<option name="number" value="00044" />
<option name="presentableId" value="LOCAL-00044" />
<option name="project" value="LOCAL" />
<updated>1782881600013</updated>
</task>
<task id="LOCAL-00045" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782881602732</created>
<option name="number" value="00045" />
<option name="presentableId" value="LOCAL-00045" />
<option name="project" value="LOCAL" />
<updated>1782881602732</updated>
</task>
<task id="LOCAL-00046" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782881620199</created>
<option name="number" value="00046" />
<option name="presentableId" value="LOCAL-00046" />
<option name="project" value="LOCAL" />
<updated>1782881620199</updated>
</task>
<task id="LOCAL-00047" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782881623335</created>
<option name="number" value="00047" />
<option name="presentableId" value="LOCAL-00047" />
<option name="project" value="LOCAL" />
<updated>1782881623335</updated>
</task>
<task id="LOCAL-00048" summary="feat(utils): 优化请求函数URL拼接逻辑&#10;&#10;- 在request函数中将请求拦截改为先拼接完整URL&#10;- 支持相对路径自动补全baseUrl&#10;- 删除原有请求拦截中url未处理的问题">
<option name="closed" value="true" />
<created>1782881646712</created>
<option name="number" value="00048" />
<option name="presentableId" value="LOCAL-00048" />
<option name="project" value="LOCAL" />
<updated>1782881646712</updated>
</task>
<task id="LOCAL-00049" summary="docs(schedule): 添加2026年7月1日日程文件&#10;&#10;- 创建新的日程文档文件 2026-07-01.md&#10;- 文件内容待后续补充和更新">
<option name="closed" value="true" />
<created>1782899810526</created>
<option name="number" value="00049" />
<option name="presentableId" value="LOCAL-00049" />
<option name="project" value="LOCAL" />
<updated>1782899810526</updated>
</task>
<task id="LOCAL-00050" summary="docs(schedule): 添加2026年7月1日日程文件&#10;&#10;- 创建新的日程文档文件 2026-07-01.md&#10;- 文件内容待后续补充和更新">
<option name="closed" value="true" />
<created>1782899812498</created>
<option name="number" value="00050" />
<option name="presentableId" value="LOCAL-00050" />
<option name="project" value="LOCAL" />
<updated>1782899812498</updated>
</task>
<task id="LOCAL-00051" summary="feat(pay): 优化小程序支付流程并增强日志调试&#10;&#10;- 更新 wx-login 接口以返回完整 LoginResult,包括 access_token 和 user 对象&#10;- 支付页面新增大量日志,详尽打印参数、请求和响应信息&#10;- 优化获取订阅详情流程,支持 returnRaw 返回完整响应用于调试&#10;- 支付流程新增步骤,先通过 code 获取 openid 并缓存,再尝试用 openid 自动登录&#10;- 增加自动登录失败交互,提示未注册用户先登录&#10;- 支付相关请求均使用 returnRaw 方便错误排查&#10;- request 请求模块添加统一请求和响应日志,增强调试能力&#10;- request 认证错误和业务错误时加入详细日志输出">
<option name="closed" value="true" />
<created>1782979300991</created>
<option name="number" value="00051" />
<option name="presentableId" value="LOCAL-00051" />
<option name="project" value="LOCAL" />
<updated>1782979300991</updated>
</task>
<task id="LOCAL-00052" summary="feat(pay): 支付成功后自动跳转到已购产品页面&#10;&#10;- 支付成功后显示成功提示&#10;- 延迟1.5秒自动跳转到已购产品页面&#10;- 处理跳转失败时回退到用户首页&#10;- 优化用户支付完成后的使用体验">
<option name="closed" value="true" />
<created>1783003209100</created>
<option name="number" value="00052" />
<option name="presentableId" value="LOCAL-00052" />
<option name="project" value="LOCAL" />
<updated>1783003209100</updated>
</task>
<task id="LOCAL-00053" summary="feat(pay-bak): 新增小程序支付页面及相关配置&#10;&#10;- 新增确认支付页面配置,设置导航栏标题和样式&#10;- 实现小程序支付页完整组件逻辑,包括加载订单、发起JSAPI支付等&#10;- 支持通过 scene 或 subscriptionNo 获取订单参数&#10;- 完善支付流程接口请求及错误处理,支持自动登录和支付确认&#10;- 增加支付成功、支付中、支付失败、取消等状态页面展示&#10;- 支持支付成功后跳转已购产品页或用户页&#10;- 提供取消支付返回逻辑和界面展示&#10;- 细化支付金额显示和提示用户支付后可使用应用功能">
<option name="closed" value="true" />
<created>1784131564427</created>
<option name="number" value="00053" />
<option name="presentableId" value="LOCAL-00053" />
<option name="project" value="LOCAL" />
<updated>1784131564427</updated>
</task>
<task id="LOCAL-00054" summary="feat(address): 新增收货地址与售后申请功能&#10;&#10;- 新增地址编辑页面,支持地址智能识别、地图选点、地区选择和默认地址设置&#10;- 实现地址列表页面,支持地址查看、删除、设为默认及选择返回结算页&#10;- 新增售后申请页面,支持退款类型选择、商品选择、原因填写、图片上传和提交审核&#10;- 修复 passport 分包配置,移除不存在分包并补充缺失声明,避免 Taro 编译报错&#10;- 新增地址类型定义,增强前端地址数据结构类型安全&#10;- 优化页面交互体验,完善表单校验及错误提示逻辑&#10;- 统一代码格式与命名规范,保持代码风格一致性">
<option name="closed" value="true" />
<created>1784135922873</created>
<option name="number" value="00054" />
<option name="presentableId" value="LOCAL-00054" />
<option name="project" value="LOCAL" />
<updated>1784135922873</updated>
</task>
<task id="LOCAL-00055" summary="feat(passport): 迁移并修复小程序支付页面访问 websopy API 问题&#10;&#10;- 迁移 src/passport/pay 相关代码至当前项目,无需替换文件&#10;- 新增环境变量 WEBSOPY_API_BASE_URL,提供 websopy API 基础地址&#10;- 在 config/app.ts 导出 WebsopyBaseUrl,供代码引用&#10;- 配置 env.d.ts 类型定义,消除 TypeScript 隐式 any 错误&#10;- request 请求方法支持自定义 baseUrl 以调用不同接口地址&#10;- passport/pay 页面调用订阅接口统一传入 WebsopyBaseUrl&#10;- 修正 tenantId 类型为 number,调整登录用户类型断言&#10;- 确认编译成功,dist 目录生成对应文件及正确请求地址&#10;- 说明 type-check 依赖库问题不影响正常构建和运行">
<option name="closed" value="true" />
<created>1784136882898</created>
<option name="number" value="00055" />
<option name="presentableId" value="LOCAL-00055" />
<option name="project" value="LOCAL" />
<updated>1784136882898</updated>
</task>
<task id="LOCAL-00056" summary="feat(passport): 优化支付成功后页面跳转逻辑&#10;&#10;- 修改支付成功后的自动跳转目标,从已购产品页面改为我的页面&#10;- 使用 switchTab 替代 navigateTo 保证在 tabBar 页顺利跳转&#10;- 移除多余的跳转失败回退逻辑,简化跳转流程&#10;- 调整跳转延迟时间为 1500 毫秒,提升用户体验">
<option name="closed" value="true" />
<created>1784586922535</created>
<option name="number" value="00056" />
<option name="presentableId" value="LOCAL-00056" />
<option name="project" value="LOCAL" />
<updated>1784586922535</updated>
</task>
<task id="LOCAL-00057" summary="feat(user): 改为动态查询 VIP 角色ID,避免写死角色ID&#10;&#10;- RoleParam 类型新增 tenantId 字段,支持按租户过滤角色&#10;- 新增 getCurrentTenantId 获取当前租户ID,支持登录态和默认租户回退&#10;- 实现 getVipRoleId 函数,按 roleCode 与 tenantId 查询 VIP 角色ID&#10;- assignVipRole 中动态获取 VIP 角色ID,避免硬编码&#10;- 添加用户角色时带上 tenantId,确保多租户角色绑定正确&#10;- 移除写死的 VIP_ROLE_ID,改用动态查询结果,提高跨租户兼容性&#10;- 补充引入 listRoles 和 TenantId,完善相关依赖引用">
<option name="closed" value="true" />
<created>1784639229566</created>
<option name="number" value="00057" />
<option name="presentableId" value="LOCAL-00057" />
<option name="project" value="LOCAL" />
<updated>1784639229566</updated>
</task>
<task id="LOCAL-00058" summary="feat(user): 动态查询VIP角色ID,避免硬编码绑定问题&#10;&#10;- RoleParam新增tenantId字段,支持按租户过滤角色&#10;- 新增getCurrentTenantId函数,兼容登录态及默认租户回退&#10;- 实现getVipRoleId函数,按roleCode与tenantId查询VIP角色ID&#10;- assignVipRole动态获取VIP角色ID,移除写死的角色ID&#10;- 添加用户角色时传入tenantId,确保多租户环境中角色绑定正确&#10;- 修复后端UserRoleController.save接口bug,避免userId被无条件覆盖&#10;- 用户角色绑定时正确使用申请人userId,解决VIP审核角色误绑定问题">
<option name="closed" value="true" />
<created>1784653464775</created>
<option name="number" value="00058" />
<option name="presentableId" value="LOCAL-00058" />
<option name="project" value="LOCAL" />
<updated>1784653464775</updated>
</task>
<task id="LOCAL-00059" summary="feat(user): 统一VIP概念为开发者并优化开发者登录及申请&#10;&#10;- 将VIP相关文案、图标改为开发者,涉及用户中心、门店中心、审核页等&#10;- 优化登录弹窗UI,改为红色系,提升视觉统一性和交互体验&#10;- 关于我们页面品牌和公司信息内容更新,展示最新企业介绍和业务范围&#10;- VIP升级页新增“所在城市”选择,使用微信原生地区选择器,完善地址信息&#10;- 用户申请表单中新增城市字段及校验,提交时携带城市信息&#10;- 优化审核页面文案,统称开发者身份,明确申请审核内容&#10;- 修复UserRoleController.save接口bug,避免userId被无条件覆盖导致角色绑错&#10;- 动态查询VIP角色ID,避免硬编码,支持多租户环境正确绑定角色">
<option name="closed" value="true" />
<created>1784697551142</created>
<option name="number" value="00059" />
<option name="presentableId" value="LOCAL-00059" />
<option name="project" value="LOCAL" />
<updated>1784697551142</updated>
</task>
<task id="LOCAL-00060" summary="refactor(user): 删除门店信息输入框&#10;&#10;- 移除用户资料页面中的门店名称输入框&#10;- 移除用户资料页面中的门店地址输入框&#10;- 简化用户页面界面布局,提高界面整洁度">
<option name="closed" value="true" />
<created>1784697730666</created>
<option name="number" value="00060" />
<option name="presentableId" value="LOCAL-00060" />
<option name="project" value="LOCAL" />
<updated>1784697730666</updated>
</task>
<task id="LOCAL-00061" summary="refactor(user): 统一品牌名称为“威数谱软件”&#10;&#10;- 将项目中所有“威硕谱软件”名称修改为“威数谱软件”&#10;- 更新协议页面、欢迎消息、礼品卡等多处文本内容&#10;- 修改小程序配置文件中的项目名称和显示标题&#10;- 优化开发者申请页部分文案,明确开发者身份描述&#10;- 保证所有界面及配置中的品牌名称统一一致">
<option name="closed" value="true" />
<created>1784699171525</created>
<option name="number" value="00061" />
<option name="presentableId" value="LOCAL-00061" />
<option name="project" value="LOCAL" />
<updated>1784699171525</updated>
</task>
<task id="LOCAL-00062" summary="refactor(user): 将VIP身份统一改为开发者标记&#10;&#10;- 审核通过时不再新增角色,而是更新用户isDeveloper布尔标记&#10;- 后端UserService新增markAsDeveloper方法,通过updateById设置isDeveloper&#10;- UserController新增PUT接口更新开发者标记,权限使用sys:userRole:save&#10;- 前端api新增setUserDeveloper调用新的审核接口&#10;- vip-review页面移除角色相关代码,改为调用setUserDeveloper方法&#10;- 约定开发者身份即sys_user.is_developer字段,不再依赖角色表记录&#10;- app.config.ts追加开发者中心与平台管理相关页面路由&#10;- 新增开发者中心、平台管理的多个API模块(apikey、appProduct、appDomain、developer请求等)&#10;- 添加公共工具方法和复用组件用于开发者中心及平台管理功能&#10;- 统一品牌名称为“威数谱软件”,更新文案及界面展现一致性">
<option name="closed" value="true" />
<created>1784703425108</created>
<option name="number" value="00062" />
<option name="presentableId" value="LOCAL-00062" />
<option name="project" value="LOCAL" />
<updated>1784703425108</updated>
</task>
<task id="LOCAL-00063" summary="refactor(user): 将VIP身份统一改为开发者标记&#10;&#10;- 审核通过时不再新增角色,而是更新用户isDeveloper布尔标记&#10;- 后端UserService新增markAsDeveloper方法,通过updateById设置isDeveloper&#10;- UserController新增PUT接口更新开发者标记,权限使用sys:userRole:save&#10;- 前端api新增setUserDeveloper调用新的审核接口&#10;- vip-review页面移除角色相关代码,改为调用setUserDeveloper方法&#10;- 约定开发者身份即sys_user.is_developer字段,不再依赖角色表记录&#10;- app.config.ts追加开发者中心与平台管理相关页面路由&#10;- 新增开发者中心、平台管理的多个API模块(apikey、appProduct、appDomain、developer请求等)&#10;- 添加公共工具方法和复用组件用于开发者中心及平台管理功能&#10;- 统一品牌名称为“威数谱软件”,更新文案及界面展现一致性">
<option name="closed" value="true" />
<created>1784704220175</created>
<option name="number" value="00063" />
<option name="presentableId" value="LOCAL-00063" />
<option name="project" value="LOCAL" />
<updated>1784704220175</updated>
</task>
<task id="LOCAL-00064" summary="feat(weapp): 新增开发者中心与平台管理入口及相关功能&#10;&#10;- 小程序端新增开发者中心和平台管理页面模块,完善功能入口&#10;- 新增开发者中心页面(概览、我的应用、API Key和工单)&#10;- 新增平台管理页面(管理首页、应用审核、Git权限审核、域名绑定审核和工单处理)&#10;- 复刻PC端/api/app/*相关API接口,基地址使用WEBSOPY_API_BASE_URL&#10;- 增加公共组件StatCard、EntryGrid、CellRow以支持新页面UI&#10;- 修改首页增加开发者中心和平台管理角色入口,仅对对应用户显示&#10;- 用户页面菜单新增开发者中心和平台管理入口条件展示&#10;- 约定开发者身份使用sys_user.is_developer布尔字段,不再依赖角色表&#10;- 更新登录态业务,菜单是否显示基于登录接口返回的isDeveloper/isAdmin字段&#10;- 确保相关页面已在app.config.ts注册并添加身份认证需求&#10;- 调整运行配置为npm build:weapp,确保编译无误">
<option name="closed" value="true" />
<created>1784707342939</created>
<option name="number" value="00064" />
<option name="presentableId" value="LOCAL-00064" />
<option name="project" value="LOCAL" />
<updated>1784707342940</updated>
</task>
<task id="LOCAL-00065" summary="feat(weapp): 新增开发者中心与平台管理入口及功能&#10;&#10;- 小程序端新增开发者中心和平台管理页面模块,完善功能入口&#10;- 新增开发者中心页面(概览、我的应用、API Key和工单)&#10;- 新增平台管理页面(管理首页、应用审核、Git权限审核、域名绑定审核和工单处理)&#10;- 复刻PC端/api/app/*相关API接口,基地址使用WEBSOPY_API_BASE_URL&#10;- 增加公共组件StatCard、EntryGrid、CellRow以支持新页面UI&#10;- 修改首页增加开发者中心和平台管理角色入口,仅对对应用户显示&#10;- 用户页面菜单新增开发者中心和平台管理入口条件展示&#10;- 约定开发者身份使用sys_user.is_developer布尔字段,不再依赖角色表&#10;- 更新登录态业务,菜单是否显示基于登录接口返回的isDeveloper/isAdmin字段&#10;- vip-review审核通过流程调整为只调用setUserDeveloper,后台替换角色为developer并置isDeveloper=1">
<option name="closed" value="true" />
<created>1784709736683</created>
<option name="number" value="00065" />
<option name="presentableId" value="LOCAL-00065" />
<option name="project" value="LOCAL" />
<updated>1784709736683</updated>
</task>
<task id="LOCAL-00066" summary="fix(weapp): 修复支付页nutui组件导致内容空白问题&#10;&#10;- 替换支付页中nutui的Button、Cell、Price、Divider组件为Taro原生组件或项目自定义组件&#10;- 修正商品名称、价格类型和支付金额显示,使用flex布局及Text组件自绘内容&#10;- 调整按钮样式,统一为带蓝色背景和圆角的自定义样式&#10;- 移除nutui Price组件中的thousands属性,使用项目自定义Price组件&#10;- 解决微信小程序中nutui组件因div渲染缺失导致UI元素不显示的问题&#10;- 保持支付流程及状态逻辑无改动,仅优化展示兼容性和稳定性">
<option name="closed" value="true" />
<created>1784798603228</created>
<option name="number" value="00066" />
<option name="presentableId" value="LOCAL-00066" />
<option name="project" value="LOCAL" />
<updated>1784798603228</updated>
</task>
<task id="LOCAL-00067" summary="fix(weapp): 修复支付页nutui组件导致内容空白问题&#10;&#10;- 替换支付页中nutui的Button、Cell、Price、Divider组件为Taro原生组件或项目自定义组件&#10;- 修正商品名称、价格类型和支付金额显示,使用flex布局及Text组件自绘内容&#10;- 调整按钮样式,统一为带蓝色背景和圆角的自定义样式&#10;- 移除nutui Price组件中的thousands属性,使用项目自定义Price组件&#10;- 解决微信小程序中nutui组件因div渲染缺失导致UI元素不显示的问题&#10;- 保持支付流程及状态逻辑无改动,仅优化展示兼容性和稳定性">
<option name="closed" value="true" />
<created>1784799951929</created>
<option name="number" value="00067" />
<option name="presentableId" value="LOCAL-00067" />
<option name="project" value="LOCAL" />
<updated>1784799951929</updated>
</task>
<task id="LOCAL-00068" summary="fix(weapp): 修复支付页nutui组件导致内容空白问题&#10;&#10;- 替换支付页中nutui的Button、Cell、Price、Divider组件为Taro原生组件或项目自定义组件&#10;- 修正商品名称、价格类型和支付金额显示,使用flex布局及Text组件自绘内容&#10;- 调整按钮样式,统一为带蓝色背景和圆角的自定义样式&#10;- 移除nutui Price组件中的thousands属性,使用项目自定义Price组件&#10;- 解决微信小程序中nutui组件因div渲染缺失导致UI元素不显示的问题&#10;- 保持支付流程及状态逻辑无改动,仅优化展示兼容性和稳定性">
<option name="closed" value="true" />
<created>1784800111045</created>
<option name="number" value="00068" />
<option name="presentableId" value="LOCAL-00068" />
<option name="project" value="LOCAL" />
<updated>1784800111045</updated>
</task>
<task id="LOCAL-00069" summary="feat(user): 补充开发者审核通过时添加店员记录功能&#10;&#10;- 引入 addShopStoreUser 接口用于新增门店店员记录&#10;- 新增 clerkStoreId 和 clerkTenantId 状态,保存当前审核店员的门店和租户信息&#10;- 在审核通过后调用 addShopStoreUser,添加申请人为当前门店店员&#10;- 保证只有当 clerkStoreId 存在时才执行新增操作&#10;- 更新工作记录文档,补充审核通过流程中新添加的店员记录步骤&#10;- 保持原有升级开发者逻辑和接口调用不变">
<option name="closed" value="true" />
<created>1784800763746</created>
<option name="number" value="00069" />
<option name="presentableId" value="LOCAL-00069" />
<option name="project" value="LOCAL" />
<updated>1784800763746</updated>
</task>
<task id="LOCAL-00070" summary="feat(user): 补充开发者审核通过时添加店员记录功能&#10;&#10;- 引入 addShopStoreUser 接口用于新增门店店员记录&#10;- 新增 clerkStoreId 和 clerkTenantId 状态,保存当前审核店员的门店和租户信息&#10;- 在审核通过后调用 addShopStoreUser,添加申请人为当前门店店员&#10;- 保证只有当 clerkStoreId 存在时才执行新增操作&#10;- 调整平台管理页 UI,使其与门店中心保持一致风格&#10;- 门店中心及平台管理入口权限调整,仅超级管理员可访问&#10;- 用户菜单中平台管理和门店中心入口现基于 isSuperAdmin 字段控制&#10;- 优化登录及权限校验流程,避免权限不足时页面闪烁显示&#10;- 更新工作记录文档,补充审核通过流程中新添加的店员记录步骤">
<option name="closed" value="true" />
<created>1784802336157</created>
<option name="number" value="00070" />
<option name="presentableId" value="LOCAL-00070" />
<option name="project" value="LOCAL" />
<updated>1784802336157</updated>
</task>
<task id="LOCAL-00071" summary="feat(user): 合并并切换“申请开发者”菜单项状态&#10;&#10;- 在用户菜单中根据 isDeveloper 字段切换显示“申请成为开发者”或“进入开发者中心”&#10;- 已通过审核用户直接显示“进入开发者中心”且高亮显示&#10;- 去除冗余的独立“开发者中心”菜单条目,简化菜单结构&#10;- 调整平台管理页和门店中心入口权限为仅超级管理员可访问&#10;- 优化登录与权限校验流程,防止权限不足时页面闪烁或无访问权限空白&#10;- 更新相关文档,完善审核通过后店员记录添加流程">
<option name="closed" value="true" />
<created>1784802434477</created>
<option name="number" value="00071" />
<option name="presentableId" value="LOCAL-00071" />
<option name="project" value="LOCAL" />
<updated>1784802434477</updated>
</task>
<task id="LOCAL-00072" summary="fix(auth): 统一超级管理员标识为布尔值true&#10;&#10;- 将所有页面和菜单中超级管理员校验由数字1改为布尔true&#10;- 平台管理、门店中心菜单项仅在isSuperAdmin===true时显示&#10;- 门店中心页面移除店员门槛,改为超级管理员访问限制&#10;- 非超级管理员访问门店中心弹窗提示并返回&#10;- 首页工作台入口及相关访问权限判定切换为布尔判断&#10;- 优化首屏加载状态,避免权限校验闪烁和误判">
<option name="closed" value="true" />
<created>1784802589434</created>
<option name="number" value="00072" />
<option name="presentableId" value="LOCAL-00072" />
<option name="project" value="LOCAL" />
<updated>1784802589434</updated>
</task>
<task id="LOCAL-00073" summary="feat(user): 合并切换开发者菜单项状态并更新开发者中心UI&#10;&#10;- 用户菜单中根据 isDeveloper 字段条件展示“申请成为开发者”或“进入开发者中心”&#10;- 已审核通过用户菜单显示“进入开发者中心”,并设置高亮样式&#10;- 去除冗余的独立“开发者中心”菜单条目,简化菜单结构&#10;- 重新设计开发者中心页面UI,统一为门店中心风格&#10;- 顶部展示开发者头像及昵称手机号信息&#10;- 功能卡片展示“我的应用”、“API Key”和“我的工单”,异步加载数量角标&#10;- 底部添加“开发者帮助与支持”入口,替代门店订阅消息卡片&#10;- 未登录或非开发者状态显示相应空态提示及操作按钮&#10;- 优化登录状态与权限校验逻辑,防止页面闪烁和无权限内容显示">
<option name="closed" value="true" />
<created>1784802954848</created>
<option name="number" value="00073" />
<option name="presentableId" value="LOCAL-00073" />
<option name="project" value="LOCAL" />
<updated>1784802954848</updated>
</task>
<task id="LOCAL-00074" summary="feat(user): 合并切换开发者菜单并优化首页轮播图显示&#10;&#10;- 用户菜单根据 isDeveloper 字段切换显示申请或进入开发者中心&#10;- 已审核用户菜单高亮显示“进入开发者中心”&#10;- 去除冗余开发者中心菜单条目,简化结构&#10;- 重新设计开发者中心页面UI,统一门店中心风格&#10;- 顶部展示开发者头像及昵称手机号信息&#10;- 功能卡片展示“我的应用”、“API Key”和“我的工单”,异步加载数量角标&#10;- 底部添加“开发者帮助与支持”入口,替代门店订阅消息卡片&#10;- 未登录或非开发者状态显示相应空态及操作按钮&#10;- 首页轮播图为空时不显示容器,功能入口自动上移,优化空状态体验&#10;- 优化登录状态与权限校验逻辑,防止页面闪烁和无权限展示">
<option name="closed" value="true" />
<created>1784803190504</created>
<option name="number" value="00074" />
<option name="presentableId" value="LOCAL-00074" />
<option name="project" value="LOCAL" />
<updated>1784803190504</updated>
</task>
<task id="LOCAL-00075" summary="feat(user): 合并切换开发者菜单并优化首页轮播图显示&#10;&#10;- 用户菜单根据 isDeveloper 字段切换显示申请或进入开发者中心&#10;- 已审核用户菜单高亮显示“进入开发者中心”&#10;- 去除冗余开发者中心菜单条目,简化结构&#10;- 重新设计开发者中心页面UI,统一门店中心风格&#10;- 顶部展示开发者头像及昵称手机号信息&#10;- 功能卡片展示“我的应用”、“API Key”和“我的工单”,异步加载数量角标&#10;- 底部添加“开发者帮助与支持”入口,替代门店订阅消息卡片&#10;- 未登录或非开发者状态显示相应空态及操作按钮&#10;- 首页轮播图为空时不显示容器,功能入口自动上移,优化空状态体验&#10;- 优化登录状态与权限校验逻辑,防止页面闪烁和无权限展示">
<option name="closed" value="true" />
<created>1784873966827</created>
<option name="number" value="00075" />
<option name="presentableId" value="LOCAL-00075" />
<option name="project" value="LOCAL" />
<updated>1784873966827</updated>
</task>
<task id="LOCAL-00076" summary="feat(checkout): 优化微信支付和线下付款流程&#10;&#10;- 将默认支付方式调整为微信支付(payType=1),增加支付方式选择项&#10;- 微信支付成功后直接调用微信支付接口并处理支付结果反馈&#10;- 支付取消或失败时显示对应提示信息&#10;- 线下付款(payType=9)保留并显示相应提示,不触发在线支付&#10;- 提交订单时根据支付方式显示不同的按钮文本 (‘提交并支付’ 或 ‘提交订单’)&#10;- 针对微信支付配置缺失的错误,统一显示详细提示,便于定位问题&#10;- 优化支付方式选中时的提示样式与说明,提升用户体验">
<option name="closed" value="true" />
<created>1786372231925</created>
<option name="number" value="00076" />
<option name="presentableId" value="LOCAL-00076" />
<option name="project" value="LOCAL" />
<updated>1786372231925</updated>
</task>
<task id="LOCAL-00077" summary="feat(checkout): 优化微信支付和线下付款流程&#10;&#10;- 支付方式新增微信支付(payType=1),并设为默认,保留线下付款(payType=9)&#10;- 微信支付时调用 Taro.requestPayment 发起支付流程,取消或失败给出明确提示&#10;- 支付选项选中状态下微信支付显示绿色提示,线下付款显示橙色提示&#10;- 提交按钮文案区分微信支付(提交并支付)与线下付款(提交订单)&#10;- 后端支付配置缺失时提示“微信支付暂不可用:支付配置缺失”&#10;- 确保编译构建通过,未引入新类型错误">
<option name="closed" value="true" />
<created>1786407521622</created>
<option name="number" value="00077" />
<option name="presentableId" value="LOCAL-00077" />
<option name="project" value="LOCAL" />
<updated>1786407521622</updated>
</task>
<task id="LOCAL-00078" summary="feat(official): 实现企业官网分包及内容展示&#10;&#10;- 新增官方分包目录及页面(首页、资讯列表、详情、关于我们、留言、我的)&#10;- 自定义实现底部导航组件 OfficialTabBar,解决微信 tabBar 不支持分包问题&#10;- 统一接口调用走 shop-api 代理,无新增 CMS 域名,减少合法域名负担&#10;- 新增 CMS 站点信息获取接口及留言咨询提交与查询接口&#10;- 设计并完善官网富文本样式,品牌色统一为 #185FA5,并更新 tailwind 配置&#10;- 首页新增企业官网入口卡片,方便用户访问官网内容&#10;- 完成官网分包构建验证,解决 Taro 构建批量删除保护问题&#10;- 规范 CMS 字段使用,适配字段名称及状态含义&#10;- 后续计划对历史页面 NutUI 组件进行空壳化整改,及更新 UI 设计文档">
<option name="closed" value="true" />
<created>1786409297653</created>
<option name="number" value="00078" />
<option name="presentableId" value="LOCAL-00078" />
<option name="project" value="LOCAL" />
<updated>1786409297653</updated>
</task>
<task id="LOCAL-00079" summary="refactor(cms): 迁移CMS模块接口到独立cms-api服务&#10;&#10;- 新增cmsRequest工具,基于request封装,默认baseURL为cms-api&#10;- 改用cmsRequest替换所有cms相关请求,确保请求走独立域名&#10;- 配置三环境新增CMS_API_BASE_URL及导出CmsBaseUrl常量&#10;- 解决CMS接口走shop-api时返回404的问题,避免小程序域名白名单冲突&#10;- 统一修改34个cms API模块的261处调用,保持接口行为一致&#10;- 修复部分拼接全URL方式改为相对路径调用cmsRequest&#10;- 更新注释说明并调整相关接口调用代码&#10;- 兼容macOS sed替换问题,采用perl命令完成批量替换">
<option name="closed" value="true" />
<created>1786417481138</created>
<option name="number" value="00079" />
<option name="presentableId" value="LOCAL-00079" />
<option name="project" value="LOCAL" />
<updated>1786417481138</updated>
</task>
<option name="localTasksCounter" value="80" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_NEW_TODO" value="false" />
<MESSAGE value="feat(pay): 优化小程序支付流程并增强日志调试&#10;&#10;- 更新 wx-login 接口以返回完整 LoginResult,包括 access_token 和 user 对象&#10;- 支付页面新增大量日志,详尽打印参数、请求和响应信息&#10;- 优化获取订阅详情流程,支持 returnRaw 返回完整响应用于调试&#10;- 支付流程新增步骤,先通过 code 获取 openid 并缓存,再尝试用 openid 自动登录&#10;- 增加自动登录失败交互,提示未注册用户先登录&#10;- 支付相关请求均使用 returnRaw 方便错误排查&#10;- request 请求模块添加统一请求和响应日志,增强调试能力&#10;- request 认证错误和业务错误时加入详细日志输出" />
<MESSAGE value="feat(pay): 支付成功后自动跳转到已购产品页面&#10;&#10;- 支付成功后显示成功提示&#10;- 延迟1.5秒自动跳转到已购产品页面&#10;- 处理跳转失败时回退到用户首页&#10;- 优化用户支付完成后的使用体验" />
<MESSAGE value="feat(pay-bak): 新增小程序支付页面及相关配置&#10;&#10;- 新增确认支付页面配置,设置导航栏标题和样式&#10;- 实现小程序支付页完整组件逻辑,包括加载订单、发起JSAPI支付等&#10;- 支持通过 scene 或 subscriptionNo 获取订单参数&#10;- 完善支付流程接口请求及错误处理,支持自动登录和支付确认&#10;- 增加支付成功、支付中、支付失败、取消等状态页面展示&#10;- 支持支付成功后跳转已购产品页或用户页&#10;- 提供取消支付返回逻辑和界面展示&#10;- 细化支付金额显示和提示用户支付后可使用应用功能" />
<MESSAGE value="feat(address): 新增收货地址与售后申请功能&#10;&#10;- 新增地址编辑页面,支持地址智能识别、地图选点、地区选择和默认地址设置&#10;- 实现地址列表页面,支持地址查看、删除、设为默认及选择返回结算页&#10;- 新增售后申请页面,支持退款类型选择、商品选择、原因填写、图片上传和提交审核&#10;- 修复 passport 分包配置,移除不存在分包并补充缺失声明,避免 Taro 编译报错&#10;- 新增地址类型定义,增强前端地址数据结构类型安全&#10;- 优化页面交互体验,完善表单校验及错误提示逻辑&#10;- 统一代码格式与命名规范,保持代码风格一致性" />
<MESSAGE value="feat(passport): 迁移并修复小程序支付页面访问 websopy API 问题&#10;&#10;- 迁移 src/passport/pay 相关代码至当前项目,无需替换文件&#10;- 新增环境变量 WEBSOPY_API_BASE_URL,提供 websopy API 基础地址&#10;- 在 config/app.ts 导出 WebsopyBaseUrl,供代码引用&#10;- 配置 env.d.ts 类型定义,消除 TypeScript 隐式 any 错误&#10;- request 请求方法支持自定义 baseUrl 以调用不同接口地址&#10;- passport/pay 页面调用订阅接口统一传入 WebsopyBaseUrl&#10;- 修正 tenantId 类型为 number,调整登录用户类型断言&#10;- 确认编译成功,dist 目录生成对应文件及正确请求地址&#10;- 说明 type-check 依赖库问题不影响正常构建和运行" />
<MESSAGE value="feat(passport): 优化支付成功后页面跳转逻辑&#10;&#10;- 修改支付成功后的自动跳转目标,从已购产品页面改为我的页面&#10;- 使用 switchTab 替代 navigateTo 保证在 tabBar 页顺利跳转&#10;- 移除多余的跳转失败回退逻辑,简化跳转流程&#10;- 调整跳转延迟时间为 1500 毫秒,提升用户体验" />
<MESSAGE value="feat(user): 改为动态查询 VIP 角色ID,避免写死角色ID&#10;&#10;- RoleParam 类型新增 tenantId 字段,支持按租户过滤角色&#10;- 新增 getCurrentTenantId 获取当前租户ID,支持登录态和默认租户回退&#10;- 实现 getVipRoleId 函数,按 roleCode 与 tenantId 查询 VIP 角色ID&#10;- assignVipRole 中动态获取 VIP 角色ID,避免硬编码&#10;- 添加用户角色时带上 tenantId,确保多租户角色绑定正确&#10;- 移除写" />
<MESSAGE value="feat(user): 动态查询VIP角色ID,避免硬编码绑定问题&#10;&#10;- RoleParam新增tenantId字段,支持按租户过滤角色&#10;- 新增getCurrentTenantId函数,兼容登录态及默认租户回退&#10;- 实现getVipRoleId函数,按roleCode与tenantId查询VIP角色ID&#10;- assignVipRole动态获取VIP角色ID,移除写死的角色ID&#10;- 添加用户角色时传" />
<MESSAGE value="feat(user): 统一VIP概念为开发者并优化开发者登录及申请&#10;&#10;- 将VIP相关文案、图标改为开发者,涉及用户中心、门店中心、审核页等&#10;- 优化登录弹窗UI,改为红色系,提升视觉统一性和交互体验&#10;- 关于我们页面品牌和公司信息内容更新,展示最新企业介绍和业务范围&#10;- VIP升级页新增“所在城市”选择,使用微信原生地区选择器,完善地址信息&#10;- 用户申请表单中新增城市字段及校验,提交时携带城市信息&#10;- 优化审核页面文案,统称开发者身份,明确申请审核内容&#10;- 修复UserRoleController.save接口bug,避免userId被无条件覆盖导致角色绑错&#10;- 动态查询VIP角色ID,避免硬编码,支持多租户环境正确绑定角色" />
<MESSAGE value="refactor(user): 删除门店信息输入框&#10;&#10;- 移除用户资料页面中的门店名称输入框&#10;- 移除用户资料页面中的门店地址输入框&#10;- 简化用户页面界面布局,提高界面整洁度" />
<MESSAGE value="refactor(user): 统一品牌名称为“威数谱软件”&#10;&#10;- 将项目中所有“威硕谱软件”名称修改为“威数谱软件”&#10;- 更新协议页面、欢迎消息、礼品卡等多处文本内容&#10;- 修改小程序配置文件中的项目名称和显示标题&#10;- 优化开发者申请页部分文案,明确开发者身份描述&#10;- 保证所有界面及配置中的品牌名称统一一致" />
<MESSAGE value="refactor(user): 将VIP身份统一改为开发者标记&#10;&#10;- 审核通过时不再新增角色,而是更新用户isDeveloper布尔标记&#10;- 后端UserService新增markAsDeveloper方法,通过updateById设置isDeveloper&#10;- UserController新增PUT接口更新开发者标记,权限使用sys:userRole:save&#10;- 前端api新增setUserDeveloper调用新的审核接口&#10;- vip-review页面移除角色相关代码,改为调用setUserDeveloper方法&#10;- 约定开发者身份即sys_user.is_developer字段,不再依赖角色表记录&#10;- app.config.ts追加开发者中心与平台管理相关页面路由&#10;- 新增开发者中心、平台管理的多个API模块(apikey、appProduct、appDomain、developer请求等)&#10;- 添加公共工具方法和复用组件用于开发者中心及平台管理功能&#10;- 统一品牌名称为“威数谱软件”,更新文案及界面展现一致性" />
<MESSAGE value="feat(weapp): 新增开发者中心与平台管理入口及相关功能&#10;&#10;- 小程序端新增开发者中心和平台管理页面模块,完善功能入口&#10;- 新增开发者中心页面(概览、我的应用、API Key和工单)&#10;- 新增平台管理页面(管理首页、应用审核、Git权限审核、域名绑定审核和工单处理)&#10;- 复刻PC端/api/app/*相关API接口,基地址使用WEBSOPY_API_BASE_URL&#10;- 增加公共组件StatCard、EntryGrid、CellRow以支持新页面UI&#10;- 修改首页增加开发者中心和平台管理角色入口,仅对对应用户显示&#10;- 用户页面菜单新增开发者中心和平台管理入口条件展示&#10;- 约定开发者身份使用sys_user.is_developer布尔字段,不再依赖角色表&#10;- 更新登录态业务,菜单是否显示基于登录接口返回" />
<MESSAGE value="feat(weapp): 新增开发者中心与平台管理入口及功能&#10;&#10;- 小程序端新增开发者中心和平台管理页面模块,完善功能入口&#10;- 新增开发者中心页面(概览、我的应用、API Key和工单)&#10;- 新增平台管理页面(管理首页、应用审核、Git权限审核、域名绑定审核和工单处理)&#10;- 复刻PC端/api/app/*相关API接口,基地址使用WEBSOPY_API_BASE_URL&#10;- 增加公共组件StatCard、EntryGrid、CellRow以支持新页面UI&#10;- 修改首页增加开发者中心和平台管理角色入口,仅对对应用户显示&#10;- 用户页面菜单新增开发者中心和平台管理入口条件展示&#10;- 约定开发者身份使用sys_user.is_developer布尔字段,不再依赖角色表&#10;- 更新登录态业务,菜单是否显示基于登录接口返回的isDeveloper/isAdmin字段&#10;- vip-review审核通过流程调整为只调用setUserDeveloper,后台替换角色为developer并置isDeveloper=1" />
<MESSAGE value="fix(weapp): 修复支付页nutui组件导致内容空白问题&#10;&#10;- 替换支付页中nutui的Button、Cell、Price、Divider组件为Taro原生组件或项目自定义组件&#10;- 修正商品名称、价格类型和支付金额显示,使用flex布局及Text组件自绘内容&#10;- 调整按钮样式,统一为带蓝色背景和圆角的自定义样式&#10;- 移除nutui Price组件中的thousands属性,使用项目自定义Price组件&#10;- 解决微信小程序中nutui组件因div渲染缺失导致UI元素不显示的问题&#10;- 保持支付流程及状态逻辑无改动,仅优化展示兼容性和稳定性" />
<MESSAGE value="feat(user): 补充开发者审核通过时添加店员记录功能&#10;&#10;- 引入 addShopStoreUser 接口用于新增门店店员记录&#10;- 新增 clerkStoreId 和 clerkTenantId 状态,保存当前审核店员的门店和租户信息&#10;- 在审核通过后调用 addShopStoreUser,添加申请人为当前门店店员&#10;- 保证只有当 clerkStoreId 存在时才执行新增操作&#10;- 更新工作记录文档,补充审核通过流程中新添加的店员记录步骤&#10;- 保持原有升级开发者逻辑和接口调用不变" />
<MESSAGE value="feat(user): 补充开发者审核通过时添加店员记录功能&#10;&#10;- 引入 addShopStoreUser 接口用于新增门店店员记录&#10;- 新增 clerkStoreId 和 clerkTenantId 状态,保存当前审核店员的门店和租户信息&#10;- 在审核通过后调用 addShopStoreUser,添加申请人为当前门店店员&#10;- 保证只有当 clerkStoreId 存在时才执行新增操作&#10;- 调整平台管理页 UI,使其与门店中心保持一致风格&#10;- 门店中心及平台管理入口权限调整,仅超级管理员可访问&#10;- 用户菜单中平台管理和门店中心入口现基于 isSuperAdmin 字段控制&#10;- 优化登录及权限校验流程,避免权限不足时页面闪烁显示&#10;- 更新工作记录文档,补充审核通过流程中新添加的店员记录步骤" />
<MESSAGE value="feat(user): 合并并切换“申请开发者”菜单项状态&#10;&#10;- 在用户菜单中根据 isDeveloper 字段切换显示“申请成为开发者”或“进入开发者中心”&#10;- 已通过审核用户直接显示“进入开发者中心”且高亮显示&#10;- 去除冗余的独立“开发者中心”菜单条目,简化菜单结构&#10;- 调整平台管理页和门店中心入口权限为仅超级管理员可访问&#10;- 优化登录与权限校验流程,防止权限不足时页面闪烁或无访问权限空白&#10;- 更新相关文档,完善审核通过后店员记录添加流程" />
<MESSAGE value="fix(auth): 统一超级管理员标识为布尔值true&#10;&#10;- 将所有页面和菜单中超级管理员校验由数字1改为布尔true&#10;- 平台管理、门店中心菜单项仅在isSuperAdmin===true时显示&#10;- 门店中心页面移除店员门槛,改为超级管理员访问限制&#10;- 非超级管理员访问门店中心弹窗提示并返回&#10;- 首页工作台入口及相关访问权限判定切换为布尔判断&#10;- 优化首屏加载状态,避免权限校验闪烁和误判" />
<MESSAGE value="feat(user): 合并切换开发者菜单项状态并更新开发者中心UI&#10;&#10;- 用户菜单中根据 isDeveloper 字段条件展示“申请成为开发者”或“进入开发者中心”&#10;- 已审核通过用户菜单显示“进入开发者中心”,并设置高亮样式&#10;- 去除冗余的独立“开发者中心”菜单条目,简化菜单结构&#10;- 重新设计开发者中心页面UI,统一为门店中心风格&#10;- 顶部展示开发者头像及昵称手机号信息&#10;- 功能卡片展示“我的应用”、“API Key”和“我的工单”,异步加载数量角标&#10;- 底部添加“开发者帮助与支持”入口,替代门店订阅消息卡片&#10;- 未登录或非开发者状态显示相应空态提示及操作按钮&#10;- 优化登录状态与权限校验逻辑,防止页面闪烁和无权限内容显示" />
<MESSAGE value="feat(user): 合并切换开发者菜单并优化首页轮播图显示&#10;&#10;- 用户菜单根据 isDeveloper 字段切换显示申请或进入开发者中心&#10;- 已审核用户菜单高亮显示“进入开发者中心”&#10;- 去除冗余开发者中心菜单条目,简化结构&#10;- 重新设计开发者中心页面UI,统一门店中心风格&#10;- 顶部展示开发者头像及昵称手机号信息&#10;- 功能卡片展示“我的应用”、“API Key”和“我的工单”,异步加载数量角标&#10;- 底部添加“开发者帮助与支持”入口,替代门店订阅消息卡片&#10;- 未登录或非开发者状态显示相应空态及操作按钮&#10;- 首页轮播图为空时不显示容器,功能入口自动上移,优化空状态体验&#10;- 优化登录状态与权限校验逻辑,防止页面闪烁和无权限展示" />
<MESSAGE value="feat(checkout): 优化微信支付和线下付款流程&#10;&#10;- 将默认支付方式调整为微信支付(payType=1),增加支付方式选择项&#10;- 微信支付成功后直接调用微信支付接口并处理支付结果反馈&#10;- 支付取消或失败时显示对应提示信息&#10;- 线下付款(payType=9)保留并显示相应提示,不触发在线支付&#10;- 提交订单时根据支付方式显示不同的按钮文本 (‘提交并支付’ 或 ‘提交订单’)&#10;- 针对微信支付配置缺失的错误,统一显示详细提示,便于定位问题&#10;- 优化支付方式选中时的提示样式与说明,提升用户体验" />
<MESSAGE value="feat(checkout): 优化微信支付和线下付款流程&#10;&#10;- 支付方式新增微信支付(payType=1),并设为默认,保留线下付款(payType=9)&#10;- 微信支付时调用 Taro.requestPayment 发起支付流程,取消或失败给出明确提示&#10;- 支付选项选中状态下微信支付显示绿色提示,线下付款显示橙色提示&#10;- 提交按钮文案区分微信支付(提交并支付)与线下付款(提交订单)&#10;- 后端支付配置缺失时提示“微信支付暂不可用:支付配置缺失”&#10;- 确保编译构建通过,未引入新类型错误" />
<MESSAGE value="feat(official): 实现企业官网分包及内容展示&#10;&#10;- 新增官方分包目录及页面(首页、资讯列表、详情、关于我们、留言、我的)&#10;- 自定义实现底部导航组件 OfficialTabBar,解决微信 tabBar 不支持分包问题&#10;- 统一接口调用走 shop-api 代理,无新增 CMS 域名,减少合法域名负担&#10;- 新增 CMS 站点信息获取接口及留言咨询提交与查询接口&#10;- 设计并完善官网富文本样式,品牌色统一为 #185FA5,并更新 tailwind 配置&#10;- 首页新增企业官网入口卡片,方便用户访问官网内容&#10;- 完成官网分包构建验证,解决 Taro 构建批量删除保护问题&#10;- 规范 CMS 字段使用,适配字段名称及状态含义&#10;- 后续计划对历史页面 NutUI 组件进行空壳化整改,及更新 UI 设计文档" />
<MESSAGE value="refactor(cms): 迁移CMS模块接口到独立cms-api服务&#10;&#10;- 新增cmsRequest工具,基于request封装,默认baseURL为cms-api&#10;- 改用cmsRequest替换所有cms相关请求,确保请求走独立域名&#10;- 配置三环境新增CMS_API_BASE_URL及导出CmsBaseUrl常量&#10;- 解决CMS接口走shop-api时返回404的问题,避免小程序域名白名单冲突&#10;- 统一修改34个cms API模块的261处调用,保持接口行为一致&#10;- 修复部分拼接全URL方式改为相对路径调用cmsRequest&#10;- 更新注释说明并调整相关接口调用代码&#10;- 兼容macOS sed替换问题,采用perl命令完成批量替换" />
<option name="LAST_COMMIT_MESSAGE" value="refactor(cms): 迁移CMS模块接口到独立cms-api服务&#10;&#10;- 新增cmsRequest工具,基于request封装,默认baseURL为cms-api&#10;- 改用cmsRequest替换所有cms相关请求,确保请求走独立域名&#10;- 配置三环境新增CMS_API_BASE_URL及导出CmsBaseUrl常量&#10;- 解决CMS接口走shop-api时返回404的问题,避免小程序域名白名单冲突&#10;- 统一修改34个cms API模块的261处调用,保持接口行为一致&#10;- 修复部分拼接全URL方式改为相对路径调用cmsRequest&#10;- 更新注释说明并调整相关接口调用代码&#10;- 兼容macOS sed替换问题,采用perl命令完成批量替换" />
<option name="NON_MODAL_COMMIT_POSTPONE_SLOW_CHECKS" value="false" />
</component>
</project>