var e=Object.defineProperty,t=Object.defineProperties,i=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,r=(t,i,a)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[i]=a,n=(e,t,i)=>new Promise((a,s)=>{var l=e=>{try{n(i.next(e))}catch(t){s(t)}},r=e=>{try{n(i.throw(e))}catch(t){s(t)}},n=e=>e.done?a(e.value):Promise.resolve(e.value).then(l,r);n((i=i.apply(e,t)).next())});import{d as o,c as d,r as u,aZ as c,y as v,a as _,o as f,b as m,w as p,j as g,m as y,H as h,I as w,G as x,q as b,p as j,J as k,P as I,N as C,ai as S,i as R,bb as $,T as P}from"./index-BeZn6wgH.js";/* empty css *//* empty css */import{E as V}from"./el-pagination-BybCuExY.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{E as z,a as A}from"./el-table-column-Us9hXTbB.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import{E,a as O}from"./el-step-ClVIWYlV.js";import{p as D,q as U,r as H,v as L,l as T}from"./adminActivities-Dndna7OD.js";import{a as N,E as M}from"./index-Dn4yxdMr.js";import{E as B,a as J}from"./index-B43cMk6T.js";import{E as K}from"./index-rM5MDBEe.js";import{E as W}from"./index-DJP4F2zx.js";import{E as q}from"./index-D6O1cfnb.js";import{E as F}from"./index-DfDWpFb3.js";import"./index-s8Fl0Qzt.js";import"./index-CnhjG_Ys.js";import"./index-A3hG-0VQ.js";import"./index-DC47MImW.js";import"./_initCloneObject-BHiCRTfC.js";import"./isArrayLikeObject-D4Ef3RBY.js";import"./raf-CY4TyS52.js";import"./_baseIteratee-sVeOpCU9.js";import"./castArray-BakW2F2h.js";import"./debounce-C7sIggI-.js";import"./index-BtwYQklV.js";import"./index-DZdoPtEQ.js";import"./index-OBVz4428.js";import"./token-DWNpOE8r.js";import"./use-dialog-D_t6_hoT.js";import"./refs-Cw5r5QN8.js";const G={class:"mt-4"},Q={key:0},X={key:1},Y={class:"mb-4"},Z={class:"mb-4"},ee={class:"ml-4"},te={class:"mt-4"},ie={key:2},ae={class:"mb-4"},se={key:0,class:"mt-2 text-gray-500"},le={key:3},re={key:0,class:"mb-4 p-4 bg-gray-50 rounded-lg"},ne={class:"text-center"},oe={class:"text-2xl font-bold text-green-600"},de={class:"text-center"},ue={class:"text-2xl font-bold text-red-600"},ce={class:"text-center"},ve={class:"text-2xl font-bold text-blue-600"},_e={class:"text-center"},fe={class:"text-2xl font-bold text-gray-600"},me={class:"mb-4"},pe={key:1,class:"text-gray-500"},ge={key:0,class:"text-xs"},ye={key:1,class:"mt-1 text-gray-600"},he={key:1,class:"text-gray-500"},we=o({__name:"batch-draw-dialog",props:{activity:{}},emits:["update:modelValue"],setup(e,{emit:o}){function we(e){if(!e)return"";if("string"==typeof e){if(/^[0-9a-fA-F]+$/.test(e))return e;try{let t=e.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";const i=atob(t);return Array.from(i).map(e=>e.charCodeAt(0).toString(16).padStart(2,"0")).join("")}catch(t){return""}}if(!(Array.isArray(e)||e instanceof Uint8Array))return"";try{return Array.from(e).map(e=>{const t=e.toString(16);return 1===t.length?"0"+t:t}).join("")}catch(t){return""}}const xe=e,be=o,je=d({get:()=>null!==xe.activity,set:e=>be("update:modelValue",e)}),ke=u(0),Ie=u({issueId:null}),Ce=u([]),Se=u(!1),Re=u([]),$e=u([]),Pe=u({nickname:"",inviteCode:""}),Ve=u(1),ze=u(20),Ae=u(0),Ee=u(),Oe=u([]),De=d(()=>{const e={passed:0,failed:0,pending:0,total:Oe.value.length};return Oe.value.forEach(t=>{"passed"===t.verification_status?e.passed++:"failed"===t.verification_status?e.failed++:e.pending++}),e}),{width:Ue}=c(),He=d(()=>`${Math.min(900,Math.max(600,Ue.value-120))}px`);function Le(){return n(this,null,function*(){try{const e=yield D({page:Ve.value,page_size:ze.value,nickname:Pe.value.nickname||void 0,inviteCode:Pe.value.inviteCode||void 0});Re.value=e.list,Ae.value=e.total}catch(e){P.error("加载用户列表失败")}})}function Te(e){$e.value=e}function Ne(e){Ve.value=e,Le()}function Me(e){ze.value=e,Ve.value=1,Le()}function Be(){var e;null==(e=Ee.value)||e.clearSelection(),$e.value=[]}function Je(){return n(this,null,function*(){if(!$e.value.length)return void P.warning("请先选择用户");if(!Ie.value.issueId)return void P.warning("请先选择期数");if(!xe.activity)return;const e=$e.value.map(e=>e.id),n=yield U(xe.activity.id,Ie.value.issueId,{user_ids:e});Oe.value=n.draws.map(e=>{return n=((e,t)=>{for(var i in t||(t={}))s.call(t,i)&&r(e,i,t[i]);if(a)for(var i of a(t))l.call(t,i)&&r(e,i,t[i]);return e})({},e),t(n,i({verifying:!1,verification_status:void 0,verification_message:void 0,verification_details:void 0}));var n}),ke.value=3})}function Ke(e){var t,i;try{const a=e.receipt;if(!a)return!1;const s=null!=(t=a.SelectedIndex)?t:a.selected_index,l=null!=(i=a.Items)?i:a.items;if(Array.isArray(l)&&void 0!==s&&l[s]&&l[s].Name){const e=l[s].Name;return"string"==typeof e&&e.includes("(x2)")}return!1}catch(a){return!1}}function We(){return n(this,null,function*(){if(!Ie.value.issueId)return void P.warning("请先选择期数");if(!xe.activity)return;let e=0,t=0,i=0;for(const s of Oe.value){const l=s.receipt;if(!l){s.verification_status="failed",s.verification_message="缺少抽奖收据",s.verification_details="没有可用的验证数据",t++;continue}s.verifying=!0,s.verification_status=void 0,s.verification_message="验证中...",s.verification_details=void 0;let r,n,o,d;!(!l.algo_version&&!l.round_id)?(r=l.client_seed||l.ClientSeed,n=l.server_seed_hash||l.ServerSeedHash,o=l.items_root||l.ItemsRoot,d=l.rand_proof||l.RandProof):(r=we(l.ClientSeed||l.client_seed||l.clientSeed),n=we(l.ServerSeedHash||l.server_seed_hash||l.serverSeedHash),o=we(l.ItemsRoot||l.items_root||l.itemsRoot),d=we(l.RandProof||l.rand_proof||l.randProof));const u={algo_version:l.AlgoVersion||l.algo_version,issue_id:l.RoundId||l.round_id||l.issue_id,draw_id:l.DrawId||l.draw_id,client_seed:r,server_seed_hash:n,items_root:o,weights_total:l.WeightsTotal||l.weights_total||l.weightsTotal,selected_index:void 0!==l.SelectedIndex?l.SelectedIndex:l.selected_index||l.selectedIndex,rand_proof:d},c=["algo_version","issue_id","draw_id","client_seed","server_seed_hash","items_root","rand_proof"].filter(e=>!u[e]);if(c.length>0)s.verification_status="failed",s.verification_message=`缺少必填字段: ${c.join(", ")}`,s.verification_details="请检查收据数据完整性",s.verifying=!1,t++;else try{const a=yield L(xe.activity.id,Ie.value.issueId,u);if(a.valid)s.verification_status="passed",s.verification_message="验证通过",s.verification_details="抽奖结果验证成功",e++;else{s.verification_status="failed",s.verification_message=a.message||"验证失败";let e="";a.server_seed_hash_expected&&(e+="服务器种子哈希不匹配; "),a.items_root_expected&&(e+="项目根哈希不匹配; "),a.message&&a.message.includes("rand_proof")&&(e+="随机证明验证失败; "),s.verification_details=e||"请检查抽奖数据完整性",t++}i++}catch(a){s.verification_status="failed",s.verification_message="验证请求失败",s.verification_details="网络连接错误或服务器异常",t++}finally{s.verifying=!1}}0===i?P.error("没有可验证的抽奖记录"):P.info(`验证完成:通过 ${e},失败 ${t},总计处理 ${i}`)})}function qe(){const e=Oe.value.map(e=>({user_id:e.user_id,draw_id:e.draw_id,reward_id:e.reward_id,reward_name:e.reward_name,is_winner:e.is_winner,verification_status:"passed"===e.verification_status?"通过":"failed"===e.verification_status?"失败":"未验证",verification_message:e.verification_message||"",verification_details:e.verification_details||""})),t=["用户ID,抽奖ID,奖励ID,奖励名称,中奖状态,验证状态,验证信息,详细信息"].concat(e.map(e=>`${e.user_id},${e.draw_id},${e.reward_id},"${e.reward_name}",${e.is_winner?"是":"否"},${e.verification_status},"${e.verification_message}","${e.verification_details}"`)).join("\n"),i=new Blob([t],{type:"text/csv;charset=utf-8"}),a=URL.createObjectURL(i),s=document.createElement("a");s.href=a,s.download=`batch_draw_${Date.now()}.csv`,s.click(),URL.revokeObjectURL(a)}return v(()=>xe.activity,e=>{e&&(ke.value=0,Re.value=[],$e.value=[],Oe.value=[],Ie.value.issueId=null,Pe.value={nickname:"",inviteCode:""},Ve.value=1,ze.value=20,Ae.value=0,function(){n(this,null,function*(){if(xe.activity){Se.value=!0;try{const e=yield T(xe.activity.id,1,50);Ce.value=e.list;const t=Ce.value.find(e=>1===e.status);t&&(Ie.value.issueId=t.id)}finally{Se.value=!1}}})}())},{immediate:!0}),(e,t)=>{var i;const a=O,s=E,l=K,r=J,o=B,d=M,u=N,c=S,v=C,D=k,U=q,T=W,be=A,Ue=z,Fe=V,Ge=F;return f(),_("div",null,[m(Ge,{modelValue:je.value,"onUpdate:modelValue":t[11]||(t[11]=e=>je.value=e),title:`批量抽奖 - ${(null==(i=xe.activity)?void 0:i.name)||""}`,width:He.value},{footer:p(()=>[m(v,{onClick:t[5]||(t[5]=e=>je.value=!1)},{default:p(()=>[...t[23]||(t[23]=[j("关闭",-1)])]),_:1}),0===ke.value&&Ie.value.issueId?(f(),x(v,{key:0,type:"primary",onClick:t[6]||(t[6]=e=>ke.value=1)},{default:p(()=>[...t[24]||(t[24]=[j("下一步",-1)])]),_:1})):y("",!0),1===ke.value?(f(),x(v,{key:1,onClick:t[7]||(t[7]=e=>ke.value=0)},{default:p(()=>[...t[25]||(t[25]=[j("上一步",-1)])]),_:1})):y("",!0),1===ke.value&&$e.value.length>0?(f(),x(v,{key:2,type:"primary",onClick:t[8]||(t[8]=e=>ke.value=2)},{default:p(()=>[...t[26]||(t[26]=[j("下一步",-1)])]),_:1})):y("",!0),2===ke.value?(f(),x(v,{key:3,onClick:t[9]||(t[9]=e=>ke.value=1)},{default:p(()=>[...t[27]||(t[27]=[j("上一步",-1)])]),_:1})):y("",!0),3===ke.value?(f(),x(v,{key:4,onClick:t[10]||(t[10]=e=>ke.value=2)},{default:p(()=>[...t[28]||(t[28]=[j("上一步",-1)])]),_:1})):y("",!0)]),default:p(()=>[m(s,{active:ke.value,"finish-status":"success"},{default:p(()=>[m(a,{title:"选择期数"}),m(a,{title:"选择用户"}),m(a,{title:"批量抽奖"}),m(a,{title:"验证结果"})]),_:1},8,["active"]),g("div",G,[0===ke.value?(f(),_("div",Q,[m(u,{model:Ie.value,"label-width":"100px"},{default:p(()=>[m(d,{label:"选择期数"},{default:p(()=>[m(o,{modelValue:Ie.value.issueId,"onUpdate:modelValue":t[0]||(t[0]=e=>Ie.value.issueId=e),placeholder:"请选择期数",loading:Se.value},{default:p(()=>[(f(!0),_(h,null,w(Ce.value,e=>(f(),x(r,{key:e.id,value:e.id,label:`期号: ${e.issue_number}`},{default:p(()=>[g("span",null,b(e.issue_number),1),m(l,{type:1===e.status?"success":"info",size:"small",class:"ml-2"},{default:p(()=>[j(b(1===e.status?"进行中":"已结束"),1)]),_:2},1032,["type"])]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue","loading"])]),_:1})]),_:1},8,["model"])])):y("",!0),1===ke.value?(f(),_("div",X,[g("div",Y,[m(T,{gutter:20},{default:p(()=>[m(U,{span:12},{default:p(()=>[m(D,{modelValue:Pe.value.nickname,"onUpdate:modelValue":t[1]||(t[1]=e=>Pe.value.nickname=e),placeholder:"搜索用户昵称",clearable:"",onClear:Le,onKeyup:I(Le,["enter"])},{append:p(()=>[m(v,{onClick:Le},{default:p(()=>[m(c,null,{default:p(()=>[m(R($))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),m(U,{span:12},{default:p(()=>[m(D,{modelValue:Pe.value.inviteCode,"onUpdate:modelValue":t[2]||(t[2]=e=>Pe.value.inviteCode=e),placeholder:"搜索邀请码",clearable:"",onClear:Le,onKeyup:I(Le,["enter"])},{append:p(()=>[m(v,{onClick:Le},{default:p(()=>[m(c,null,{default:p(()=>[m(R($))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),g("div",Z,[m(v,{onClick:Le},{default:p(()=>[...t[12]||(t[12]=[j("刷新用户列表",-1)])]),_:1}),m(v,{onClick:Be},{default:p(()=>[...t[13]||(t[13]=[j("清空选择",-1)])]),_:1}),g("span",ee,"已选择 "+b($e.value.length)+" 位用户",1)]),m(Ue,{data:Re.value,size:"small","max-height":"400",onSelectionChange:Te,ref_key:"userTableRef",ref:Ee},{default:p(()=>[m(be,{type:"selection",width:"55"}),m(be,{prop:"id",label:"ID",width:"80"}),m(be,{prop:"nickname",label:"昵称"}),m(be,{prop:"invite_code",label:"邀请码",width:"120"}),m(be,{prop:"created_at",label:"注册时间",width:"180"},{default:p(({row:e})=>{return[j(b((t=e.created_at,new Date(t).toLocaleString("zh-CN"))),1)];var t}),_:1})]),_:1},8,["data"]),g("div",te,[m(Fe,{"current-page":Ve.value,"onUpdate:currentPage":t[3]||(t[3]=e=>Ve.value=e),"page-size":ze.value,"onUpdate:pageSize":t[4]||(t[4]=e=>ze.value=e),total:Ae.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onSizeChange:Me,onCurrentChange:Ne},null,8,["current-page","page-size","total"])])])):y("",!0),2===ke.value?(f(),_("div",ie,[g("div",ae,[g("span",null,"已选择 "+b($e.value.length)+" 位用户进行抽奖",1),m(v,{type:"primary",onClick:Je,class:"ml-4"},{default:p(()=>[...t[14]||(t[14]=[j("开始批量抽奖",-1)])]),_:1})]),m(Ue,{data:$e.value.slice(0,20),size:"small","max-height":"300"},{default:p(()=>[m(be,{prop:"id",label:"用户ID",width:"80"}),m(be,{prop:"nickname",label:"昵称"}),m(be,{prop:"invite_code",label:"邀请码",width:"120"})]),_:1},8,["data"]),$e.value.length>20?(f(),_("div",se," 显示前20位用户,共"+b($e.value.length)+"位 ",1)):y("",!0)])):y("",!0),3===ke.value?(f(),_("div",le,[De.value.total>0?(f(),_("div",re,[t[19]||(t[19]=g("div",{class:"text-lg font-semibold mb-2"},"验证统计",-1)),m(T,{gutter:20},{default:p(()=>[m(U,{span:6},{default:p(()=>[g("div",ne,[g("div",oe,b(De.value.passed),1),t[15]||(t[15]=g("div",{class:"text-sm text-gray-600"},"验证通过",-1))])]),_:1}),m(U,{span:6},{default:p(()=>[g("div",de,[g("div",ue,b(De.value.failed),1),t[16]||(t[16]=g("div",{class:"text-sm text-gray-600"},"验证失败",-1))])]),_:1}),m(U,{span:6},{default:p(()=>[g("div",ce,[g("div",ve,b(De.value.pending),1),t[17]||(t[17]=g("div",{class:"text-sm text-gray-600"},"待验证",-1))])]),_:1}),m(U,{span:6},{default:p(()=>[g("div",_e,[g("div",fe,b(De.value.total),1),t[18]||(t[18]=g("div",{class:"text-sm text-gray-600"},"总计",-1))])]),_:1})]),_:1})])):y("",!0),g("div",me,[g("span",null,"抽奖结果("+b(Oe.value.length)+" 条)",1),m(v,{type:"primary",onClick:We,class:"ml-4"},{default:p(()=>[...t[20]||(t[20]=[j("批量验证",-1)])]),_:1}),m(v,{onClick:qe,class:"ml-2"},{default:p(()=>[...t[21]||(t[21]=[j("导出结果",-1)])]),_:1})]),m(Ue,{data:Oe.value,size:"small","max-height":"400"},{default:p(()=>[m(be,{prop:"user_id",label:"用户ID",width:"80"}),m(be,{label:"奖励"},{default:p(({row:e})=>[g("span",null,b(e.reward_name),1),Ke(e)?(f(),x(l,{key:0,type:"warning",size:"small",class:"ml-2"},{default:p(()=>[...t[22]||(t[22]=[j("翻倍",-1)])]),_:1})):y("",!0)]),_:1}),m(be,{prop:"is_winner",label:"中奖",width:"80"},{default:p(({row:e})=>[m(l,{type:e.is_winner?"success":"info"},{default:p(()=>[j(b(e.is_winner?"是":"否"),1)]),_:2},1032,["type"])]),_:1}),m(be,{label:"验证状态",width:"120"},{default:p(({row:e})=>[e.verification_status?(f(),x(l,{key:0,type:"passed"===e.verification_status?"success":"danger"},{default:p(()=>[j(b("passed"===e.verification_status?"验证通过":"验证失败"),1)]),_:2},1032,["type"])):(f(),_("span",pe,"未验证"))]),_:1}),m(be,{label:"验证信息","min-width":"200"},{default:p(({row:e})=>[e.verification_message?(f(),_("div",ge,["failed"===e.verification_status?(f(),x(l,{key:0,type:"danger",size:"small"},{default:p(()=>[j(b(e.verification_message),1)]),_:2},1024)):y("",!0),e.verification_details?(f(),_("div",ye,b(e.verification_details),1)):y("",!0)])):(f(),_("span",he,"-"))]),_:1}),m(be,{label:"操作",width:"100"},{default:p(({row:e})=>[m(v,{size:"small",onClick:t=>function(e){return n(this,null,function*(){if(Ie.value.issueId){if(xe.activity){e.verifying=!0,e.verification_status=void 0,e.verification_message=void 0,e.verification_details=void 0;try{let i,a,s,l,r;if(e.draw_id)try{const t=yield H(e.draw_id);i={AlgoVersion:t.algo_version,RoundId:t.round_id,DrawId:t.draw_id,ClientSeed:t.client_seed,ServerSeedHash:t.server_seed_hash,ItemsRoot:t.items_root,WeightsTotal:t.weights_total,SelectedIndex:t.selected_index,RandProof:t.rand_proof}}catch(t){}if(!i&&e.receipt&&(i=e.receipt),!i)return P.error("没有可用的抽奖收据"),void(e.verifying=!1);i.algo_version||i.round_id?(a=i.client_seed||i.ClientSeed,s=i.server_seed_hash||i.ServerSeedHash,l=i.items_root||i.ItemsRoot,r=i.rand_proof||i.RandProof):(a=we(i.ClientSeed||i.client_seed||i.clientSeed),s=we(i.ServerSeedHash||i.server_seed_hash||i.serverSeedHash),l=we(i.ItemsRoot||i.items_root||i.itemsRoot),r=we(i.RandProof||i.rand_proof||i.randProof));const n={algo_version:i.AlgoVersion||i.algo_version,issue_id:i.RoundId||i.round_id||i.issue_id,draw_id:i.DrawId||i.draw_id,client_seed:a,server_seed_hash:s,items_root:l,weights_total:i.WeightsTotal||i.weights_total||i.weightsTotal,selected_index:void 0!==i.SelectedIndex?i.SelectedIndex:i.selected_index||i.selectedIndex,rand_proof:r},o=["algo_version","issue_id","draw_id","client_seed","server_seed_hash","items_root","rand_proof"].filter(e=>!n[e]);if(o.length>0)return e.verification_status="failed",e.verification_message=`缺少必填字段: ${o.join(", ")}`,e.verification_details="请检查收据数据完整性",P.error(`验证失败:缺少必填字段 - ${o.join(", ")}`),void(e.verifying=!1);const d=yield L(xe.activity.id,Ie.value.issueId,n);if(d.valid)e.verification_status="passed",e.verification_message="验证通过",e.verification_details="抽奖结果验证成功",P.success("验证通过");else{e.verification_status="failed",e.verification_message=d.message||"验证失败";let t="";d.server_seed_hash_expected&&(t+="服务器种子哈希不匹配; "),d.items_root_expected&&(t+="项目根哈希不匹配; "),d.message&&d.message.includes("rand_proof")&&(t+="随机证明验证失败; "),e.verification_details=t||"请检查抽奖数据完整性",P.error("验证失败:"+d.message)}}catch(i){e.verification_status="failed",e.verification_message="验证请求失败",e.verification_details="网络连接错误或服务器异常",P.error("验证请求失败,请检查网络连接")}finally{e.verifying=!1}}}else P.warning("请先选择期数")})}(e),loading:e.verifying},{default:p(()=>[j(b(e.verifying?"验证中":"验证"),1)]),_:2},1032,["onClick","loading"])]),_:1})]),_:1},8,["data"])])):y("",!0)])]),_:1},8,["modelValue","title","width"])])}}});export{we as default};