gameAction.go 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806
  1. package game
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/gogf/gf/container/garray"
  7. "github.com/gogf/gf/container/glist"
  8. "github.com/gogf/gf/container/gmap"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/net/ghttp"
  11. "github.com/gogf/gf/os/gtime"
  12. "github.com/gogf/gf/util/gconv"
  13. "gmanager/library/base"
  14. "gmanager/library/codeutil"
  15. "gmanager/library/mongo/gameinfo"
  16. "gmanager/library/mongo/gm"
  17. "gmanager/library/mongo/util"
  18. "gmanager/library/netutil"
  19. "go.mongodb.org/mongo-driver/bson"
  20. "go.mongodb.org/mongo-driver/bson/primitive"
  21. "go.mongodb.org/mongo-driver/mongo"
  22. "log"
  23. "strconv"
  24. "strings"
  25. "time"
  26. )
  27. type CEntity struct {
  28. Id int `orm:"id,primary" json:"id"` // 主键
  29. Num int `orm:"num" json:"num"` // 主键
  30. }
  31. type Action struct {
  32. base.BaseRouter
  33. }
  34. func (action *Action) MainDate(r *ghttp.Request) {
  35. //gameinfo.ModelLiucun.FindLiuCun()
  36. form := base.NewForm(r.GetQueryMap())
  37. page := g.ListAnyAny{}
  38. alluser, allnum := gameinfo.ModelRegister.CollectionCount()
  39. fmt.Println(alluser, allnum)
  40. regMap := gameinfo.ModelRegister.FindRegTime()
  41. loginMap := gameinfo.ModeLogin.FindDau()
  42. for i, m := range regMap {
  43. dtime := m["date"]
  44. regCount := m["count"]
  45. loginCounr := loginMap[i]["count"]
  46. dmap := gmap.NewStrAnyMap()
  47. dmap.Set("time", dtime)
  48. dmap.Set("regCount", regCount)
  49. dmap.Set("loginCount", loginCounr)
  50. page = append(page, gconv.Map(dmap))
  51. }
  52. fmt.Println(page)
  53. base.Succ(r,
  54. g.Map{
  55. "page": form.Page,
  56. "rows": page,
  57. "total": form.TotalPage,
  58. "records": form.TotalSize,
  59. })
  60. }
  61. func (action *Action) Liucun(r *ghttp.Request) {
  62. form := base.NewForm(r.GetMap())
  63. page := g.ListAnyAny{}
  64. date := g.Config().GetString("startday")
  65. startTime := gtime.NewFromStr(date)
  66. //l := g.ListAnyAny{}
  67. if form.Params["searchData"] != "" {
  68. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  69. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  70. //fmt.Println("============================", stime, etime)
  71. //startTime = gtime.NewFromStr(stime)
  72. //如果开始时间小于配置的开始时间 取配置好的时间
  73. if startTime.DayOfYear() < gtime.NewFromStr(stime).DayOfYear() {
  74. startTime = gtime.NewFromStr(stime)
  75. }
  76. endTime := gtime.NewFromStr(etime)
  77. for {
  78. strtime := startTime.Format("Y-m-d")
  79. bs := bson.D{{"creatday", strtime}}
  80. dayinfo := gameinfo.ModelLiucun.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  81. dayMap := gmap.New()
  82. dayMap.Set("creatday", strtime)
  83. for dayinfo.Next(context.TODO()) {
  84. var elem gameinfo.LogLiucun
  85. err := dayinfo.Decode(&elem)
  86. dayMap.Set("new", elem.NewUser)
  87. dayMap.Set("day"+gconv.String(elem.Day), elem.DayCount)
  88. if err != nil {
  89. //log.Fatal(err)
  90. log.Println(err)
  91. continue
  92. }
  93. }
  94. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  95. startTime = startTime.AddDate(0, 0, 1)
  96. if startTime.DayOfYear() > endTime.DayOfYear() {
  97. break
  98. }
  99. }
  100. } else {
  101. //fmt.Println("=============", gtime.Now().AddDate(0, 0, -7).Format("Y-m-d"))
  102. //不选择默认查询一周的数据
  103. startTime = gtime.Now().AddDate(0, 0, -7)
  104. for {
  105. strtime := startTime.Format("Y-m-d")
  106. bs := bson.D{{"creatday", strtime}}
  107. dayinfo := gameinfo.ModelLiucun.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  108. dayMap := gmap.New()
  109. dayMap.Set("creatday", strtime)
  110. for dayinfo.Next(context.TODO()) {
  111. var elem gameinfo.LogLiucun
  112. err := dayinfo.Decode(&elem)
  113. dayMap.Set("new", elem.NewUser)
  114. dayMap.Set("day"+gconv.String(elem.Day), elem.DayCount)
  115. if err != nil {
  116. //log.Fatal(err)
  117. log.Println(err)
  118. continue
  119. }
  120. }
  121. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  122. startTime = startTime.AddDate(0, 0, 1)
  123. if startTime.DayOfYear() >= gtime.Now().DayOfYear() {
  124. break
  125. }
  126. }
  127. }
  128. fmt.Println(page)
  129. base.Succ(r,
  130. g.Map{
  131. "page": form.Page,
  132. "rows": page,
  133. "total": form.TotalPage,
  134. "records": form.TotalSize,
  135. })
  136. }
  137. // 付费用户留存
  138. func (action *Action) PayLiucun(r *ghttp.Request) {
  139. form := base.NewForm(r.GetMap())
  140. page := g.ListAnyAny{}
  141. date := g.Config().GetString("startday")
  142. startTime := gtime.NewFromStr(date)
  143. //l := g.ListAnyAny{}
  144. if form.Params["searchData"] != "" {
  145. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  146. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  147. //fmt.Println("============================", stime, etime)
  148. //startTime = gtime.NewFromStr(stime)
  149. //如果开始时间小于配置的开始时间 取配置好的时间
  150. if startTime.DayOfYear() < gtime.NewFromStr(stime).DayOfYear() {
  151. startTime = gtime.NewFromStr(stime)
  152. }
  153. endTime := gtime.NewFromStr(etime)
  154. for {
  155. strtime := startTime.Format("Y-m-d")
  156. bs := bson.D{{"creatday", strtime}}
  157. dayinfo := gameinfo.ModelPayLiucun.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  158. dayMap := gmap.New()
  159. dayMap.Set("creatday", strtime)
  160. for dayinfo.Next(context.TODO()) {
  161. var elem gameinfo.LogPayLiucun
  162. err := dayinfo.Decode(&elem)
  163. dayMap.Set("new", elem.NewUser)
  164. dayMap.Set("day"+gconv.String(elem.Day), elem.DayCount)
  165. if err != nil {
  166. //log.Fatal(err)
  167. log.Println(err)
  168. continue
  169. }
  170. }
  171. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  172. startTime = startTime.AddDate(0, 0, 1)
  173. if startTime.DayOfYear() > endTime.DayOfYear() {
  174. break
  175. }
  176. }
  177. } else {
  178. //fmt.Println("=============", gtime.Now().AddDate(0, 0, -7).Format("Y-m-d"))
  179. //不选择默认查询一周的数据
  180. startTime = gtime.Now().AddDate(0, 0, -7)
  181. for {
  182. strtime := startTime.Format("Y-m-d")
  183. bs := bson.D{{"creatday", strtime}}
  184. dayinfo := gameinfo.ModelPayLiucun.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  185. dayMap := gmap.New()
  186. dayMap.Set("creatday", strtime)
  187. for dayinfo.Next(context.TODO()) {
  188. var elem gameinfo.LogPayLiucun
  189. err := dayinfo.Decode(&elem)
  190. dayMap.Set("new", elem.NewUser)
  191. dayMap.Set("day"+gconv.String(elem.Day), elem.DayCount)
  192. if err != nil {
  193. //log.Fatal(err)
  194. log.Println(err)
  195. continue
  196. }
  197. }
  198. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  199. startTime = startTime.AddDate(0, 0, 1)
  200. if startTime.DayOfYear() >= gtime.Now().DayOfYear() {
  201. break
  202. }
  203. }
  204. }
  205. fmt.Println(page)
  206. base.Succ(r,
  207. g.Map{
  208. "page": form.Page,
  209. "rows": page,
  210. "total": form.TotalPage,
  211. "records": form.TotalSize,
  212. })
  213. }
  214. func (action *Action) Hour(r *ghttp.Request) {
  215. form := base.NewForm(r.GetMap())
  216. bs := bson.D{}
  217. var stime, etime string
  218. if form.Params != nil {
  219. if form.Params["searchData"] != "" {
  220. stime = gconv.MapStrStr(form.Params["searchData"])["0"]
  221. etime = gconv.MapStrStr(form.Params["searchData"])["1"]
  222. bs = bson.D{{"creatday", bson.D{{"$gte", stime}, {"$lte", etime}}}}
  223. } else {
  224. stime = gtime.Now().AddDate(0, 0, -15).Format("Y-m-d")
  225. etime = gtime.Now().AddDate(0, 0, 0).Format("Y-m-d")
  226. bs = bson.D{{"creatday", bson.D{{"$gte", stime}, {"$lte", etime}}}}
  227. }
  228. }
  229. startTime := gtime.NewFromStr(stime)
  230. endTime := gtime.NewFromStr(etime)
  231. userListMap := gmap.New(false)
  232. for {
  233. userList := garray.New(false)
  234. accountList := garray.New(false)
  235. daystartTime := startTime.Local().TimestampMilli()
  236. dayendTime := startTime.Clone().AddDate(0, 0, 1).Local().TimestampMilli() - 1
  237. var oneDayAll *mongo.Cursor
  238. if form.Params["serverid"] == "" {
  239. oneDayAll = gameinfo.ModelRegister.FindAllBson(bson.D{{"register.registerTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  240. } else {
  241. oneDayAll = gameinfo.ModelRegister.FindAllBson(bson.D{{"register.serverId", gconv.String(form.Params["serverid"])}, {"register.registerTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  242. }
  243. var oneDayAllM []bson.M
  244. if err := oneDayAll.All(context.TODO(), &oneDayAllM); err != nil {
  245. fmt.Println(err)
  246. }
  247. for _, v1 := range oneDayAllM {
  248. loginTime := v1["register"].(primitive.M)
  249. if !userList.Contains(loginTime["uid"]) {
  250. userList.Append(loginTime["uid"])
  251. }
  252. if !accountList.Contains(loginTime["openId"]) {
  253. accountList.Append(loginTime["openId"])
  254. }
  255. }
  256. userListMap.Set(startTime.Format("Y-m-d"), userList)
  257. userListMap.Set("account"+startTime.Format("Y-m-d"), accountList)
  258. startTime = startTime.AddDate(0, 0, 1)
  259. if startTime.DayOfYear() > endTime.DayOfYear() {
  260. break
  261. }
  262. }
  263. page := g.ListAnyAny{}
  264. var hourInfo *mongo.Cursor
  265. if form.Params["serverid"] == "" {
  266. hourInfo = gameinfo.ModelHour.FindAllBson(bs)
  267. } else {
  268. hourInfo = gameinfo.ModelHour.FindListByServer(bs, form.Params["serverid"])
  269. }
  270. dayMap := gmap.New()
  271. for hourInfo.Next(context.TODO()) {
  272. value := dayMap.Get("creatday")
  273. var hour gameinfo.LogHour
  274. err := hourInfo.Decode(&hour)
  275. if err != nil {
  276. //log.Fatal(err)
  277. log.Println(err)
  278. continue
  279. }
  280. //第一条数据 直接赋值到map
  281. if value == nil {
  282. dayMap.Set("creatday", hour.CreatDay)
  283. dayMap.Set("hour"+gconv.String(hour.Hour), hour.NewUser)
  284. } else {
  285. //取map中存在的日期
  286. creatday := dayMap.Get("creatday")
  287. //如果遍历到了新的一天
  288. if creatday != hour.CreatDay {
  289. //将map数据添加到返回集合
  290. dayMap.Set("accountcount", len(gconv.Interfaces(userListMap.Get("account"+gconv.String(creatday)))))
  291. dayMap.Set("count", len(gconv.Interfaces(userListMap.Get(creatday))))
  292. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  293. //清空map 添加新的数据
  294. dayMap.Clear()
  295. dayMap.Set("creatday", hour.CreatDay)
  296. dayMap.Set("hour"+gconv.String(hour.Hour), hour.NewUser)
  297. } else {
  298. //如果是同一天 只添加对应的时间人数即可
  299. dayMap.Set("hour"+gconv.String(hour.Hour), hour.NewUser)
  300. }
  301. }
  302. }
  303. //fmt.Println("dayMap===========================", dayMap)
  304. dayMap.Set("accountcount", len(gconv.Interfaces(userListMap.Get("account"+gconv.String(dayMap.Get("creatday"))))))
  305. dayMap.Set("count", len(gconv.Interfaces(userListMap.Get(gconv.String(dayMap.Get("creatday"))))))
  306. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  307. //fmt.Println(page)
  308. base.Succ(r,
  309. g.Map{
  310. "page": form.Page,
  311. "rows": page,
  312. "total": form.TotalPage,
  313. "records": form.TotalSize,
  314. })
  315. }
  316. func (action *Action) HourLogin(r *ghttp.Request) {
  317. form := base.NewForm(r.GetMap())
  318. bs := bson.D{}
  319. var stime, etime string
  320. if form.Params != nil {
  321. if form.Params["searchData"] != "" {
  322. stime = gconv.MapStrStr(form.Params["searchData"])["0"]
  323. etime = gconv.MapStrStr(form.Params["searchData"])["1"]
  324. bs = bson.D{{"creatday", bson.D{{"$gte", stime}, {"$lte", etime}}}}
  325. } else {
  326. stime = gtime.Now().AddDate(0, 0, -15).Format("Y-m-d")
  327. etime = gtime.Now().AddDate(0, 0, 0).Format("Y-m-d")
  328. bs = bson.D{{"creatday", bson.D{{"$gte", stime}, {"$lte", etime}}}}
  329. }
  330. }
  331. startTime := gtime.NewFromStr(stime)
  332. endTime := gtime.NewFromStr(etime)
  333. userListMap := gmap.New(false)
  334. for {
  335. userList := garray.New(false)
  336. accountList := garray.New(false)
  337. daystartTime := startTime.Local().TimestampMilli()
  338. dayendTime := startTime.Clone().AddDate(0, 0, 1).Local().TimestampMilli() - 1
  339. var oneDayAll *mongo.Cursor
  340. if form.Params["serverid"] == "" {
  341. oneDayAll = gameinfo.ModeLogin.FindAllBson(bson.D{{"loginTime.loginTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  342. } else {
  343. oneDayAll = gameinfo.ModeLogin.FindAllBson(bson.D{{"loginTime.serverId", gconv.String(form.Params["serverid"])}, {"loginTime.loginTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  344. }
  345. var oneDayAllM []bson.M
  346. if err := oneDayAll.All(context.TODO(), &oneDayAllM); err != nil {
  347. fmt.Println(err)
  348. }
  349. for _, v1 := range oneDayAllM {
  350. loginTime := v1["loginTime"].(primitive.M)
  351. if !userList.Contains(loginTime["uid"]) {
  352. userList.Append(loginTime["uid"])
  353. }
  354. if !accountList.Contains(loginTime["openId"]) {
  355. accountList.Append(loginTime["openId"])
  356. }
  357. }
  358. userListMap.Set(startTime.Format("Y-m-d"), userList)
  359. userListMap.Set("account"+startTime.Format("Y-m-d"), accountList)
  360. startTime = startTime.AddDate(0, 0, 1)
  361. if startTime.DayOfYear() > endTime.DayOfYear() {
  362. break
  363. }
  364. }
  365. //fmt.Println("=========", userListMap)
  366. var hourLoginList *mongo.Cursor
  367. if form.Params["serverid"] == "" {
  368. hourLoginList = gameinfo.ModelHourLogin.FindAllBson(bs)
  369. } else {
  370. hourLoginList = gameinfo.ModelHourLogin.FindListByServer(bs, form.Params["serverid"])
  371. }
  372. page := g.ListAnyAny{}
  373. dayMap := gmap.New()
  374. for hourLoginList.Next(context.TODO()) {
  375. value := dayMap.Get("creatday")
  376. var hourLogin gameinfo.LogHourLogin
  377. err := hourLoginList.Decode(&hourLogin)
  378. if err != nil {
  379. //log.Fatal(err)
  380. log.Println(err)
  381. continue
  382. }
  383. //第一条数据 直接赋值到map
  384. if value == nil {
  385. dayMap.Set("creatday", hourLogin.CreatDay)
  386. dayMap.Set("hour"+gconv.String(hourLogin.Hour), hourLogin.NewUser)
  387. } else {
  388. //取map中存在的日期
  389. creatday := dayMap.Get("creatday")
  390. //如果遍历到了新的一天
  391. if creatday != hourLogin.CreatDay {
  392. //将map数据添加到返回集合
  393. dayMap.Set("accountcount", len(gconv.Interfaces(userListMap.Get("account"+gconv.String(creatday)))))
  394. dayMap.Set("count", len(gconv.Interfaces(userListMap.Get(creatday))))
  395. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  396. //清空map 添加新的数据
  397. dayMap.Clear()
  398. dayMap.Set("creatday", hourLogin.CreatDay)
  399. dayMap.Set("hour"+gconv.String(hourLogin.Hour), hourLogin.NewUser)
  400. } else {
  401. //如果是同一天 只添加对应的时间人数即可
  402. dayMap.Set("hour"+gconv.String(hourLogin.Hour), hourLogin.NewUser)
  403. }
  404. }
  405. }
  406. //fmt.Println("dayMap===========================", dayMap)
  407. dayMap.Set("accountcount", len(gconv.Interfaces(userListMap.Get("account"+gconv.String(dayMap.Get("creatday"))))))
  408. dayMap.Set("count", len(gconv.Interfaces(userListMap.Get(gconv.String(dayMap.Get("creatday"))))))
  409. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  410. //fmt.Println(page)
  411. base.Succ(r,
  412. g.Map{
  413. "page": form.Page,
  414. "rows": page,
  415. "total": form.TotalPage,
  416. "records": form.TotalSize,
  417. })
  418. }
  419. func (action *Action) GetLtvList(r *ghttp.Request) {
  420. form := base.NewForm(r.GetMap())
  421. page := g.ListAnyAny{}
  422. date := g.Config().GetString("startday")
  423. startTime := gtime.NewFromStr(date)
  424. if form.Params["searchData"] != "" {
  425. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  426. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  427. //如果开始时间小于配置的开始时间 取配置好的时间
  428. if startTime.DayOfYear() < gtime.NewFromStr(stime).DayOfYear() {
  429. startTime = gtime.NewFromStr(stime)
  430. }
  431. endTime := gtime.NewFromStr(etime)
  432. for {
  433. var sum float64 = 0
  434. strtime := startTime.Format("Y-m-d")
  435. bs := bson.D{{"creatday", strtime}}
  436. dayinfo := gameinfo.ModelLtv.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  437. dayMap := gmap.New()
  438. dayMap.Set("creatday", strtime)
  439. for dayinfo.Next(context.TODO()) {
  440. var logLtv gameinfo.LogLTV
  441. err := dayinfo.Decode(&logLtv)
  442. money1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(logLtv.DayAmount)/float64(100)), 64)
  443. sum = sum + money1
  444. dayMap.Set("new", logLtv.NewUser)
  445. dayMap.Set("day"+gconv.String(logLtv.Day), money1)
  446. dayMap.Set("daysum"+gconv.String(logLtv.Day), sum)
  447. if err != nil {
  448. //log.Fatal(err)
  449. log.Println(err)
  450. continue
  451. }
  452. }
  453. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  454. startTime = startTime.AddDate(0, 0, 1)
  455. if startTime.DayOfYear() > endTime.DayOfYear() {
  456. break
  457. }
  458. }
  459. } else {
  460. //fmt.Println("=============", gtime.Now().AddDate(0, 0, -7).Format("Y-m-d"))
  461. //不选择默认查询30天的数据
  462. startTime = gtime.Now().AddDate(0, 0, -30)
  463. for {
  464. var sum float64 = 0
  465. strtime := startTime.Format("Y-m-d")
  466. bs := bson.D{{"creatday", strtime}}
  467. dayinfo := gameinfo.ModelLtv.FindLiuCun(bs, gconv.String(form.Params["serverid"]))
  468. dayMap := gmap.New()
  469. dayMap.Set("creatday", strtime)
  470. for dayinfo.Next(context.TODO()) {
  471. var logLtv gameinfo.LogLTV
  472. err := dayinfo.Decode(&logLtv)
  473. money1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(logLtv.DayAmount)/float64(100)), 64)
  474. sum = sum + money1
  475. dayMap.Set("new", logLtv.NewUser)
  476. dayMap.Set("day"+gconv.String(logLtv.Day), money1)
  477. dayMap.Set("daysum"+gconv.String(logLtv.Day), sum)
  478. if err != nil {
  479. //log.Fatal(err)
  480. log.Println(err)
  481. continue
  482. }
  483. }
  484. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  485. startTime = startTime.AddDate(0, 0, 1)
  486. if startTime.DayOfYear() >= gtime.Now().DayOfYear() {
  487. break
  488. }
  489. }
  490. }
  491. fmt.Println(page)
  492. base.Succ(r,
  493. g.Map{
  494. "page": form.Page,
  495. "rows": page,
  496. "total": form.TotalPage,
  497. "records": form.TotalSize,
  498. })
  499. }
  500. func getCont(m map[string]interface{}) int {
  501. count := 0
  502. for k, v := range m {
  503. //key包含hour 把value相加
  504. if strings.Contains(k, "hour") {
  505. count = count + gconv.Int(v)
  506. }
  507. }
  508. return count
  509. }
  510. func (action *Action) PlayerInfo(r *ghttp.Request) {
  511. form := base.NewForm(r.GetQueryMap())
  512. page := g.ListAnyAny{}
  513. //f:=&form
  514. name := r.Form.Get("uid")
  515. sdkuid := r.Form.Get("sdkuid")
  516. serverid := r.Form.Get("serverid")
  517. openid := r.Form.Get("openid")
  518. //name := "东里帛薇"
  519. var bs bson.D
  520. if name != "" {
  521. bs = bson.D{{"playerManager.nickName", name}}
  522. } else if sdkuid != "" {
  523. bs = bson.D{{"_id", gconv.Int(sdkuid)}}
  524. } else if openid != "" {
  525. bs = bson.D{{"playerManager.openId", gconv.String(openid)}}
  526. } else {
  527. base.Succ(r,
  528. g.Map{
  529. "page": form.Page,
  530. "rows": page,
  531. "total": form.TotalPage,
  532. "records": form.TotalSize,
  533. })
  534. return
  535. }
  536. var userInfo *mongo.Cursor
  537. if serverid == "" {
  538. userInfo = gameinfo.ModelM5User.FindUser(bs, g.Config().GetString("mongo-port"))
  539. } else {
  540. userInfo = gameinfo.ModelM5User.FindUser(bs, serverid)
  541. }
  542. var showsWithInfo []bson.M
  543. if err := userInfo.All(context.TODO(), &showsWithInfo); err != nil {
  544. fmt.Println(err)
  545. }
  546. if showsWithInfo == nil {
  547. base.Resp(r, 1, "无角色信息", nil)
  548. return
  549. }
  550. data := showsWithInfo[0]
  551. dmap := gmap.NewStrAnyMap()
  552. dmap.Set("id", data["_id"])
  553. player := data["playerManager"].(bson.M)
  554. dmap.Set("nickName", player["nickName"])
  555. dmap.Set("openId", player["openId"])
  556. dmap.Set("level", player["level"])
  557. dmap.Set("createTime", gconv.Time(player["createTime"]).String())
  558. dmap.Set("loginTime", gconv.Time(player["loginTime"]).String())
  559. page = append(page, gconv.Map(dmap))
  560. fmt.Println(len(page))
  561. base.Succ(r,
  562. g.Map{
  563. "page": form.Page,
  564. "rows": page,
  565. "total": form.TotalPage,
  566. "records": form.TotalSize,
  567. })
  568. }
  569. func (action *Action) Lv(r *ghttp.Request) {
  570. form := base.NewForm(r.GetMap())
  571. serverid := form.Params["serverid"]
  572. page := g.ListAnyAny{}
  573. lvinfo := gameinfo.ModelM5User.FindLV(gconv.String(serverid))
  574. var showsWithInfo []bson.M
  575. if err := lvinfo.All(context.TODO(), &showsWithInfo); err != nil {
  576. fmt.Println(err)
  577. }
  578. //treeMap := gmap.NewTreeMap(gutil.ComparatorInt, true)
  579. for _, m := range showsWithInfo {
  580. //treeMap.Set(m["_id"],m["value"])
  581. dayMap := gmap.New()
  582. dayMap.Set("level", m["_id"])
  583. dayMap.Set("count", m["value"])
  584. page = append(page, gconv.Map(dayMap))
  585. }
  586. fmt.Println(len(page))
  587. base.Succ(r,
  588. g.Map{
  589. "page": form.Page,
  590. "rows": page,
  591. "total": form.TotalPage,
  592. "records": form.TotalSize,
  593. })
  594. }
  595. func (action *Action) Vip(r *ghttp.Request) {
  596. form := base.NewForm(r.GetMap())
  597. serverid := form.Params["serverid"]
  598. page := g.ListAnyAny{}
  599. vipinfo := gameinfo.ModelM5User.FindVIP(gconv.String(serverid))
  600. var showsWithInfo []bson.M
  601. if err := vipinfo.All(context.TODO(), &showsWithInfo); err != nil {
  602. fmt.Println(err)
  603. }
  604. //treeMap := gmap.NewTreeMap(gutil.ComparatorInt, true)
  605. for _, m := range showsWithInfo {
  606. //treeMap.Set(m["_id"],m["value"])
  607. dayMap := gmap.New()
  608. dayMap.Set("vipLevel", m["_id"])
  609. dayMap.Set("count", m["value"])
  610. page = append(page, gconv.Map(dayMap))
  611. }
  612. //fmt.Println(len(page))
  613. base.Succ(r,
  614. g.Map{
  615. "page": form.Page,
  616. "rows": page,
  617. "total": form.TotalPage,
  618. "records": form.TotalSize,
  619. })
  620. }
  621. //服务器信息列表
  622. func (action *Action) ServerInfo(r *ghttp.Request) {
  623. form := base.NewForm(r.GetMap())
  624. bs := bson.D{}
  625. if form.Params != nil {
  626. if form.Params["name"] != "" {
  627. bs1 := bson.E{"name", bson.D{{"$regex", form.Params["name"]}}}
  628. bs = append(bs, bs1)
  629. }
  630. if form.Params["channel"] != "" {
  631. bs1 := bson.E{"channel", bson.D{{"$regex", form.Params["channel"]}}}
  632. bs = append(bs, bs1)
  633. }
  634. if form.Params["state"] != "" {
  635. if form.Params["state"] == "0" {
  636. bs1 := bson.E{"state", bson.D{{"$ne", "-1"}}}
  637. bs = append(bs, bs1)
  638. } else {
  639. bs1 := bson.E{"state", form.Params["state"]}
  640. bs = append(bs, bs1)
  641. }
  642. }
  643. if form.Params["isNew"] != "" {
  644. bs1 := bson.E{"is_new", form.Params["isNew"]}
  645. bs = append(bs, bs1)
  646. }
  647. if form.Params["isBanreg"] != "" {
  648. bs1 := bson.E{"is_banreg", form.Params["isBanreg"]}
  649. bs = append(bs, bs1)
  650. }
  651. }
  652. data := g.ListAnyAny{}
  653. count := gameinfo.ModelServer.GetListCount(bs)
  654. page := util.Page{
  655. PageSize: gconv.Int64(form.Rows),
  656. CurrentPage: gconv.Int64(form.Page),
  657. Total: gconv.Int64(count),
  658. }
  659. serverInfoList := gameinfo.ModelServer.GetPageList(bs, page)
  660. dayMap := gmap.New()
  661. for serverInfoList.Next(context.TODO()) {
  662. var serverInfo gameinfo.ServerInfo
  663. err := serverInfoList.Decode(&serverInfo)
  664. if err != nil {
  665. //log.Fatal(err)
  666. log.Println(err)
  667. continue
  668. }
  669. dayMap.Set("id", serverInfo.Id)
  670. dayMap.Set("name", serverInfo.Name)
  671. dayMap.Set("ip", serverInfo.Ip)
  672. dayMap.Set("port", serverInfo.Port)
  673. dayMap.Set("serverId", serverInfo.ServerId)
  674. dayMap.Set("channel", serverInfo.Channel)
  675. dayMap.Set("subChannel", serverInfo.SubChannel)
  676. dayMap.Set("state", serverInfo.State)
  677. dayMap.Set("plat", serverInfo.Plat)
  678. dayMap.Set("openTime", serverInfo.OpenTime)
  679. dayMap.Set("openType", serverInfo.OpenType)
  680. dayMap.Set("isNew", serverInfo.IsNew)
  681. dayMap.Set("isBanreg", serverInfo.IsBanreg)
  682. dayMap.Set("isWhite", serverInfo.IsWhite)
  683. dayMap.Set("serverVersion", serverInfo.ServerVersion)
  684. dayMap.Set("gmip", serverInfo.GMIp)
  685. dayMap.Set("gmport", serverInfo.GMPort)
  686. dayMap.Set("currency", serverInfo.Currency)
  687. dayMap.Set("timezone", serverInfo.Timezone)
  688. dayMap.Set("exportdata", serverInfo.Exportdata)
  689. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  690. }
  691. fmt.Println(data)
  692. base.Succ(r,
  693. g.Map{
  694. "rows": data,
  695. "total": page.Total,
  696. "current": page.CurrentPage,
  697. })
  698. }
  699. //保存服务器信息
  700. func (action *Action) SaveServer(r *ghttp.Request) {
  701. id := r.Form.Get("id")
  702. name := r.Form.Get("name")
  703. ip := r.Form.Get("ip")
  704. port := r.Form.Get("port")
  705. serverId := r.Form.Get("serverId")
  706. channel := r.Form.Get("channel")
  707. subChannel := r.Form.Get("subChannel")
  708. state := r.Form.Get("state")
  709. plat := r.Form.Get("plat")
  710. openTime := r.Form.Get("openTime")
  711. openType := r.Form.Get("openType")
  712. isNew := r.Form.Get("isNew")
  713. isBanreg := r.Form.Get("isBanreg")
  714. isWhite := r.Form.Get("isWhite")
  715. serverVersion := r.Form.Get("serverVersion")
  716. gmip := r.Form.Get("gmip")
  717. gmport := r.Form.Get("gmport")
  718. currency := r.Form.Get("currency")
  719. timezone := r.Form.Get("timezone")
  720. exportdata := r.Form.Get("exportdata")
  721. serverInfo := new(gameinfo.ServerInfo)
  722. serverInfo.Id = gconv.Int(id)
  723. serverInfo.Name = name
  724. serverInfo.Ip = ip
  725. serverInfo.Port = port
  726. serverInfo.ServerId = serverId
  727. serverInfo.Channel = channel
  728. serverInfo.SubChannel = subChannel
  729. serverInfo.State = state
  730. serverInfo.Plat = plat
  731. serverInfo.OpenTime = openTime
  732. serverInfo.OpenType = openType
  733. serverInfo.IsNew = isNew
  734. serverInfo.IsBanreg = isBanreg
  735. serverInfo.IsWhite = isWhite
  736. serverInfo.ServerVersion = serverVersion
  737. serverInfo.GMIp = gmip
  738. serverInfo.GMPort = gmport
  739. serverInfo.Currency = currency
  740. serverInfo.Timezone = timezone
  741. serverInfo.Exportdata = exportdata
  742. // 判断添加还是修改
  743. flag := true
  744. singleResult := gameinfo.ModelServer.FindAllBson(bson.D{})
  745. for singleResult.Next(context.TODO()) {
  746. var si gameinfo.ServerInfo
  747. err := singleResult.Decode(&si)
  748. if err != nil {
  749. //log.Fatal(err)
  750. log.Println(err)
  751. continue
  752. }
  753. // 转成同类型 判断服务器是否存在
  754. if gconv.Int(si.Id) == gconv.Int(serverInfo.Id) {
  755. flag = false
  756. }
  757. }
  758. if flag {
  759. // 添加
  760. gameinfo.ModelServer.AddServer(serverInfo)
  761. base.Resp(r, 0, "添加成功", nil)
  762. } else {
  763. // 修改
  764. res := gameinfo.ModelServer.UpdateServer(gconv.Int(id), serverInfo)
  765. if res.ModifiedCount > 0 {
  766. base.Resp(r, 0, "修改成功", nil)
  767. } else {
  768. base.Resp(r, 1, "修改失败", nil)
  769. }
  770. }
  771. }
  772. //根据id查询服务器信息
  773. func (action *Action) GetServerDetail(r *ghttp.Request) {
  774. id := r.GetInt64("id")
  775. bs := bson.D{{"_id", gconv.Int(id)}}
  776. serverInfoList := gameinfo.ModelServer.FindServerInfoList(bs)
  777. dayMap := gmap.New()
  778. for serverInfoList.Next(context.TODO()) {
  779. var serverInfo gameinfo.ServerInfo
  780. err := serverInfoList.Decode(&serverInfo)
  781. if err != nil {
  782. //log.Fatal(err)
  783. log.Println(err)
  784. continue
  785. }
  786. dayMap.Set("id", serverInfo.Id)
  787. dayMap.Set("name", serverInfo.Name)
  788. dayMap.Set("ip", serverInfo.Ip)
  789. dayMap.Set("port", serverInfo.Port)
  790. dayMap.Set("serverId", serverInfo.ServerId)
  791. dayMap.Set("channel", serverInfo.Channel)
  792. dayMap.Set("subChannel", serverInfo.SubChannel)
  793. dayMap.Set("state", serverInfo.State)
  794. dayMap.Set("plat", serverInfo.Plat)
  795. dayMap.Set("openTime", serverInfo.OpenTime)
  796. dayMap.Set("openType", serverInfo.OpenType)
  797. dayMap.Set("isNew", serverInfo.IsNew)
  798. dayMap.Set("isBanreg", serverInfo.IsBanreg)
  799. dayMap.Set("isWhite", serverInfo.IsWhite)
  800. dayMap.Set("serverVersion", serverInfo.ServerVersion)
  801. dayMap.Set("gmip", serverInfo.GMIp)
  802. dayMap.Set("gmport", serverInfo.GMPort)
  803. dayMap.Set("currency", serverInfo.Currency)
  804. dayMap.Set("timezone", serverInfo.Timezone)
  805. dayMap.Set("exportdata", serverInfo.Exportdata)
  806. }
  807. fmt.Println("dayMap=", dayMap)
  808. base.Succ(r, dayMap)
  809. }
  810. //删除服务器信息
  811. func (action *Action) DelServer(r *ghttp.Request) {
  812. id := r.GetInt64("id")
  813. bs := bson.D{{"_id", gconv.Int(id)}}
  814. deleteResult := gameinfo.ModelServer.DelServer(bs)
  815. fmt.Println(deleteResult.DeletedCount)
  816. base.Succ(r, g.Map{"code": 0, "result": deleteResult.DeletedCount})
  817. }
  818. //获取服务器列表
  819. func (action *Action) GetServerList(r *ghttp.Request) {
  820. list := glist.New()
  821. bs := bson.D{}
  822. serverInfoList := gameinfo.ModelServer.FindServerInfoList(bs)
  823. for serverInfoList.Next(context.TODO()) {
  824. dayMap := gmap.New()
  825. var serverInfo gameinfo.ServerInfo
  826. err := serverInfoList.Decode(&serverInfo)
  827. if err != nil {
  828. //log.Fatal(err)
  829. log.Println(err)
  830. continue
  831. }
  832. dayMap.Set("id", serverInfo.Id)
  833. dayMap.Set("name", serverInfo.Name)
  834. dayMap.Set("gmip", serverInfo.GMIp)
  835. dayMap.Set("gmport", serverInfo.GMPort)
  836. dayMap.Set("serverid", serverInfo.ServerId)
  837. list.PushFront(dayMap)
  838. }
  839. base.Succ(r, list)
  840. }
  841. //白名单列表
  842. func (action *Action) WhiteList(r *ghttp.Request) {
  843. form := base.NewForm(r.GetMap())
  844. bs := bson.D{}
  845. if form.Params != nil {
  846. if form.Params["openId"] != "" {
  847. bs1 := bson.E{"openId", bson.D{{"$regex", form.Params["openId"]}}}
  848. bs = append(bs, bs1)
  849. }
  850. }
  851. count := gameinfo.ModelWhiteList.GetListCount(bs)
  852. page := util.Page{
  853. PageSize: gconv.Int64(form.Rows),
  854. CurrentPage: gconv.Int64(form.Page),
  855. Total: gconv.Int64(count),
  856. }
  857. data := g.ListAnyAny{}
  858. whiteListData := gameinfo.ModelWhiteList.FindWhiteList(bs, page)
  859. dayMap := gmap.New()
  860. for whiteListData.Next(context.TODO()) {
  861. var whiteList gameinfo.WhiteList
  862. err := whiteListData.Decode(&whiteList)
  863. if err != nil {
  864. //log.Fatal(err)
  865. log.Println(err)
  866. continue
  867. }
  868. dayMap.Set("id", whiteList.Id)
  869. dayMap.Set("openId", whiteList.OpenId)
  870. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  871. }
  872. fmt.Println(data)
  873. base.Succ(r,
  874. g.Map{
  875. "rows": data,
  876. "total": page.Total,
  877. "current": page.CurrentPage,
  878. })
  879. }
  880. //保存白名单
  881. func (action *Action) SaveWhiteList(r *ghttp.Request) {
  882. id := r.Form.Get("id")
  883. openid := r.Form.Get("openId")
  884. obj_id := primitive.NewObjectID()
  885. if id != "" {
  886. obj_id, _ = primitive.ObjectIDFromHex(id)
  887. }
  888. whiteList := new(gameinfo.WhiteList)
  889. whiteList.Id = obj_id
  890. whiteList.OpenId = openid
  891. res := gameinfo.ModelWhiteList.AddBlackList(id, openid, whiteList)
  892. if res > 0 {
  893. base.Succ(r, g.Map{"code": 0, "result": "操作成功"})
  894. } else {
  895. base.Succ(r, g.Map{"code": 1, "result": "操作失败"})
  896. }
  897. }
  898. func (action *Action) GetWhiteListDetail(r *ghttp.Request) {
  899. id := r.GetString("id")
  900. obj_id, _ := primitive.ObjectIDFromHex(id)
  901. bs := bson.D{{"_id", obj_id}}
  902. page := util.Page{
  903. PageSize: 1,
  904. CurrentPage: 1,
  905. Total: 1,
  906. }
  907. whiteListData := gameinfo.ModelWhiteList.FindWhiteList(bs, page)
  908. dayMap := gmap.New()
  909. for whiteListData.Next(context.TODO()) {
  910. var whiteList gameinfo.WhiteList
  911. err := whiteListData.Decode(&whiteList)
  912. if err != nil {
  913. //log.Fatal(err)
  914. log.Println(err)
  915. continue
  916. }
  917. dayMap.Set("id", whiteList.Id)
  918. dayMap.Set("openId", whiteList.OpenId)
  919. }
  920. fmt.Println("dayMap=", dayMap)
  921. base.Succ(r, dayMap)
  922. }
  923. //删除白名单信息
  924. func (action *Action) DelWhiteList(r *ghttp.Request) {
  925. id := r.GetString("id")
  926. obj_id, _ := primitive.ObjectIDFromHex(id)
  927. bs := bson.D{{"_id", obj_id}}
  928. deleteResult := gameinfo.ModelWhiteList.DelWhiteList(bs)
  929. fmt.Println(deleteResult.DeletedCount)
  930. base.Succ(r, g.Map{"code": 0, "result": deleteResult.DeletedCount})
  931. }
  932. //黑名单列表
  933. func (action *Action) BlackList(r *ghttp.Request) {
  934. form := base.NewForm(r.GetMap())
  935. bs := bson.D{}
  936. if form.Params != nil {
  937. if form.Params["openId"] != "" {
  938. bs1 := bson.E{"openId", bson.D{{"$regex", form.Params["openId"]}}}
  939. bs = append(bs, bs1)
  940. }
  941. }
  942. data := g.ListAnyAny{}
  943. count := gameinfo.ModelBlackList.GetListCount(bs)
  944. page := util.Page{
  945. PageSize: gconv.Int64(form.Rows),
  946. CurrentPage: gconv.Int64(form.Page),
  947. Total: gconv.Int64(count),
  948. }
  949. blackListData := gameinfo.ModelBlackList.FindBlackList(bs, page)
  950. dayMap := gmap.New()
  951. for blackListData.Next(context.TODO()) {
  952. var blackList gameinfo.BlackList
  953. err := blackListData.Decode(&blackList)
  954. if err != nil {
  955. //log.Fatal(err)
  956. log.Println(err)
  957. continue
  958. }
  959. dayMap.Set("id", blackList.Id)
  960. dayMap.Set("openId", blackList.OpenId)
  961. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  962. }
  963. fmt.Println(data)
  964. base.Succ(r,
  965. g.Map{
  966. //"page": page.PageSize,
  967. "rows": data,
  968. "total": page.Total,
  969. "current": page.CurrentPage,
  970. })
  971. }
  972. //保存黑名单
  973. func (action *Action) SaveBlackList(r *ghttp.Request) {
  974. id := r.Form.Get("id")
  975. openid := r.Form.Get("openId")
  976. obj_id := primitive.NewObjectID()
  977. if id != "" {
  978. obj_id, _ = primitive.ObjectIDFromHex(id)
  979. }
  980. blackList := new(gameinfo.BlackList)
  981. blackList.Id = obj_id
  982. blackList.OpenId = openid
  983. res := gameinfo.ModelBlackList.AddBlackList(id, openid, blackList)
  984. if res > 0 {
  985. base.Succ(r, g.Map{"code": 0, "result": "操作成功"})
  986. } else {
  987. base.Succ(r, g.Map{"code": 1, "result": "操作失败"})
  988. }
  989. }
  990. func (action *Action) GetBlackListDetail(r *ghttp.Request) {
  991. id := r.GetString("id")
  992. obj_id, _ := primitive.ObjectIDFromHex(id)
  993. bs := bson.D{{"_id", obj_id}}
  994. page := util.Page{
  995. PageSize: 1,
  996. CurrentPage: 1,
  997. Total: 1,
  998. }
  999. blackListData := gameinfo.ModelBlackList.FindBlackList(bs, page)
  1000. dayMap := gmap.New()
  1001. for blackListData.Next(context.TODO()) {
  1002. var blackList gameinfo.BlackList
  1003. err := blackListData.Decode(&blackList)
  1004. if err != nil {
  1005. //log.Fatal(err)
  1006. log.Println(err)
  1007. continue
  1008. }
  1009. dayMap.Set("id", blackList.Id)
  1010. dayMap.Set("openId", blackList.OpenId)
  1011. }
  1012. fmt.Println("GetBlackListDetail-dayMap=", dayMap)
  1013. base.Succ(r, dayMap)
  1014. }
  1015. //删除黑名单信息
  1016. func (action *Action) DelBlackList(r *ghttp.Request) {
  1017. id := r.GetString("id")
  1018. obj_id, _ := primitive.ObjectIDFromHex(id)
  1019. bs := bson.D{{"_id", obj_id}}
  1020. deleteResult := gameinfo.ModelBlackList.DelBlackList(bs)
  1021. fmt.Println(deleteResult.DeletedCount)
  1022. base.Succ(r, g.Map{"code": 0, "result": deleteResult.DeletedCount})
  1023. }
  1024. //公告信息列表
  1025. func (action *Action) NoticeInfo(r *ghttp.Request) {
  1026. var timeLayoutStr = "2006-01-02 15:04:05"
  1027. form := base.NewForm(r.GetMap())
  1028. bs := bson.D{}
  1029. data := g.ListAnyAny{}
  1030. count := gameinfo.ModelNoticeInfo.GetListCount(bs)
  1031. page := util.Page{
  1032. PageSize: gconv.Int64(form.Rows),
  1033. CurrentPage: gconv.Int64(form.Page),
  1034. Total: gconv.Int64(count),
  1035. }
  1036. noticeInfoData := gameinfo.ModelNoticeInfo.GetPageList(bs, page)
  1037. dayMap := gmap.New()
  1038. for noticeInfoData.Next(context.TODO()) {
  1039. var noticeInfo gameinfo.NoticeInfo
  1040. err := noticeInfoData.Decode(&noticeInfo)
  1041. if err != nil {
  1042. //log.Fatal(err)
  1043. log.Println(err)
  1044. continue
  1045. }
  1046. dayMap.Set("id", noticeInfo.Id)
  1047. dayMap.Set("title", noticeInfo.Title)
  1048. dayMap.Set("content", noticeInfo.Content)
  1049. dayMap.Set("grade", noticeInfo.Grade)
  1050. st := time.Unix(noticeInfo.PublishTime/1000, 0).Format(timeLayoutStr)
  1051. dayMap.Set("publishtime", st)
  1052. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  1053. }
  1054. fmt.Println(data)
  1055. base.Succ(r,
  1056. g.Map{
  1057. "rows": data,
  1058. "total": page.Total,
  1059. "current": page.CurrentPage,
  1060. })
  1061. }
  1062. //保存公告
  1063. func (action *Action) SaveNoticeInfo(r *ghttp.Request) {
  1064. //var timeLayoutStr = "2006-01-02 15:04:05"
  1065. id := r.Form.Get("id")
  1066. title := r.Form.Get("title")
  1067. content := r.Form.Get("content")
  1068. grade := r.Form.Get("grade")
  1069. time := r.Form.Get("publishtime")
  1070. fmt.Println("time================", time)
  1071. publishtime := gtime.NewFromStr(time)
  1072. noticeInfo := new(gameinfo.NoticeInfo)
  1073. noticeInfo.Id = id
  1074. noticeInfo.Title = title
  1075. noticeInfo.Content = content
  1076. noticeInfo.Grade = grade
  1077. noticeInfo.PublishTime = gconv.Int64(publishtime.TimestampMilliStr())
  1078. res := gameinfo.ModelNoticeInfo.AddNoticeInfo(gconv.String(id), noticeInfo)
  1079. fmt.Println("res=", res.MatchedCount)
  1080. if res.ModifiedCount > 0 {
  1081. base.Succ(r, g.Map{"code": 0, "result": "操作成功"})
  1082. } else {
  1083. base.Succ(r, g.Map{"code": 1, "result": "操作失败"})
  1084. }
  1085. }
  1086. func (action *Action) GetNoticeInfoDetail(r *ghttp.Request) {
  1087. id := r.GetInt64("id")
  1088. bs := bson.D{{"_id", gconv.String(id)}}
  1089. noticeInfoData := gameinfo.ModelNoticeInfo.FindNoticeInfo(bs)
  1090. dayMap := gmap.New()
  1091. for noticeInfoData.Next(context.TODO()) {
  1092. var noticeInfo gameinfo.NoticeInfo
  1093. err := noticeInfoData.Decode(&noticeInfo)
  1094. if err != nil {
  1095. //log.Fatal(err)
  1096. log.Println(err)
  1097. continue
  1098. }
  1099. dayMap.Set("id", noticeInfo.Id)
  1100. dayMap.Set("title", noticeInfo.Title)
  1101. dayMap.Set("content", noticeInfo.Content)
  1102. dayMap.Set("grade", noticeInfo.Grade)
  1103. dayMap.Set("publishtime", noticeInfo.PublishTime)
  1104. }
  1105. fmt.Println("dayMap=", dayMap)
  1106. base.Succ(r, dayMap)
  1107. }
  1108. //删除公告
  1109. func (action *Action) DelNoticeInfo(r *ghttp.Request) {
  1110. id := r.GetInt64("id")
  1111. bs := bson.D{{"_id", gconv.String(id)}}
  1112. deleteResult := gameinfo.ModelNoticeInfo.DelNoticeInfo(bs)
  1113. fmt.Println(deleteResult.DeletedCount)
  1114. base.Succ(r, g.Map{"code": 0, "result": deleteResult.DeletedCount})
  1115. }
  1116. // 整体数据
  1117. func (action *Action) GetRechargeStatisticsList(r *ghttp.Request) {
  1118. form := base.NewForm(r.GetMap())
  1119. bs := bson.D{}
  1120. if form.Params != nil {
  1121. if form.Params["searchData"] != "" {
  1122. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  1123. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  1124. bs = bson.D{{"creatday", bson.D{{"$gte", stime}, {"$lte", etime}}}}
  1125. }
  1126. }
  1127. page := util.Page{
  1128. PageSize: gconv.Int64(form.Rows),
  1129. CurrentPage: gconv.Int64(form.Page),
  1130. }
  1131. var statisticalRechargeList *mongo.Cursor
  1132. if form.Params["serverid"] == "" {
  1133. count := gameinfo.ModelStatisticalRecharge.GetListCount(bs)
  1134. page.Total = gconv.Int64(count)
  1135. statisticalRechargeList = gameinfo.ModelStatisticalRecharge.GetDataByTimeDesc(bs, page)
  1136. } else {
  1137. count := gameinfo.ModelStatisticalRecharge.GetListCountByServer(bs, form.Params["serverid"])
  1138. page.Total = gconv.Int64(count)
  1139. statisticalRechargeList = gameinfo.ModelStatisticalRecharge.GetDataByServerTimeDesc(bs, page, form.Params["serverid"])
  1140. }
  1141. data := g.ListAnyAny{}
  1142. dayMap := gmap.New()
  1143. regMap := gameinfo.ModelRegister.FindRegTime()
  1144. loginMap := gameinfo.ModeLogin.FindDau()
  1145. for statisticalRechargeList.Next(context.TODO()) {
  1146. var statisticalRecharge gameinfo.StatisticalRecharge
  1147. err := statisticalRechargeList.Decode(&statisticalRecharge)
  1148. if err != nil {
  1149. //log.Fatal(err)
  1150. log.Println(err)
  1151. continue
  1152. }
  1153. creatDay := statisticalRecharge.CreatDay
  1154. dayMap.Set("creatday", creatDay) //日期
  1155. dayMap.Set("newrechargenum", statisticalRecharge.NewRechargeNum) //新增充值人数
  1156. newRechargeAmount1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(statisticalRecharge.NewRechargeAmount)/float64(100)), 64)
  1157. dayMap.Set("newrechargeamount", newRechargeAmount1) //新增充值总额
  1158. dayMap.Set("newrechargecount", statisticalRecharge.NewRechargeCount) //新增充值次数
  1159. dayMap.Set("rechargenum", statisticalRecharge.RechargeNum) //充值人数
  1160. rechargeAmount1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(statisticalRecharge.RechargeAmount)/float64(100)), 64)
  1161. dayMap.Set("rechargeamount", rechargeAmount1) //充值总额
  1162. dayMap.Set("rechargecount", statisticalRecharge.RechargeCount) //充值次数
  1163. dayMap.Set("oldrechargenum", gconv.Int(statisticalRecharge.RechargeNum)-gconv.Int(statisticalRecharge.NewRechargeNum)) //老用户充值人数
  1164. dayMap.Set("oldrechargeamount", rechargeAmount1-newRechargeAmount1) //老用户充值总额
  1165. //var registerNum, loginNum, oldLoginNum int
  1166. if form.Params["serverid"] == "" {
  1167. //新增角色、DAU(账号)赋初始值
  1168. dayMap.Set("newrole", 0)
  1169. dayMap.Set("pDayu", 0)
  1170. for _, m := range regMap {
  1171. if gconv.String(m["date"]) == creatDay {
  1172. //新增角色
  1173. dayMap.Set("newrole", m["count"])
  1174. }
  1175. }
  1176. for _, m := range loginMap {
  1177. if gconv.String(m["date"]) == creatDay {
  1178. //DAU(账号)
  1179. dayMap.Set("pDayu", m["count"])
  1180. }
  1181. }
  1182. ////查询注册人数
  1183. //registerNum := gameinfo.ModelHour.GetOneDayRegister(creatDay)
  1184. //查询当日注册账号数
  1185. registerAccountNum := gameinfo.ModelRegister.GetOneDayRegisterAccount(creatDay, "")
  1186. startTime := gtime.NewFromStr(creatDay)
  1187. userList := garray.New(false)
  1188. userAccountList := garray.New(false)
  1189. daystartTime := startTime.Local().TimestampMilli()
  1190. dayendTime := startTime.Clone().AddDate(0, 0, 1).Local().TimestampMilli() - 1
  1191. oneDayAll := gameinfo.ModeLogin.FindAllBson(bson.D{{"loginTime.loginTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  1192. var oneDayAllM []bson.M
  1193. if err := oneDayAll.All(context.TODO(), &oneDayAllM); err != nil {
  1194. fmt.Println(err)
  1195. }
  1196. for _, v1 := range oneDayAllM {
  1197. loginTime := v1["loginTime"].(primitive.M)
  1198. if !userList.Contains(loginTime["uid"]) {
  1199. userList.Append(loginTime["uid"])
  1200. }
  1201. if !userAccountList.Contains(loginTime["openId"]) {
  1202. userAccountList.Append(loginTime["openId"])
  1203. }
  1204. }
  1205. //登录角色数
  1206. loginNum := userList.Len()
  1207. //查询登录账号数
  1208. loginAccountNum := userAccountList.Len()
  1209. //当日或自定义时间段的老用户登录数
  1210. oldLoginNum := gameinfo.ModelHourLogin.GetOldUserLoginNum(creatDay)
  1211. //新增付费率 (新增充值人数 / 当日注册人数(账号))
  1212. dayMap.Set("newrate", gconv.String(gconv.Float64(statisticalRecharge.NewRechargeNum)/gconv.Float64(registerAccountNum)*100))
  1213. //登录付费率 (总充值人数 / 登录人数(账号))|
  1214. dayMap.Set("loginrate", gconv.String(gconv.Float64(statisticalRecharge.RechargeNum)/gconv.Float64(loginAccountNum)*100))
  1215. //arppu (充值总额 / 充值人数)|
  1216. dayMap.Set("arppu", gconv.String(gconv.Float64(rechargeAmount1)/gconv.Float64(statisticalRecharge.RechargeNum)))
  1217. //老用户付费率 (老用户充值人数 / 当日或自定义时间段的老用户登录数)|
  1218. dayMap.Set("oldrate", gconv.String(gconv.Float64(gconv.Float64(statisticalRecharge.RechargeNum)-gconv.Float64(statisticalRecharge.NewRechargeNum))/gconv.Float64(oldLoginNum)*100))
  1219. //新增arpu (新增充值总额 / 当日注册人数(账号))|
  1220. dayMap.Set("newarpu", gconv.String(gconv.Float64(newRechargeAmount1)/gconv.Float64(registerAccountNum)))
  1221. //老玩家arpu (老用户充值总额 / 当日或自定义时间段的老用户登录数)
  1222. dayMap.Set("oldarpu", gconv.String(gconv.Float64(rechargeAmount1-newRechargeAmount1)/gconv.Float64(oldLoginNum)))
  1223. //活跃arpu (充值总额 / 登录人数(账号))
  1224. dayMap.Set("activearpu", gconv.String(gconv.Float64(rechargeAmount1)/gconv.Float64(loginAccountNum)))
  1225. ////当日ltv (当日充值总额 / 当日登录人数)
  1226. //dayMap.Set("ltv", gconv.String(gconv.Float64(statisticalRecharge.RechargeAmount)/gconv.Float64(loginNum)))
  1227. //新增(账号)
  1228. dayMap.Set("regnum", registerAccountNum)
  1229. //总登角色
  1230. dayMap.Set("count", loginNum)
  1231. } else {
  1232. //查询注册人数
  1233. registerNum := gameinfo.ModelHour.GetOneDayRegisterByServer(creatDay, gconv.String(form.Params["serverid"]))
  1234. //查询当日注册账号数
  1235. registerAccountNum := gameinfo.ModelRegister.GetOneDayRegisterAccount(creatDay, gconv.String(form.Params["serverid"]))
  1236. //fmt.Println("==================================", registerNum, creatDay, registerAccountNum)
  1237. startTime := gtime.NewFromStr(creatDay)
  1238. userList := garray.New(false)
  1239. daystartTime := startTime.Local().TimestampMilli()
  1240. dayendTime := startTime.Clone().AddDate(0, 0, 1).Local().TimestampMilli() - 1
  1241. oneDayAll := gameinfo.ModeLogin.FindAllBson(bson.D{{"loginTime.serverId", gconv.String(form.Params["serverid"])}, {"loginTime.loginTime", bson.D{{"$gte", daystartTime}, {"$lte", dayendTime}}}})
  1242. var oneDayAllM []bson.M
  1243. if err := oneDayAll.All(context.TODO(), &oneDayAllM); err != nil {
  1244. fmt.Println(err)
  1245. }
  1246. for _, v1 := range oneDayAllM {
  1247. loginTime := v1["loginTime"].(primitive.M)
  1248. if !userList.Contains(loginTime["uid"]) {
  1249. userList.Append(loginTime["uid"])
  1250. }
  1251. }
  1252. //查询登录人数
  1253. loginNum := userList.Len()
  1254. ////查询登录人数
  1255. //loginNum = gameinfo.ModelHourLogin.GetOneDayRegisterByServer(creatDay, gconv.String(form.Params["serverid"]))
  1256. //当日或自定义时间段的老用户登录数
  1257. oldLoginNum := gameinfo.ModelHourLogin.GetOldUserLoginNumByServer(creatDay, gconv.String(form.Params["serverid"]))
  1258. //新增付费率 (该服新增充值角色数 / 当日该服新增角色数)
  1259. dayMap.Set("newrate", gconv.String(gconv.Float64(statisticalRecharge.NewRechargeNum)/gconv.Float64(registerNum)*100))
  1260. //登录付费率 (该服当日总充值角色数 / 当日该服登录角色数)
  1261. dayMap.Set("loginrate", gconv.String(gconv.Float64(statisticalRecharge.RechargeNum)/gconv.Float64(loginNum)*100))
  1262. //arppu (该服当日充值总额 / 该服当日充值角色数(排重))
  1263. dayMap.Set("arppu", gconv.String(gconv.Float64(rechargeAmount1)/gconv.Float64(statisticalRecharge.RechargeNum)))
  1264. //老用户付费率 (该服老用户充值角色数 / 当日或自定义时间段的老用户角色登录数)
  1265. dayMap.Set("oldrate", gconv.String(gconv.Float64(gconv.Float64(statisticalRecharge.RechargeNum)-gconv.Float64(statisticalRecharge.NewRechargeNum))/gconv.Float64(oldLoginNum)*100))
  1266. //新增arpu (该服当日新增充值总额 / 该服当日新增角色数)
  1267. dayMap.Set("newarpu", gconv.String(gconv.Float64(newRechargeAmount1)/gconv.Float64(registerNum)))
  1268. //老玩家arpu (该服老用户角色充值总额 / 当日或自定义时间段的老用户角色登录数)
  1269. dayMap.Set("oldarpu", gconv.String(gconv.Float64(rechargeAmount1-newRechargeAmount1)/gconv.Float64(oldLoginNum)))
  1270. //活跃arpu (该服充值总额 / 该服当日登录角色数)
  1271. dayMap.Set("activearpu", gconv.String(gconv.Float64(rechargeAmount1)/gconv.Float64(loginNum)))
  1272. ////当日ltv (当日该服充值总额 / 当日该服登录角色数)
  1273. //dayMap.Set("ltv", gconv.String(gconv.Float64(statisticalRecharge.RechargeAmount)/gconv.Float64(loginNum)))
  1274. //新增(账号)
  1275. dayMap.Set("regnum", registerAccountNum)
  1276. //总登角色
  1277. dayMap.Set("count", loginNum)
  1278. //新增角色、DAU(账号)
  1279. dayMap.Set("newrole", registerNum)
  1280. dayMap.Set("pDayu", loginNum)
  1281. }
  1282. //获取今天新增的玩家
  1283. daystartTime := gtime.NewFromStr(creatDay).Local().TimestampMilli()
  1284. dayendTime := gtime.NewFromStr(creatDay).Clone().AddDate(0, 0, 1).Local().TimestampMilli() - 1
  1285. todayUsers := garray.New(false)
  1286. //查询当日新增玩家累计付费信息
  1287. var todayRes interface{}
  1288. if form.Params["serverid"] == "" {
  1289. todayUsers = gameinfo.ModelRegister.FindNew(daystartTime, dayendTime)
  1290. todayRes = gameinfo.ModelPay.GetTodayNewCumulativeRecharge(gconv.SliceAny(todayUsers), creatDay, "")
  1291. } else {
  1292. todayUsers = gameinfo.ModelRegister.FindNewByServerId(daystartTime, dayendTime, form.Params["serverid"])
  1293. todayRes = gameinfo.ModelPay.GetTodayNewCumulativeRecharge(gconv.SliceAny(todayUsers), creatDay, form.Params["serverid"])
  1294. }
  1295. todaymap := gconv.Map(todayRes)
  1296. //当日新增玩家累计付费人数
  1297. if todaymap["num"] != "" {
  1298. dayMap.Set("todaynewcumulativerechargenum", todaymap["num"])
  1299. } else {
  1300. dayMap.Set("todaynewcumulativerechargenum", 0)
  1301. }
  1302. //当日新增玩家累计付费金额
  1303. if todaymap["amount"] != "" {
  1304. amount, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", gconv.Float64(todaymap["amount"])/float64(100)), 64)
  1305. dayMap.Set("todaynewcumulativerechargeamount", amount)
  1306. } else {
  1307. dayMap.Set("todaynewcumulativerechargeamount", 0)
  1308. }
  1309. //当日新增玩家累计付费次数
  1310. if todaymap["count"] != "" {
  1311. dayMap.Set("todaynewcumulativerechargecount", todaymap["count"])
  1312. } else {
  1313. dayMap.Set("todaynewcumulativerechargecount", 0)
  1314. }
  1315. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  1316. }
  1317. base.Succ(r,
  1318. g.Map{
  1319. "rows": data,
  1320. "total": page.Total,
  1321. "current": page.CurrentPage,
  1322. })
  1323. }
  1324. //消费流水
  1325. func (action *Action) RechargeFlow(r *ghttp.Request) {
  1326. form := base.NewForm(r.GetMap())
  1327. bs := bson.D{}
  1328. if form.Params != nil {
  1329. if form.Params["uid"] != "" {
  1330. bs1 := bson.E{"uid", gconv.Int32(form.Params["uid"])}
  1331. bs = append(bs, bs1)
  1332. }
  1333. if form.Params["serverid"] != "" {
  1334. bs1 := bson.E{"region", gconv.Int32(form.Params["serverid"])}
  1335. bs = append(bs, bs1)
  1336. }
  1337. if form.Params["orderId"] != "" {
  1338. bs1 := bson.E{"billno", form.Params["orderId"]}
  1339. bs = append(bs, bs1)
  1340. }
  1341. if form.Params["payItem"] != "" {
  1342. bs1 := bson.E{"pay_item", form.Params["payItem"]}
  1343. bs = append(bs, bs1)
  1344. }
  1345. if form.Params["payStatus"] != "" {
  1346. if form.Params["payStatus"] == "1" {
  1347. bs1 := bson.E{"status", gconv.Int32(1)}
  1348. bs = append(bs, bs1)
  1349. bs2 := bson.E{"handlestatus", gconv.Int32(1)}
  1350. bs = append(bs, bs2)
  1351. }
  1352. }
  1353. if form.Params["searchData"] != "" {
  1354. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  1355. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  1356. bs1 := bson.E{"creattime", bson.D{{"$gte", gconv.String(stime)}, {"$lte", gconv.String(etime)}}}
  1357. bs = append(bs, bs1)
  1358. }
  1359. }
  1360. data := g.ListAnyAny{}
  1361. count := gameinfo.ModelPay.GetListCount(bs)
  1362. page := util.Page{
  1363. PageSize: gconv.Int64(form.Rows),
  1364. CurrentPage: gconv.Int64(form.Page),
  1365. Total: gconv.Int64(count),
  1366. }
  1367. payList := gameinfo.ModelPay.FindHour(bs, page)
  1368. dayMap := gmap.New()
  1369. for payList.Next(context.TODO()) {
  1370. var pay gameinfo.Pay
  1371. err := payList.Decode(&pay)
  1372. if err != nil {
  1373. //log.Fatal(err)
  1374. log.Println(err)
  1375. continue
  1376. }
  1377. dayMap.Set("uid", pay.Uid)
  1378. dayMap.Set("region", pay.Region)
  1379. dayMap.Set("status", pay.Status)
  1380. dayMap.Set("handlestatus", pay.Handlestatus)
  1381. dayMap.Set("payItem", pay.PayItem)
  1382. dayMap.Set("billno", pay.Billno)
  1383. money1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", gconv.Float64(pay.Money)/float64(100)), 64)
  1384. dayMap.Set("money", money1)
  1385. dayMap.Set("cporderId", pay.CporderId)
  1386. dayMap.Set("level", pay.Level)
  1387. dayMap.Set("vipLevel", pay.VipLevel)
  1388. dayMap.Set("creattime", pay.Creattime)
  1389. dayMap.Set("callbaktime", pay.Callbaktime)
  1390. dayMap.Set("handletime", pay.Handlestatus)
  1391. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  1392. }
  1393. fmt.Println(data)
  1394. base.Succ(r,
  1395. g.Map{
  1396. "rows": data,
  1397. "total": page.Total,
  1398. "current": page.CurrentPage,
  1399. })
  1400. }
  1401. type ChatInfo struct {
  1402. Uid int `json:"uid"`
  1403. Name string `json:"name"`
  1404. Type int `json:"type"`
  1405. Message string `json:"message"`
  1406. Time int64 `json:"time"`
  1407. Status int `json:"status"`
  1408. }
  1409. //获取聊天信息
  1410. func (action *Action) GetChatInfoList(r *ghttp.Request) {
  1411. const CHAT_INFO_CACHE = "CHAT_INFO_CACHE"
  1412. const separator = ":"
  1413. const timeLayoutStr = "2006-01-02 15:04:05"
  1414. serverId := g.Config().GetString("mongo-port")
  1415. //1世界;2公会
  1416. paramType := "1"
  1417. form := base.NewForm(r.GetMap())
  1418. if form.Params != nil {
  1419. if form.Params["serverid"] != "" {
  1420. serverId = form.Params["serverid"]
  1421. }
  1422. if form.Params["ctype"] != "" {
  1423. paramType = form.Params["ctype"]
  1424. }
  1425. }
  1426. page := g.ListAnyAny{}
  1427. jsonStr, _ := g.Redis().DoVar("LRANGE", serverId+separator+CHAT_INFO_CACHE+separator+paramType, "0", "-1")
  1428. res := jsonStr.Array()
  1429. for _, v := range res {
  1430. var chatInfo ChatInfo
  1431. e := json.Unmarshal([]byte(gconv.String(v)), &chatInfo)
  1432. if e != nil {
  1433. fmt.Println("转换json出现错误")
  1434. base.Succ(r,
  1435. g.Map{
  1436. "page": form.Page,
  1437. "rows": g.ListAnyAny{},
  1438. "total": form.TotalPage,
  1439. "records": form.TotalSize,
  1440. })
  1441. }
  1442. dayMap := gmap.New()
  1443. dayMap.Set("uid", chatInfo.Uid)
  1444. dayMap.Set("serverId", serverId)
  1445. dayMap.Set("name", chatInfo.Name)
  1446. dayMap.Set("type", chatInfo.Type)
  1447. dayMap.Set("message", chatInfo.Message)
  1448. dayMap.Set("status", chatInfo.Status)
  1449. dayMap.Set("time", time.Unix(chatInfo.Time/1000, 0).Format(timeLayoutStr))
  1450. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  1451. }
  1452. fmt.Println(page)
  1453. base.Succ(r,
  1454. g.Map{
  1455. "page": form.Page,
  1456. "rows": page,
  1457. "total": form.TotalPage,
  1458. "records": form.TotalSize,
  1459. })
  1460. }
  1461. //设置禁言状态
  1462. func (action *Action) SetSilence(r *ghttp.Request) {
  1463. const cmdStr = "silence"
  1464. id := r.GetString("id")
  1465. stype := r.GetString("type")
  1466. serverid := r.GetString("serverId")
  1467. if serverid == "undefined" {
  1468. base.Fail(r, "请选择服务器后再试一下")
  1469. }
  1470. ages := id + " " + stype
  1471. //根据服务器id查询gmip,gmport,服务器名称
  1472. singleResult := gameinfo.ModelServer.FindOne("server_id", serverid)
  1473. var serverInfo gameinfo.ServerInfo
  1474. err := singleResult.Decode(&serverInfo)
  1475. gmip := serverInfo.GMIp
  1476. gmport := serverInfo.GMPort
  1477. servername := serverInfo.Name
  1478. if err != nil {
  1479. base.Fail(r, "查询服务器信息出现异常,"+serverid)
  1480. }
  1481. cmd := netutil.Gmcmd{
  1482. ServerIp: gmip,
  1483. ServerPort: gmport,
  1484. Cmd: cmdStr,
  1485. Args: ages,
  1486. }
  1487. fmt.Println(cmd)
  1488. res := cmd.Creatcdk() //0 成功
  1489. if res == -100 {
  1490. base.Resp(r, 1, "thrift解析地址时出错", nil)
  1491. } else if res == -101 {
  1492. base.Resp(r, 1, "thrift打开服务器socket出错", nil)
  1493. }
  1494. //保存日志
  1495. var silenceLog gm.SilenceLog
  1496. silenceLog.Id = primitive.NewObjectID()
  1497. silenceLog.ServerId = serverid
  1498. silenceLog.ServerName = servername
  1499. silenceLog.Uid = gconv.Int(id)
  1500. silenceLog.Stype = gconv.Int(stype)
  1501. silenceLog.Cmd = gconv.String(cmdStr)
  1502. silenceLog.UpdateUser = base.GetUser(r).Username
  1503. silenceLog.UpdateTime = time.Now().Unix()
  1504. gm.ModelSilence.InsertOne(silenceLog)
  1505. if res == 0 {
  1506. base.Resp(r, 0, "修改成功", nil)
  1507. } else {
  1508. base.Resp(r, 1, "修改失败", nil)
  1509. }
  1510. }
  1511. //获取在线人数
  1512. func (action *Action) GetOnlineNumList(r *ghttp.Request) {
  1513. const ONLINE_NUM = "ONLINE_NUM"
  1514. const separator = ":"
  1515. page := g.ListAnyAny{}
  1516. bs := bson.D{}
  1517. serverInfoList := gameinfo.ModelServer.FindServerInfoList(bs)
  1518. for serverInfoList.Next(context.TODO()) {
  1519. var serverInfo gameinfo.ServerInfo
  1520. err := serverInfoList.Decode(&serverInfo)
  1521. if err != nil {
  1522. //log.Fatal(err)
  1523. log.Println(err)
  1524. continue
  1525. }
  1526. jsonStr, _ := g.Redis().DoVar("GET", ONLINE_NUM+separator+serverInfo.ServerId)
  1527. res := jsonStr.Array()
  1528. onlineNum := 0
  1529. dayMap := gmap.New()
  1530. for _, v := range res {
  1531. e := json.Unmarshal([]byte(gconv.String(v)), &onlineNum)
  1532. if e != nil {
  1533. fmt.Println("转换json出现错误")
  1534. base.Succ(r,
  1535. g.Map{
  1536. "rows": g.ListAnyAny{},
  1537. })
  1538. }
  1539. }
  1540. dayMap.Set("serverName", serverInfo.Name)
  1541. dayMap.Set("onlineNum", gconv.String(onlineNum))
  1542. page = append(g.ListAnyAny{gconv.Map(dayMap)}, page...)
  1543. }
  1544. fmt.Println(page)
  1545. base.Succ(r,
  1546. g.Map{
  1547. "rows": page,
  1548. })
  1549. }
  1550. //用户操作记录
  1551. func (action *Action) GetItemLogList(r *ghttp.Request) {
  1552. // 读取配置表
  1553. itemConfig := codeutil.GetItemConfig()
  1554. reasonConfig := codeutil.GetReasonConfig()
  1555. const timeLayoutStr = "2006-01-02 15:04:05"
  1556. form := base.NewForm(r.GetMap())
  1557. bs := bson.D{}
  1558. // 默认查询配置中的服务器
  1559. serverId := g.Config().GetString("mongo-port")
  1560. if form.Params != nil {
  1561. if form.Params["uid"] != "" {
  1562. bs1 := bson.E{"uid", gconv.Int32(form.Params["uid"])}
  1563. bs = append(bs, bs1)
  1564. }
  1565. if form.Params["serverid"] != "" {
  1566. serverId = gconv.String(form.Params["serverid"])
  1567. }
  1568. if form.Params["typenum"] != "" {
  1569. bs1 := bson.E{"type", gconv.Int32(form.Params["typenum"])}
  1570. bs = append(bs, bs1)
  1571. }
  1572. if form.Params["reasonid"] != "" {
  1573. bs1 := bson.E{"reason", gconv.Int32(form.Params["reasonid"])}
  1574. bs = append(bs, bs1)
  1575. }
  1576. if form.Params["itemId"] != "" {
  1577. bs1 := bson.E{"itemId", gconv.Int32(form.Params["itemId"])}
  1578. bs = append(bs, bs1)
  1579. }
  1580. if form.Params["searchData"] != "" {
  1581. stime := gconv.MapStrStr(form.Params["searchData"])["0"]
  1582. etime := gconv.MapStrStr(form.Params["searchData"])["1"]
  1583. startTime := gtime.NewFromStr(stime).Local().TimestampMilli()
  1584. endTime := gtime.NewFromStr(etime).Local().TimestampMilli()
  1585. bs = append(bs, bson.E{"time", bson.D{{"$gte", gconv.String(startTime)}, {"$lte", gconv.String(endTime)}}})
  1586. }
  1587. }
  1588. data := g.ListAnyAny{}
  1589. bsCount := len(bs)
  1590. count := 0
  1591. if bsCount > 0 {
  1592. count = gameinfo.ModelItemlog.GetListCountByServer2(bs, serverId)
  1593. }
  1594. page := util.Page{
  1595. PageSize: gconv.Int64(form.Rows),
  1596. CurrentPage: gconv.Int64(form.Page),
  1597. Total: gconv.Int64(count),
  1598. }
  1599. dayMap := gmap.New()
  1600. if bsCount > 0 {
  1601. payList := gameinfo.ModelItemlog.GetDataByServerTimeDesc2(bs, page, serverId)
  1602. for payList.Next(context.TODO()) {
  1603. var itemLog gameinfo.ItemLog
  1604. err := payList.Decode(&itemLog)
  1605. if err != nil {
  1606. //log.Fatal(err)
  1607. log.Println(err)
  1608. continue
  1609. }
  1610. dayMap.Set("uid", itemLog.Uid)
  1611. dayMap.Set("typenum", itemLog.Type)
  1612. dayMap.Set("level", itemLog.Level)
  1613. dayMap.Set("time", gconv.Time(itemLog.Time).Format(timeLayoutStr))
  1614. dayMap.Set("reasonid", itemLog.Reason)
  1615. reasonNotes, _ := reasonConfig.Get(gconv.String(itemLog.Reason))
  1616. dayMap.Set("reason", gconv.Map(reasonNotes)["Notes"])
  1617. dayMap.Set("itemid", itemLog.ItemId)
  1618. goodsName, _ := itemConfig.Get(gconv.String(itemLog.ItemId))
  1619. dayMap.Set("itemname", goodsName)
  1620. dayMap.Set("itemnum", itemLog.ItemNum)
  1621. dayMap.Set("itemtotalnum", itemLog.ItemTotalNum)
  1622. dayMap.Set("exitInfo", itemLog.ExitInfo)
  1623. dayMap.Set("totalnum", 0)
  1624. dayMap.Set("state", 0)
  1625. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  1626. }
  1627. }
  1628. if form.Params["itemId"] != "" && form.Params["uid"] != "" {
  1629. for res := range data {
  1630. if res == form.Rows-1 || res == len(data)-1 {
  1631. continue
  1632. }
  1633. //fmt.Println(item)
  1634. item := gconv.MapStrStr(data[res])
  1635. nextItem := gconv.MapStrStr(data[res+1])
  1636. typenum := gconv.MapStrStr(data[res+1])["typenum"]
  1637. // 0:获得;1:消耗
  1638. if typenum == "0" {
  1639. // 正常情况是相等的
  1640. num := gconv.Int(nextItem["itemtotalnum"]) - gconv.Int(nextItem["itemnum"])
  1641. if gconv.Int(item["itemtotalnum"]) == num {
  1642. item["totalnum"] = gconv.String(num)
  1643. item["state"] = "0"
  1644. } else {
  1645. item["totalnum"] = gconv.String(num)
  1646. item["state"] = "1"
  1647. }
  1648. } else if typenum == "1" {
  1649. // 正常情况是相等的
  1650. num := gconv.Int(nextItem["itemtotalnum"]) + gconv.Int(nextItem["itemnum"])
  1651. if gconv.Int(item["itemtotalnum"]) == num {
  1652. item["totalnum"] = gconv.String(num)
  1653. item["state"] = "0"
  1654. } else {
  1655. item["totalnum"] = gconv.String(num)
  1656. item["state"] = "1"
  1657. }
  1658. } else {
  1659. item["totalnum"] = "0"
  1660. item["state"] = "1"
  1661. }
  1662. data[res] = gconv.Map(item)
  1663. }
  1664. }
  1665. itemConfig.Close()
  1666. reasonConfig.Close()
  1667. base.Succ(r,
  1668. g.Map{
  1669. "rows": data,
  1670. "total": page.Total,
  1671. "current": page.CurrentPage,
  1672. })
  1673. }
  1674. // 一键修改状态
  1675. func (action *Action) SaveUpdateStatue(r *ghttp.Request) {
  1676. form := base.NewForm(r.GetMap())
  1677. if form.Params != nil && form.Params["ids"] != "" && form.Params["state"] != "" {
  1678. ids := gconv.MapStrStr(form.Params["ids"])
  1679. for _, v := range ids {
  1680. gameinfo.ModelServer.InsUpdate2(gconv.Int32(v), gconv.String(form.Params["state"]))
  1681. }
  1682. base.Resp(r, 0, "修改成功", nil)
  1683. } else {
  1684. base.Resp(r, 1, "操作异常", nil)
  1685. }
  1686. }
  1687. //查询玩家身上的道具
  1688. func (action *Action) GetUserItemList(r *ghttp.Request) {
  1689. // 读取配置表
  1690. itemConfig := codeutil.GetItemConfig()
  1691. form := base.NewForm(r.GetMap())
  1692. bs := bson.M{}
  1693. // 默认查询配置中的服务器
  1694. serverId := g.Config().GetString("mongo-port")
  1695. var itemId string = ""
  1696. if form.Params != nil {
  1697. if form.Params["serverid"] != "" {
  1698. serverId = gconv.String(form.Params["serverid"])
  1699. }
  1700. if form.Params["itemId"] != "" && form.Params["uid"] != "" {
  1701. uidStrArray := strings.Split(form.Params["uid"],"#")
  1702. uidArray := gconv.Int32s(uidStrArray)
  1703. bs = bson.M{"_id":bson.M{"$in":uidArray}}
  1704. if form.Params["itemId"] != "" {
  1705. itemId = gconv.String(form.Params["itemId"])
  1706. }
  1707. }
  1708. }
  1709. projection := bson.M{"itemManager.itemMap":1,"playerManager.vipLevel":1}
  1710. data := g.ListAnyAny{}
  1711. bsCount := len(bs)
  1712. if bsCount > 0 {
  1713. itemList := gameinfo.ModelM5User.FindUserList(bs, serverId, projection)
  1714. for itemList.Next(context.TODO()) {
  1715. dayMap := gmap.New()
  1716. var userInfo bson.M
  1717. err := itemList.Decode(&userInfo)
  1718. if err != nil {
  1719. //log.Fatal(err)
  1720. log.Println(err)
  1721. continue
  1722. }
  1723. iteMap := userInfo["itemManager"].(bson.M)["itemMap"].(bson.M)
  1724. vipLevel := userInfo["playerManager"].(bson.M)["vipLevel"]
  1725. item := bson.M{}
  1726. if(iteMap[itemId] != nil) {
  1727. item = iteMap[itemId].(bson.M)
  1728. }
  1729. dayMap.Set("uid",userInfo["_id"])
  1730. dayMap.Set("vipLevel",vipLevel)
  1731. if(len(item) > 0) {
  1732. dayMap.Set("itemId",item["itemId"])
  1733. dayMap.Set("itemNum",item["itemNum"])
  1734. data = append(g.ListAnyAny{gconv.Map(dayMap)}, data...)
  1735. }
  1736. }
  1737. }
  1738. itemConfig.Close()
  1739. base.Succ(r,
  1740. g.Map{
  1741. "rows": data,
  1742. "total": 0,
  1743. "current": 0,
  1744. })
  1745. }