邹方成 00452cba59 feat: 添加用户统计功能及相关API接口
feat(admin): 新增管理后台前端资源文件

feat(api): 实现获取用户统计数据的API接口
- 添加获取用户道具卡数量、优惠券数量和积分余额的接口
- 实现设置默认地址和删除地址的接口

feat(service): 新增用户统计服务方法
- 实现GetUserStats方法查询用户统计数据
- 添加地址管理相关服务方法

fix(core): 修复静态资源路由问题
- 调整静态资源路由配置
- 优化404路由处理逻辑

chore: 更新前端构建配置
- 添加Windows平台构建命令
- 更新README构建说明
2025-11-15 03:08:53 +08:00

2 lines
12 KiB
JavaScript

var e=Object.defineProperty,i=Object.defineProperties,t=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,s=(i,t,a)=>t in i?e(i,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[t]=a,n=(e,i)=>{for(var t in i||(i={}))o.call(i,t)&&s(e,t,i[t]);if(a)for(var t of a(i))r.call(i,t)&&s(e,t,i[t]);return e},l=(e,a)=>i(e,t(a)),p=(e,i,t)=>new Promise((a,o)=>{var r=e=>{try{n(t.next(e))}catch(i){o(i)}},s=e=>{try{n(t.throw(e))}catch(i){o(i)}},n=e=>e.done?a(e.value):Promise.resolve(e.value).then(r,s);n((t=t.apply(e,i)).next())});import{d,a as u,E as c,e as v,f as m,p as _,u as g,z as b,I as j,J as x,y as h,l as w,O as f,a9 as y}from"./index-ip5gDR6L.js";/* empty css *//* empty css *//* empty css */import{P as C,f as O,a as k,b as E,c as P}from"./player-detail-drawer-DpLQch4q.js";/* empty css */import{u as S}from"./useTable-BFClY0KQ.js";import T from"./player-search-BIDg6sAa.js";import{_ as I}from"./add-points-dialog.vue_vue_type_script_setup_true_lang-BG76LgaZ.js";import{_ as A}from"./add-coupon-dialog.vue_vue_type_script_setup_true_lang-IOaUwwXz.js";import D from"./grant-reward-dialog-BVbyrtny.js";import{_ as N}from"./add-item-card-dialog.vue_vue_type_script_setup_true_lang-BbAo8kLg.js";import{i as R}from"./itemCards-C_dE3q5e.js";import{_ as U}from"./index-BVNligJO.js";import{_ as V}from"./index-C4WacTPc.js";import{_ as G}from"./index.vue_vue_type_script_setup_true_lang-CK7Y-5lS.js";import{E as M}from"./index-BY5Lb5w1.js";import{E as W}from"./index-opP5No9I.js";import{E as z}from"./index-BBSYL4g8.js";import{E as F}from"./index-CGPOeeHR.js";import{_ as L}from"./_plugin-vue_export-helper-BCo6x5W8.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-CCGboj8m.js";import"./index-DbRz3Zuu.js";import"./index-fnD_mPvE.js";import"./vnode-6FKeug3R.js";import"./use-form-common-props-BwBs_jod.js";import"./index-D1xXI5gl.js";import"./index-Ca1H-sCf.js";import"./index-D5xppMej.js";import"./index-B1PFnxt8.js";import"./index-CHAf6FpU.js";import"./index-D-iZIej9.js";import"./use-form-item-BDb3ZgPk.js";import"./index-DQ5yxWeA.js";import"./index-D17cYxP7.js";import"./scroll-ChxXkPhM.js";import"./use-dialog-Cj8YneNA.js";import"./useTableColumns-C9X2IKmh.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-CxGOZAw2.js";import"./index-D-10FtUD.js";import"./_initCloneObject-DwsgJamq.js";import"./index-DfrOVkw6.js";import"./index-BMPM6CSe.js";import"./index-C9KXwj2c.js";import"./index-BbcTNOqF.js";import"./debounce-B9s63_mG.js";import"./index-Jz5GfFad.js";/* empty css *//* empty css *//* empty css */import"./index-HtXsSizM.js";import"./index-Br3btmwp.js";import"./token-DWNpOE8r.js";import"./index-BpP4itD-.js";import"./index-D6zsJoyl.js";import"./refs-Cw5r5QN8.js";import"./coupons-DhPZnSZd.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./product-ti2LZz-w.js";import"./el-popover-Do33geGb.js";import"./el-dropdown-item-DEgPCg9g.js";/* empty css */import"./index-KXWZe8V3.js";import"./el-tooltip-l0sNRNKZ.js";import"./isArrayLikeObject-OMLaZ5Za.js";/* empty css */const $={edit:"ri:pencil-line"},Q={edit:"bg-secondary/12 text-secondary"};var X=(e=>(e.VIEW_DETAILS="view_details",e.VIEW_INVITES="view_invites",e.VIEW_ORDERS="view_orders",e.VIEW_POINTS="view_points",e.VIEW_COUPONS="view_coupons",e.ADD_POINTS="add_points",e.ADD_COUPON="add_coupon",e.MANAGE_POINTS="manage_points",e.MANAGE_COUPONS="manage_coupons",e.GRANT_REWARD="grant_reward",e.ASSIGN_ITEM_CARD="assign_item_card",e))(X||{});const Y={view_details:"查看详情",view_invites:"查看邀请",view_orders:"查看订单",view_points:"查看积分",view_coupons:"查看优惠券",add_points:"添加积分",add_coupon:"添加优惠券",manage_points:"管理用户积分",manage_coupons:"管理用户优惠券",grant_reward:"发放奖励",assign_item_card:"分配道具卡"},Z={view_details:"ri:eye-line",view_invites:"ri:user-shared-line",view_orders:"ri:file-list-line",view_points:"ri:coin-line",view_coupons:"ri:coupon-line",add_points:"ri:add-circle-line",add_coupon:"ri:gift-line",manage_points:"ri:coin-line",manage_coupons:"ri:coupon-line",grant_reward:"ri:gift-2-line",assign_item_card:"ri:shopping-bag-3-line"},q={view_details:"查看用户详情",view_invites:"查看邀请记录",view_orders:"查看订单记录",view_points:"查看积分记录",view_coupons:"查看优惠券",add_points:"给用户添加积分",add_coupon:"给用户发放优惠券",manage_points:"管理用户积分",manage_coupons:"管理用户优惠券",grant_reward:"给用户发放奖励商品",assign_item_card:"给用户分配道具卡"};function H(e){let i;switch(e){case"view_details":i={type:"view",text:Y[e],icon:Z[e],iconClass:"bg-blue-100 text-blue-600 hover:bg-blue-200",tooltip:q[e],showText:!1};break;case"view_invites":i={type:"edit",text:Y[e],icon:Z[e],iconClass:"bg-green-100 text-green-600 hover:bg-green-200",tooltip:q[e],showText:!1};break;case"view_orders":i={type:"edit",text:Y[e],icon:Z[e],iconClass:"bg-orange-100 text-orange-600 hover:bg-orange-200",tooltip:q[e],showText:!1};break;case"view_points":i={type:"edit",text:Y[e],icon:Z[e],iconClass:"bg-yellow-100 text-yellow-600 hover:bg-yellow-200",tooltip:q[e],showText:!1};break;case"view_coupons":i={type:"edit",text:Y[e],icon:Z[e],iconClass:"bg-purple-100 text-purple-600 hover:bg-purple-200",tooltip:q[e],showText:!1};break;case"add_points":case"manage_points":i={type:"add",text:Y[e],icon:Z[e],iconClass:"bg-green-100 text-green-600 hover:bg-green-200",tooltip:q[e],showText:!1};break;case"add_coupon":case"manage_coupons":i={type:"add",text:Y[e],icon:Z[e],iconClass:"bg-purple-100 text-purple-600 hover:bg-purple-200",tooltip:q[e],showText:!1};break;case"grant_reward":i={type:"add",text:Y[e],icon:Z[e],iconClass:"bg-orange-100 text-orange-600 hover:bg-orange-200",tooltip:q[e],showText:!1};break;case"assign_item_card":i={type:"add",text:Y[e],icon:Z[e],iconClass:"bg-theme/12 text-theme",tooltip:q[e],showText:!1};break;default:i={type:"edit",text:Y[e]||e,icon:Z[e]||$.edit,iconClass:Q.edit,tooltip:q[e]||e,showText:!1}}return i}const J={class:"player-manage-page art-full-height"},K=L(d(l(n({},{name:"PlayerManage"}),{__name:"index",setup(e){const i=u(!1),t=u(!1),a=u(!1),o=u(!1),r=u(!1),s=u([]),d=u(null),L=u(null),$=u(null),Q=u({nickname:void 0,inviteCode:void 0,startDate:void 0,endDate:void 0}),{columns:Y,columnChecks:Z,data:q,loading:K,pagination:B,searchParams:ee,resetSearchParams:ie,handleSizeChange:te,handleCurrentChange:ae,refreshData:oe,getDataDebounced:re}=S({core:{apiFn:P,apiParams:{page:1,page_size:20},columnsFactory:()=>[{type:"selection",visible:!0},{type:"index",width:60,label:"序号",visible:!0},{prop:"userInfo",label:"用户信息",width:280,visible:!0,formatter:e=>y("div",{class:"user flex-c"},[y(F,{class:"size-9.5 rounded-md",src:e.avatar,fallback:"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"}),y("div",{class:"ml-2"},[y("p",{class:"user-name"},e.nickname),y("p",{class:"text-gray-400 text-xs"},`ID: ${e.id}`)])])},{prop:"invite_code",label:"邀请码",width:120,visible:!0},{prop:"inviter_id",label:"邀请人",width:200,visible:!0,formatter:e=>e.inviter_id?y("div",{class:"text-sm"},[y("p",{},"未知用户"),y("p",{class:"text-gray-400 text-xs"},`ID: ${e.inviter_id}`)]):"无"},{prop:"created_at",label:"注册时间",sortable:!0,width:180,visible:!0},{prop:"operation",label:"操作",width:280,fixed:"right",visible:!0,formatter:e=>y("div",{class:"flex gap-2"},[y(G,l(n({},H(X.MANAGE_POINTS)),{onClick:()=>ce(e)})),y(G,l(n({},H(X.MANAGE_COUPONS)),{onClick:()=>ve(e)})),y(G,l(n({},H(X.GRANT_REWARD)),{onClick:()=>me(e)})),y(G,l(n({},H(X.ASSIGN_ITEM_CARD)),{onClick:()=>_e(e)})),y(G,l(n({},H(X.VIEW_DETAILS)),{onClick:()=>ue(e)}))])}]},transform:{dataTransformer:e=>Array.isArray(e)?e:[]}}),se=e=>{const i=n({},ee),t=e||Q.value;Object.assign(i,t),re(i)},ne=()=>{s.value&&0!==s.value.length?s.value.length>1?f.warning("只能选择一个用户进行操作"):(L.value=s.value[0],i.value=!0):f.warning("请先选择要操作的用户")},le=()=>{s.value&&0!==s.value.length?s.value.length>1?f.warning("只能选择一个用户进行操作"):(L.value=s.value[0],t.value=!0):f.warning("请先选择要操作的用户")},pe=e=>p(this,null,function*(){try{if(!L.value)return void f.error("未选择用户");const t=yield O(L.value.id,e);t&&!0===t.success?(f.success("增加积分成功"),oe(),i.value=!1):f.error("增加积分失败")}catch(t){f.error("增加积分失败")}}),de=e=>p(this,null,function*(){try{if(!L.value)return void f.error("未选择用户");const i=yield k(L.value.id,e);i&&!0===i.success?(f.success("发放优惠券成功"),oe(),t.value=!1):f.error("发放优惠券失败")}catch(i){f.error("发放优惠券失败")}}),ue=e=>{d.value=e.id,$.value=e,r.value=!0},ce=e=>{L.value=e,i.value=!0},ve=e=>{L.value=e,t.value=!0},me=e=>{L.value=e,a.value=!0},_e=e=>{L.value=e,o.value=!0},ge=()=>{s.value&&0!==s.value.length?s.value.length>1?f.warning("只能选择一个用户进行操作"):(L.value=s.value[0],a.value=!0):f.warning("请先选择要操作的用户")},be=e=>p(this,null,function*(){try{if(!L.value)return void f.error("未选择用户");0===(yield E(L.value.id,e)).code&&(f.success("发放奖励成功"),oe(),a.value=!1)}catch(i){f.error("发放奖励失败")}}),je=e=>p(this,null,function*(){try{if(!L.value)return void f.error("未选择用户");const i=yield R.assignToUser(L.value.id,e);!!(null==i?void 0:i.message)||!0===(null==i?void 0:i.success)||0===(null==i?void 0:i.code)?(f.success("分配道具卡成功"),oe(),o.value=!1):f.error("分配道具卡失败")}catch(i){f.error("分配道具卡失败")}}),xe=e=>{s.value=e},he=()=>{d.value=null,$.value=null};return(e,n)=>{const l=c("ripple");return m(),v("div",J,[_(T,{modelValue:Q.value,"onUpdate:modelValue":n[0]||(n[0]=e=>Q.value=e),onSearch:se,onReset:g(ie)},null,8,["modelValue","onReset"]),_(g(z),{class:"art-table-card",shadow:"never"},{default:b(()=>{var e;return[_(U,{columns:g(Z),"onUpdate:columns":n[1]||(n[1]=e=>j(Z)?Z.value=e:null),loading:g(K),onRefresh:g(oe)},{left:b(()=>[_(g(M),{wrap:""},{default:b(()=>[x((m(),h(g(W),{onClick:ne,disabled:!s.value.length},{default:b(()=>[...n[7]||(n[7]=[w(" 批量增加积分 ",-1)])]),_:1},8,["disabled"])),[[l]]),x((m(),h(g(W),{onClick:le,disabled:!s.value.length},{default:b(()=>[...n[8]||(n[8]=[w(" 批量发放优惠券 ",-1)])]),_:1},8,["disabled"])),[[l]]),x((m(),h(g(W),{onClick:ge,disabled:!s.value.length,type:"warning"},{default:b(()=>[...n[9]||(n[9]=[w(" 批量发放奖励 ",-1)])]),_:1},8,["disabled"])),[[l]])]),_:1})]),_:1},8,["columns","loading","onRefresh"]),_(V,{loading:g(K),data:g(q),columns:g(Y),pagination:g(B),onSelectionChange:xe,"onPagination:sizeChange":g(te),"onPagination:currentChange":g(ae)},null,8,["loading","data","columns","pagination","onPagination:sizeChange","onPagination:currentChange"]),_(I,{visible:i.value,"onUpdate:visible":n[2]||(n[2]=e=>i.value=e),onSubmit:pe},null,8,["visible"]),_(A,{visible:t.value,"onUpdate:visible":n[3]||(n[3]=e=>t.value=e),onSubmit:de},null,8,["visible"]),_(D,{visible:a.value,"onUpdate:visible":n[4]||(n[4]=e=>a.value=e),"player-id":(null==(e=L.value)?void 0:e.id)||null,onSubmit:be},null,8,["visible","player-id"]),_(N,{visible:o.value,"onUpdate:visible":n[5]||(n[5]=e=>o.value=e),onSubmit:je},null,8,["visible"]),_(C,{visible:r.value,"onUpdate:visible":n[6]||(n[6]=e=>r.value=e),"player-id":d.value,"player-data":$.value,onClosed:he},null,8,["visible","player-id","player-data"])]}),_:1})])}}})),[["__scopeId","data-v-36a5585b"]]);export{K as default};