From 63a7d791c616a90a890438baba788f7011af96a0 Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 2 Jun 2025 19:13:08 +0800 Subject: [PATCH] opt some --- src/template/web.code.js/demo.js | 3 +- src/yingxiaotuiguang/bonus.go | 26 +++++ src/yingxiaotuiguang/bonus.js | 12 +++ src/yingxiaotuiguang/bonus.png | Bin 0 -> 5818 bytes src/yingxiaotuiguang/channel.go | 33 +++++++ src/yingxiaotuiguang/channel.js | 9 ++ src/yingxiaotuiguang/channel.png | Bin 0 -> 6169 bytes src/yingxiaotuiguang/common.go | 47 ++++++++- src/yingxiaotuiguang/invite.go | 56 +++++++++++ src/yingxiaotuiguang/invite.js | 10 ++ src/yingxiaotuiguang/invite.png | Bin 0 -> 5930 bytes src/yingxiaotuiguang/model/model.go | 89 ++++++++++++++++-- src/yingxiaotuiguang/portal.json | 31 ++++-- src/yingxiaotuiguang/portal.png | Bin 0 -> 25410 bytes src/yingxiaotuiguang/product.go | 39 +++++++- src/yingxiaotuiguang/product.js | 6 +- src/yingxiaotuiguang/product.png | Bin 0 -> 4987 bytes src/yingxiaotuiguang/promotion.go | 2 +- src/yingxiaotuiguang/publish.go | 21 +++++ src/yingxiaotuiguang/publish.js | 10 ++ src/yingxiaotuiguang/stat.go | 33 +++++++ src/yingxiaotuiguang/stat.js | 10 ++ src/yingxiaotuiguang/stat.png | Bin 0 -> 5195 bytes src/yingxiaotuiguang/userPromotion.go | 2 +- .../hash.json | 43 ++++++++- 25 files changed, 445 insertions(+), 37 deletions(-) create mode 100644 src/yingxiaotuiguang/bonus.go create mode 100644 src/yingxiaotuiguang/bonus.js create mode 100644 src/yingxiaotuiguang/bonus.png create mode 100644 src/yingxiaotuiguang/channel.go create mode 100644 src/yingxiaotuiguang/channel.js create mode 100644 src/yingxiaotuiguang/channel.png create mode 100644 src/yingxiaotuiguang/invite.go create mode 100644 src/yingxiaotuiguang/invite.js create mode 100644 src/yingxiaotuiguang/invite.png create mode 100644 src/yingxiaotuiguang/portal.png create mode 100644 src/yingxiaotuiguang/product.png create mode 100644 src/yingxiaotuiguang/publish.go create mode 100644 src/yingxiaotuiguang/publish.js create mode 100644 src/yingxiaotuiguang/stat.go create mode 100644 src/yingxiaotuiguang/stat.js create mode 100644 src/yingxiaotuiguang/stat.png diff --git a/src/template/web.code.js/demo.js b/src/template/web.code.js/demo.js index 308755b..731a375 100644 --- a/src/template/web.code.js/demo.js +++ b/src/template/web.code.js/demo.js @@ -1,8 +1,7 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { can.onimport.myView(can, msg, function(value) { return [ - {view: html.TITLE, list: [value.title||value.name||value.user_name, can.onimport.titleAction(can, value)]}, - {view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]}, + {view: html.TITLE, list: [value.title||value.name||value.user_name, can.onimport.titleAction(can, value)]}, can.onimport.metaView(can, value), {view: html.OUTPUT, list: [value.content||value.info]}, ] }) }, diff --git a/src/yingxiaotuiguang/bonus.go b/src/yingxiaotuiguang/bonus.go new file mode 100644 index 0000000..423bc20 --- /dev/null +++ b/src/yingxiaotuiguang/bonus.go @@ -0,0 +1,26 @@ +package yingxiaotuiguang + +import ( + "shylinux.com/x/ice" +) + +type bonus struct { + Table + order string `data:"4"` + role string `data:"leader,worker"` + fields string `data:"product_uid,channel_uid,count,price,user_uid"` + create string `name:"create product_uid*:select channel_uid*:select count* price*" role:"leader"` + modify string `name:"modify count* price*" role:"leader"` + remove string `name:"remove" role:"leader"` +} + +func (s bonus) List(m *ice.Message, arg ...string) { + if s.BonusFields(m).ValueList(m, arg); s.IsLeader(m) { + m.PushAction(s.Modify, s.Remove) + } else { + m.PushAction() + } + s.WaitLeaderCreate(m, "奖励激励") +} + +func init() { ice.TeamCtxCmd(bonus{}) } diff --git a/src/yingxiaotuiguang/bonus.js b/src/yingxiaotuiguang/bonus.js new file mode 100644 index 0000000..447393c --- /dev/null +++ b/src/yingxiaotuiguang/bonus.js @@ -0,0 +1,12 @@ +Volcanos(chat.ONIMPORT, { + _init: function(can, msg) { + can.onimport.shareTitle(can, msg, "product_name", "product_content", "product_icon") + can.onimport.myView(can, msg, function(value) { value.icons = value.product_icon; return [ + {view: html.TITLE, list: [ + value.product_name, value.channel_name, can.onimport.spaceView(can, value), + can.onimport.moneyView(can, value), "/", value.count, can.onimport.titleAction(can, value), + ]}, can.onimport.metaView(can, value), + {view: html.OUTPUT, list: [value.content||value.product_content]}, + ] }) + }, +}) \ No newline at end of file diff --git a/src/yingxiaotuiguang/bonus.png b/src/yingxiaotuiguang/bonus.png new file mode 100644 index 0000000000000000000000000000000000000000..fd280b93b445cc426b62cb3befff46125535ac8a GIT binary patch literal 5818 zcmV;r7DefaP)ps8r zjWND4=3D}}+wQiz?H9Nq+~Mu=%P;Q**nulM@Zm$-+aJOm*6v6EFTV1}2Vj@JN&sJ_ zlpX@&CE~wCr}>6|)VFZxp+DF@4R=7h;{d$)=YR4INc~|3OArGCPa7g2wOdLun>fNf5B1{x;UB*&=#4jvXYn z=vq1Mwt#rs02J^NGf$X?3JezHj9djM{b5$DI|=KAq+mo%ew?_0^WXjUEd}wm0C@Se z?{6gz0KqVg8{+fG{hK+w>;%#OxRe1Z7OsTF%Fg-c_WAF8>z09d%K;Sdgehpj6g}D+ zj_9UpKQS*bLkl(CSy~iE#L8Fd5h`}J&fOvqZz+J6Uwb9{JY^H2b=O!&6xcW|!64Or z$#2&HCn&olierqu5EyTt`}Q|)I*7Lnz@5K%WsBY1s6#@bCSWVFrI3msbf33GhLYfI zV5$eDKw6F?bmzbl=VpU=O8^w`Sl3BMFh^LxKnE%NKZB#h5cQ1(WUK@>xueuYh-DWy zl=TnYWG3Ep0C)cK)h+3SESuAlB@`Y>zloqq+}xy%K$iP@>uGX;S${%*JhD*f&Jr4sM1!fZCD;WZL?l z8w}#w@gT zL4k^_BKn<*0S`5e{Yf5QZD*vKg~7d4)`!;A;M24upi$ExP9~tA=@jxZ;^9dThw$LR zYpQzVRl)oC(mz1gJr4p--=nfFIdEO4z!`uHobJOcobh^PW6A(#_T}DE0VIVAsbpLY zpesMyDOM-U`&)4G`fIYVlX3ShM&{SF3|LFlv>=!{DM$RB;k%L&bOcMRLG_ zyrMMEX0qvnRkf4fD}ThI zR()W@%o7F*k(-9KCR;a7rV`~2PJi>a-h?&Uat8LZEj39u3^7CEpg?NIY@X@|HBj)r z_9QJ3kkwUkut->mj?BPV);u>ahrEHjefWq&sSMZ_Hfrmu3J%5ZY}5Y4+*0Je6ZZpI z<;yp9>YCX7q_4o5Z3TdIz=A+RbNfg|UO4Z$kPK+kCyOx_(D$u-3>S#sW3A?7|Oo2XlYebNwuKgl=KsW@w#Kf zyUcKHeZ0bilSvT~#VS{3NTLHJP-x(o3Eh>2AN=mux8S+}lnkP?lj^saDo0-a zCKJ$|vC{k`c(##sTihs&BmJV>*UB&h^Bx{EFI7sdAPYXQ=sXw(fV|#LVBnESF|jCq z;O4`XFzVl}Pk`I&fVdRE{8YN~5!O-oKJ$B(TuIiaV4r2YwBXc*VK59VrZh@)_LT&A z+@!w2p~=U2sE*6|7#fU(`u-u2^24`}WlvtwxhjaueW09Z*4Z~d5y@%g37OyPBF9A? z!8Hk!3wb7bQ|1VcB1+Yj(0aaXCfhvnC^nDn1$^KEzmM9i(1GPbI-NO1aN#3}!hq2| zQAA_P>qyy0weQmt5I`l02g$ugR?5~Ffa7OA3zHXq)j;zIT<)~`J>KSR_sEZ-`{_@H zR_&5UbL3p94V_~wRJhHG)H>SDP5S6x{?#|xeR7Wve*X0zyg9z+3Loed7K^@QCaf8T z`V2jDa%b!ccKB#8p1PYB%%^YO1labO=V1ElUn-0nfCtsXp@rZ{o9=%WYA1==_m$Js z*Uv=>suY9rAz{TpUC-I`-!8i5svzQJDra2E!9vW}%Tu{bg$u&P;AY3`EXvwJ?K5BC z&$HRd&wWxA)hVB#eEc`wd#^DGy%JMbvMbp0NS*~SD(CP&ZotFmgpYslJ70SV)(6lF z1s0(Oxh;SX;#7Dnz%B=Yx#${!f*I02{Vd1_2v#=Q*@4;5e+siRryyPUzZE-X-Gi%l zpuDuJ6n zZglCw1=#(ke^i~;Y-~cqMNrteLRbF&?-bBVZ)WP4)C2czXpmT%5{jTIiNPQv^xno$ zOCGq-dC%Ga26Y>c0~q&$P-(8p1jf>CYb-4-4QCu_AoLIh- zKPOC5Jk$IW-K4W332=+I&Y*=UH~aQu`_$6~yg;`M#+6R!6d3+*GDX~&lsuR3C&@m{ z$iXofz^O7Z4VZIaLRj6X_DK+RqzYhc(i^ZYfGA0I+hU0Y#jxy-guF=yz17dSDOo2| zRfB`fSY{q5c#Cg;bOQ!{^Xbp9y*C5qE3j=#%|oBY@j3Ltw&=SP0xgeD^_U6NOsve> zDzjb>r|FNz=UAS~$)PP*Zrh1|bTGy$xv1!3e%$Dq3#uGya4G?{-M7C2uQEBRzhfI1 z^Le>>_+gkn_sg#7;=D*3U;H&}?z?YvEDTFojz+bShN)tnT9@5ZMl9}zAo8j|eB|}l zPs6A!XJE@dV>-!Mq+!wz%0<+RIavmzlk_wSromH}>o-q6C8i6j*pTlwj;e3++2^2r zd@qX6lM%G$vkxOa@E{CKE~^)kfy*i|&_LGFoIrPABiIIz9wmMo=$4lP zXbhaV!sAbB%u{s&T3cj^5+xZyNS<&uX#oEk;}*Zy$-u!lJ-;<4kMjeCC^mbB$TL;{Cw4q9^o!7k=8LhGiL zR7pi!M<<#m7(51WUeT=40>nj!ELtzm_`m4uv^H+EFOjWiTupO&B4m>(rq!zyp$^3ZR#PBC0-W=JPZmtAR+G+-J5W&7NXCTsL z7%(Emu_6Q6;I@|kpV-UndvbwPfnt7DlrD0o?lVxSE)&W4f0!t#!a#4WOJ-qOe}m#!f}hT2Qg4st&eJ=($LZpZgp%d!HO> zI{!lzLNo$qV3v+{95-eyjTp&ocI=4GF0kjTBUFLC-)#12WCJZ|O3^c@09|)&608H> zN&tm%8iiPIg%i;VbZvTBD@1BZ)I9e1AUPT|qG50tu&7#xqkRX~ULEHX`*)7M1+(|w z#b&ypb6_kuV8KqUgeK6yROZ>u9@eO_3woR8tO_~?&ecKjIN#)gP%sMH@pND~u$me0z!XjyYn zM#jbzhO?2kb+B$*ZNh$G4NeRu`h+UIvq_1zo-PvYHkdA6fad=DhrP_8WDhg~XJEh8 zu`pUcG~=D4N1!`?oFq3EeQ0^R-&Yh1nk;8Dd&$7HKCwvFVJ;fjjLmM5`CKD_`UF)Z zqv<@UUg_MriJ3u6$Au}FHzvKQ{>&+8p8FL)Nd+Fp0%XRPMhos>)j9_67@O^}V-Vnp zVt^Q!&r+_55kLC~^Cp&A>C7zoZW{~+mj4%BdvRNB!ge!Obg|S|Z$jwDHGT^!emymo z=?2pI^U$4o2PQ0I<^xHzG2?2sE!dWQBD&eWrGrRnwwx_B@=z_j*|28Jfwf82$}$Y* z34k&$u(f%Co@XOup~zjNv^Ij1tL{-|Hd$5G28+zXZR&^nM85EzJv?5#i=C92xGM}I zF2tt}762o;Ljz0A`?~MkId+u6JI=s4c#|o4{nPg_Utz(aQU4~sQT!eU8Dantd}5`5 zDQ4U>dA5TJZR*#z;T2Oms!j!vc59|VL`Mnp+qQUX)=!e)OU1f-|FjMROeBpPNER4^ zHDKIGD35rsd-N!DCyrCIF;(^pqvBPFXy(f-Flf+V6D9F?1{lHygSWw2QKqqp`D#RV z{&^mcCf}|Tz=%kmXevwv_Wx%vMb@ zk8waXm(YTRR+6;z)*4gIY|Vt3y<);)zSvkq7r)1usFWVK=go~W;Q{+>xzeT}LNryA zDX_?hk{hvQpFImRUYhQE3Sbe*R=Dil<40ll<#PJK+M@4toS1Jo$$+$!4GF`X zr(w>EKpQbpnRoI84<>CG5FwN)zg$d_N(k#T4!5f9Ji<;aQZr!k4a(pRjmG*Q8aEvo zf%K^D&*26Dh&B7h;|Vznv7FKdFU#oY>3S){S-!#9=57Nc7k4iQ@{Mutywz zBaAB72cJuA!q+M+GRvN{hB;})Of66p=BfFE`_Ifi8?-0!nO2lR7(U5Q3Sd1Ma$w5- z8ws;d)OrI-B}SNF9hEajnU8AsaLzn{crlbIv_tDO`dt9q$1 zAKhv_O@y$Su4_ALCxvaoyolO-u13Ba6VIj{QvnVAMbB$M@G1;cdqIF@BU)8-M(>!4 z?JPq$OUNn?8}l}h{^Kmo`1kb5eRF4=vA>)BBOo*rh^J7EtXY<%Qm?g<^hPBK zi%)-nW~!#^zHdX>sFF+H2QlGYa{3q>A)CQ^4Q)jbsR63nII#GBF`l4lk+8Ql#&lqX zSLulKmu&b%K-|5287H5A44O}U3ev|PL-)?lp?~ik@mD5QgjFt&A);+a7PJh4G@qT2 zys|*zClxr6DGr`RT$M86A9GE*nr{t7j3X|d*LaNpLRvxN0FjEgF2zgGv+c`(L>7pJ#m*n2*A3?lIk_LkjAoFs4SkPC`q+!fdrLpgvD!%2cAR04Gs< z>Hx}HNfR|)i1W%l+w>I(@M27x;HqQDYXBI9QhnK(a1ONmJ2I0v4zdi0@{tY=4AKkq zvX3-LaR%P%|L<{e`Eq$v96i!x}zs%>*dqJcty+T25!fs2%_E#O(eF&|G=UuA4$ zc_s4`0GOo;;ruDb5xSN+&PJ6tdc&lJ*tX5tTeG2Wm+<&EpPoBPgZJ=Ko)xS3+3Z*A zwEFs1-zWl;DiSy_%v8$x`t1S3wzmeH1R5`>203hIZHmZG<00AW12CmC%!0=~+QN`| z2?q?sV5^qWZ5>tO+Db_f^cC>5(`xRhj^Ex@o9P>%sf%34M@Xv~3F@IHo}w88Rhl%K zs%i8!Pz^jabM<*%+KPV@z|1wpG(MEKu+Tx|?<25gTblIoh2DVOouGFy>HI!#^&L+x zRqKE%(}+rm=>&aWx3zkln3<+k(+RnsQvavXRcI$UZQ~EXW$t&7 zgV)bQA|8V41#r6m3vW_Cdo^9YEMpx$saz+S%QERJ5A~<_*C6ut&R_qs*CFCnFnvFR zY`$U4OCgIC7(i)O5JgTie+oC?fdGS%8Qd7}07=gYE6X9D5O4QnFVc{`!Xe8Y=KJb& zX2M~7;lglPK#mU9;(2vUEGbUJd-^N3f2FVfV!G^G05JqQbMr*J%a7V+U%=3y1da_ zZ#|f%%@!~Io|b{)$p=6y#r8;arvjq+oZcp|cfG$>7H>vX@8IPqS;?14_)o7Yb5&Z3 zqv{j&z2D5p{9YY|QCs9it=h+%2z=c{>D5WQxs5NpaN}P29|5^HVcO!mI>22&FgnYa zft8#Ib|za+(HRFYQTDNv-v+fehQth{%t-PaRR91007*qoM6N<$ Eg2iMZ3jhEB literal 0 HcmV?d00001 diff --git a/src/yingxiaotuiguang/channel.go b/src/yingxiaotuiguang/channel.go new file mode 100644 index 0000000..df6756d --- /dev/null +++ b/src/yingxiaotuiguang/channel.go @@ -0,0 +1,33 @@ +package yingxiaotuiguang + +import ( + "shylinux.com/x/ice" + kit "shylinux.com/x/toolkits" + + "shylinux.com/x/enterprise/src/yingxiaotuiguang/model" +) + +type channel struct { + Table + order string `data:"2"` + fields string `data:"icon,name,info,invite_count,user_uid"` + create string `name:"create name* info* icon@img" role:"leader"` + modify string `name:"modify name info" role:"leader"` + remove string `name:"remove" role:"leader"` +} + +func (s channel) List(m *ice.Message, arg ...string) { + s.ValueList(m, arg).Display("").Table(func(value ice.Maps) { + button := []ice.Any{} + defer func() { m.PushButton(button...) }() + if s.IsLeader(m) { + if button = append(button, s.Modify); kit.Int(value[model.INVITE_COUNT]) == 0 { + button = append(button, s.Remove) + } + } + }) + s.WaitLeaderCreate(m, "渠道") + s.OtherListCmd(m, s.InviteList, s.BonusList) +} + +func init() { ice.TeamCtxCmd(channel{}) } diff --git a/src/yingxiaotuiguang/channel.js b/src/yingxiaotuiguang/channel.js new file mode 100644 index 0000000..352194c --- /dev/null +++ b/src/yingxiaotuiguang/channel.js @@ -0,0 +1,9 @@ +Volcanos(chat.ONIMPORT, { + _init: function(can, msg) { + can.onimport.myView(can, msg, function(value) { return [ + {view: html.TITLE, list: [value.name, can.onimport.titleAction(can, value)]}, can.onimport.metaView(can, value), + {view: html.STATUS, list: [can.onimport.unitView(can, value, "invite_count")]}, + {view: html.OUTPUT, list: [value.info]}, + ] }) + }, +}) \ No newline at end of file diff --git a/src/yingxiaotuiguang/channel.png b/src/yingxiaotuiguang/channel.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7eed91ba0f05578fd6338f6fd48fd11b22863b GIT binary patch literal 6169 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 literal 0 HcmV?d00001 diff --git a/src/yingxiaotuiguang/common.go b/src/yingxiaotuiguang/common.go index 3a55fa6..dbe4d3f 100644 --- a/src/yingxiaotuiguang/common.go +++ b/src/yingxiaotuiguang/common.go @@ -10,7 +10,11 @@ import ( type Table struct { guanlixitong.Table - list string `name:"list promotion_uid uid auto" role:"void"` + list string `name:"list promotion_uid uid auto" role:"void"` + enter string `name:"enter" help:"进入系统" style:"notice" role:"void"` + inviteList string `name:"inviteList" role:"worker"` + bonusList string `name:"bonusList" role:"worker"` + statList string `name:"statList" role:"worker"` } func (s Table) Inputs(m *ice.Message, arg ...string) { @@ -19,6 +23,10 @@ func (s Table) Inputs(m *ice.Message, arg ...string) { s.InputsListRole(m, UserPromotionRoleList, arg...) case model.PROMOTION_TYPE: s.InputsList(m, PromotionTypeList, arg...) + case model.PRODUCT_UID: + s.InputsListCmd(m, product{}) + case model.CHANNEL_UID: + s.InputsListCmd(m, channel{}) default: s.Table.Inputs(m, arg...) } @@ -35,7 +43,40 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { }) return s.Table.RewriteAppend(m) } +func (s Table) InviteList(m *ice.Message, arg ...string) { + s.InviteFields(m).OtherList(m, invite{}) +} +func (s Table) BonusList(m *ice.Message, arg ...string) { + s.BonusFields(m).OtherList(m, bonus{}) +} +func (s Table) StatList(m *ice.Message, arg ...string) { + s.StatFields(m).OtherList(m, stat{}) +} +func (s Table) InviteFields(m *ice.Message, arg ...string) Table { + m.Display("invite.js") + s.Tables(m, product{}, channel{}).FieldsWithCreatedAT(m, invite{}, + model.PRODUCT_ICON, model.PRODUCT_NAME, model.PRODUCT_TITLE, model.PRODUCT_CONTENT, + s.Key(invite{}, model.TITLE), s.Key(invite{}, model.CONTENT), + model.VISITE_COUNT, model.BEGIN_TIME, model.END_TIME, model.CHANNEL_NAME, + s.Key(invite{}, model.USER_UID)) + return s +} +func (s Table) BonusFields(m *ice.Message, arg ...string) Table { + m.Display("bonus.js") + s.Tables(m, product{}, channel{}).FieldsWithCreatedAT(m, bonus{}, + model.PRODUCT_ICON, model.PRODUCT_NAME, model.CHANNEL_NAME, model.COUNT, model.PRICE, + s.Key(bonus{}, model.USER_UID)) + return s +} +func (s Table) StatFields(m *ice.Message, arg ...string) Table { + m.Display("stat.js") + s.Tables(m, invite{}, product{}, channel{}).FieldsWithCreatedAT(m, stat{}, + model.PRODUCT_NAME, model.CHANNEL_NAME, + model.LOCATION, model.IP, model.UA, model.AGENT, model.SYSTEM, + s.Key(stat{}, model.USER_UID)) + return s +} -type Tables struct { Table } +type Tables struct{ Table } -func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {} \ No newline at end of file +func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {} diff --git a/src/yingxiaotuiguang/invite.go b/src/yingxiaotuiguang/invite.go new file mode 100644 index 0000000..ff80699 --- /dev/null +++ b/src/yingxiaotuiguang/invite.go @@ -0,0 +1,56 @@ +package yingxiaotuiguang + +import ( + "shylinux.com/x/ice" + kit "shylinux.com/x/toolkits" + + "shylinux.com/x/enterprise/src/yingxiaotuiguang/model" +) + +type invite struct { + Table + order string `data:"3"` + fields string `data:"product_uid,channel_uid,title,content,user_uid"` + create string `name:"create product_uid*:select channel_uid*:select title content" role:"worker"` + modify string `name:"modify title content" role:"worker"` + remove string `name:"remove" role:"worker"` + publish string `name:"publish" help:"发布邀请" style:"notice" role:"void"` +} + +func (s invite) Create(m *ice.Message, arg ...string) { + s.Transaction(m, func() { + s.ValueCreate(m, arg...) + s.TargetAddCount(m, product{}) + s.TargetAddCount(m, channel{}) + }) +} +func (s invite) Remove(m *ice.Message, arg ...string) { + s.Transaction(m, func() { + s.ValueRemove(m, arg...) + s.TargetAddCount(m, product{}) + s.TargetAddCount(m, channel{}) + }) +} +func (s invite) List(m *ice.Message, arg ...string) { + s.InviteFields(m).ValueList(m, arg).Table(func(value ice.Maps) { + button := []ice.Any{s.Enter, s.Publish} + defer func() { m.PushButton(button...) }() + if value[model.USER_UID] == m.Option(ice.MSG_USERUID) || s.IsLeader(m) { + if button = append(button, s.Modify); kit.Int(value[model.VISITE_COUNT]) == 0 { + button = append(button, s.Remove) + } + } + }) + s.WaitWorkerCreate(m, "推广链接") + s.OtherListCmd(m, s.StatList) +} +func (s invite) Enter(m *ice.Message, arg ...string) { + defer m.Cmd(stat{}, s.Create, model.INVITE_UID, m.Option(model.UID)) + msg := m.Cmd(s, s.Select, m.OptionSimple(model.UID, model.PROMOTION_UID)) + m.Cmdy(product{}, m.ActionKey(), kit.Dict(model.UID, msg.Append(model.PRODUCT_UID))) +} +func (s invite) Publish(m *ice.Message, arg ...string) { + m.ProcessField(publish{}, []string{m.Option(model.PLACE_UID), m.Option(model.UID)}, arg...) +} + +func init() { ice.TeamCtxCmd(invite{}) } diff --git a/src/yingxiaotuiguang/invite.js b/src/yingxiaotuiguang/invite.js new file mode 100644 index 0000000..91b5e95 --- /dev/null +++ b/src/yingxiaotuiguang/invite.js @@ -0,0 +1,10 @@ +Volcanos(chat.ONIMPORT, { + _init: function(can, msg) { + can.onimport.shareTitle(can, msg, "product_name", "product_content", "product_icon") + can.onimport.myView(can, msg, function(value) { value.icons = value.product_icon; return [ + {view: html.TITLE, list: [value.product_name, value.channel_name]}, can.onimport.metaView(can, value), + {view: html.STATUS, list: [can.onimport.unitView(can, value, "visite_count"), "推广期:", can.onimport.beginTime(can, value)]}, + {view: html.OUTPUT, list: [value.content||value.product_content]}, can.onimport.titleAction(can, value), + ] }) + }, +}) \ No newline at end of file diff --git a/src/yingxiaotuiguang/invite.png b/src/yingxiaotuiguang/invite.png new file mode 100644 index 0000000000000000000000000000000000000000..13b5270cd518b40709e7182dd1ebfc4b4d5d9d5c GIT binary patch literal 5930 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 M07*qoM6N<$f|&R?YybcN literal 0 HcmV?d00001 diff --git a/src/yingxiaotuiguang/model/model.go b/src/yingxiaotuiguang/model/model.go index 7094c40..b4c5a8b 100644 --- a/src/yingxiaotuiguang/model/model.go +++ b/src/yingxiaotuiguang/model/model.go @@ -3,18 +3,46 @@ package model import "shylinux.com/x/mysql-story/src/db" const ( - UID = "uid" - NAME = "name" - INFO = "info" - TYPE = "type" - TITLE = "title" - CONTENT = "content" - USER_UID = "user_uid" + UID = "uid" + NAME = "name" + INFO = "info" + ICON = "icon" + TYPE = "type" + STATUS = "status" + COUNT = "count" + PRICE = "price" + LINK = "link" + TITLE = "title" + CONTENT = "content" + USER_UID = "user_uid" USER_PROMOTION_ROLE = "user_promotion_role" PROMOTION_UID = "promotion_uid" PROMOTION_NAME = "promotion_name" PROMOTION_TYPE = "promotion_type" - PRODUCT_UID = "product_uid" + PRODUCT_UID = "product_uid" + PRODUCT_ICON = "product_icon" + PRODUCT_NAME = "product_name" + PRODUCT_TITLE = "product_title" + PRODUCT_CONTENT = "product_content" + CHANNEL_UID = "channel_uid" + CHANNEL_NAME = "channel_name" + INVITE_UID = "invite_uid" + INVITE_COUNT = "invite_count" + VISITE_COUNT = "visite_count" + SERVICE_UID = "service_uid" + RECENT_UID = "recent_uid" + LOCATION = "location" + IP = "ip" + UA = "ua" + AGENT = "agent" + SYSTEM = "system" + PLACE_UID = "place_uid" + PLACE_NAME = "place_name" + PLACE_AVATAR = "place_avatar" + BEGIN_TIME = "begin_time" + END_TIME = "end_time" + SPACE = "space" + INDEX = "index" ) type UserPromotion struct { @@ -28,7 +56,48 @@ type Promotion struct { type Product struct { db.ModelContent PromotionUID string `gorm:"type:char(32);index"` + ServiceUID string `gorm:"type:char(32)"` + PlaceUID string `gorm:"type:char(32)"` + Space string `gorm:"type:varchar(128)"` + Index string `gorm:"type:varchar(128)"` + Name string `gorm:"type:varchar(32)"` + Icon string `gorm:"type:varchar(255)"` + InviteCount int `gorm:"default:0"` + BeginTime db.Time + EndTime db.Time +} +type Channel struct { + db.ModelNameInfo + PromotionUID string `gorm:"type:char(32);index"` + Icon string `gorm:"type:varchar(255)"` + InviteCount int `gorm:"default:0"` +} +type Invite struct { + db.ModelContent + PromotionUID string `gorm:"type:char(32);index"` + ProductUID string `gorm:"type:char(32);index"` + ChannelUID string `gorm:"type:char(32);index"` + VisiteCount int `gorm:"default:0"` +} +type Bonus struct { + db.ModelContent + PromotionUID string `gorm:"type:char(32);index"` + ProductUID string `gorm:"type:char(32);index"` + ChannelUID string `gorm:"type:char(32);index"` + Count int `gorm:"default:0"` + Price int `gorm:"default:0"` +} +type Stat struct { + db.ModelContent + PromotionUID string `gorm:"type:char(32);index"` + InviteUID string `gorm:"type:char(32);index"` + Location string `gorm:"type:varchar(128)"` + IP string `gorm:"type:varchar(16)"` + UA string `gorm:"type:varchar(255)"` + Agent string `gorm:"type:varchar(32)"` + System string `gorm:"type:varchar(32)"` } - -func init() { db.CmdModels("", &UserPromotion{}, &Promotion{}, &Product{}) } \ No newline at end of file +func init() { + db.CmdModels("", &UserPromotion{}, &Promotion{}, &Product{}, &Channel{}, &Invite{}, &Bonus{}, &Stat{}) +} diff --git a/src/yingxiaotuiguang/portal.json b/src/yingxiaotuiguang/portal.json index d0e8621..6580f15 100644 --- a/src/yingxiaotuiguang/portal.json +++ b/src/yingxiaotuiguang/portal.json @@ -1,14 +1,30 @@ { "portal": "营销推广", - "product": "场景应用", + "product": "产品管理", "channel": "渠道管理", "invite": "推广链接", "bonus": "奖励激励", "stat": "数据统计", + "publish": "发布邀请", + "inviteList": "推广链接", "bonusList": "奖励激励", "statList": "数据统计", "icons": { - "product": "https://img.icons8.com/officel/80/activity-grid.png" + "product": "product.png", + "channel": "channel.png", + "invite": "invite.png", + "bonus": "bonus.png", + "stat": "stat.png" }, "input": { - "My Promotion": "我的场景", + "My Promotion": "我的营销", "user_promotion_role": "成员角色", - "promotion_name": "场景名称", - "promotion_type": "场景类型" + "promotion_name": "营销名称", + "promotion_type": "营销类型", + "product_uid": "产品", + "product_icon": "产品图标", + "product_name": "产品名称", + "product_title": "产品标题", + "product_content": "产品内容", + "channel_uid": "渠道", + "channel_name": "渠道名称", + "invite_count": "邀请数量", + "visite_count": "访客数量", + "recent_uid": "产品" }, "value": { "user_promotion_role": { @@ -21,11 +37,6 @@ "creator": "danger", "leader": "danger" } - }, - "promotion_type": { - "RD": "研发群", - "OP": "运维群", - "HR": "人力群" } } } \ No newline at end of file diff --git a/src/yingxiaotuiguang/portal.png b/src/yingxiaotuiguang/portal.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab2d078365f050f615e867558779c071d600a5a GIT binary patch literal 25410 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 x6NK!EP)Z;>0^;VO5FHeBaDBm$SRn*`-KIN%%pB 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 FV1oCd=T!gz literal 0 HcmV?d00001 diff --git a/src/yingxiaotuiguang/userPromotion.go b/src/yingxiaotuiguang/userPromotion.go index f1726f2..62bf78d 100644 --- a/src/yingxiaotuiguang/userPromotion.go +++ b/src/yingxiaotuiguang/userPromotion.go @@ -12,4 +12,4 @@ func init() { ice.TeamCtxCmd(userPromotion{}) } type UserPromotionRole = guanlixitong.UserGroupRole -var UserPromotionRoleList = guanlixitong.UserGroupRoleList \ No newline at end of file +var UserPromotionRoleList = guanlixitong.UserGroupRoleList diff --git a/usr/local/export/web.team.yingxiaotuiguang.portal/hash.json b/usr/local/export/web.team.yingxiaotuiguang.portal/hash.json index ecd83c6..012a72c 100644 --- a/usr/local/export/web.team.yingxiaotuiguang.portal/hash.json +++ b/usr/local/export/web.team.yingxiaotuiguang.portal/hash.json @@ -1,4 +1,13 @@ { + "08bb8fc76a2241a3f2659a05a97da6ac": { + "meta": { + "icons": "src/yingxiaotuiguang/channel.png", + "index": "web.team.yingxiaotuiguang.channel", + "name": "渠道管理", + "order": "2", + "time": "2025-06-01 15:01:20.866" + } + }, "0bf2c78440fe6242369f63e19b2a5a6e": { "meta": { "icons": "bi bi-card-checklist", @@ -39,9 +48,9 @@ }, "4f06a96950d5a4e0c708cb4085f6a2cf": { "meta": { - "icons": "https://img.icons8.com/officel/80/activity-grid.png", + "icons": "src/yingxiaotuiguang/product.png", "index": "web.team.yingxiaotuiguang.product", - "name": "场景应用", + "name": "产品管理", "order": "1", "time": "2025-05-26 18:53:25.218" } @@ -95,6 +104,16 @@ "time": "2025-05-26 18:53:25.234" } }, + "7816ee4fa117f3d070a549b0d6743338": { + "meta": { + "icons": "src/yingxiaotuiguang/invite.png", + "index": "web.team.yingxiaotuiguang.invite", + "name": "推广链接", + "order": "3", + "portal": "true", + "time": "2025-06-01 16:12:38.809" + } + }, "80bb1d681ca253c02b4a3540d0989056": { "meta": { "icons": "/p/src/gonganxitong/member.png?pod=20240724-community", @@ -169,6 +188,16 @@ "time": "2025-05-26 18:53:25.226" } }, + "a8695f4e8b1d0424e122fafd652a4070": { + "meta": { + "icons": "src/yingxiaotuiguang/stat.png", + "index": "web.team.yingxiaotuiguang.stat", + "name": "数据统计", + "order": "5", + "role": "worker", + "time": "2025-06-01 16:37:52.991" + } + }, "ab5274a2914805c93d8e3cd98763815a": { "meta": { "icons": "/p/src/gonganxitong/credit.png?pod=20240724-community", @@ -178,6 +207,16 @@ "time": "2025-05-26 18:53:25.235" } }, + "ca19d176c2ce004af2279129281e79a2": { + "meta": { + "icons": "src/yingxiaotuiguang/bonus.png", + "index": "web.team.yingxiaotuiguang.bonus", + "name": "奖励激励", + "order": "4", + "role": "worker", + "time": "2025-06-01 15:43:44.408" + } + }, "e48240c89af0f68522a33e2b19de84d6": { "meta": { "icons": "bi bi-ubuntu",