feat(fsgx): 完成全部24项开发任务 Phase1-7

Phase1 后端核心:
- 新增 fsgx_v1.sql 迁移脚本(is_queue_goods/frozen_points/available_points/no_assess)
- SystemConfigServices 返佣设置扩展(周期人数/分档比例/范围/时机)
- StoreOrderCreateServices 周期循环佣金计算
- StoreOrderTakeServices 佣金发放后同步冻结积分
- StoreProductServices/StoreProduct 保存 is_queue_goods

Phase2 后端接口:
- GET /api/hjf/brokerage/progress 佣金周期进度
- GET /api/hjf/assets/overview 资产总览
- HjfPointsServices 每日 frozen_points 0.4‰ 释放定时任务
- PUT /adminapi/hjf/member/{uid}/no_assess 不考核接口
- GET /adminapi/hjf/points/release_log 积分日志接口

Phase3 前端清理:
- hjfCustom.js 路由精简(仅保留 points/log)
- hjfQueue.js/hjfMember.js API 清理/重定向至 CRMEB 原生接口
- pages.json 公排→推荐佣金/佣金记录/佣金规则

Phase4-5 前端改造:
- queue/status.vue 推荐佣金进度页整体重写
- 商品详情/订单确认/支付结果页文案与逻辑改造
- 个人中心/资产页/引导页/规则页文案改造
- HjfQueueProgress/HjfRefundNotice/HjfAssetCard 组件改造
- 推广中心嵌入佣金进度摘要
- hjfMockData.js 全量更新(公排字段→佣金字段)

Phase6 Admin 增强:
- 用户列表新增 frozen_points/available_points 列及不考核操作按钮
- hjfPoints.js USE_MOCK=false 对接真实积分日志接口

Phase7 配置文档:
- docs/fsgx-phase7-config-checklist.md 后台配置与全链路验收清单

Made-with: Cursor
This commit is contained in:
apple
2026-03-23 22:32:19 +08:00
parent 788ee0c0c0
commit 434aa8c69d
13098 changed files with 2008990 additions and 961 deletions

View File

@@ -0,0 +1,10 @@
(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["components/addressWindow/index"],{"5ee8":function(t,e,n){"use strict";n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){}));var i=function(){var t=this.$createElement,e=(this._self._c,0==this.shippingType?!this.is_loading&&!this.addressList.length:null);this.$mp.data=Object.assign({},{$root:{g0:e}})},s=[]},6992:function(t,e,n){"use strict";n.r(e);var i=n("d319"),s=n.n(i);for(var a in i)["default"].indexOf(a)<0&&function(t){n.d(e,t,(function(){return i[t]}))}(a);e["default"]=s.a},d319:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n("92f9"),s=n("4d38"),a={props:{fromType:{type:Number,default:0},pagesUrl:{type:String,default:""},address:{type:Object,default:function(){return{address:!0,addressId:0}}},isLog:{type:Boolean,default:!1},storeList:{type:Array,default:function(){return[]}},shippingType:{type:String|Number,default:0}},components:{baseDrawer:function(){n.e("components/tui-drawer/tui-drawer").then(function(){return resolve(n("af01"))}.bind(null,n)).catch(n.oe)},emptyPage:function(){n.e("components/emptyPage").then(function(){return resolve(n("398a"))}.bind(null,n)).catch(n.oe)}},data:function(){return{active:0,addressList:[],is_loading:!0,imgHost:s.HTTP_REQUEST_URL}},watch:{shippingType:function(t){this.active=0}},methods:{tapAddress:function(t,e,n){this.active=t,this.$emit("OnChangeAddress",e,n)},close:function(){this.$emit("changeClose"),this.$emit("changeTextareaStatus")},goAddressPages:function(){this.$emit("changeClose"),this.$emit("changeTextareaStatus"),t.navigateTo({url:this.pagesUrl})},tapStore:function(t,e){this.active=t,this.$emit("OnChangeAddress",e.id,e)},getAddressList:function(){var t=this;(0,i.getAddressList)({page:1,limit:5}).then((function(e){for(var n=e.data,i=0,s=n.length;i<s;i++)n[i].id==t.address.addressId&&(t.active=i);t.$set(t,"addressList",n),t.is_loading=!1}))}}};e.default=a}).call(this,n("df3c")["default"])},e5fa:function(t,e,n){"use strict";n.r(e);var i=n("5ee8"),s=n("6992");for(var a in s)["default"].indexOf(a)<0&&function(t){n.d(e,t,(function(){return s[t]}))}(a);var r=n("828b"),d=Object(r["a"])(s["default"],i["b"],i["c"],!1,null,null,null,!1,i["a"],void 0);e["default"]=d.exports}}]);
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'components/addressWindow/index-create-component',
{
'components/addressWindow/index-create-component':(function(module, exports, __webpack_require__){
__webpack_require__('df3c')['createComponent'](__webpack_require__("e5fa"))
})
},
[['components/addressWindow/index-create-component']]
]);

View File

@@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"base-drawer": "/components/tui-drawer/tui-drawer",
"empty-page": "/components/emptyPage"
}
}

View File

@@ -0,0 +1 @@
<view><base-drawer vue-id="d1b78a2c-1" mode="bottom" visible="{{address.address}}" background-color="transparent" mask="{{true}}" maskClosable="{{true}}" data-event-opts="{{[['^close',[['close']]]]}}" bind:close="__e" bind:__l="__l" vue-slots="{{['default']}}"><block wx:if="{{shippingType==0}}"><view class="w-full bg--w111-fff rd-t-40rpx py-32"><view class="text-center fs-32 text--w111-333 fw-500">选择地址</view><scroll-view class="mt-64 px-32" style="max-height:600rpx;" scroll-y="true"><block wx:for="{{addressList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['tapAddress',[index,'$0','$1'],[[['addressList','',index,'id']],[['addressList','',index]]]]]]]}}" class="{{['mb-38','flex-between-center',(active==index)?'font-num':'']}}" bindtap="__e"><text class="iconfont icon-ic_location5 fs-36"></text><view class="flex-1 pl-40"><view class="fs-28 fw-500">{{item.real_name}}<text class="phone pl-10">{{item.phone}}</text></view><view class="w-560 line1 mt-4">{{item.province+item.city+item.district+item.street+item.detail}}</view></view></view></block><block wx:if="{{$root.g0}}"><view><empty-page vue-id="{{('d1b78a2c-2')+','+('d1b78a2c-1')}}" title="暂无地址信息~" src="/statics/images/noAddress.png" bind:__l="__l"></empty-page></view></block></scroll-view><view class="mx-20 pb-safe"><view data-event-opts="{{[['tap',[['goAddressPages',['$event']]]]]}}" class="mt-52 h-72 flex-center rd-36px bg-color fs-26 text--w111-fff" bindtap="__e">选择其它地址</view></view></view></block><block wx:else><view class="w-full bg--w111-fff rd-t-40rpx py-32"><view class="text-center fs-32 text--w111-333 fw-500">选择自提点</view><scroll-view class="mt-64 px-32" style="max-height:600rpx;" scroll-y="true"><block wx:for="{{storeList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['tapStore',[index,'$0'],[[['storeList','',index]]]]]]]}}" class="{{['mb-38','flex-between-center',(active==index)?'font-num':'']}}" bindtap="__e"><text class="iconfont icon-ic_location5 fs-36"></text><view class="flex-1 pl-40"><view class="fs-28 fw-500">{{item.name}}<text class="phone pl-10">{{item.phone}}</text></view><view class="w-560 line1 mt-4">{{item.address}}</view></view></view></block></scroll-view></view></block></base-drawer></view>