From 9464e32a0a7d3d052def1e57217f5fa04ee9afed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=89=E7=A7=8B?= <497055328@qq.com> Date: Mon, 6 Jul 2026 16:32:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=95=B0=E6=8D=AE=20Tab=20?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E5=A4=8D=E6=B1=87=E6=80=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suixinkan/App/NetworkServices.swift | 3 + .../Contents.json | 8 + .../icon_data_statistics_average_amount.png | Bin 0 -> 12912 bytes ...icon_data_statistics_average_amount@2x.png | Bin 0 -> 12912 bytes ...icon_data_statistics_average_amount@3x.png | Bin 0 -> 12912 bytes .../Contents.json | 8 + .../icon_data_statistics_get_amount.png | Bin 0 -> 17270 bytes .../icon_data_statistics_get_amount@2x.png | Bin 0 -> 17270 bytes .../icon_data_statistics_get_amount@3x.png | Bin 0 -> 17270 bytes .../Contents.json | 8 + .../icon_data_statistics_refund_amount.png | Bin 0 -> 13203 bytes .../icon_data_statistics_refund_amount@2x.png | Bin 0 -> 13203 bytes .../icon_data_statistics_refund_amount@3x.png | Bin 0 -> 13203 bytes .../Contents.json | 8 + .../icon_data_statistics_total_amount.png | Bin 0 -> 18667 bytes .../icon_data_statistics_total_amount@2x.png | Bin 0 -> 18667 bytes .../icon_data_statistics_total_amount@3x.png | Bin 0 -> 18667 bytes .../Contents.json | 8 + .../icon_data_statistics_total_order.png | Bin 0 -> 16033 bytes .../icon_data_statistics_total_order@2x.png | Bin 0 -> 16033 bytes .../icon_data_statistics_total_order@3x.png | Bin 0 -> 16033 bytes .../Statistics/API/StatisticsAPI.swift | 141 ++++++++ .../Statistics/Models/StatisticsModels.swift | 134 ++++++++ .../ViewModels/StatisticsViewModel.swift | 290 +++++++++++++++++ .../UI/Statistics/StatisticsDailyCell.swift | 108 +++++++ .../Statistics/StatisticsDailyListView.swift | 174 ++++++++++ .../StatisticsDateRangeViewController.swift | 303 ++++++++++++++++++ .../Statistics/StatisticsPeriodButton.swift | 43 +++ .../Statistics/StatisticsStatCardView.swift | 67 ++++ .../StatisticsSummaryCardView.swift | 128 ++++++++ .../Statistics/StatisticsViewController.swift | 138 +++++++- suixinkanTests/StatisticsViewModelTests.swift | 210 ++++++++++++ 32 files changed, 1769 insertions(+), 10 deletions(-) create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/Contents.json create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/icon_data_statistics_average_amount.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/icon_data_statistics_average_amount@2x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/icon_data_statistics_average_amount@3x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_get_amount.imageset/Contents.json create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_get_amount.imageset/icon_data_statistics_get_amount.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_get_amount.imageset/icon_data_statistics_get_amount@2x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_get_amount.imageset/icon_data_statistics_get_amount@3x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/Contents.json create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@2x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@3x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/Contents.json create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/icon_data_statistics_total_amount.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/icon_data_statistics_total_amount@2x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/icon_data_statistics_total_amount@3x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_order.imageset/Contents.json create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_order.imageset/icon_data_statistics_total_order.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_order.imageset/icon_data_statistics_total_order@2x.png create mode 100644 suixinkan/Assets.xcassets/icon_data_statistics_total_order.imageset/icon_data_statistics_total_order@3x.png create mode 100644 suixinkan/Features/Statistics/API/StatisticsAPI.swift create mode 100644 suixinkan/Features/Statistics/Models/StatisticsModels.swift create mode 100644 suixinkan/Features/Statistics/ViewModels/StatisticsViewModel.swift create mode 100644 suixinkan/UI/Statistics/StatisticsDailyCell.swift create mode 100644 suixinkan/UI/Statistics/StatisticsDailyListView.swift create mode 100644 suixinkan/UI/Statistics/StatisticsDateRangeViewController.swift create mode 100644 suixinkan/UI/Statistics/StatisticsPeriodButton.swift create mode 100644 suixinkan/UI/Statistics/StatisticsStatCardView.swift create mode 100644 suixinkan/UI/Statistics/StatisticsSummaryCardView.swift create mode 100644 suixinkanTests/StatisticsViewModelTests.swift diff --git a/suixinkan/App/NetworkServices.swift b/suixinkan/App/NetworkServices.swift index 8309ee6..468e269 100644 --- a/suixinkan/App/NetworkServices.swift +++ b/suixinkan/App/NetworkServices.swift @@ -13,6 +13,7 @@ final class NetworkServices { let apiClient: APIClient let authAPI: AuthAPI let profileAPI: ProfileAPI + let statisticsAPI: StatisticsAPI let uploadAPI: UploadAPI let ossUploadService: OSSUploadService @@ -21,6 +22,7 @@ final class NetworkServices { apiClient = client authAPI = AuthAPI(client: client) profileAPI = ProfileAPI(client: client) + statisticsAPI = StatisticsAPI(client: client) uploadAPI = UploadAPI(client: client) ossUploadService = OSSUploadService(configService: uploadAPI) client.bindAuthTokenProvider { @@ -34,6 +36,7 @@ final class NetworkServices { self.apiClient = apiClient authAPI = AuthAPI(client: apiClient) profileAPI = ProfileAPI(client: apiClient) + statisticsAPI = StatisticsAPI(client: apiClient) uploadAPI = UploadAPI(client: apiClient) ossUploadService = OSSUploadService(configService: uploadAPI) } diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/Contents.json b/suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/Contents.json new file mode 100644 index 0000000..61e3ae7 --- /dev/null +++ b/suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images": [ + { "filename": "icon_data_statistics_average_amount.png", "idiom": "universal", "scale": "1x" }, + { "filename": "icon_data_statistics_average_amount@2x.png", "idiom": "universal", "scale": "2x" }, + { "filename": "icon_data_statistics_average_amount@3x.png", "idiom": "universal", "scale": "3x" } + ], + "info": { "author": "xcode", "version": 1 } +} diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/icon_data_statistics_average_amount.png b/suixinkan/Assets.xcassets/icon_data_statistics_average_amount.imageset/icon_data_statistics_average_amount.png new file mode 100644 index 0000000000000000000000000000000000000000..4438a99fcfccdb8d22b4e53c3fe2ad732b1ea400 GIT binary patch literal 12912 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 aR09C^peaoEJMAR^0000@`n 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 aR09C^peaoEJMAR^0000@`n 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 literal 0 HcmV?d00001 diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@2x.png b/suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..47b08cae5dac7851652ac420850040aab946dfc8 GIT binary patch literal 13203 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 literal 0 HcmV?d00001 diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@3x.png b/suixinkan/Assets.xcassets/icon_data_statistics_refund_amount.imageset/icon_data_statistics_refund_amount@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..47b08cae5dac7851652ac420850040aab946dfc8 GIT binary patch literal 13203 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 literal 0 HcmV?d00001 diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/Contents.json b/suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/Contents.json new file mode 100644 index 0000000..4ff8d37 --- /dev/null +++ b/suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images": [ + { "filename": "icon_data_statistics_total_amount.png", "idiom": "universal", "scale": "1x" }, + { "filename": "icon_data_statistics_total_amount@2x.png", "idiom": "universal", "scale": "2x" }, + { "filename": "icon_data_statistics_total_amount@3x.png", "idiom": "universal", "scale": "3x" } + ], + "info": { "author": "xcode", "version": 1 } +} diff --git a/suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/icon_data_statistics_total_amount.png b/suixinkan/Assets.xcassets/icon_data_statistics_total_amount.imageset/icon_data_statistics_total_amount.png new file mode 100644 index 0000000000000000000000000000000000000000..8df2b5318d39f55e008966481eadce6bffc1cf3f GIT binary patch literal 18667 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 O0000Q7kcuiNx3v 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 O0000Q7kcuiNx3v zjYd#o%4a@J`K+i(EU_RKnji?%=bg9Ta@PO1_Py^gzyR~k4AY#$S!b`k_OsUBXRYV% zbMAdXlMWw;Gq494I82~DNZw&r=`eu~vtW-haF{@Ql)l5xhY56;1ACN#!vxx+^c{9S zOrXOY*rN>WHi7nN*2B(+Oa=}U=#VMp{<)FE1lm7&KV)V-OrS%il>6sK4ijkqN!_~y_)`&*pYL80`AB3e}w-Jkt;%&=Lgs?$NqhA-$VZ{`gidC4&&br!Tv4m-^Bh6 z@ZX^QuMjZ*$y{GY{}*t7i~feSUw!t2j{oX8N9YS@l!pu}7I7ncg+L_vfpzbHXHnX} ztCK$BrYG=6k`v_`HB%)sXHAGBJw5CgO>%SW3mEe*KCFSk9vEOV$C>FYdGW5w(>so@ zAN8C}B>iF?dqki!_|&ca>T{k)Vn0gSo{t=fNF>~%3&oSIfhDs31TpZOvJ$_{L$r#159W}Kz9rL0s&%Fjwe3gfpaQjx?Sc) zAsqG|rV151z6@>mRjk2OrR2xB>^aCq$9(;qd+HbH*lhv@d9H69^K>b_O|D}i;oiOQ z`K3VUrx{!P_9CpSb4_C6!)h+A@Z54fm z-J0MWcjGb$hH7)oI}3{t6N#7zF;~j3uB?1@O6;bIRLtHPHyoV%DV9x^QW#t;F+4k=9LnLHMr zMmTW2m{3EE^ z;}C#iIe5H@(Ho11fpH=T3-92Ay%yB3Q#W#_6#hXFX`y zjyLlQygNHjJQ#(IxbTK6IuSAT+`-Vn1$2)*9z)za_ref8>}DtMC_77s__1gL&97-3 zEwf*u+T>Txr;Q|&!1(m#WRX9Q1PY@VC$VHT5{_S`@S?+rhaS#`uWh$0+X)qIMVrxt zh*(bF@e4byfu*4MIsi5Smoc}4GOvVPtOcOs9M)*C2L_4A=GeIa%6N#xS}MX|35*<* zD=rrIg39M06FK5DFJs-9#AAX=VFQEbFCYDtXN}W8WY0wtsFK~EY#d8+$Q9Q}RwULU z*%X6e&qvWWB;_tjFXE8*?b@ax*cCdAl!h!C1^|=wNNTujnBbb5+WAad5+ik4#5c zD(`{ikUbYoATn__X(U%%BdH-du@ys6l&;;dM;XYaWY`r4V^J6j7Rdu6^ez<4cAar_ zzTU_z3L3un0z@Nh9 zITz=NoPEt$Cy=}jM`4)89eeLd=Z2%05K|w`F@XYqNS=!(5M{bINg=0b3k8dWD-uhp zWF(MkQ5iDkB8$MhD?DzxO2*`IvM=EaB8FVuibRBNu_C5>4@1icK!wmV1rrRdhl{lk zlL>M?1DDs^vlG4&mk^wKx_~psju-~Jn6Nt|=4LUM7_kt1<0eDL7Ao`F_WKPRJ+oz} zT=Ddp4$))L1d?n8q#%JLDA%%=Kt-QX<=0ieHAWmgl9-&LJBC{eyipXEBG72p3KXgp^f+0xur5ARK``C_&am38c^1RUo5-|j4 zg`KG__n8-hB?}y+1+t@EKD2dq{E+=K$8HcvBQhs@9+^U-%>|2E@I49BLIR^O=&s(* zL#52r^UXfqEh;rIFf=lE<3gD{0!mRVDRl3F4Gf{_Mhu#W*&_fw4-rS6i`l}r>x!e{ zDOH#~?77?XRUV411kJqSkTDrOCtOH0kc1OE%Z<|w^57cdjzb6l;(+09ty7yd91qEJ zHwXlIBH>x0R($fvu(?-c&Lu;@kWqobN?#qvMR?;DW5PFkI$GDpwTt0O{BRd*$L#3LV6m3aF&Qm! zxW|kMVuX%0lZTH@*u})*8}#%p#`EvfH|vl+c7s4UnUYaBGv}j48c7>EDel_E;YQ-I zU=NHLrOSoFp3teMD3~lT-O^KxO5LO9%NUrRFB&+m*@r0=bA&%;vse$7up4t^JHcWu z8pSHZhUE2x9i1U3B$5|I>rSjdi{e*`Ska4NbPpe6E*x2JjNsFok3iw;W}H@8U^@U0 z;dAi>a^2d@=re{dSK`J_8`H226Eg0RA)+ZBZ#s03#S_R>842qNSt8-|IVk`-76&5| z9GGlJ7Ya=!1A`LDj>fp~NyQ$8h%se73Kl-ViR*MBSU@PIqA(VUvfTi6yI@e5%0*nE zd*!HIdvw+F%@|W<){Db}j5uNdzq|&;%%;j0?12eFV9yx9oLKYvm{S48m;1=`SYegGlb%A6Wut2(3w#tm})(vtHq2#+4KGP(Bw;AeS8J7MhIZZj>4wdyLWKl!56c zHe=$#2$iTR3T_lIOdzr5VvucfCk{p6CDxtRyW{B8NunsI8G|!W#xZ2OII_-;z#5q- z3!Vpt(FN|bNw#7x<3l>xZB=XQ*CUbF* zVji|HLgru)wL_9v8Pid5=jMI^2*T7D24@w7GpOial+la zqAXHi6uwB-DGFH6y4+$c^juWpSjJVNpBNNaLzMOK?O~Xon|9%A3OgQwF?4*xE}3VH zL|1vu3QWWcF=KvJ8H1e@Pje+j+)4`=vns_S55u8)l7mIxS|kZk#Xnj|tmUMUKvJpD zxiCgDsVo_$-XxtQFW5a4@LjC);dO{r2}K6Z3}1QHcZiuRRRsk$OP;_cnF>h-{b-X} z#PNcDLN7vgz$EMzcqDuiZ4nr}a!Wsf&lv2X7py;G7uXBNLk!(Q&zPhlB`;u55jLcZ zd5D=RvwN;No+Pkb-}iE1cg~nU3rpLpXIgwTcg5cCP$EvLB9X4pDL?TT;VR`GXb-$m zbgbaA-JwPn3_#?TW1?b^*o8Q;dPd_5Ss;mdK~YL8RJWRHMM$YyqU}i?Tb5KP4wK_68DdJvG!wbv25R24juTy_V`=!-iPHz;Go-LN6NN>Z)U@Tb;2Qf*qee#u}=D zsu{77y0IqfBmO|yS3E2&YkXZd>=${iep%n2Q<%&NSL$W%|I z`Y03yv7xd*g^ZT{#b`N{M(TrUq#P(li=kq)Hdu_NfpVlAEQZmCYXikdZ3r1GhRcC+ zv=}JIu#KXR(2md_K_4y$OMJ_)kA~hDDn=L^#W(CDVGF4bmSc5d)Q5;ORF2n%%CT~= zHr5!%K2naC1GTX_{c@-_hQ6XP)_3n!r;d)PGqyiuMjA7%8y(f?@LH`Mc$6O1_iR18 zMsdmu-4m^85012GUy4rEslA-KdM1o46Q-wo*r9>URQ2LJ?Jbgt;kj?z0l=(he=`p+ zh*K2=s1;=p#|G>DHUde;YD2|XW2hLfQ@Hv_iC$u>jWy8w!!}eKjbet>DPnE7HWqDt zs6JL7sf{_~knKHwVTePfN~1LH%(^?@U%)LgMYWLmA2TQ$96 zo!Up-sMfMcwZ|(B4*ysi`!A4clJ$3!50C8eQhjJ-dm1I^gY8ogSX|y(w*lCIph%?d{Oarz4G*Iuez8X^W zrADo8jj{&5o@ym}9jVo^H!`MCf+-u;s5Pu!>r3^rR@57zH&P88KB-=BAoWx$8$|<5 zqpTP80$d#%n0k!Y>Q-+w)TsA)UteFRztPtkXbd#_Ykjjr_5N)m{R5kZ2ZnDR9~irC z*}&M9D~6U`J~lKw{rRomI`h(XUpw=kH+|z_pWXbe)Ba=A5AO4osUM&GjoItge!F?y zF_+KZxaO+%x|P?qH?Fv*z4?frX=2&W+MAZ$sI5zHY;Rq9vnH1;R&LbP(se!AsL5qp zwQc!&ZC1#!YhZf0&0RFTV&7|M?D00*Yhs@(ri7I9X);Y0 z6FyUJw&`-hrpop0ZMBWIt=v#-Dc9N7@@Lvu`DY^&y%&dJ87rJ zp&>2)ah7me+!?z}2rR&nozE(-f(!1(KVi$#eSmcb#P=|XQFpX#%kK1`k34teCR4og z^cRgZSo9SGwLVKlO0A;elizfTn`N>yL)qu58K3hR%~vzkTs7^@YNj*qGgTA4RZU}` z_IdPqpRVS7+UKgN7z@3ctEMaLomrpm>J{TY4SotTPGX+~KS{i3r+f}N%=rxC(=ku9 zn(ItMwyA2iGZo`qy_)JkG@t2AXr{BZy{+2Xp6WpE_C{@MulFh1t?irIThJ$4H~QAr zP1=HNYF+P}TGwf7>qg{;a$}1}So?-@YwHI3Kidtt7N6_1xfyc3HZ*^VT%&c(tF*q2 zuIshAzFE^lTQxbpSu^7s&~MUBb!wNQsIQk+ zpn(U#kc&PXp~X||P8Q5@PxvBUrotOmxBj9pHF#%HQfjHAX`gcnMUm$zd$Ve)4Heqn z@~Uc8RkUh($H7)vLJv{L+hE$>0hh-YFum3*VxU(MqiR{FY7?(5@3oz(qpE6q`X%D4Vvt%(?t75ZG@DYTi0v7->ivptL6r_X=aqQ z4_B)CC6#XyRno2cgDIqk97$H4qtGPM;`D{Y{tTOY#4V;w#Vv)=UBRpxx2B6Xa?Rh4t#AMQjD0lSS6mzCr>B4*5Ns#pXL z81jVC;u80OYB53p$m$@mMAQi4xMhnwaF0pxcjJON+NuJ_K+NapSz?%=9mwn1$GocA zs#;Q2R9+QrzM!_e)9FaiR>U%-gI~KXb;v`fth`-zywz?g{%LE^{+TC!eCTFXb+%}> za}&GMP1?q8x5+nXs)VcqbE<~t)IacJZLD7)vOy+x^WMRe^b?HWMqsCn zkTF%L*i>Om%z>S2_e2*ZV+sbN0~_dsmZOAU!WO;}Ck7brE-`oF;<4tg5@AJG+gf;vq_WfE!v_@+E$-d zb8teFLnCT6_~DTs8$IpH#JdE#b)cw*+(<0($xWQ zf+0o}Dhf~<FghEUQON|+tnsbb~f@Zw^cJXtND6U>YrBCH!PK>h&$0;AL*_kw?U9PBa>J|Lvk`{ z$sWmLtU_~b$B;5VB`#;oYBLmXDd-J|T|6JA#{ny)r%y0ewH%x#)0n`-yXsn)1# zOSx9xVjp$8t7WCT0^D}Io5)`AayE0}FnH9YioGHfhCE9*fmP(yvo42cPA=oq?8HYB z`(@$DN_KlwN6u5f;<457pbr>%_<|J9ieOw6wje+h5fEi@?l@44lA;*Tcwu8SV_0g~ z!zX+}VvZBv7+VOAPv9!z;4R_=KrB4waQ0XQL8B!`!0=E!wQ>%$<59^V&W@HHbt_WL zu%qd2*V|;cqsnLb);XjsqUAh_6sXa?F5)Fb9nz zz#JFn6VU52mh%yV2c~pL!aUz!TgW_ws#HOuPC2KtsH;v&?t0znt|7NWP^w69SI8EL zBUxk*i%4LVJtBFL?4F%Z;BD-=8jjsXK~4N)*^_cQ2h79Yb7hDeaTpPO#Zhqyzp#Ur zS%t8+N=l*Q6Ichw$y3M`+`x?mGAjcQ6<%siYt#u%a(i~AGtjW&M(n1D>X zvtDs@{UnPuf@8lFqz28Ss*-p{E8c@_KfV93g6(G;Eo7c{;WV;#lQMx8On2BWnm{D7 zA`_%H(n!j3l10C#$Don2p53BKp-18@DjaJulI?^FKV!u3$IjJN@!sPMcw8g`D2f&W zGIT3c88HJvgOxKv)9K=gM=T59h;nB;4*`3pEBslRD7u9n%QV*KVsSmk5YynBZj@Z z3bzIFWIGiO3;|3O1-(-EQj`EvIHGXU$1hAdeiS790V~OKVTlirk-*XsZHk!6HY2VP zfS!j>APDKis}N_%6+YsKj)gBVSc73VLx((!g5wHC#5dwr`SvP|tRQeq5;3!+@I#1E zWr;zccXaMf#qKE99@t|U6_2xmBrP_~;tAvuiL835p+_Rwb?Bqy6<|}hNIg4w$3|kg za`M#Sijg=d?v#&~aSCM!GkC63gmW<_3G(Ei6xp*at`$)jTkxT1sGdJijvtSZtXC0& z_%wMO99{sz9Xnx|Dm=n0h6$c6;=oHxEst0WYqcOx#3zIyj4IX~@vBhcF^IDWX6&ho zqhPLR4 z8so$xE~kqiS?J{W;bVA&1finEW)R+DM_Q0fsNQodnuV|K@$rwD4pLb(fw)hP+{;LQ zBry`24e}^}8EK95n*xWBd~~kpVH2)k7JM0#i2@t`jAv9_&?TsWJuz<4w}`BK7`m|r zqXkagxH1y`AOtEWHtWWXHRds_=N8`fA@b&oBsAQcBJi{gG*UF zfqI`@k2)DdqR^Zai6Wy=Ca0K{(7`zA@X&)iP$cU;8yHHj2*gN*HJ|kHwU89?iR&>y zYaw9m7CRAKhMgTD&mB+{8psGXb`8dzc#j&q*XX;~yy!kJSbElp$JUM*Zdk1VcekFF zSX<1%{oS*6)N!xq|K%4vss4b~VG1$6%G<)@EDQ&kES^9V!lOV&5xLpi?U4#ILnJJW z@!}d7^jniBkCRTRXU8qu9MV*>&=CqB8x8>hLMm|(OW4H`zDO4z`kE?Ud3(x{l6w6MW3*f-vwE4(v#5XAE$%y#zjD zX4y_2#sCF6zhvk6hyfT|%t2$c7+64EHGAst!&a`YEgfKBAD;P!Za3c&8#?I?eNTJN z@wRgCc7q3*VbKKQ{wO#Fq|g#YR}?DxRGXrrxgZ0(Lk}02D6TUEhMICRW|f7nv(Hdu zVMJ~@Jyc@nG1~YPW24I~^kdfv3G!rLb2C-O+={r$#_;eXYNO@-2aX?SKEu3k&scZN z*x^No)r5+qqqY1o7uKJC?lHEnNzLqg@mw^4EQn)95rY)8;!|eU{W{DbYjdhZsyLPH zQs#|0lX>XYO)9!v-GkO;iD1MsK#-6*h#k6jL4?6(zJ1q;m-fsPi-@2M$ymrr?69)3 zAvKB>#c2HNnt5=aT^3eTNp_p}oFuCsU#xiYJ8I84|5#hOk9S7xwIeM$l2IheNZm*e z)iJAh775nS&y6b+3GzhobJe-v5dWf(MN!f7X{v%OCRJik&T8_G;t|eemS@5nFYopf zsEnZn&e_8TvlT{w+3NH{)JSz3Ec$9#_xWkDtls<2Z6`NqwaUgH_1fA~pRuexP`~Z? z!O&kkfvTuaNG@wd#VC?dL?{r+qSOj&)Qcl2BC=P{Yg%000mGNkl)Xj1N)@9I z(eW>POZ|VHxs%}o+O&8AQCv0?svR|xlaopi04+b)3YGEmR+NQ+@pdwT`7ti61D|Q_$)S4^RL%|p)Bjywn zrr?ELSOqUUbc>w?yamM=F~e+u&uw>IF>a3T0%sxkEBwV_*^l^O94vOranLQ|0}ho* zLGPcFtcZ1K7mh+{=Ff~o?u7w)a@;(|PK6bad%RQS81BYco^$&! zlQ<}2UhBrhZJ(aT5*BtIV|}|ac|+yO$Lrp&J6jJ}b)b_c?q~4?%H*LklwIiLh$=Y- zH1qgZH9QwG$bu;*p<$Qcq>#A9>5))yP#|0_sE7^Skle!)BvWu@ie3Ri>y7v=^JB?p zUdJsLgFM)o$7%M?|`X8A79U#b{?g`W7fr|5pG3mCY|j{5Tg@;d$M8y}(*$94g~&moH^ zkaf%AqC`A3a-l;HyM+xgXc9#Xdtf4gQB3T)xY#i}5ONM4CMXMf@REUmcd=-hpg|Mi zsW5w7M2`UI_@VQ;RFeQsJpVDmmvs2%^a@L!(*|&Ewd_uKYKT6B0CQXGb>Ksx3{m$3p&OJ`c z_Whq@?r5bw`=SYCIg4a3=hmD!UBRBIW%-J^hlwIa(!*}p$U1d!3KlO%PS?pZl9}V# zJIVqmkLBcJa48Cs-*>DxFE%aci9$;dx<_|4J*S`pxSKl@vn^lvZ!fyId}Sz(o^?CzDL7jH*kdl8YkYB$$tH4AbSLpD{5Om=May$xnh5mp*)=+tUNr z^TCKl4Cd%!B#R;j$C$G_9u9#)Vhp1ZQ$(lniWgT9ERYH_rkxyhD~o$Jjvj5Omb$)x zm=J$X))ju4Tka6o#h9m*16r(&325Sv#5%cl{8EHa19qeop_|5P`Vq?|7N%htJC)AD{Jh8rd;H17a{U_Jggl+Jo+UmiR z>qz6M!IS%r9K2`$(S!HsJ8I}xMjo>I=_99~+Hdv7j&n5lAt!(NDq;=NW$hoW``GMP zKDgPZuHY7+)Q;#~(~sARXT45OecE!39uR+gT{MBXO{&CcJTk}vwTccxG1(z3>_HQw zPhm6O45~nwZXbS7TrA?9LqVGOkb=P~BVhK#(IQ4fPHY3{IYNvx2GGr{GVI}}u%ml! z&6SVb2Cmo7##>#+i^2ZqjGb}scOChHN4Wxw?M%b)i6we^*22yDpqb9K3F zdG72$l@GQ4?MJVk`p7%pJO8h*`G3{--~N^A$M3kT`tjSp*8cI^zOJj@`t|CnxBjQD ze#?LAs-4Pz>*{x{)3zIibYT3sWAOxvD!NtOqVc40SQErRHNI6*e2NvIjKIptgAGnW zH;?l6d_iVB;}D@YNFy*&cw(d&bG(^=u4ot}2)-!vm1l_^hGj4ir+1Cr7@1&LGWHHG zH7klB($Zph@YXUixU?J@Tv7}V?M%kg(C~OMG(2F9{v>9)P5k3)D^9v!-`dfxIo5*) znZBp%w|uzsA({ayXt=YCfo{p@S> z@&CIsd80n{#cQ?kRxj*C-Y;ib{H#`yD@qc@4V_|!8UN}ktGKJmB)LY-d_aBKZoC^{#7Y(bu& zmgTYvLXkM^1~D>O%)`bt+j%>6nIVuQ=0dlKA9{`x@q=+-!j{Dx;y^I-JPUKu_dK+Z zFG*J3uYTO=e>wib-#okTen*X4f4PsBaJNsF7CVD?nNjid@va(0%mt1jc@*5MN>q`n z1UJA@ObUsS@myA6be>K0&4UzyqvP<%z5D0_0*pxnaY6#8I4UOy3}rZcM6bL1m@Dwu z!=#uqd>IV4{UL>=+S+pE1Ku?DtUvhN(hJ{v*^;-t_bWqh{?L~P{@^2D9DdWszTCL* z<6kJ>_=(T=z5bJ5EMNckU+~v{`ipwq-+xhW{PgGbx_`JMd72(_)c&}i+s?UY0ujKe zkw<~}WWyB46osQ|)HF_tT?HXR1S0@=w}l@RlMYT0k7~1j5JQd+Ld!UKMx-DNb94z7 zsMvL4a>oP}C+vX>;#jOF>|!ll(c$B6$-trs6y%|fR9zv; zB;jG@woov~P9=>Z(ok#qkPC$xLk@Wm$=G_rB&jz}8+dwQv)DZ{nXoe{M$5<{7yHZq@dNLLT3`~4eOR6}#b_$N!1sQ}cI;d_*UWHD< z4MU9Qwy+$NNjyaPz+~9*w;YxE!cL4#LE3C5R&SGX<{^9!7udtHS2M790#P_NlYFwZ zP#XQy8K@;|=s zHRr#b_ARIW^c8P9_1agw{{Gj!@-_Fr;Z?6Z^~T?M=>yii>bD=X{&&xPz{XcU^Ff)wHmmllrmvRfO zTSgCTZP5gxFr-y(nIsf8l4le#XVI}^GlVRdVK?-g+|V6g10%=eQ3FFEMfA;S^FY|l z)Fn&I6Lkz+MgWN-MO-5$PR2M^X5<Bh!%tFxo3x_bWSTPJ<4En*se z20nwBiyty8nRynrQv=i0yEbD@7VC>Sak3x?wu}+3svI+?anI)Y533!z+W9ZeO?9ek zwc$$EH4~_VK^9LSij|W_vbjMgSrsN1iKBwfhm=MnEXaZ|!gwW$={sW3ZJ}6f6mlX6 zJYtFLlYUMc5)VppZb)#a}Y?ZQ@}BJ ztV!J%+z$i@oxyznNg$aeuf^Pw^La3Qa7OctrB8OWlf&-df1PYp17k_)fcTAPC(FK_ zY0(5Sqa$5Dam-wa zYRq7cB2h3IdRU~&@X2-u9Ajcq*ekCvV{PIKpz=G{SZ_}a|Sm6-~qL3nYIf)dCebC!h z{wDIg2fuB_xes~U%I7}xZOeZ1VQ*jYyobMI`STv}&Xv!9O~^az$|$U$+Y-B_h7KIxeqR1m%LD3jn% zloet`A3GL4d(_Y=G@s7sTeb(u@PQccgbqHL7UqV{DL!3y+?0zCg!#y-#|)^>r#bcp z?;e$67O`uXWdwarmkUBgJl(-zGFw@Wjh{Yv&y&v{dC>jN9(izAh8}ePvyrC^J@5e` zPaZt&v?mXpcG{B$ANatKCk{X0K~EgK|AWsOy8lDZ8o2+%9zS%yhd-wOzK=Y!|K5*& zbpO51JiYIpk9&CI9#42^-$_q;aQ%d{Pb-iAmHU-zfAzk_F;Ba9I_eqsOsjw69>tN* zJh?dXStn@4bB@vSrwyy`-mIr~2TMI5&5I{c6v&K<8s&*b&P{tRoCzC3g{cdJS+4{k zL?OEv{HQh%sNtT;7kvyyT!rrL5mOL?Zr05p2KFEhjunpdAPyaQs$$%T!HjtgL?ARj zVp{lNCGg>M?`L4~1Y!*i8K@PFa&e=`GC8FZZ6%1{7&9iwQ(?9|Dh?03fysKr%6znN z$#m$FN0kx7%qk!Vk3eJpsvKNkkp<$!dk#^Vw-R7is^Bpvv zErL8zOeBiO=UtG5>WXfh9y^ag3B%6V!jQXJ1VFNi9aOK#fz9IX_*5a?U||Rwd$5LJz!n*Aach)gfjjOC5LSi?-s8%+zrUK30`M z7IrQ$)^Syp)0bjuu7}T^W*~kuNTjzzRd))w6XT)@WS(v|b7!tf&Of0;0s?uilUb!o z41>Y0Fq%=vum&DkAWt%U7Wx9?@Bm^c1VTvs0pB1+>M%-FK?p-vC4)@zP9}`2!ULQ- z5^qOFn~B42#fU`9LJpsImVrV+q&q|GY>c|^%zP&{_iyB4R$wf)7%rk}(HO-J3WTm6 zInY4`8z76TTX4qW@xy>ZOnE%h#|0@MMoMjVqc*JSbj3ULJ0{2?FtozWvt(jb4pH1v z$3h?ub9Ic57QYpCSnc8S4l+=Y*xL@R(i*?5ZD;*O6R0^*{#d516wh5&2}MDI%7Qvk zPfWMi9XkdG7USS8>(GD}D$1PQ!zs3NA8v)U`KhgKL8JuGkB&Q8b_ES4q(b1h8KbpVcs=wO$+0Xpp#!r0Wk2YU= z=^t%GHe7n?TQ+{;lDBUB)W_et>63r=)-9j<*hO1D_0fwqAzMEEk&8C}!-wC#`5*rJ zom>C$gMTvdf8O^e6aW0)cW?X5d;VhEzx?^dlb`#OzncEHcYbj8|Gn))GhcYi-^_gB z%^#in@`abQzxIYtRsZ$czixp>RJe(#f$mtFOViLYIC3GJmbU%m2@>91b-@u|ybk;$)I`F9hS zUHNz0zVefgPkrepmrQ--M<1X0@{c|?`K2Fyc-t3#^x^3*T=CaapTFV*(_gs!12g}A z`3ENdY~H$q;}e*Z<+RU7{y^0Jeq?sb#1!52!_N8|!=3QCrK(>>GO+LXLD_aR9&3%#yJl~i{6G|;(1 zyLRjrfn*m}*W57kMXUT1=4vq&1aLRA?v5gNCDD&>KOnGoF~&e88IL)aNW6=#Os-_$ z-3u$4sYp!*TSZ~fHW_WP(5@tGVbAk=6Td8;$-`K*F-{xg%OvzfsdT#ol6kx8FbDTw zsTHJPEv@85D?z608*xGkwPFnxvCP4!&5|LOwNp{FxUu#Ec`ES}LaI9a*icmxJa1RL zlObhQ@ex<2yBveTFq=0%kd<3^1nq(%v;68GC%RF6DMHBdV#tva<(8tjeStqt=SxwJYr)~|Z3sgqP| z2Z2u0X_VA%S)+D-q@A00(F%#Kd&t@^b&`F6B!1J(rV%Dq1xK89xg5g8N1cyrSj9j@ zH%l2~=2iGe<|NzeDb3fcm`|ygx6gpWswC*5+qWyNSY5xw5hNrQ#4huE15T~ zh7S_`(o#!zaNMhQ)O{~ncFq%DIQsaLo;mo)W1cmHj6V99XOBMW=w}U|e(W`yi^n#(s zp8TSLv+jZ1^Q8k%IOSynPdw$kfhXSUrR7=oIj`}g`@Euj!l|!JPdxP%e%Ae7Q9kk1 z-zm>N^;PAQ?{`7@)Q7)A=REsJjXze>p4Ei_yK)vv*3T!SrhZ6Ncufi7ciK&L*f{08 z5+m&j=uR<~GBs7$d~QRBI7LX|O+sf8xT1(1iQqdq znWMaK{n&^6*6>-+eEHZfoqPW1+0P9*Z}gXbGvxf?r#$cc(O-Jrd821P|K-DHKmYvU zC;irWLr?zgmkmGZ1uq#o>qRdfdcuoeH2j2@ykPLGm;LtOW6ytH|3h72>-oQdixEWY(uzr(gBvkZP?FE$=X)BX@bGyF~0F;HSs^ z&D_sUzvSmvKm4PgyY>-(`^VRu{oeD!@u$DG=8X53R?gQ{G|QrxcZzR?L6&09iULBWu5Pp;kjpA- zTIeA~jd7$_2TvP)rDox&b!WF>GCqOjK%doy?o1k1#{bLV?WC@9B#Y7Zq^4pti_s#b zim^MBLTQ*amdHLiOJ1HEygU!9k9+TTbRMLsRa0MUPFL~4?|z`~YBA}q0DCfi#l1e+ zyyk(QoVb-do<4HbLqE3d8rtuje(}Wf@BQoBPG5Gf$rFZGOx22#od@X>XWlG!o7j~g zlG(hlcSY!3u}m~U94FT2cOB1CLX;A6bR{**vX~Dk3=Ey*2>{hS_#0eQzBaLWK4Oyp1i3{@2xMgmF2vZ47{k9=bY@%Lp4!!< z9OyXSDyN%*L%X?9=hHPHPlN0}Lp;U?G}Ic>;M{fHxlRo$JxZy)VX4SlLqb6o| z=U%$+K6M+?Xd2Z(8spCv11g)PG?&z967%3DP+w}alFD`s0wu_#RBH(W6{&0$xwURv z&=0B8<}q3?+Qn_8tk+uCY2((Lee3sJ9?8)`epDMY^_|Og)5PxFN0Qii25eM)#h8X{ zKz(iW*}815Uvu%O&)<}HH8$~f6}oS5eEVvv#_tjJqE!@X^SEx6b?Zq<+m%}prGPlM zkswY;k&5<2n&TJGE50)8&4YdyV)wcB^Sb=sw`z)SO^d5ZnZJ3}ZA7UY%LJ(z1hywdsrJY8l`H=)?NTRf{R|0+xL8(%eX68bJnaSc9!THTZj`W~BKh zxQ>}Q?Jl2bmy!DjSTD*>t*Cd(vgoL;cEJmcXQ_8o^tD6W>m3K<1%GYY1*u$BVE@Yg zsc+ZB z%H$!J6<2O}xjym_XX&laeYD>Eq(|yaXKt4^`rKX1qvqax#>0_EwBPjT1vy=Be$;kp zqlf6iN1nbQ?F%3ID82dg#mX7_qsKi#Z+rfW_1BmFhkmdN!GwT9000PZNkl^rLIxp3;JHAhl&7mA6_@V*8IG?S?EAc(1gv4i*MU z@*@fJwp>oJ_UB}6sc{y@#2i{_Va)s&?>dv#mTY?NW-@4b=n$_FGCXg0V9wmh!di{ zckGo&1;h#IR~_OEvg?f2f;>lPNo!brGoz|aAlrtenPYWqYfs4&i%xOb&*E(e)ZlM2 zNks?JR3@{!YWb^Y!4A8h*LP4%UqGJNd4?6_8823AS$UMk(vgs7nTDnZ)wi{jO$H*W(}kuG5c#>2g|$-ejp4PRzF|U zN7#AB*?Gn@dB)j!`czJgsJ2D??!)grK_1=@jQ7etzr(cWA@)4NtY&>c1H4`IHyaw@ z=k@+-Q1#T$*Uth1l`8jql0z^;+~xX_cGtJY|E z9^y<6L7YAfZtCNuxvu%CRazCl_3X8Go(1A8v}r-v-|d^E>SQfz_GxyePieAWwVCA_ z;uE#hR%wKn!m--8`ip)(eRYV`Ah9K6I@F{ASwey^!>Sh}8cJil->lFm?>J+SW<_nS zmX$%A#27uGNYEIB(3se@;lDb+0`1~wn|Gk zk82##3~cO^HrLgfn94#eE%V$7=<$ z%Gc`1_Ho?v(ONpQQp1xgG`qj)aVVQpBv|^=yEkSFV~U{BdU?C;VmmQK6xAoJ)Yk=*6N7XiO6xt zNe7u6r&W3FvHrDM(mI~|IZ9*m$7tE?Q9PQ~XvySC{^+?vOExXj$c7^{x^7hc>v=EQ zFr;bTcUluu8l7ID6?6ZskG0OUGuz}YcJWB#K9d8EKyl|JBDUYoD!xIi*6OLYs;xsB z;uF`u{s=8uH%3C2X?Wub4Q&cpO}kRVn-3<5HOJaRR%@JHWeFdU@r}#4x8)jLzeEG; zmZ@CF`1+Mvx?xbmo1}6}skzCuT00%NIYnxbtImaXVdN`Px6dW*^BH$>LJ||7riyQ8 zt&{mwCQVNclfc!gL7Z~^mgx_>8PwR#eKK|yTVHBuJ@>R>OhX$6Ak1#H`j$ZP7I|_hq-?kDv?hIPsnnIoidH-aW8%_k`U$QG-Mm@*5Ft`(td=U)GoB zt|5^VnwWI0m>7_@Zso_agINZ&oFDtNb)&AExW86TR9Zc`Nmozbpd~Xaq}dN@&HM>E zq4_|2VBT%WMTP7+akO`i1DZfP-ePRi&#-57PSa`acv(C_YJOP9HXlZU4`w-5-TOF0 zXT%SFty84dY24$Pve;p&-UsM_Azh1Gpj+qTaBqOV21!IgR09CmE8FqO?2ShN O0000$(PHfxO%~!YXulu8WcXjVtUAxv^ zdiJv-6y+rl;qc%9005$tq^R=u82`Tu2KxJcB);1Q0H6S*M1@s7!Opv3o2pjSww|_* zDm(7F9sFxMH!PVLW`x$jN$CekynY9UHb|c54SGtR)AKUBM-%Shz{8)g!{EkC3T>0t zPm;ugq561@(xr>VGik%>!x-5@GiyplE|$GL;J+ez)Ks{1zHRKT zxjnATb8l^at$zQpR&1{Sj08e~6ygWK8*Y@>F$D?W8W>cX{2KzmUwluj5A%ouw?m%jpcr zv!K43&Qe4E|E6U8n7N~J`@y-3KmZug;>zQl>a#!)Dpm8IS#2#N@NOM@C%n4uyQ!J# zn}^HuC?oKx95e9F8biiD!KVDckH3RIDn`yxf1!>md(UuCYbSo`f8ZPKQ-PkzQpM|Y zLfiHoZ@G8)?{#ZratZrnhn|1%y)mN~{PQfI_*{zE^IOngbuUU+G?Aj{In0k z^OpWY7J?t4B<$LX!EGZ4_+{PCp-%G%NuBI$c*K$or9;uoaD^F4e*b$JTK{hG_Yf;E9u8Efz6!BKk!okV)iLT%9XW=dbZ>4dcn^96j@5EiJ6~_h ziR45?txtEzzIK6g$ubk|&`H98z($9vL+rr=W1k`qacxS;qWL(vOK8Y%2(nHci0YUe zFG=_DfXHVb+kS#)0W^7^!qNVxYpS2aI;#54+6PR@b%JdI5V&nggE_9hqbh4!l2G<( zw_Q6G6rr#VO9le|I=+!NHJ!!Sj(2Xmx(gW()7sPX3sDjprDmbF6P!U*ScvDJT zMQR(cSt}5S)dXT&X-}Hh_YKV61&;Z@Ehp`L@)GjB|AEakaD9rvtV5_7K01nhho9P- z;iqO&ly$?piMUk{`M7M351Wzlo>vI1BaV$nhm-6pX5bqkK<(gZ?<4Nb~mR9&%aax2hB1l@gmmFP0J;cNi~a;Q3YdTnn&p<^ZYtMQAf=9 z^Q{CojXOKpU4UY~`i6?d-Yhdem73w(l~XNDv0zq_!>_Tg=ccjTfT+lTzJ>m?M_dwz zR?f^8$J-2zc%}~NW;#uMz<~bm$Bv``rlw7vwe%-T76k%Lw^RJ#K|^q^JF(&^UTUD# zfx8A&?82q+A09o6G$4yD9M7OOd@;7n>o~(z4((b)Z_7>kQk z5gJzKj;egk#nVqkZ`{TsM2>i9iRtS%IpEZe_E)@ZN$?UoF3Hi7q&=$}s-*o#NET;; zC8HW{G%G*pbbh640bZ(?DFh}3XXME;m2HH_-d_3Q;%TbR(DAP4Bu&MevHnw^=1~i~ zaMVn$=x0kW9T-_#@L2_dVsGVPYj&FCl%>SRcTC~u*hp$U)ddRU)+p- znFi`nH2n%mX6uulAH1X}~0bDY`g+;9OJ zy6YxTP`J#Bc;a6KvrE+MU&|)iTrT2KR8n`Z6!%IGb`UE$YjZ0838gE>b*Du?4=*n2 z6$#K?`u_PbOXz2T-M+$F2;2miCxK%$h`O=j_I@e80dZ`V~teVYvM z+%t|#_R$%AyIC7bY9o-U4s zgilEc&gqjsX5Q_o)7kR{7x_f>IV|yLzs)=TnkJ#!|7&+A5x*=YLT!d=`CXANR)Of! zS8Vm+_P)sc5`A)-j-eQ9!W+ksf>%0UZ&|-iuKIgS^GT@f)Zt^1S=B_-{x+xjs;9cS z>k!A_P01?7b9z}U9}y3Gt&iQQU``1z5NxA8+W~t0k8p+PShMPE&@fLW7;%Ghq@$P9 zcs(>e`z=KN5t`?95S<5d8SCLEGlfS@+k6(OLSy@`VjQe`mDs6xfhsroi^hT7_&yKs zc!}F#Cl|=AYj|VWZyg0KsRgjD_>HRZO z8dVj1U}Cf`js+g_WSeMCn_J7?#jYeAao#qrbAW_p)s`A2zC8qB8}&fc<6@oX{j6t3 z4TY@IWjG?&gyo8JuF~$ybq>QYGtRf@Uht85@`XFh>EyOhdnM0?4T3O&jz>J4yS=kU zWkeov$<4S4iiE?>^e7S3^2^HW&56NQPch&uF|+#4nlXEEeOQdaR(DRir)WS2pQok1 z9NkO@$nl@edbseQUBsFN$3TjCU3H1rMM7dmhQ*N6zl?kneZlq#>s|g#dd?m73tY4I zQRg@nW@={ot9#Dfh+xg^GXay-j@GHs8#zeY_{L+SE(LF#r_j7t&xx^G(~T^Hx0z_L zy~0rm$u%>g#jehY%2=zH1)6FiywmF&Ou~)g@npj65gnfP#=@jRL_&{nT)R^gJ#(`U zfd zf<@u*+bZypnu-+yX8PRp2Nx|xs+U~VbCHidnWdaRaBZ`ze2+3_ukDaQ@PgCMqSwY1 zHvk(y<@A+FcZpb`n%HV~(H&>WWa^9yOZ5pt*IIYnj{I`GOUn9*rg-m~RqwpdklAgT z1$vS|_|Q#QM&nbc690~80sr*)ASV`>#M9o1sL6O{s=pNRaK|IiQ8mDO)ZF1GAJv(* z(CaI2^&tgtQ6~p{uLo;JcgFAo7BNi0+GDQ^dKtN8l6+05^^W2dp7#04Rczd~aUj8s z%fa!l)aJA-30ZGP5_Wq`<~53B5TAQU1J>f5tn0K^*{YAdmjuX2S@7Yo^x&{|k=f%n zE*n^1Q?6gh5d*QCAlD*4lRT&~$Lj-i&KD12xXZ+ijUV{g65yH*ICPb|@-g@Tfwq^z ztP>0kA0MARB0nrXsy+tFlEp z4Qp(cx^}yZvy?|OcC&p^7Bc|5E>kmCm86jrKFfW>`ob8yT3+{-QON`6?uAU%>LdY( zW8%#Fu#x(w?U9#E@u@@6z+WCOn+qbxhoa@$C?|4356Uy%jp{^kXzMg128fcU(Jy@$ z2k)f+>8E3&abm?OO)IT)88)^gX+SUgzHwrzB=%t3HDg@+K+D|etm=?sIyR271L56p zKrhU`LC!;~w~7?F9B*Qo+?sMH>9sv6QYF|P_TMGO$|Vv9G`4>hAfm7qYPKZRvrgxv z)+VEHLho3;l`F!=d@GEDV~2^c?3pc1yGr?qnn&c#4u;pYq9gX|-S*7bvuSFtY09^> z6)9^j)`t*TE5@mgC3bxGZRJQEFmfI&3BU7hps#7dw) zKKyF{538r)dnY?TWA0h`yEpGEMF+%gZh0s>)i|d+atl)U7;P#}T009olp_2ABXPoH z;~G-j4>ftAuey6o6KG-D_dIelJAlfOhrft~j*oY!7c(bR*k3aiBQzjj@0k#v7(Q00 z$1|H6255HleOO+aI}{q1IAZ%6Rj2@d#HZqiwMk3L*JN(FD-TCd^7xQ?Ou#C`XWq1Q zk*|?e{&~jPK1E zu$Mka1B;O<=@?|4CcGJbnEO89nn9<%vA&oeb;e`fhX8VOHqm?1^A~w?Ldaf+Vgu~L z7;0{Glnq5$oUj}vGxGP(vTc|hGYQytn2hQT1LrQ~IuOpT-U=KkXX~Fk1o6%-2ZOx; z72NjUYHq+vO*=4&ZrBvq?}@HKQ~|`4%lKEbu>{?mU;;7yetVVXwp=``OTgB-_>Rj} z>#i3T)9T5d$*R1nKWjVC5OS8%-F}Bjo?$3S61-!}#*=;nZ<|CSKE8!pqY-Tu%R?i71i4 zC{S~b)OccnmSeJR23VTOJL!my%huwFe(EBwU~Wy}eia|E!z5bv;f0t)Za94Nd+>kI zNGU@q?{H%~b+HM?x3p;`WpT3-eDM7VpCnz)$Ku}{Pp>F(W@pjurGiJy+0y(M)d`*?Au)U=lZih-Pxjli*x#<&d$HzQv21F8v}-F zz)zi~Kg?yiHM*sX_8#F&*0OZ%gcn{T+zP61bTRr1zoX9XL48)M@4{}qC4(i=8k6Cn zN=c%J{>8b8h}P2J<^N*q*3e+dtM|F@PU(9=l-iS`8;OoE24H^1%sa3|3*iAvCKH0q z#l{*du0o5aW^<0_K||i^k}U6~8~NBQ_Zipkv+ygI$p4*F0vW96hkMS9QH~8(>#vIZ zd6=1KoN$0;pnV@JFi*F9D>Lkp1(V6Y?ZEPO;Bp4vJ8Z-zp^Akd`YvY?LHyLtZr(xg zFnPnDeE;K7d>$*KIZ`!hdv;KjNRBZRHg^>ar*>|ogpS8O8_`$~6P@r07`&&`1@I9+{b*%4`x2tdkhOXNyL!1Ku1Of2XvX!3;V`}@cIB*dHUsl3%U zH#6l&GO}Qq3{X&`_wFh{)xhtN^OpGF**kDc3lx@?#odQWAmtV1z~x#7CbY_ak_f$) z#=f36er>XC>7h}4#sZD#g!A(&jk3olrxt;0{|&Ai7;r5j%Z!|0HcWBx-vJzoueRTwY5C3cL~+u=+N z?Kg*u&28{eDvXK3o3jgh-{oEIs_LH_+L>|g$&7m^n7^J3Phz_2FpR%U#kMPxqTNKA z)WD-PR=GJYB6IEM z0g@FM#8W*?4Mse)`&UP)$r1XL;xkMOf)J-!_=Q+|E1DcNC+CzN*3Hxv=B&7K)D=j1 zwVFH|5K`l8Y;NjWUdQW)9GW0vRKq&UZ4E}vo>;c@Yb+(7aIZ@t1P2g2Q*o}{JR#e} z3pX}Lw$k7K8sXJFk-Bo~UkW&Lb_63TXRX*rWGYrk{V>vF)_?*VqR?n=mL+oiFlzj( zR*@~CqiOEUhkjd=G~%3eKvWBrXjUS>b(2Gv-ahU~U(8+JTQ+y3nW>{jPXNyLjU+|P z9Z813|2(Q@ zBe9+A*>x#Ie* zSTUss+dS}T%et;YGNV1?nE^Pfv5|eEcdvNsd$s#4Ed1$_hPGu-ah2Nfq{gH1NisQ<2uiiafU4vGWC;OrL zuQADeSCrMJY4<4KPRh5pkMT@BnUq1)Gq(>l8O`Ii?h_qgm2rTrtJ?hGh?B-uafqBI zU@+kGF(f&gOyzlCGy;qPV+GK6;=dzWB_TCRS*+|xu7dPEM#m^i`Di1m9S6>XyMuT+ z{5RM|jE&nQ7@e8dvJ;2k!caz4RY|mlyKY4b3zOl9#^tPRmrhmPe0<><*H8;jaW>-N zE=qB@%884?*!)v7ez3WOliytH^cvqG%>!FGg; z^9oy7^|KUpA^;{FdBq0^4`%I6iDe4)9t9$GJ~YU?wC7+?I`h4FS*~g<$T=GYh3~M{USF|(sIkKfWXiviYJLo< zm`!bj5kI}kNG!OdoiJ2bdA~yvgVW48>fqU?G{7smpRfhH#g;G-IkigTUM3@GHpEc~ z0{15xpylcWCEv6tlE1f)o)BatRw&?p(3&DLzel zECE`Fn##EC1J`!t(SNMS1kN16a3k^D?3M)J=*0sgJs>D(oR#X9$_QDLBZu?q4MasQ zJ3$NvwphJqaybgyHyf0_lOpU9&P$dN08EMu@OWmlt+7eo8j1Ow+$c4>>oSvaZ@4VH zh}!*K1*mfHqdM>I14$Yvg^sz))W}?mV-^Ah0ww?F4J2Y2ZU~%M<{)&Wzm73!Pkmt# z(}!*Upxvr6VP;Tl`<)+yvwy2fjby;j7y=w2lN$Zhj_mp2BNf&MUKbL~Z4qg37)oNS{L@!Q*W&5-`**MbVpX69F3KE%_i0 zBa5EJW~X$E1!?}27qQ~cOuP`d(HCEeVZjn|f=v zs$S4$OT6;0ceRax<>;Z5U5jjtd>o`mao5cLRF-Kz%D6H+EOz@nG~_36@%WhEzhzZB zL`7jAwM%{ubCjLtR50Yx!hrMU$1$6w!o4&CdUl5Bf@Tym$0v_IVL$2zel1{&qxH(4 zoNAOIm-QTq8B}mi{kly$SX@1tv^58~4LL#=Q0Zby9+rOtV;6tNnmE+#4c;sKut3MQ z8c}nSpH6kXaGt4TfaKoDv{|H5>W(SBZ{Xg~H6T355FmnLb*P>A$GJ4w~jGLk+x z-3SD$HcD9al+Q+%4gD_y4X%`JoJK-tvrVL4Av$V<5{-tZv+pc(JfO;NV>QanmCP%L z`5Qy{5kN6&^Tpm(eb%5z)g=VVD8oS^ z!$BFU=h*`co=c1dUG`qYRtM2FTZDh7VX&(^hJkZcjD3avZSKNi`UTicqm8TEm*Q ztcPYqD}%!>XM9v}MUc<0Xj?u1dOt)-_VYd2ehM^ro&i)kGza5EWc!nu0FF+4EtD8T zzN*`jMuZ&m&f8S_SaK_sMSrk7pH(Tv6R+?v$SYMgQ{${73hDYcZ;db7HxrT0yk5T} zt;R@o59J*d5Qn-mXz=85ohOcJ&2wrQt8ADCQ1>(6k_%=%l+U;p^?_EP!8VA&Kk%Or zTqO++N*NTxKf-L1vmk!Y!T+ie^C$8xgrXN@nWN&z=iO0FX@%(^d_&a;vIxnniF2xJ zle=sW?BAgO%-O}{6heDAn_&DQNODNj=@+5|h``g{L1vFknuL449$VTaS=X}`TYhni zBga~hVy5sxa+6~Ush$%@8k3|;C$G{3@pC~R4m$8k=!6$wLB!S?%

1w(u&=T^U3A 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

1w(u&=T^U3A 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

1w(u&=T^U3A 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 SRYt$x0Hnm^MQcP1gZ>W StatisticsSummaryResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/yf-handset-app/photog/analyse/user", + queryItems: [ + URLQueryItem(name: "scenic_id", value: String(scenicId)), + URLQueryItem(name: "range", value: range), + ] + ) + ) + } + + /// 摄影师日明细分页。 + func photographerDaily( + scenicId: Int, + startTime: String, + endTime: String, + page: Int + ) async throws -> ListDataResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/yf-handset-app/photog/analyse/user/daily", + queryItems: dailyQueryItems( + idName: "scenic_id", + idValue: scenicId, + startTime: startTime, + endTime: endTime, + page: page + ) + ) + ) + } + + /// 景区管理员汇总统计。 + func scenicAdminSummary(scenicId: Int, range: String) async throws -> StatisticsSummaryResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/app/scenic-admin/analyse", + queryItems: [ + URLQueryItem(name: "scenic_id", value: String(scenicId)), + URLQueryItem(name: "range", value: range), + ] + ) + ) + } + + /// 景区管理员日明细分页。 + func scenicAdminDaily( + scenicId: Int, + startTime: String, + endTime: String, + page: Int + ) async throws -> ListDataResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/app/scenic-admin/analyse/daily", + queryItems: dailyQueryItems( + idName: "scenic_id", + idValue: scenicId, + startTime: startTime, + endTime: endTime, + page: page + ) + ) + ) + } + + /// 店铺管理员汇总统计。 + func storeSummary(storeId: Int, range: String) async throws -> StatisticsSummaryResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/app/store/analyse", + queryItems: [ + URLQueryItem(name: "store_id", value: String(storeId)), + URLQueryItem(name: "range", value: range), + ] + ) + ) + } + + /// 店铺管理员日明细分页。 + func storeDaily( + storeId: Int, + startTime: String, + endTime: String, + page: Int + ) async throws -> ListDataResponse { + try await client.send( + APIRequest( + method: .get, + path: "/api/app/store/analyse/daily", + queryItems: dailyQueryItems( + idName: "store_id", + idValue: storeId, + startTime: startTime, + endTime: endTime, + page: page + ) + ) + ) + } + + private func dailyQueryItems( + idName: String, + idValue: Int, + startTime: String, + endTime: String, + page: Int + ) -> [URLQueryItem] { + [ + URLQueryItem(name: idName, value: String(idValue)), + URLQueryItem(name: "start_time", value: startTime), + URLQueryItem(name: "end_time", value: endTime), + URLQueryItem(name: "page", value: String(page)), + URLQueryItem(name: "paeg_size", value: String(pageSize)), + ] + } +} diff --git a/suixinkan/Features/Statistics/Models/StatisticsModels.swift b/suixinkan/Features/Statistics/Models/StatisticsModels.swift new file mode 100644 index 0000000..497113b --- /dev/null +++ b/suixinkan/Features/Statistics/Models/StatisticsModels.swift @@ -0,0 +1,134 @@ +// +// StatisticsModels.swift +// suixinkan +// + +import Foundation + +/// 数据统计汇总响应,对齐 Android `StatisticsResponse`。 +struct StatisticsSummaryResponse: Decodable, Equatable { + let orderAmountSum: String + let orderCount: Int + let orderPriceAvg: String + let receivedAmountSum: String + let refundAmountSum: String + + enum CodingKeys: String, CodingKey { + case orderAmountSum = "order_amount_sum" + case orderCount = "order_count" + case orderPriceAvg = "order_price_avg" + case receivedAmountSum = "received_amount_sum" + case refundAmountSum = "refund_amount_sum" + } + + init( + orderAmountSum: String = "", + orderCount: Int = 0, + orderPriceAvg: String = "", + receivedAmountSum: String = "", + refundAmountSum: String = "" + ) { + self.orderAmountSum = orderAmountSum + self.orderCount = orderCount + self.orderPriceAvg = orderPriceAvg + self.receivedAmountSum = receivedAmountSum + self.refundAmountSum = refundAmountSum + } + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + orderAmountSum = try container.decodeIfPresent(String.self, forKey: .orderAmountSum) ?? "" + orderCount = try container.decodeIfPresent(Int.self, forKey: .orderCount) ?? 0 + orderPriceAvg = try container.decodeIfPresent(String.self, forKey: .orderPriceAvg) ?? "" + receivedAmountSum = try container.decodeIfPresent(String.self, forKey: .receivedAmountSum) ?? "" + refundAmountSum = Self.decodeAmountString(from: container, forKey: .refundAmountSum) + } + + private static func decodeAmountString( + from container: KeyedDecodingContainer, + forKey key: CodingKeys + ) -> String { + if let value = try? container.decode(String.self, forKey: key) { + return value + } + if let value = try? container.decode(Double.self, forKey: key) { + return String(value) + } + if let value = try? container.decode(Int.self, forKey: key) { + return String(value) + } + return "" + } +} + +/// 数据统计日明细行,对齐 Android `StatisticsPageEntity`。 +struct StatisticsDailyItem: Decodable, Hashable { + let date: String + let orderCount: Int + let orderPrice: String + let refund: String + let received: String + + enum CodingKeys: String, CodingKey { + case date + case orderCount = "order_count" + case orderPrice = "order_price" + case refund + case received + } + + init( + date: String = "", + orderCount: Int = 0, + orderPrice: String = "", + refund: String = "", + received: String = "" + ) { + self.date = date + self.orderCount = orderCount + self.orderPrice = orderPrice + self.refund = refund + self.received = received + } +} + +/// 分页列表响应,对齐 Android `ListDataResponse`。 +struct ListDataResponse: Decodable { + let total: Int + let data: [T] + + init(total: Int = 0, data: [T] = []) { + self.total = total + self.data = data + } +} + +/// 汇总区周期选项,对齐 Android 顶部 chip。 +enum StatisticsSummaryPeriod: String, CaseIterable { + case today = "今日" + case yesterday = "昨日" + case last7Days = "7日" + case thisMonth = "本月" + + /// 汇总 API 的 `range` 参数值。 + var rangeValue: String { + switch self { + case .today: "1" + case .yesterday: "2" + case .last7Days: "3" + case .thisMonth: "4" + } + } + + static func fromDisplayName(_ name: String) -> StatisticsSummaryPeriod? { + StatisticsSummaryPeriod(rawValue: name) + } +} + +/// 列表区日期快捷选项,对齐 Android `DateRangeBottomSheet` 快捷按钮。 +enum StatisticsRangeShortcut: String, CaseIterable { + case today = "今日" + case yesterday = "昨日" + case last7Days = "7日" + case all = "全部" +} diff --git a/suixinkan/Features/Statistics/ViewModels/StatisticsViewModel.swift b/suixinkan/Features/Statistics/ViewModels/StatisticsViewModel.swift new file mode 100644 index 0000000..644c53e --- /dev/null +++ b/suixinkan/Features/Statistics/ViewModels/StatisticsViewModel.swift @@ -0,0 +1,290 @@ +// +// StatisticsViewModel.swift +// suixinkan +// + +import Foundation + +/// 数据 Tab ViewModel,对齐 Android `StatisticsViewModel`。 +final class StatisticsViewModel { + + private(set) var statistics: StatisticsSummaryResponse? + private(set) var selectedPeriod = StatisticsSummaryPeriod.today.rawValue + private(set) var selectedPeriodTime = "" + private(set) var statisticsList: [StatisticsDailyItem] = [] + private(set) var statisticsRangeText = "今日" + private(set) var rangeStartDate: Date? + private(set) var rangeEndDate: Date? + private(set) var isRefreshing = false + private(set) var canLoadMore = false + private(set) var isLoadingSummary = false + + var onStateChange: (() -> Void)? + var onShowMessage: ((String) -> Void)? + + private var currentPage = 1 + private var totalCount = 0 + private var startTime = "" + private var endTime = "" + + private let apiDateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .gregorian) + formatter.locale = Locale(identifier: "zh_CN") + formatter.dateFormat = "yyyy-MM-dd" + return formatter + }() + + private let uiDateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .gregorian) + formatter.locale = Locale(identifier: "zh_CN") + formatter.dateFormat = "yyyy/MM/dd" + return formatter + }() + + private var rangeMap: [String: String] { + Dictionary(uniqueKeysWithValues: StatisticsSummaryPeriod.allCases.map { ($0.rawValue, $0.rangeValue) }) + } + + /// 首次进入 Tab 时初始化汇总与列表。 + func initStatistics(api: StatisticsAPI) async { + await loadStatistics(StatisticsSummaryPeriod.today.rawValue, api: api) + await updateRangeByShortcut(StatisticsRangeShortcut.today.rawValue, api: api) + } + + /// 切换汇总周期 chip。 + func selectPeriod(_ period: String, api: StatisticsAPI) async { + await loadStatistics(period, api: api) + } + + /// 加载汇总数据。 + func loadStatistics(_ period: String, api: StatisticsAPI) async { + isLoadingSummary = true + selectedPeriod = period + updateSelectedPeriodTime(period) + notifyStateChange() + + let range = rangeMap[period] ?? StatisticsSummaryPeriod.today.rangeValue + defer { + isLoadingSummary = false + notifyStateChange() + } + + do { + statistics = try await fetchSummary(range: range, api: api) + notifyStateChange() + } catch is CancellationError { + return + } catch { + onShowMessage?(error.localizedDescription) + } + } + + /// 下拉刷新列表。 + func refreshStatistics(api: StatisticsAPI) async { + currentPage = 1 + isRefreshing = true + notifyStateChange() + await fetchStatisticsList(api: api) + } + + /// 滚动加载更多。 + func loadMore(api: StatisticsAPI) async { + guard statisticsList.count < totalCount else { return } + currentPage += 1 + await fetchStatisticsList(api: api) + } + + /// 列表区快捷日期。 + func updateRangeByShortcut(_ shortcut: String, api: StatisticsAPI) async { + let today = startOfToday() + + switch shortcut { + case StatisticsRangeShortcut.today.rawValue: + await applyRange(start: today, end: today, label: StatisticsRangeShortcut.today.rawValue, api: api) + case StatisticsRangeShortcut.yesterday.rawValue: + let yesterday = calendar.date(byAdding: .day, value: -1, to: today) ?? today + await applyRange(start: yesterday, end: yesterday, label: StatisticsRangeShortcut.yesterday.rawValue, api: api) + case StatisticsRangeShortcut.last7Days.rawValue: + let start = calendar.date(byAdding: .day, value: -6, to: today) ?? today + await applyRange(start: start, end: today, label: StatisticsRangeShortcut.last7Days.rawValue, api: api) + case StatisticsRangeShortcut.all.rawValue: + startTime = "" + endTime = "" + rangeStartDate = nil + rangeEndDate = nil + statisticsRangeText = StatisticsRangeShortcut.all.rawValue + notifyStateChange() + await refreshStatistics(api: api) + default: + break + } + } + + /// 日历自定义区间。 + func updateRangeByCalendar(start: Date, end: Date, api: StatisticsAPI) async { + await applyRange(start: startOfDay(start), end: startOfDay(end), label: nil, api: api) + } + + /// 供测试读取当前列表查询起始时间。 + var listStartTime: String { startTime } + + /// 供测试读取当前列表查询结束时间。 + var listEndTime: String { endTime } + + /// 供测试读取当前页码。 + var listCurrentPage: Int { currentPage } + + /// 供测试读取 range 映射。 + func rangeValue(for period: String) -> String { + rangeMap[period] ?? StatisticsSummaryPeriod.today.rangeValue + } + + /// 供测试生成周期日期文案。 + func formattedSelectedPeriodTime(for period: String) -> String { + let previous = selectedPeriod + selectedPeriod = period + updateSelectedPeriodTime(period) + let result = selectedPeriodTime + selectedPeriod = previous + return result + } + + private func fetchStatisticsList(api: StatisticsAPI) async { + defer { + isRefreshing = false + notifyStateChange() + } + + do { + let response = try await fetchDailyList(api: api) + totalCount = response.total + if currentPage == 1 { + statisticsList = response.data + } else { + statisticsList.append(contentsOf: response.data) + } + canLoadMore = statisticsList.count < totalCount + notifyStateChange() + } catch is CancellationError { + return + } catch { + onShowMessage?(error.localizedDescription) + } + } + + private func applyRange(start: Date, end: Date, label: String?, api: StatisticsAPI) async { + startTime = apiDateFormatter.string(from: start) + endTime = apiDateFormatter.string(from: end) + rangeStartDate = start + rangeEndDate = end + statisticsRangeText = label ?? "\(uiDateFormatter.string(from: start))至\(uiDateFormatter.string(from: end))" + notifyStateChange() + await refreshStatistics(api: api) + } + + private func updateSelectedPeriodTime(_ period: String) { + let today = startOfToday() + let (start, end): (Date, Date) + + switch period { + case StatisticsSummaryPeriod.today.rawValue: + (start, end) = (today, today) + case StatisticsSummaryPeriod.yesterday.rawValue: + let yesterday = calendar.date(byAdding: .day, value: -1, to: today) ?? today + (start, end) = (yesterday, yesterday) + case StatisticsSummaryPeriod.last7Days.rawValue: + let startDate = calendar.date(byAdding: .day, value: -6, to: today) ?? today + (start, end) = (startDate, today) + case StatisticsSummaryPeriod.thisMonth.rawValue: + let components = calendar.dateComponents([.year, .month], from: today) + let firstDay = calendar.date(from: components) ?? today + (start, end) = (firstDay, today) + default: + (start, end) = (today, today) + } + + selectedPeriodTime = "\(uiDateFormatter.string(from: start))至\(uiDateFormatter.string(from: end))" + } + + private func fetchSummary(range: String, api: StatisticsAPI) async throws -> StatisticsSummaryResponse { + switch currentRole { + case .storeAdmin: + let storeId = try resolveStoreId() + return try await api.storeSummary(storeId: storeId, range: range) + case .scenicAdmin: + return try await api.scenicAdminSummary(scenicId: AppStore.shared.currentScenicId, range: range) + default: + return try await api.photographerSummary(scenicId: AppStore.shared.currentScenicId, range: range) + } + } + + private func fetchDailyList(api: StatisticsAPI) async throws -> ListDataResponse { + switch currentRole { + case .storeAdmin: + let storeId = try resolveStoreId() + return try await api.storeDaily( + storeId: storeId, + startTime: startTime, + endTime: endTime, + page: currentPage + ) + case .scenicAdmin: + return try await api.scenicAdminDaily( + scenicId: AppStore.shared.currentScenicId, + startTime: startTime, + endTime: endTime, + page: currentPage + ) + default: + return try await api.photographerDaily( + scenicId: AppStore.shared.currentScenicId, + startTime: startTime, + endTime: endTime, + page: currentPage + ) + } + } + + private var currentRole: AppRoleCode { + AppStore.shared.currentAppRole ?? .photographer + } + + private func resolveStoreId() throws -> Int { + let storeId = AppStore.shared.currentStoreId + guard storeId > 0 else { + throw StatisticsFlowError.missingStore + } + return storeId + } + + private var calendar: Calendar { + var calendar = Calendar(identifier: .gregorian) + calendar.locale = Locale(identifier: "zh_CN") + calendar.timeZone = TimeZone.current + return calendar + } + + private func startOfToday() -> Date { + startOfDay(Date()) + } + + private func startOfDay(_ date: Date) -> Date { + calendar.startOfDay(for: date) + } + + private func notifyStateChange() { + onStateChange?() + } +} + +enum StatisticsFlowError: LocalizedError { + case missingStore + + var errorDescription: String? { + switch self { + case .missingStore: "请先选择店铺" + } + } +} diff --git a/suixinkan/UI/Statistics/StatisticsDailyCell.swift b/suixinkan/UI/Statistics/StatisticsDailyCell.swift new file mode 100644 index 0000000..fd1baec --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsDailyCell.swift @@ -0,0 +1,108 @@ +// +// StatisticsDailyCell.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计日明细行,对齐 Android `DailyDataBox`。 +final class StatisticsDailyCell: UITableViewCell { + + static let reuseIdentifier = "StatisticsDailyCell" + + private let dateLabel = UILabel() + private let orderCountTitle = UILabel() + private let orderCountValue = UILabel() + private let averageTitle = UILabel() + private let averageValue = UILabel() + private let refundTitle = UILabel() + private let refundValue = UILabel() + private let receivedTitle = UILabel() + private let receivedValue = UILabel() + private let divider = UIView() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + setupUI() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(with item: StatisticsDailyItem, showsDivider: Bool) { + dateLabel.text = item.date + orderCountValue.text = "\(item.orderCount)" + averageValue.text = "¥\(item.orderPrice)" + refundValue.text = "¥\(item.refund)" + receivedValue.text = "¥\(item.received)" + divider.isHidden = !showsDivider + } + + private func setupUI() { + selectionStyle = .none + backgroundColor = .clear + + dateLabel.font = .systemFont(ofSize: 14) + dateLabel.textColor = .black + + let metricColor = UIColor(hex: 0x4B5563) + [orderCountTitle, averageTitle, refundTitle, receivedTitle].forEach { + $0.font = .systemFont(ofSize: 14) + $0.textColor = metricColor + } + orderCountTitle.text = "订单数" + averageTitle.text = "客单价" + refundTitle.text = "退款" + receivedTitle.text = "实收" + + [orderCountValue, averageValue].forEach { + $0.font = .systemFont(ofSize: 14, weight: .semibold) + $0.textColor = .black + } + refundValue.font = .systemFont(ofSize: 14, weight: .semibold) + refundValue.textColor = UIColor(hex: 0xEF4444) + receivedValue.font = .systemFont(ofSize: 14, weight: .semibold) + receivedValue.textColor = UIColor(hex: 0x22C55E) + + divider.backgroundColor = UIColor(hex: 0xF4F4F4) + + let metricsRow = UIStackView() + metricsRow.axis = .horizontal + metricsRow.distribution = .fillEqually + metricsRow.alignment = .fill + metricsRow.spacing = 8 + + metricsRow.addArrangedSubview(metricColumn(title: orderCountTitle, value: orderCountValue)) + metricsRow.addArrangedSubview(metricColumn(title: averageTitle, value: averageValue)) + metricsRow.addArrangedSubview(metricColumn(title: refundTitle, value: refundValue)) + metricsRow.addArrangedSubview(metricColumn(title: receivedTitle, value: receivedValue)) + + contentView.addSubview(dateLabel) + contentView.addSubview(metricsRow) + contentView.addSubview(divider) + + dateLabel.snp.makeConstraints { make in + make.top.leading.trailing.equalToSuperview().inset(UIEdgeInsets(top: 12, left: 0, bottom: 0, right: 0)) + } + metricsRow.snp.makeConstraints { make in + make.top.equalTo(dateLabel.snp.bottom).offset(12) + make.leading.trailing.equalToSuperview() + make.bottom.equalToSuperview().inset(12) + } + divider.snp.makeConstraints { make in + make.leading.trailing.bottom.equalToSuperview() + make.height.equalTo(1) + } + } + + private func metricColumn(title: UILabel, value: UILabel) -> UIStackView { + let stack = UIStackView(arrangedSubviews: [title, value]) + stack.axis = .vertical + stack.spacing = 4 + stack.alignment = .leading + return stack + } +} diff --git a/suixinkan/UI/Statistics/StatisticsDailyListView.swift b/suixinkan/UI/Statistics/StatisticsDailyListView.swift new file mode 100644 index 0000000..b8894e0 --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsDailyListView.swift @@ -0,0 +1,174 @@ +// +// StatisticsDailyListView.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计日明细列表区域,含时间范围选择与分页列表。 +final class StatisticsDailyListView: UIView { + + var onRangeTap: (() -> Void)? + var onRefresh: (() -> Void)? + var onLoadMore: (() -> Void)? + + private let titleLabel = UILabel() + private let rangeButton = UIControl() + private let rangeLabel = UILabel() + private let arrowView = UIImageView() + private let divider = UIView() + private let tableView = UITableView(frame: .zero, style: .plain) + private let refreshControl = UIRefreshControl() + private let footerIndicator = UIActivityIndicatorView(style: .medium) + + private var items: [StatisticsDailyItem] = [] + private var showsLoadMoreFooter = false + + override init(frame: CGRect) { + super.init(frame: frame) + setupUI() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func apply(rangeText: String, items: [StatisticsDailyItem], isRefreshing: Bool, canLoadMore: Bool) { + rangeLabel.text = rangeText + self.items = items + showsLoadMoreFooter = canLoadMore + tableView.reloadData() + updateFooterVisibility() + if !isRefreshing { + refreshControl.endRefreshing() + } + } + + private func setupUI() { + backgroundColor = .white + layer.cornerRadius = 12 + clipsToBounds = true + + titleLabel.text = "时间范围" + titleLabel.font = .systemFont(ofSize: 14, weight: .bold) + titleLabel.textColor = .black + + rangeButton.backgroundColor = UIColor(hex: 0xF4F4F4) + rangeButton.layer.cornerRadius = 4 + rangeButton.addTarget(self, action: #selector(rangeTapped), for: .touchUpInside) + + rangeLabel.font = .systemFont(ofSize: 14) + rangeLabel.textColor = UIColor(hex: 0x4B5563) + rangeLabel.text = "今日" + + arrowView.image = UIImage(systemName: "chevron.down") + arrowView.tintColor = UIColor(hex: 0x4B5563) + arrowView.contentMode = .scaleAspectFit + + divider.backgroundColor = UIColor(hex: 0xF4F4F4) + + tableView.backgroundColor = .clear + tableView.separatorStyle = .none + tableView.dataSource = self + tableView.delegate = self + tableView.register(StatisticsDailyCell.self, forCellReuseIdentifier: StatisticsDailyCell.reuseIdentifier) + tableView.refreshControl = refreshControl + refreshControl.addTarget(self, action: #selector(refreshPulled), for: .valueChanged) + + footerIndicator.hidesWhenStopped = true + + addSubview(titleLabel) + addSubview(rangeButton) + rangeButton.addSubview(rangeLabel) + rangeButton.addSubview(arrowView) + addSubview(divider) + addSubview(tableView) + + titleLabel.snp.makeConstraints { make in + make.top.leading.equalToSuperview().inset(16) + } + rangeButton.snp.makeConstraints { make in + make.centerY.equalTo(titleLabel) + make.trailing.equalToSuperview().inset(16) + make.height.equalTo(36) + make.width.greaterThanOrEqualTo(166) + } + rangeLabel.snp.makeConstraints { make in + make.leading.equalToSuperview().inset(12) + make.centerY.equalToSuperview() + make.trailing.lessThanOrEqualTo(arrowView.snp.leading).offset(-8) + } + arrowView.snp.makeConstraints { make in + make.trailing.equalToSuperview().inset(12) + make.centerY.equalToSuperview() + make.size.equalTo(16) + } + divider.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(12) + make.leading.trailing.equalToSuperview().inset(16) + make.height.equalTo(1) + } + tableView.snp.makeConstraints { make in + make.top.equalTo(divider.snp.bottom).offset(12) + make.leading.trailing.bottom.equalToSuperview().inset(16) + } + } + + @objc private func rangeTapped() { + onRangeTap?() + } + + @objc private func refreshPulled() { + onRefresh?() + } + + private func updateFooterVisibility() { + if showsLoadMoreFooter { + footerIndicator.startAnimating() + tableView.tableFooterView = footerContainer() + } else { + footerIndicator.stopAnimating() + tableView.tableFooterView = UIView(frame: .zero) + } + } + + private func footerContainer() -> UIView { + let container = UIView(frame: CGRect(x: 0, y: 0, width: bounds.width, height: 56)) + container.addSubview(footerIndicator) + footerIndicator.center = CGPoint(x: container.bounds.midX, y: container.bounds.midY) + footerIndicator.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin] + return container + } +} + +extension StatisticsDailyListView: UITableViewDataSource, UITableViewDelegate { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + items.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard + let cell = tableView.dequeueReusableCell( + withIdentifier: StatisticsDailyCell.reuseIdentifier, + for: indexPath + ) as? StatisticsDailyCell + else { + return UITableViewCell() + } + cell.configure(with: items[indexPath.row], showsDivider: indexPath.row < items.count - 1) + return cell + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + guard showsLoadMoreFooter else { return } + let offsetY = scrollView.contentOffset.y + let contentHeight = scrollView.contentSize.height + let frameHeight = scrollView.frame.size.height + guard contentHeight > frameHeight else { return } + if offsetY > contentHeight - frameHeight - 120 { + onLoadMore?() + } + } +} diff --git a/suixinkan/UI/Statistics/StatisticsDateRangeViewController.swift b/suixinkan/UI/Statistics/StatisticsDateRangeViewController.swift new file mode 100644 index 0000000..4441db3 --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsDateRangeViewController.swift @@ -0,0 +1,303 @@ +// +// StatisticsDateRangeViewController.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计日期范围选择 Sheet,对齐 Android `DateRangeBottomSheet`。 +final class StatisticsDateRangeViewController: UIViewController { + + var onShortcutSelected: ((String) -> Void)? + var onRangeSelected: ((Date, Date) -> Void)? + + private var currentMonth: Date + private var tempStart: Date? + private var tempEnd: Date? + private var selectedShortcut: String? + + private let shortcutStack = UIStackView() + private let monthTitleLabel = UILabel() + private let weekdayStack = UIStackView() + private let daysCollectionView: UICollectionView + private var shortcutButtons: [StatisticsPeriodButton] = [] + + private let calendar: Calendar = { + var calendar = Calendar(identifier: .gregorian) + calendar.locale = Locale(identifier: "zh_CN") + calendar.firstWeekday = 2 + return calendar + }() + + init(rangeStart: Date?, rangeEnd: Date?) { + self.tempStart = rangeStart + self.tempEnd = rangeEnd + self.currentMonth = rangeStart ?? Date() + + let layout = UICollectionViewFlowLayout() + layout.minimumInteritemSpacing = 0 + layout.minimumLineSpacing = 8 + daysCollectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + + let today = Calendar.current.startOfDay(for: Date()) + let initCalendar = Calendar(identifier: .gregorian) + if rangeStart == nil, rangeEnd == nil { + selectedShortcut = StatisticsRangeShortcut.all.rawValue + } else if rangeStart == today, rangeEnd == today { + selectedShortcut = StatisticsRangeShortcut.today.rawValue + } else if + let start = rangeStart, + let end = rangeEnd, + start == initCalendar.date(byAdding: .day, value: -1, to: today), + end == initCalendar.date(byAdding: .day, value: -1, to: today) { + selectedShortcut = StatisticsRangeShortcut.yesterday.rawValue + } else if + let start = rangeStart, + let end = rangeEnd, + start == initCalendar.date(byAdding: .day, value: -6, to: today), + end == today { + selectedShortcut = StatisticsRangeShortcut.last7Days.rawValue + } + + super.init(nibName: nil, bundle: nil) + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + setupUI() + updateMonthTitle() + } + + private func setupUI() { + shortcutStack.axis = .horizontal + shortcutStack.distribution = .equalSpacing + + StatisticsRangeShortcut.allCases.forEach { shortcut in + let button = StatisticsPeriodButton() + button.periodTitle = shortcut.rawValue + button.isSelected = shortcut.rawValue == selectedShortcut + button.addTarget(self, action: #selector(shortcutTapped(_:)), for: .touchUpInside) + shortcutButtons.append(button) + shortcutStack.addArrangedSubview(button) + } + + let previousButton = UIButton(type: .system) + previousButton.setImage(UIImage(systemName: "chevron.left"), for: .normal) + previousButton.tintColor = UIColor(hex: 0x9CA3AF) + previousButton.addTarget(self, action: #selector(previousMonth), for: .touchUpInside) + + let nextButton = UIButton(type: .system) + nextButton.setImage(UIImage(systemName: "chevron.right"), for: .normal) + nextButton.tintColor = UIColor(hex: 0x9CA3AF) + nextButton.addTarget(self, action: #selector(nextMonth), for: .touchUpInside) + + monthTitleLabel.font = .systemFont(ofSize: 16, weight: .semibold) + monthTitleLabel.textAlignment = .center + + let monthRow = UIStackView(arrangedSubviews: [previousButton, monthTitleLabel, nextButton]) + monthRow.axis = .horizontal + monthRow.alignment = .center + monthRow.distribution = .equalCentering + + weekdayStack.axis = .horizontal + weekdayStack.distribution = .fillEqually + ["一", "二", "三", "四", "五", "六", "日"].forEach { title in + let label = UILabel() + label.text = title + label.font = .systemFont(ofSize: 12) + label.textColor = UIColor(hex: 0x9CA3AF) + label.textAlignment = .center + weekdayStack.addArrangedSubview(label) + } + + daysCollectionView.backgroundColor = .clear + daysCollectionView.dataSource = self + daysCollectionView.delegate = self + daysCollectionView.register(DateCell.self, forCellWithReuseIdentifier: DateCell.reuseIdentifier) + + view.addSubview(shortcutStack) + view.addSubview(monthRow) + view.addSubview(weekdayStack) + view.addSubview(daysCollectionView) + + shortcutStack.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(12) + make.leading.trailing.equalToSuperview().inset(16) + } + monthRow.snp.makeConstraints { make in + make.top.equalTo(shortcutStack.snp.bottom).offset(12) + make.leading.trailing.equalToSuperview().inset(16) + make.height.equalTo(32) + } + previousButton.snp.makeConstraints { make in + make.size.equalTo(24) + } + nextButton.snp.makeConstraints { make in + make.size.equalTo(24) + } + weekdayStack.snp.makeConstraints { make in + make.top.equalTo(monthRow.snp.bottom).offset(8) + make.leading.trailing.equalToSuperview().inset(16) + } + daysCollectionView.snp.makeConstraints { make in + make.top.equalTo(weekdayStack.snp.bottom).offset(8) + make.leading.trailing.equalToSuperview().inset(16) + make.bottom.equalTo(view.safeAreaLayoutGuide).inset(16) + make.height.equalTo(240) + } + } + + @objc private func shortcutTapped(_ sender: StatisticsPeriodButton) { + onShortcutSelected?(sender.periodTitle) + } + + @objc private func previousMonth() { + currentMonth = calendar.date(byAdding: .month, value: -1, to: currentMonth) ?? currentMonth + updateMonthTitle() + daysCollectionView.reloadData() + } + + @objc private func nextMonth() { + currentMonth = calendar.date(byAdding: .month, value: 1, to: currentMonth) ?? currentMonth + updateMonthTitle() + daysCollectionView.reloadData() + } + + private func updateMonthTitle() { + let components = calendar.dateComponents([.year, .month], from: currentMonth) + monthTitleLabel.text = "\(components.year ?? 0)年\(components.month ?? 0)月" + } + + private func monthDates() -> [Date?] { + guard + let monthStart = calendar.date(from: calendar.dateComponents([.year, .month], from: currentMonth)), + let dayRange = calendar.range(of: .day, in: .month, for: monthStart) + else { + return [] + } + + let firstWeekday = calendar.component(.weekday, from: monthStart) + let leadingEmpty = (firstWeekday + 5) % 7 + var dates: [Date?] = Array(repeating: nil, count: leadingEmpty) + for day in dayRange { + if let date = calendar.date(byAdding: .day, value: day - 1, to: monthStart) { + dates.append(date) + } + } + while dates.count % 7 != 0 { + dates.append(nil) + } + return dates + } + + private func handleDateTap(_ date: Date) { + selectedShortcut = nil + shortcutButtons.forEach { $0.isSelected = false } + + if tempStart == nil || (tempStart != nil && tempEnd != nil) { + tempStart = date + tempEnd = nil + } else if let start = tempStart { + if date < start { + tempEnd = start + tempStart = date + } else { + tempEnd = date + } + if let start = tempStart, let end = tempEnd { + onRangeSelected?(start, end) + } + } + daysCollectionView.reloadData() + } + + private func isInRange(_ date: Date) -> Bool { + guard let start = tempStart else { return false } + if let end = tempEnd { + return date >= min(start, end) && date <= max(start, end) + } + return calendar.isDate(date, inSameDayAs: start) + } + + private final class DateCell: UICollectionViewCell { + static let reuseIdentifier = "StatisticsDateCell" + + private let label = UILabel() + + override init(frame: CGRect) { + super.init(frame: frame) + label.textAlignment = .center + label.font = .systemFont(ofSize: 14) + contentView.addSubview(label) + label.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + contentView.layer.cornerRadius = 16 + contentView.clipsToBounds = true + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(text: String?, selected: Bool, inRange: Bool) { + label.text = text + if selected { + contentView.backgroundColor = AppColor.primary + label.textColor = .white + } else if inRange { + contentView.backgroundColor = UIColor(hex: 0xEFF6FF) + label.textColor = AppColor.primary + } else { + contentView.backgroundColor = .clear + label.textColor = .black + } + } + } +} + +extension StatisticsDateRangeViewController: UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + monthDates().count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell( + withReuseIdentifier: DateCell.reuseIdentifier, + for: indexPath + ) as! DateCell + let dates = monthDates() + guard indexPath.item < dates.count, let date = dates[indexPath.item] else { + cell.configure(text: nil, selected: false, inRange: false) + return cell + } + let day = calendar.component(.day, from: date) + let selected = (tempStart != nil && calendar.isDate(date, inSameDayAs: tempStart!)) + || (tempEnd != nil && calendar.isDate(date, inSameDayAs: tempEnd!)) + cell.configure(text: "\(day)", selected: selected, inRange: isInRange(date)) + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let dates = monthDates() + guard indexPath.item < dates.count, let date = dates[indexPath.item] else { return } + handleDateTap(date) + } + + func collectionView( + _ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + sizeForItemAt indexPath: IndexPath + ) -> CGSize { + let width = collectionView.bounds.width / 7 + return CGSize(width: width, height: 32) + } +} diff --git a/suixinkan/UI/Statistics/StatisticsPeriodButton.swift b/suixinkan/UI/Statistics/StatisticsPeriodButton.swift new file mode 100644 index 0000000..f58225f --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsPeriodButton.swift @@ -0,0 +1,43 @@ +// +// StatisticsPeriodButton.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计周期 pill 按钮,对齐 Android `PeriodButton`。 +final class StatisticsPeriodButton: UIButton { + + var periodTitle: String = "" { + didSet { setTitle(periodTitle, for: .normal) } + } + + override var isSelected: Bool { + didSet { updateAppearance() } + } + + override init(frame: CGRect) { + super.init(frame: frame) + setupUI() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setupUI() { + titleLabel?.font = .systemFont(ofSize: 14, weight: .medium) + layer.cornerRadius = 18 + clipsToBounds = true + contentEdgeInsets = UIEdgeInsets(top: 6, left: 20, bottom: 6, right: 20) + updateAppearance() + } + + private func updateAppearance() { + backgroundColor = isSelected ? UIColor(hex: 0x3B82F6) : UIColor(hex: 0xF3F4F6) + setTitleColor(isSelected ? .white : UIColor(hex: 0x4B5563), for: .normal) + titleLabel?.font = .systemFont(ofSize: 14, weight: isSelected ? .semibold : .medium) + } +} diff --git a/suixinkan/UI/Statistics/StatisticsStatCardView.swift b/suixinkan/UI/Statistics/StatisticsStatCardView.swift new file mode 100644 index 0000000..710e22c --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsStatCardView.swift @@ -0,0 +1,67 @@ +// +// StatisticsStatCardView.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计指标卡,对齐 Android `StatCard`。 +final class StatisticsStatCardView: UIView { + + private let titleLabel = UILabel() + private let valueLabel = UILabel() + private let iconView = UIImageView() + + init(title: String, valueColor: UIColor, backgroundColor: UIColor, iconName: String) { + super.init(frame: .zero) + titleLabel.text = title + valueLabel.textColor = valueColor + self.backgroundColor = backgroundColor + iconView.image = UIImage(named: iconName) + setupUI() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(value: String) { + valueLabel.text = value + } + + private func setupUI() { + layer.cornerRadius = 12 + clipsToBounds = true + + titleLabel.font = .systemFont(ofSize: 14) + titleLabel.textColor = UIColor.black.withAlphaComponent(0.6) + + valueLabel.font = .systemFont(ofSize: 18, weight: .bold) + valueLabel.numberOfLines = 1 + valueLabel.adjustsFontSizeToFitWidth = true + valueLabel.minimumScaleFactor = 0.8 + + iconView.contentMode = .scaleAspectFit + + addSubview(titleLabel) + addSubview(valueLabel) + addSubview(iconView) + + titleLabel.snp.makeConstraints { make in + make.top.leading.equalToSuperview().inset(12) + make.trailing.lessThanOrEqualTo(iconView.snp.leading).offset(-8) + } + valueLabel.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(3) + make.leading.bottom.equalToSuperview().inset(12) + make.trailing.lessThanOrEqualTo(iconView.snp.leading).offset(-8) + } + iconView.snp.makeConstraints { make in + make.trailing.equalToSuperview().inset(8) + make.centerY.equalToSuperview() + make.size.equalTo(48) + } + } +} diff --git a/suixinkan/UI/Statistics/StatisticsSummaryCardView.swift b/suixinkan/UI/Statistics/StatisticsSummaryCardView.swift new file mode 100644 index 0000000..ad13826 --- /dev/null +++ b/suixinkan/UI/Statistics/StatisticsSummaryCardView.swift @@ -0,0 +1,128 @@ +// +// StatisticsSummaryCardView.swift +// suixinkan +// + +import SnapKit +import UIKit + +/// 数据统计汇总卡片,包含日期行、周期 chip 与 5 张指标卡。 +final class StatisticsSummaryCardView: UIView { + + var onPeriodSelected: ((String) -> Void)? + + private let datePrefixLabel = UILabel() + private let dateValueLabel = UILabel() + private let periodStack = UIStackView() + private var periodButtons: [StatisticsPeriodButton] = [] + + private let totalAmountCard = StatisticsStatCardView( + title: "订单总金额", + valueColor: UIColor(hex: 0x22C55E), + backgroundColor: UIColor(hex: 0xF0FDF4), + iconName: "icon_data_statistics_total_amount" + ) + private let totalOrderCard = StatisticsStatCardView( + title: "订单总数", + valueColor: UIColor(hex: 0x7F00FF), + backgroundColor: UIColor(hex: 0xEBD8FF), + iconName: "icon_data_statistics_total_order" + ) + private let receivedCard = StatisticsStatCardView( + title: "实收金额", + valueColor: UIColor(hex: 0x22C55E), + backgroundColor: UIColor(hex: 0xFFF0E2), + iconName: "icon_data_statistics_get_amount" + ) + private let averageCard = StatisticsStatCardView( + title: "客单价", + valueColor: UIColor(hex: 0x0073FF), + backgroundColor: UIColor(hex: 0xEFF6FF), + iconName: "icon_data_statistics_average_amount" + ) + private let refundCard = StatisticsStatCardView( + title: "退款金额", + valueColor: UIColor(hex: 0xEF4444), + backgroundColor: UIColor(hex: 0xFFE7E7), + iconName: "icon_data_statistics_refund_amount" + ) + + override init(frame: CGRect) { + super.init(frame: frame) + setupUI() + } + + @available(*, unavailable) + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func apply(selectedPeriod: String, selectedPeriodTime: String, summary: StatisticsSummaryResponse?) { + dateValueLabel.text = selectedPeriodTime + periodButtons.forEach { $0.isSelected = $0.periodTitle == selectedPeriod } + + totalAmountCard.configure(value: "¥\(summary?.orderAmountSum ?? "0")") + totalOrderCard.configure(value: "\(summary?.orderCount ?? 0)单") + receivedCard.configure(value: "¥\(summary?.receivedAmountSum ?? "0")") + averageCard.configure(value: "¥\(summary?.orderPriceAvg ?? "0")") + refundCard.configure(value: "¥\(summary?.refundAmountSum ?? "0")") + } + + private func setupUI() { + backgroundColor = .white + layer.cornerRadius = 12 + clipsToBounds = true + + datePrefixLabel.text = "已选日期:" + datePrefixLabel.font = .systemFont(ofSize: 14) + datePrefixLabel.textColor = AppColor.text333 + + dateValueLabel.font = .systemFont(ofSize: 14) + dateValueLabel.textColor = AppColor.primary + dateValueLabel.numberOfLines = 1 + + periodStack.axis = .horizontal + periodStack.distribution = .equalSpacing + periodStack.alignment = .fill + + StatisticsSummaryPeriod.allCases.forEach { period in + let button = StatisticsPeriodButton() + button.periodTitle = period.rawValue + button.addTarget(self, action: #selector(periodTapped(_:)), for: .touchUpInside) + periodButtons.append(button) + periodStack.addArrangedSubview(button) + } + + let row1 = UIStackView(arrangedSubviews: [totalOrderCard, receivedCard]) + row1.axis = .horizontal + row1.spacing = 12 + row1.distribution = .fillEqually + + let row2 = UIStackView(arrangedSubviews: [averageCard, refundCard]) + row2.axis = .horizontal + row2.spacing = 12 + row2.distribution = .fillEqually + + let cardStack = UIStackView(arrangedSubviews: [totalAmountCard, row1, row2]) + cardStack.axis = .vertical + cardStack.spacing = 12 + + let dateRow = UIStackView(arrangedSubviews: [datePrefixLabel, dateValueLabel, UIView()]) + dateRow.axis = .horizontal + dateRow.alignment = .center + dateRow.spacing = 0 + + let contentStack = UIStackView(arrangedSubviews: [dateRow, periodStack, cardStack]) + contentStack.axis = .vertical + contentStack.spacing = 12 + + addSubview(contentStack) + contentStack.snp.makeConstraints { make in + make.edges.equalToSuperview().inset(16) + } + } + + @objc private func periodTapped(_ sender: StatisticsPeriodButton) { + onPeriodSelected?(sender.periodTitle) + } +} diff --git a/suixinkan/UI/Statistics/StatisticsViewController.swift b/suixinkan/UI/Statistics/StatisticsViewController.swift index fcf9d49..8016a92 100644 --- a/suixinkan/UI/Statistics/StatisticsViewController.swift +++ b/suixinkan/UI/Statistics/StatisticsViewController.swift @@ -6,23 +6,141 @@ import SnapKit import UIKit -/// 数据 Tab 根页面。 +/// 数据 Tab 根页面,展示汇总指标与日明细列表。 final class StatisticsViewController: BaseViewController { - private let titleLabel = UILabel() + private let viewModel = StatisticsViewModel() + private let statisticsAPI = NetworkServices.shared.statisticsAPI + + private let summaryCardView = StatisticsSummaryCardView() + private let dailyListView = StatisticsDailyListView() + + private var hasInitialized = false + private var isLoadingMore = false + + override func setupNavigationBar() { + title = "数据" + } override func setupUI() { - title = "数据" - titleLabel.text = "数据" - titleLabel.font = .systemFont(ofSize: 24, weight: .medium) - titleLabel.textAlignment = .center - titleLabel.textColor = AppColor.text333 - view.addSubview(titleLabel) + view.backgroundColor = UIColor(hex: 0xF7FAFF) + + view.addSubview(summaryCardView) + view.addSubview(dailyListView) } override func setupConstraints() { - titleLabel.snp.makeConstraints { make in - make.center.equalToSuperview() + summaryCardView.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide).offset(16) + make.leading.trailing.equalToSuperview().inset(16) + } + dailyListView.snp.makeConstraints { make in + make.top.equalTo(summaryCardView.snp.bottom).offset(16) + make.leading.trailing.equalToSuperview().inset(16) + make.bottom.equalTo(view.safeAreaLayoutGuide).inset(16) } } + + override func bindActions() { + viewModel.onStateChange = { [weak self] in + Task { @MainActor in self?.applyViewModel() } + } + viewModel.onShowMessage = { [weak self] message in + Task { @MainActor in self?.showToast(message) } + } + + summaryCardView.onPeriodSelected = { [weak self] period in + self?.selectPeriod(period) + } + dailyListView.onRangeTap = { [weak self] in + self?.presentDateRangeSheet() + } + dailyListView.onRefresh = { [weak self] in + self?.refreshList() + } + dailyListView.onLoadMore = { [weak self] in + self?.loadMoreIfNeeded() + } + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + guard !hasInitialized else { return } + hasInitialized = true + Task { await initializeStatistics() } + } + + private func applyViewModel() { + summaryCardView.apply( + selectedPeriod: viewModel.selectedPeriod, + selectedPeriodTime: viewModel.selectedPeriodTime, + summary: viewModel.statistics + ) + dailyListView.apply( + rangeText: viewModel.statisticsRangeText, + items: viewModel.statisticsList, + isRefreshing: viewModel.isRefreshing, + canLoadMore: viewModel.canLoadMore + ) + + if viewModel.isLoadingSummary { + showLoading() + } else { + hideLoading() + } + } + + private func initializeStatistics() async { + showLoading() + await viewModel.initStatistics(api: statisticsAPI) + hideLoading() + } + + private func selectPeriod(_ period: String) { + Task { + showLoading() + await viewModel.selectPeriod(period, api: statisticsAPI) + hideLoading() + } + } + + private func refreshList() { + Task { await viewModel.refreshStatistics(api: statisticsAPI) } + } + + private func loadMoreIfNeeded() { + guard viewModel.canLoadMore, !isLoadingMore else { return } + isLoadingMore = true + Task { + await viewModel.loadMore(api: statisticsAPI) + isLoadingMore = false + } + } + + private func presentDateRangeSheet() { + let controller = StatisticsDateRangeViewController( + rangeStart: viewModel.rangeStartDate, + rangeEnd: viewModel.rangeEndDate + ) + controller.onShortcutSelected = { [weak self, weak controller] shortcut in + guard let self else { return } + Task { + await self.viewModel.updateRangeByShortcut(shortcut, api: self.statisticsAPI) + controller?.dismiss(animated: true) + } + } + controller.onRangeSelected = { [weak self, weak controller] start, end in + guard let self else { return } + Task { + await self.viewModel.updateRangeByCalendar(start: start, end: end, api: self.statisticsAPI) + controller?.dismiss(animated: true) + } + } + + if let sheet = controller.sheetPresentationController { + sheet.detents = [.medium(), .large()] + sheet.prefersGrabberVisible = true + } + present(controller, animated: true) + } } diff --git a/suixinkanTests/StatisticsViewModelTests.swift b/suixinkanTests/StatisticsViewModelTests.swift new file mode 100644 index 0000000..3252d1e --- /dev/null +++ b/suixinkanTests/StatisticsViewModelTests.swift @@ -0,0 +1,210 @@ +// +// StatisticsViewModelTests.swift +// suixinkanTests +// + +import XCTest +@testable import suixinkan + +@MainActor +/// 数据统计 ViewModel 测试。 +final class StatisticsViewModelTests: XCTestCase { + + override func tearDown() { + AppStore.shared.roleCode = "" + AppStore.shared.roleName = "" + AppStore.shared.currentScenicId = 0 + AppStore.shared.currentStoreId = 0 + super.tearDown() + } + + func testStatisticsSummaryDecodesRefundAmountAsString() throws { + let json = """ + { + "code": 100000, + "msg": "success", + "data": { + "order_amount_sum": "0.00", + "order_count": 0, + "order_price_avg": "0.00", + "received_amount_sum": "0.00", + "refund_amount_sum": "0.00" + } + } + """.data(using: .utf8)! + + let envelope = try JSONDecoder().decode(APIEnvelope.self, from: json) + XCTAssertEqual(envelope.data?.refundAmountSum, "0.00") + XCTAssertEqual(envelope.data?.orderAmountSum, "0.00") + } + + func testRangeValueMapping() { + let viewModel = StatisticsViewModel() + XCTAssertEqual(viewModel.rangeValue(for: "今日"), "1") + XCTAssertEqual(viewModel.rangeValue(for: "昨日"), "2") + XCTAssertEqual(viewModel.rangeValue(for: "7日"), "3") + XCTAssertEqual(viewModel.rangeValue(for: "本月"), "4") + } + + func testFormattedSelectedPeriodTimeForToday() { + let viewModel = StatisticsViewModel() + let text = viewModel.formattedSelectedPeriodTime(for: "今日") + let today = formattedToday() + XCTAssertEqual(text, "\(today)至\(today)") + } + + func testFormattedSelectedPeriodTimeForThisMonth() { + let viewModel = StatisticsViewModel() + let text = viewModel.formattedSelectedPeriodTime(for: "本月") + XCTAssertTrue(text.contains("至")) + XCTAssertTrue(text.hasPrefix(firstDayOfMonth())) + } + + func testUpdateRangeByShortcutAllClearsTimes() async { + let summaryJSON = """ + {"code":100000,"msg":"success","data":{"order_amount_sum":"0","order_count":0,"order_price_avg":"0","received_amount_sum":"0","refund_amount_sum":0}} + """.data(using: .utf8)! + let listJSON = """ + {"code":100000,"msg":"success","data":{"total":0,"data":[]}} + """.data(using: .utf8)! + + AppStore.shared.currentScenicId = 10 + let session = MockURLSession(responses: [listJSON]) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + + await viewModel.updateRangeByShortcut("全部", api: api) + + XCTAssertEqual(viewModel.statisticsRangeText, "全部") + XCTAssertEqual(viewModel.listStartTime, "") + XCTAssertEqual(viewModel.listEndTime, "") + XCTAssertEqual(session.requests.count, 1) + XCTAssertEqual(session.requests[0].url?.path, "/api/yf-handset-app/photog/analyse/user/daily") + let queryItems = URLComponents(url: session.requests[0].url!, resolvingAgainstBaseURL: false)?.queryItems ?? [] + XCTAssertEqual(queryItems.first(where: { $0.name == "start_time" })?.value, "") + XCTAssertEqual(queryItems.first(where: { $0.name == "end_time" })?.value, "") + } + + func testPhotographerSummaryAndDailyRequests() async throws { + let summaryJSON = """ + {"code":100000,"msg":"success","data":{"order_amount_sum":"100","order_count":2,"order_price_avg":"50","received_amount_sum":"90","refund_amount_sum":10}} + """.data(using: .utf8)! + let listJSON = """ + {"code":100000,"msg":"success","data":{"total":1,"data":[{"date":"2025-12-09","order_count":2,"order_price":"50","refund":"10","received":"90"}]}} + """.data(using: .utf8)! + + AppStore.shared.currentScenicId = 10 + let session = MockURLSession(responses: [summaryJSON, listJSON]) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + + await viewModel.loadStatistics("7日", api: api) + await viewModel.updateRangeByShortcut("今日", api: api) + + XCTAssertEqual(viewModel.statistics?.orderAmountSum, "100") + XCTAssertEqual(viewModel.statisticsList.count, 1) + XCTAssertEqual(session.requests.map { $0.url?.path }, [ + "/api/yf-handset-app/photog/analyse/user", + "/api/yf-handset-app/photog/analyse/user/daily", + ]) + XCTAssertTrue(session.requests[0].url?.query?.contains("range=3") == true) + XCTAssertTrue(session.requests[1].url?.query?.contains("paeg_size=15") == true) + XCTAssertTrue(session.requests[1].url?.query?.contains("scenic_id=10") == true) + } + + func testScenicAdminUsesScenicAdminEndpoints() async { + let summaryJSON = """ + {"code":100000,"msg":"success","data":{"order_amount_sum":"0","order_count":0,"order_price_avg":"0","received_amount_sum":"0","refund_amount_sum":0}} + """.data(using: .utf8)! + let listJSON = """ + {"code":100000,"msg":"success","data":{"total":0,"data":[]}} + """.data(using: .utf8)! + + AppStore.shared.roleCode = AppRoleCode.scenicAdmin.rawValue + AppStore.shared.currentScenicId = 20 + let session = MockURLSession(responses: [summaryJSON, listJSON]) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + + await viewModel.loadStatistics("今日", api: api) + await viewModel.updateRangeByShortcut("今日", api: api) + + XCTAssertEqual(session.requests[0].url?.path, "/api/app/scenic-admin/analyse") + XCTAssertEqual(session.requests[1].url?.path, "/api/app/scenic-admin/analyse/daily") + } + + func testStoreAdminUsesStoreEndpoints() async { + let summaryJSON = """ + {"code":100000,"msg":"success","data":{"order_amount_sum":"0","order_count":0,"order_price_avg":"0","received_amount_sum":"0","refund_amount_sum":0}} + """.data(using: .utf8)! + let listJSON = """ + {"code":100000,"msg":"success","data":{"total":0,"data":[]}} + """.data(using: .utf8)! + + AppStore.shared.roleCode = AppRoleCode.storeAdmin.rawValue + AppStore.shared.currentStoreId = 30 + let session = MockURLSession(responses: [summaryJSON, listJSON]) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + + await viewModel.loadStatistics("今日", api: api) + await viewModel.updateRangeByShortcut("今日", api: api) + + XCTAssertEqual(session.requests[0].url?.path, "/api/app/store/analyse") + XCTAssertTrue(session.requests[0].url?.query?.contains("store_id=30") == true) + XCTAssertEqual(session.requests[1].url?.path, "/api/app/store/analyse/daily") + } + + func testStoreAdminWithoutStoreIdDoesNotRequest() async { + AppStore.shared.roleCode = AppRoleCode.storeAdmin.rawValue + AppStore.shared.currentStoreId = 0 + let session = MockURLSession(responses: []) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + var message: String? + viewModel.onShowMessage = { message = $0 } + + await viewModel.loadStatistics("今日", api: api) + + XCTAssertEqual(message, "请先选择店铺") + XCTAssertEqual(session.requests.count, 0) + } + + func testLoadMoreStopsWhenReachedTotal() async { + let page1JSON = """ + {"code":100000,"msg":"success","data":{"total":1,"data":[{"date":"2025-12-09","order_count":1,"order_price":"10","refund":"0","received":"10"}]}} + """.data(using: .utf8)! + + AppStore.shared.currentScenicId = 10 + let session = MockURLSession(responses: [page1JSON]) + let api = StatisticsAPI(client: APIClient(environment: .testing, session: session)) + let viewModel = StatisticsViewModel() + + await viewModel.updateRangeByShortcut("今日", api: api) + XCTAssertEqual(viewModel.statisticsList.count, 1) + XCTAssertFalse(viewModel.canLoadMore) + + await viewModel.loadMore(api: api) + XCTAssertEqual(viewModel.listCurrentPage, 1) + XCTAssertEqual(session.requests.count, 1) + } + + private func formattedToday() -> String { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .gregorian) + formatter.locale = Locale(identifier: "zh_CN") + formatter.dateFormat = "yyyy/MM/dd" + return formatter.string(from: Date()) + } + + private func firstDayOfMonth() -> String { + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .gregorian) + formatter.locale = Locale(identifier: "zh_CN") + formatter.dateFormat = "yyyy/MM/dd" + var calendar = Calendar(identifier: .gregorian) + let components = calendar.dateComponents([.year, .month], from: Date()) + let firstDay = calendar.date(from: components) ?? Date() + return formatter.string(from: firstDay) + } +}