gm.go 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613
  1. package api
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gadmin/config"
  7. "gadmin/internal/admin/consts"
  8. "gadmin/internal/admin/data"
  9. "gadmin/internal/admin/forms"
  10. "gadmin/internal/admin/gm_services"
  11. "gadmin/internal/admin/service"
  12. "gadmin/internal/gorm/model"
  13. "gadmin/internal/gorm/query"
  14. "gadmin/package/gmdata"
  15. "gadmin/package/platformPay"
  16. "gadmin/utility"
  17. "gadmin/utility/player"
  18. "gadmin/utility/serializer"
  19. "gadmin/utility/token"
  20. "net/http"
  21. "net/url"
  22. "os"
  23. "os/exec"
  24. "strconv"
  25. "time"
  26. "github.com/gin-gonic/gin"
  27. "github.com/jinzhu/now"
  28. "github.com/sirupsen/logrus"
  29. "github.com/spf13/cast"
  30. )
  31. func GetServerDate(c *gin.Context) {
  32. c.JSON(200, serializer.Suc(map[string]interface{}{
  33. "date": time.Now().Format("2006-01-02 15:04:05"),
  34. }))
  35. return
  36. }
  37. func GetVersionIndex(c *gin.Context) {
  38. var (
  39. req forms.GetVersionIndexReq
  40. err error
  41. )
  42. if err = c.ShouldBind(&req); err != nil {
  43. c.JSON(200, ErrorResponse(err))
  44. return
  45. }
  46. type response struct {
  47. Error string `json:"error"`
  48. Data any `json:"data"`
  49. Msg string `json:"msg"`
  50. }
  51. logrus.Warnf("GetVersionIndex req:%+v", req)
  52. params := url.Values{}
  53. params.Set("v", req.Version)
  54. resp, err := http.Get(fmt.Sprintf("%s/%s?%s", os.Getenv("VERSION_URL"), "version/index", params.Encode()))
  55. if err != nil {
  56. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", err.Error())})
  57. return
  58. }
  59. defer resp.Body.Close()
  60. var result response
  61. if err = json.NewDecoder(resp.Body).Decode(&result); err != nil {
  62. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", err.Error())})
  63. return
  64. }
  65. if result.Error != "" {
  66. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", result.Error)})
  67. return
  68. }
  69. // res, err := sshx.GetVersionIndex(req)
  70. // if err != nil || res == nil {
  71. // c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本服务器异常. err:%v", err.Error())})
  72. // return
  73. // }
  74. // if res.Code != 0 {
  75. // c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本服务器异常-2. err:%v", res.Err)})
  76. // return
  77. // }
  78. c.JSON(200, serializer.Suc(map[string]interface{}{
  79. "index": result.Data,
  80. }))
  81. }
  82. func VersionList(c *gin.Context) {
  83. resp, err := http.Get(fmt.Sprintf("%s/%s", os.Getenv("VERSION_URL"), "version/scan"))
  84. if err != nil {
  85. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", err.Error())})
  86. return
  87. }
  88. defer resp.Body.Close()
  89. type opt struct {
  90. Value string `json:"value"`
  91. Label string `json:"label"`
  92. }
  93. type response struct {
  94. Error string `json:"error"`
  95. Data any `json:"data"`
  96. Msg string `json:"msg"`
  97. }
  98. var opts []*opt
  99. var result response
  100. if err = json.NewDecoder(resp.Body).Decode(&result); err != nil {
  101. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", err.Error())})
  102. return
  103. }
  104. if result.Error != "" {
  105. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", result.Error)})
  106. return
  107. }
  108. for _, val := range result.Data.([]interface{}) {
  109. d, _ := val.(string)
  110. opts = append(opts, &opt{Value: d, Label: d})
  111. }
  112. c.JSON(200, serializer.Suc(map[string]interface{}{
  113. "versionOptions": opts,
  114. }))
  115. // ds, err := sshx.VersionList()
  116. // if err != nil {
  117. // c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("获取版本号列表失败,请联系技术处理. err:%v", err.Error())})
  118. // return
  119. // }
  120. // type opt struct {
  121. // Value string `json:"value"`
  122. // Label string `json:"label"`
  123. // }
  124. // var opts []*opt
  125. // for _, d := range ds {
  126. // opts = append(opts, &opt{Value: d, Label: d})
  127. // }
  128. // c.JSON(200, serializer.Suc(map[string]interface{}{
  129. // "versionOptions": opts,
  130. // }))
  131. }
  132. func ReleaseVersion(c *gin.Context) {
  133. var (
  134. req forms.ReleaseVersionReq
  135. err error
  136. )
  137. if err = c.ShouldBind(&req); err != nil {
  138. c.JSON(200, ErrorResponse(err))
  139. return
  140. }
  141. reqBytes, err := json.Marshal(req)
  142. if err != nil {
  143. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("更新过程发生错误,请联系技术处理. err:%v", err.Error())})
  144. return
  145. }
  146. resp, err := http.Post(fmt.Sprintf("%s/%s", os.Getenv("VERSION_URL"), "version/update"), "application/json", bytes.NewBuffer(reqBytes))
  147. if err != nil {
  148. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("更新过程发生错误,请联系技术处理. err:%v", err.Error())})
  149. return
  150. }
  151. defer resp.Body.Close()
  152. type response struct {
  153. Error string `json:"error"`
  154. Data any `json:"data"`
  155. Msg string `json:"msg"`
  156. }
  157. var result response
  158. if err = json.NewDecoder(resp.Body).Decode(&result); err != nil {
  159. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("更新过程发生错误,请联系技术处理. err:%v", err.Error())})
  160. return
  161. }
  162. c.JSON(200, serializer.Suc(nil))
  163. }
  164. func EditServerDate(c *gin.Context) {
  165. var (
  166. req forms.EditServerDateReq
  167. err error
  168. )
  169. if os.Getenv("GIN_MODE") == "release" {
  170. c.JSON(200, gin.H{"code": 1, "msg": "正式服不允许操作!"})
  171. return
  172. }
  173. if err = c.ShouldBind(&req); err != nil {
  174. c.JSON(200, ErrorResponse(err))
  175. return
  176. }
  177. t, _ := time.Parse("2006-01-02 15:04:05", req.Date)
  178. command := fmt.Sprintf(`date -s "%v"`, t.Format("20060102 15:04:05"))
  179. user := token.CurrentUser(c)
  180. logrus.Infof("用户 [%v] 于 [%v] 修改服务器时间为 [%v]", user.ID, time.Now().Format("2006-01-02 15:04:05"), t.Format("2006-01-02 15:04:05"))
  181. o, err := exec.Command("/bin/bash", "-c", command).Output()
  182. if err != nil {
  183. c.JSON(200, gin.H{"code": 1, "msg": fmt.Sprintf("命令执行失败:%+v", err.Error())})
  184. return
  185. }
  186. logrus.Warnf("EditServerDate o:%+v", string(o))
  187. c.JSON(200, serializer.Suc(nil))
  188. return
  189. }
  190. func MsdBalance(c *gin.Context) {
  191. var (
  192. req forms.MsdBalanceReq
  193. err error
  194. )
  195. if err = c.ShouldBind(&req); err != nil {
  196. c.JSON(200, ErrorResponse(err))
  197. return
  198. }
  199. if err = forms.ParseParams(&req); err != nil {
  200. c.JSON(200, ErrorResponse(err))
  201. return
  202. }
  203. user := data.GetUser(req.UserID)
  204. if user == nil {
  205. logrus.Warnf("未找到玩家 req.UserID:%v", req.UserID)
  206. c.JSON(200, gin.H{"code": 1, "msg": "未找到玩家"})
  207. return
  208. }
  209. if user.OpenID == "" {
  210. c.JSON(200, gin.H{"code": 1, "msg": "玩家未设置openid"})
  211. return
  212. }
  213. //定位平台
  214. openid := user.OpenID
  215. platform := platformPay.GetAdminPlatform()
  216. balance, err := platformPay.QueryBalanceAndCheck(int(platform), openid)
  217. if err != nil {
  218. c.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  219. return
  220. }
  221. if balance == nil {
  222. c.JSON(200, gin.H{"code": 1, "msg": "查询余额失败!"})
  223. return
  224. }
  225. c.JSON(200, serializer.Suc(map[string]interface{}{
  226. "userId": user.ID,
  227. "openid": openid,
  228. "balance": balance.Balance,
  229. }))
  230. }
  231. func MsdSettle(c *gin.Context) {
  232. var (
  233. req forms.MsdSettleReq
  234. err error
  235. )
  236. if os.Getenv("GIN_MODE") != "release" {
  237. c.JSON(200, gin.H{"code": 1, "msg": "测试服不允许操作!"})
  238. return
  239. }
  240. if err = c.ShouldBind(&req); err != nil {
  241. c.JSON(200, ErrorResponse(err))
  242. return
  243. }
  244. if err = forms.ParseParams(&req); err != nil {
  245. c.JSON(200, ErrorResponse(err))
  246. return
  247. }
  248. user := data.GetUser(req.UserID)
  249. if user == nil {
  250. logrus.Warnf("未找到玩家 req.UserID:%v", req.UserID)
  251. c.JSON(200, gin.H{"code": 1, "msg": "未找到玩家"})
  252. return
  253. }
  254. if user.OpenID == "" {
  255. c.JSON(200, gin.H{"code": 1, "msg": "玩家未设置openid"})
  256. return
  257. }
  258. openid := user.OpenID
  259. platform := platformPay.GetAdminPlatform()
  260. balance, err := platformPay.QueryBalanceAndCheck(platform, openid)
  261. if err != nil {
  262. c.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  263. return
  264. }
  265. if balance == nil {
  266. c.JSON(200, gin.H{"code": 1, "msg": "查询余额失败!"})
  267. return
  268. }
  269. if balance.Balance < req.Balance {
  270. c.JSON(200, gin.H{"code": 1, "msg": "平账余额不能大于米大师余额"})
  271. return
  272. }
  273. if req.Remark == "" {
  274. c.JSON(200, gin.H{"code": 1, "msg": "平账理由不能为空"})
  275. return
  276. }
  277. var response *platformPay.ResponsePay
  278. orderSn := platformPay.CreateOutTradeNo(user.ID)
  279. defer func() {
  280. var (
  281. status int32 = 1
  282. errorTxt = ""
  283. responseB []byte
  284. )
  285. if err != nil {
  286. status = 2
  287. errorTxt = err.Error()
  288. }
  289. if response != nil {
  290. responseB, _ = json.Marshal(response)
  291. }
  292. var settle = query.Use(config.DB).OrdersSettle
  293. settleData := model.OrdersSettle{
  294. Type: 1,
  295. UserID: req.UserID,
  296. Openid: openid,
  297. Balance: int32(req.Balance),
  298. Remark: req.Remark,
  299. OrderSn: orderSn,
  300. CreatedBy: token.GetUID(c),
  301. Status: status,
  302. Error: errorTxt,
  303. Response: string(responseB),
  304. CreatedAt: time.Now(),
  305. }
  306. if err = settle.Create(&settleData); err != nil {
  307. logrus.Errorf("OrdersSettle Create err :%+v, settleData:%+v", err, settleData)
  308. }
  309. }()
  310. logrus.Infof("平帐参数 platform:%d, openId:%s, orderSn:%s, balance:%d", platform, openid, orderSn, req.Balance)
  311. response, err = platformPay.PayAndCheck(platform, openid, orderSn, req.Balance)
  312. if err != nil {
  313. c.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  314. return
  315. }
  316. if response == nil {
  317. c.JSON(200, gin.H{"code": 1, "msg": "米大师返回异常,请登录米大师平台确认是否操作成功! "})
  318. return
  319. }
  320. c.JSON(200, serializer.Suc(nil))
  321. }
  322. func GetBalance(c *gin.Context) {
  323. var (
  324. req forms.GetBalanceReq
  325. err error
  326. )
  327. if err = c.ShouldBind(&req); err != nil {
  328. c.JSON(200, ErrorResponse(err))
  329. return
  330. }
  331. if err = forms.ParseParams(&req); err != nil {
  332. c.JSON(200, ErrorResponse(err))
  333. return
  334. }
  335. user := data.GetUser(req.UserID)
  336. if user == nil {
  337. logrus.Warnf("未找到玩家 req.UserID:%v", req.UserID)
  338. c.JSON(200, gin.H{"code": 1, "msg": "未找到玩家"})
  339. return
  340. }
  341. if user.OpenID == "" {
  342. c.JSON(200, gin.H{"code": 1, "msg": "玩家未设置openid"})
  343. return
  344. }
  345. openid := user.OpenID
  346. //获取后端平台
  347. plat := platformPay.WxPlat
  348. if os.Getenv("ADMIN_PLATFORM") == "dy" {
  349. plat = platformPay.DyPlat
  350. }
  351. balance, err := platformPay.QueryBalanceAndCheck(int(plat), openid)
  352. if err != nil {
  353. c.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  354. return
  355. }
  356. if balance == nil {
  357. c.JSON(200, gin.H{"code": 1, "msg": "查询余额失败!"})
  358. return
  359. }
  360. c.JSON(200, serializer.Suc(map[string]interface{}{
  361. "userId": user.ID,
  362. "openid": openid,
  363. "balance": balance.Balance,
  364. }))
  365. }
  366. /*func DelRank(c *gin.Context) {
  367. var (
  368. req forms.DelRankReq
  369. err error
  370. )
  371. if err = c.ShouldBind(&req); err != nil {
  372. c.JSON(200, ErrorResponse(err))
  373. return
  374. }
  375. if err = forms.ParseParams(&req); err != nil {
  376. c.JSON(200, ErrorResponse(err))
  377. return
  378. }
  379. c.JSON(200, service.Gm.DelRank(c, req))
  380. }*/
  381. func GetUserRolesInfo(ctx *gin.Context) {
  382. type Result struct {
  383. RoleNums int `json:"role_nums"`
  384. Count int `json:"count"`
  385. }
  386. endStamp := cast.ToInt64(ctx.Query("emdstamp"))
  387. if endStamp <= 0 {
  388. endStamp = now.With(time.Now().AddDate(0, 0, -1)).EndOfDay().Unix()
  389. }
  390. key := config.UKey("GetUserRolesInfo", endStamp)
  391. if foo, found := config.Cache.Get(key); found {
  392. ctx.JSON(200, gin.H{"code": 200, "data": foo})
  393. return
  394. }
  395. tx := config.GDB1.Raw(fmt.Sprintf("select b.role_nums, count(1) as count from (SELECT ua.id, floor(length(pm.roles)/30) as role_nums FROM grave.user_account ua left join grave.player_material pm on ua.id = pm.playerid where ua.createtime <= %d and pm.roles is not null) b group by b.role_nums", endStamp))
  396. var result []Result
  397. err := tx.Scan(&result).Error
  398. if err != nil {
  399. ctx.JSON(200, gin.H{"code": 500, "msg": err.Error()})
  400. } else {
  401. ctx.JSON(200, gin.H{"code": 200, "data": result})
  402. config.Cache.Set(key, result, time.Hour*3)
  403. }
  404. }
  405. func GetIdiomRankingList(ctx *gin.Context) {
  406. var params forms.GetIdiomRankingListReq
  407. ctx.ShouldBind(&params)
  408. if params.ServerId <= 0 {
  409. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  410. return
  411. }
  412. DB, err := player.GetDBByServerID(params.ServerId)
  413. if err != nil {
  414. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  415. return
  416. }
  417. type Models struct {
  418. ID int64 `json:"id"`
  419. UserID int64 `json:"user_id"`
  420. Score float64 `json:"score"`
  421. NickName string `json:"nickName"`
  422. Createtime int64 `json:"createtime"`
  423. }
  424. var (
  425. models []Models
  426. res forms.ListRes
  427. key = fmt.Sprintf("idiom_ranking:%v", utility.WeekIndexDate())
  428. )
  429. list, err := config.RedisGroup[DB].ZRevRangeWithScores(key, 0, 99).Result()
  430. if err != nil {
  431. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  432. return
  433. }
  434. for i := 0; i < len(list); i++ {
  435. user := data.GetUser(cast.ToInt64(list[i].Member))
  436. NickName := ""
  437. var Createtime int64 = 0
  438. if user != nil {
  439. NickName = user.NickName
  440. Createtime = user.CreateTime.Unix()
  441. }
  442. models = append(models, Models{
  443. ID: int64(i + 1),
  444. UserID: cast.ToInt64(list[i].Member),
  445. Score: cast.ToFloat64(list[i].Score) / 10000000,
  446. NickName: NickName,
  447. Createtime: Createtime,
  448. })
  449. }
  450. res.List = models
  451. res.Page = 1
  452. res.PerPage = 100
  453. res.PageCount = 1
  454. ctx.JSON(200, serializer.Suc(res))
  455. }
  456. func GetBossRankingList(ctx *gin.Context) {
  457. var params forms.GetBossRankingListReq
  458. ctx.ShouldBind(&params)
  459. if params.ServerId <= 0 {
  460. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  461. return
  462. }
  463. DB, err := player.GetDBByServerID(params.ServerId)
  464. if err != nil {
  465. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  466. return
  467. }
  468. type Models struct {
  469. ID int64 `json:"id"`
  470. UserID int64 `json:"user_id"`
  471. Score float64 `json:"score"`
  472. NickName string `json:"nickName"`
  473. Createtime int64 `json:"createtime"`
  474. }
  475. var (
  476. models []Models
  477. res forms.ListRes
  478. key = fmt.Sprintf("bossranking:%v", time.Now().Format("20060102"))
  479. )
  480. list, err := config.RedisGroup[DB].ZRevRangeWithScores(key, 0, 99).Result()
  481. if err != nil {
  482. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  483. return
  484. }
  485. for i := 0; i < len(list); i++ {
  486. user := data.GetUser(cast.ToInt64(list[i].Member))
  487. NickName := ""
  488. var Createtime int64 = 0
  489. if user != nil {
  490. NickName = user.NickName
  491. Createtime = user.CreateTime.Unix()
  492. }
  493. models = append(models, Models{
  494. ID: int64(i + 1),
  495. UserID: cast.ToInt64(list[i].Member),
  496. Score: cast.ToFloat64(list[i].Score) / 1000_0000,
  497. NickName: NickName,
  498. Createtime: Createtime,
  499. })
  500. }
  501. res.List = models
  502. res.Page = 1
  503. res.PerPage = 100
  504. res.PageCount = 1
  505. ctx.JSON(200, serializer.Suc(res))
  506. }
  507. func GetCurioRankingList(ctx *gin.Context) {
  508. var params forms.GetCurioRankingListReq
  509. ctx.ShouldBind(&params)
  510. if params.ServerId <= 0 {
  511. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  512. return
  513. }
  514. DB, err := player.GetDBByServerID(params.ServerId)
  515. if err != nil {
  516. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  517. return
  518. }
  519. type Models struct {
  520. ID int64 `json:"id"`
  521. UserID int64 `json:"user_id"`
  522. Score float64 `json:"score"`
  523. NickName string `json:"nickName"`
  524. Createtime int64 `json:"createtime"`
  525. }
  526. var (
  527. models []Models
  528. res forms.ListRes
  529. key = fmt.Sprintf("curio_ranking:%v", utility.WeekIndexDate())
  530. )
  531. list, err := config.RedisGroup[DB].ZRevRangeWithScores(key, 0, 99).Result()
  532. if err != nil {
  533. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  534. return
  535. }
  536. for i := 0; i < len(list); i++ {
  537. user := data.GetUser(cast.ToInt64(list[i].Member))
  538. NickName := ""
  539. var Createtime int64 = 0
  540. if user != nil {
  541. NickName = user.NickName
  542. Createtime = user.CreateTime.Unix()
  543. }
  544. models = append(models, Models{
  545. ID: int64(i + 1),
  546. UserID: cast.ToInt64(list[i].Member),
  547. Score: list[i].Score / 1000_0000, //cast.ToFloat64(list[i].Score) / (1000 * 1000 * 1000 * 1000 * 10), // 转MB
  548. NickName: NickName,
  549. Createtime: Createtime,
  550. })
  551. }
  552. res.List = models
  553. res.Page = 1
  554. res.PerPage = 100
  555. res.PageCount = 1
  556. ctx.JSON(200, serializer.Suc(res))
  557. }
  558. func getCurrentRankingListKey() string {
  559. tm := time.Now()
  560. y, w := tm.ISOWeek()
  561. k := y*100 + w
  562. return fmt.Sprintf("ranking_pvp:%d", k)
  563. }
  564. func GetPVPRankingList(ctx *gin.Context) {
  565. var params forms.GetPVPRankingListReq
  566. ctx.ShouldBind(&params)
  567. if params.ServerId <= 0 {
  568. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  569. return
  570. }
  571. DB, err := player.GetDBByServerID(params.ServerId)
  572. if err != nil {
  573. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  574. return
  575. }
  576. type Models struct {
  577. ID int64 `json:"id"`
  578. UserID int64 `json:"user_id"`
  579. Score int64 `json:"score"`
  580. NickName string `json:"nickName"`
  581. Createtime int64 `json:"createtime"`
  582. }
  583. var (
  584. models []Models
  585. res forms.ListRes
  586. key = getCurrentRankingListKey()
  587. )
  588. logrus.Warnf("GetPVPRankingList key:%+v", key)
  589. list, err := config.RedisGroup[DB].ZRevRangeWithScores(key, 0, 99).Result()
  590. if err != nil {
  591. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  592. return
  593. }
  594. for i := 0; i < len(list); i++ {
  595. user := data.GetUser(cast.ToInt64(list[i].Member))
  596. NickName := ""
  597. var Createtime int64 = 0
  598. if user != nil {
  599. NickName = user.NickName
  600. Createtime = user.CreateTime.Unix()
  601. }
  602. models = append(models, Models{
  603. ID: int64(i + 1),
  604. UserID: cast.ToInt64(list[i].Member),
  605. Score: cast.ToInt64(list[i].Score) / 1000000,
  606. NickName: NickName,
  607. Createtime: Createtime,
  608. })
  609. }
  610. res.List = models
  611. res.Page = 1
  612. res.PerPage = 100
  613. res.PageCount = 1
  614. ctx.JSON(200, serializer.Suc(res))
  615. }
  616. func ClearPVPRank(ctx *gin.Context) {
  617. var (
  618. params forms.ClearPVPRankReq
  619. week = utility.WeekByDate(time.Now()) - 1
  620. rankKey = fmt.Sprintf("ranking_pvp:%v", week)
  621. playersKey = fmt.Sprintf("pvpplayers:%v", week)
  622. )
  623. ctx.ShouldBind(&params)
  624. if params.UserID <= 0 {
  625. ctx.JSON(200, forms.Resp{Code: 1, Msg: "玩家ID不能为空"})
  626. return
  627. }
  628. if params.ServerId <= 0 {
  629. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  630. return
  631. }
  632. DB, err := player.GetDBByServerID(params.ServerId)
  633. if err != nil {
  634. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  635. return
  636. }
  637. res1, err := config.RedisGroup[DB].ZRem(rankKey, params.UserID).Result()
  638. if err != nil {
  639. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  640. return
  641. }
  642. res2, err := config.RedisGroup[DB].HDel(playersKey, strconv.FormatInt(params.UserID, 10)).Result()
  643. if err != nil {
  644. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  645. return
  646. }
  647. logrus.Warnf("ClearPVPRank res1:%+v, res2:%+v", res1, res2)
  648. ctx.JSON(200, serializer.Suc(nil))
  649. //ZADD ranking_pvp:2 123 666
  650. //ZREM ranking_pvp:2 666
  651. //HMSET "pvpplayers:2" "666" "{\"playerId\":1472097,\"level\":46,\"nickName\":\"ID_78LYDJ4\",\"headImg\":\"https://restianjianhu.mg.xhgame.com/grave/res/1111.jpg\",\"roles\":[100000020],\"parts\":[{\"part\":1,\"level\":1,\"step\":0,\"eId\":10504001,\"slot\":[0,0,0,0]},{\"part\":2,\"level\":1,\"step\":0,\"eId\":20104001,\"slot\":[0,0,0,0]},{\"part\":3,\"level\":1,\"step\":0,\"eId\":30104001,\"slot\":[0,0,0,0]},{\"part\":4,\"level\":1,\"step\":0,\"eId\":40104001,\"slot\":[0,0,0,0]},{\"part\":5,\"level\":1,\"step\":0,\"eId\":50104001,\"slot\":[0,0,0,0]},{\"part\":6,\"level\":1,\"step\":0,\"eId\":60104001,\"slot\":[0,0,0,0]}],\"talents\":null,\"multiWin\":0,\"score\":990,\"rank\":2,\"lastJoin\":2,\"matchCount\":3,\"battleId\":0,\"lastMatchTick\":0,\"selectRival\":0,\"rivals\":null,\"historys\":[268323713429012480,268323854869331968,268323897768673280]}"
  652. //HDEL pvpplayers:2 666
  653. }
  654. func ClearCurioRank(ctx *gin.Context) {
  655. var (
  656. params forms.ClearCurioRankReq
  657. rankKey = fmt.Sprintf("curio_ranking:%v", utility.WeekIndexDate())
  658. )
  659. ctx.ShouldBind(&params)
  660. if params.UserID <= 0 {
  661. ctx.JSON(200, forms.Resp{Code: 1, Msg: "玩家ID不能为空"})
  662. return
  663. }
  664. if params.ServerId <= 0 {
  665. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  666. return
  667. }
  668. DB, err := player.GetDBByServerID(params.ServerId)
  669. if err != nil {
  670. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  671. return
  672. }
  673. res1, err := config.RedisGroup[DB].ZRem(rankKey, params.UserID).Result()
  674. if err != nil {
  675. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  676. return
  677. }
  678. var q = query.Use(config.GDBGroup[DB]).Curiomake
  679. updates, err := q.WithContext(ctx).
  680. Where(q.Playerid.Eq(params.UserID)).
  681. Updates(map[string]interface{}{"silver": "0", "totalSilver": 0})
  682. if err != nil {
  683. return
  684. }
  685. logrus.Warnf("ClearCurioRank res1:%+v, updates:%+v", res1, updates)
  686. ctx.JSON(200, serializer.Suc(nil))
  687. }
  688. func ClearIdiomRank(ctx *gin.Context) {
  689. type DayScoreReward struct {
  690. Day int `json:"day"` //yd
  691. DayScore int `json:"dayScore"` //日积分
  692. SumScore int `json:"sumScore"` //总积分
  693. Reward []int `json:"reward"` //领取箱子
  694. }
  695. var (
  696. params forms.ClearIdiomRankReq
  697. rankKey = fmt.Sprintf("idiom_ranking:%v", utility.WeekIndexDate())
  698. score *DayScoreReward
  699. )
  700. ctx.ShouldBind(&params)
  701. if params.UserID <= 0 {
  702. ctx.JSON(200, forms.Resp{Code: 1, Msg: "玩家ID不能为空"})
  703. return
  704. }
  705. if params.ServerId <= 0 {
  706. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  707. return
  708. }
  709. DB, err := player.GetDBByServerID(params.ServerId)
  710. if err != nil {
  711. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  712. return
  713. }
  714. var q = query.Use(config.GDBGroup[DB]).Idiommatch
  715. models, err := q.WithContext(ctx).Where(q.Playerid.Eq(params.UserID)).First()
  716. if err != nil {
  717. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  718. return
  719. }
  720. if models == nil {
  721. ctx.JSON(200, forms.Resp{Code: 1, Msg: "玩家金榜题名数据获取失败!"})
  722. return
  723. }
  724. err = json.Unmarshal([]byte(models.Score), &score)
  725. if err != nil {
  726. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  727. return
  728. }
  729. // 清空积分
  730. score.DayScore = 0
  731. score.SumScore = 0
  732. newScore, err := json.Marshal(score)
  733. if err != nil {
  734. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  735. return
  736. }
  737. updates, err := q.WithContext(ctx).
  738. Where(q.Playerid.Eq(params.UserID)).
  739. Updates(map[string]interface{}{"score": string(newScore)})
  740. if err != nil {
  741. return
  742. }
  743. res1, err := config.RedisGroup[DB].ZRem(rankKey, params.UserID).Result()
  744. if err != nil {
  745. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  746. return
  747. }
  748. logrus.Warnf("ClearIdiomRank res1:%+v, updates:%+v, models:%+v", res1, updates, models)
  749. ctx.JSON(200, serializer.Suc(nil))
  750. }
  751. func ClearBossRank(ctx *gin.Context) {
  752. var (
  753. params forms.ClearBossRankReq
  754. rankKey = fmt.Sprintf("bossranking:%v", time.Now().Format("20060102"))
  755. joinsKey = fmt.Sprintf("bossjoins")
  756. )
  757. ctx.ShouldBind(&params)
  758. if params.UserID <= 0 {
  759. ctx.JSON(200, forms.Resp{Code: 1, Msg: "玩家ID不能为空"})
  760. return
  761. }
  762. if params.ServerId <= 0 {
  763. ctx.JSON(200, forms.Resp{Code: 1, Msg: "请选择一个有效的服务器"})
  764. return
  765. }
  766. DB, err := player.GetDBByServerID(params.ServerId)
  767. if err != nil {
  768. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  769. return
  770. }
  771. res1, err := config.RedisGroup[DB].ZRem(rankKey, params.UserID).Result()
  772. if err != nil {
  773. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  774. return
  775. }
  776. res2, err := config.RedisGroup[DB].HDel(joinsKey, strconv.FormatInt(params.UserID, 10)).Result()
  777. if err != nil {
  778. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  779. return
  780. }
  781. logrus.Warnf("ClearBossRank res1:%+v, res2:%+v", res1, res2)
  782. ctx.JSON(200, serializer.Suc(nil))
  783. //ZADD ranking_pvp:2 123 666
  784. //ZREM ranking_pvp:2 666
  785. //HMSET "pvpplayers:2" "666" "{\"playerId\":1472097,\"level\":46,\"nickName\":\"ID_78LYDJ4\",\"headImg\":\"https://restianjianhu.mg.xhgame.com/grave/res/1111.jpg\",\"roles\":[100000020],\"parts\":[{\"part\":1,\"level\":1,\"step\":0,\"eId\":10504001,\"slot\":[0,0,0,0]},{\"part\":2,\"level\":1,\"step\":0,\"eId\":20104001,\"slot\":[0,0,0,0]},{\"part\":3,\"level\":1,\"step\":0,\"eId\":30104001,\"slot\":[0,0,0,0]},{\"part\":4,\"level\":1,\"step\":0,\"eId\":40104001,\"slot\":[0,0,0,0]},{\"part\":5,\"level\":1,\"step\":0,\"eId\":50104001,\"slot\":[0,0,0,0]},{\"part\":6,\"level\":1,\"step\":0,\"eId\":60104001,\"slot\":[0,0,0,0]}],\"talents\":null,\"multiWin\":0,\"score\":990,\"rank\":2,\"lastJoin\":2,\"matchCount\":3,\"battleId\":0,\"lastMatchTick\":0,\"selectRival\":0,\"rivals\":null,\"historys\":[268323713429012480,268323854869331968,268323897768673280]}"
  786. //HDEL pvpplayers:2 666
  787. }
  788. func UpdatePlayerElRank(ctx *gin.Context) {
  789. var params forms.UpdatePlayerElRankReq
  790. ctx.ShouldBind(&params)
  791. if params.PlayerId <= 0 || params.RoomCount < 0 {
  792. ctx.JSON(200, forms.Resp{Code: 1, Msg: "参数不可用"})
  793. return
  794. }
  795. err := gm_services.UpdateElRank(ctx, params)
  796. if err != nil {
  797. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  798. return
  799. }
  800. ctx.JSON(200, forms.Resp{})
  801. }
  802. func AddEquipment(ctx *gin.Context) {
  803. var params forms.AddMaterialReq
  804. ctx.ShouldBind(&params)
  805. err := gm_services.AddEquipment(ctx, params)
  806. if err != nil {
  807. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  808. return
  809. }
  810. ctx.JSON(200, forms.Resp{})
  811. }
  812. func AddMaterial(ctx *gin.Context) {
  813. var params forms.AddMaterialReq
  814. ctx.ShouldBind(&params)
  815. err := gm_services.AddMaterial(ctx, params)
  816. if err != nil {
  817. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  818. return
  819. }
  820. ctx.JSON(200, forms.Resp{})
  821. }
  822. func GetAllTalents(ctx *gin.Context) {
  823. ctx.JSON(200, forms.Resp{Code: 0, Data: gmdata.Talents})
  824. }
  825. func GetAllEquipments(ctx *gin.Context) {
  826. var data = make(map[int]gmdata.Equipment, len(gmdata.EquipmentDict))
  827. for _, v := range gmdata.EquipmentDict {
  828. data[int(v.LevelId)] = v
  829. }
  830. ctx.JSON(200, forms.Resp{Code: 0, Data: gin.H{"list": data}})
  831. }
  832. func GetAllExp(ctx *gin.Context) {
  833. ctx.JSON(200, forms.Resp{Code: 0, Data: gmdata.PlayLevel})
  834. }
  835. func GetAllMaterials(ctx *gin.Context) {
  836. type Material struct {
  837. ID int `json:"ItemId"`
  838. Type int `json:"ItemType"`
  839. Name string `json:"ItemName"`
  840. }
  841. var data = make(map[string][]Material, len(gmdata.MaterialsDict))
  842. for _, v := range gmdata.MaterialsDict {
  843. type1 := fmt.Sprintf("%d", v.Type)
  844. data[type1] = append(data[type1], Material{
  845. ID: v.ID,
  846. Type: v.Type,
  847. Name: v.Name,
  848. })
  849. }
  850. ctx.JSON(200, forms.Resp{Code: 0, Data: data})
  851. }
  852. func GetAllRoles(ctx *gin.Context) {
  853. ctx.JSON(200, forms.Resp{Code: 0, Data: gmdata.Roles})
  854. }
  855. func GetAllGoods(ctx *gin.Context) {
  856. ctx.JSON(200, forms.Resp{Code: 0, Data: gmdata.GoodsInfo})
  857. }
  858. func GetAllChapters(ctx *gin.Context) {
  859. ctx.JSON(200, forms.Resp{Code: 0, Data: gmdata.Chapters})
  860. }
  861. func MailList(ctx *gin.Context) {
  862. var params = forms.EmailListReq{Page: 1, PerPage: 30}
  863. ctx.ShouldBind(&params)
  864. mails, total, _ := gm_services.GetEmails(params.Page, params.PerPage)
  865. for _, v := range mails {
  866. if v.OperatorId > 0 {
  867. user, err := service.User.GetUser(v.OperatorId)
  868. if err != nil {
  869. logrus.Warnf("MailList GetUser err:%+v", err)
  870. }
  871. if user != nil {
  872. v.Sender = fmt.Sprintf("%v(%v)", user.UserName, v.OperatorId)
  873. }
  874. }
  875. }
  876. var models forms.ListRes
  877. models.List = mails
  878. models.Page = int64(params.Page)
  879. models.PerPage = int64(params.PerPage)
  880. if total <= 0 {
  881. total = 1
  882. }
  883. models.PageCount = int64(total / params.PerPage)
  884. ctx.JSON(200, serializer.Suc(models))
  885. }
  886. func SendMail(ctx *gin.Context) {
  887. var item forms.EmailItemReq
  888. ctx.ShouldBind(&item)
  889. item.OperatorId = token.GetUID(ctx)
  890. _, err := gm_services.AddEmails(&item)
  891. if err != nil {
  892. ctx.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  893. } else {
  894. ctx.JSON(200, gin.H{"data": item, "code": 0})
  895. }
  896. }
  897. func DeleteMail(ctx *gin.Context) {
  898. var item forms.EmailItemReq
  899. ctx.ShouldBind(&item)
  900. err := gm_services.DeleteEmail(item.Id)
  901. if err != nil {
  902. ctx.JSON(200, gin.H{"code": 1, "msg": err.Error()})
  903. } else {
  904. ctx.JSON(200, gin.H{"data": item, "code": 0})
  905. }
  906. }
  907. func GetNoticeList(c *gin.Context) {
  908. var params forms.NoticeListReq
  909. c.ShouldBind(&params)
  910. resp, err := gm_services.GetNoticeList(params)
  911. if err != nil {
  912. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  913. return
  914. }
  915. var models forms.ListRes
  916. models.List = resp
  917. c.JSON(200, serializer.Suc(models))
  918. }
  919. func AddNotice(c *gin.Context) {
  920. var params forms.AddNoticeReq
  921. c.ShouldBind(&params)
  922. _, err := gm_services.AddNotice(params)
  923. if err != nil {
  924. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  925. return
  926. }
  927. c.JSON(200, forms.Resp{})
  928. }
  929. func DelNotice(c *gin.Context) {
  930. var params forms.DeleteNoticeReq
  931. c.ShouldBind(&params)
  932. err := gm_services.DelNotice(params.Id)
  933. if err != nil {
  934. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  935. return
  936. }
  937. c.JSON(200, forms.Resp{})
  938. }
  939. func UpdateSwitcher(c *gin.Context) {
  940. var params = forms.UpdateSwitcherReq{IosPay: -1, DoubleAd: 0}
  941. c.ShouldBind(&params)
  942. err := gm_services.UpdateSwitcher(c, params)
  943. if err != nil {
  944. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  945. return
  946. }
  947. c.JSON(200, forms.Resp{})
  948. }
  949. func GetConfig(ctx *gin.Context) {
  950. list, simple, json1 := service.ServerOption.ConfigOption(ctx)
  951. ctx.JSON(200, forms.Resp{Code: 0, Data: map[string]interface{}{
  952. "mode": os.Getenv("GIN_MODE"),
  953. "admin_template": os.Getenv("ADMIN_TEMPLATE"),
  954. "socket_url": os.Getenv("ADMIN_SOCKET_URL"),
  955. "json_version": os.Getenv("JSON_VERSION"),
  956. "admin_web_title": os.Getenv("ADMIN_WEB_TITLE"),
  957. "amount_multiple": cast.ToInt64(os.Getenv("AMOUNT_MULTIPLE")),
  958. "channel_option": service.Channel.Option(ctx),
  959. "channel_tree_option": service.Channel.TreeOption(ctx),
  960. "server_option": list,
  961. "server_simple_option": simple,
  962. "server_json_option": json1,
  963. "flag_option": getUserFlagOption(),
  964. "deploy_type_option": deployTypeOption(),
  965. "deploy_serv_group_option": deployServGroupOption(),
  966. "chapter_option": gmdata.ChapterOption,
  967. }})
  968. }
  969. func deployTypeOption() (lst []forms.Option) {
  970. lst = append(lst, forms.Option{
  971. Value: nil,
  972. Label: "全部",
  973. Name: "全部",
  974. })
  975. for _, v := range consts.DeployTypeSlice {
  976. lst = append(lst, forms.Option{
  977. Value: v,
  978. Label: v,
  979. Name: v,
  980. })
  981. }
  982. return
  983. }
  984. func deployServGroupOption() (lst map[string][]forms.Option) {
  985. lst = make(map[string][]forms.Option)
  986. for _, v := range consts.DeployTypeSlice {
  987. switch v {
  988. case consts.DeployTypeLogin:
  989. lst[v] = append(lst[v], forms.Option{
  990. Value: "all",
  991. Label: "全选",
  992. Name: "全选",
  993. })
  994. for _, v2 := range consts.DeployServLoginGroup {
  995. lst[v] = append(lst[v], forms.Option{
  996. Value: v2,
  997. Label: v2,
  998. Name: v2,
  999. })
  1000. }
  1001. default: //consts.DeployTypeGrave:
  1002. lst[v] = append(lst[v], forms.Option{
  1003. Value: "all",
  1004. Label: "全选",
  1005. Name: "全选",
  1006. })
  1007. for _, v2 := range consts.DeployServGraveGroup {
  1008. lst[v] = append(lst[v], forms.Option{
  1009. Value: v2,
  1010. Label: v2,
  1011. Name: v2,
  1012. })
  1013. }
  1014. // case consts.DeployTypeGate:
  1015. // lst[v] = append(lst[v], forms.Option{
  1016. // Value: "all",
  1017. // Label: "全选",
  1018. // Name: "全选",
  1019. // })
  1020. // for _, v2 := range consts.DeployServGateGroup {
  1021. // lst[v] = append(lst[v], forms.Option{
  1022. // Value: v2,
  1023. // Label: v2,
  1024. // Name: v2,
  1025. // })
  1026. // }
  1027. }
  1028. }
  1029. return
  1030. }
  1031. func getUserFlagOption() (lst []forms.Option) {
  1032. lst = append(lst, forms.Option{
  1033. Value: "-1",
  1034. Label: "全部",
  1035. Name: "全部",
  1036. })
  1037. for _, flag := range consts.UserFlags {
  1038. lst = append(lst, forms.Option{
  1039. Value: flag,
  1040. Label: consts.UserFlagMap[flag],
  1041. Name: consts.UserFlagMap[flag],
  1042. })
  1043. }
  1044. return
  1045. }
  1046. func GetJSONPath(ctx *gin.Context) {
  1047. ctx.JSON(200, forms.Resp{Code: 0, Data: os.Getenv("JSON_PATH") + "/" + os.Getenv("JSON_VERSION")})
  1048. }
  1049. func SetNewJsonPath(ctx *gin.Context) {
  1050. var params forms.SetConfPathReq
  1051. ctx.ShouldBind(&params)
  1052. err := gmdata.SetConfPath(params.Path)
  1053. if err != nil {
  1054. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1055. return
  1056. }
  1057. ctx.JSON(200, forms.Resp{})
  1058. }
  1059. func ToolsRestartView(c *gin.Context) {
  1060. var params = forms.ToolsRestartViewReq{}
  1061. err := c.ShouldBind(&params)
  1062. if err != nil {
  1063. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1064. return
  1065. }
  1066. if params.ID < 1 {
  1067. c.JSON(200, forms.Resp{Code: 1, Msg: "ID不能为空"})
  1068. return
  1069. }
  1070. models, err := gm_services.ToolsRestartView(c, params)
  1071. if err != nil {
  1072. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1073. return
  1074. }
  1075. c.JSON(200, forms.Resp{Code: 0, Data: models})
  1076. }
  1077. func ToolsRestart(c *gin.Context) {
  1078. var params = forms.ToolsRestartReq{}
  1079. err := c.ShouldBind(&params)
  1080. if err != nil {
  1081. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1082. return
  1083. }
  1084. if params.Version == "" {
  1085. c.JSON(200, forms.Resp{Code: 1, Msg: "版本号不能为空"})
  1086. return
  1087. }
  1088. if err = gm_services.ToolsRestart(c, params); err != nil {
  1089. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1090. return
  1091. }
  1092. c.JSON(200, forms.Resp{Code: 0, Msg: "Execute Command finished"})
  1093. }
  1094. func ToolsRestartLog(c *gin.Context) {
  1095. var params = forms.ToolsRestartLogReq{}
  1096. err := c.ShouldBind(&params)
  1097. if err != nil {
  1098. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1099. return
  1100. }
  1101. res, err := gm_services.ToolsRestartLogList(c, params)
  1102. if err != nil {
  1103. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1104. return
  1105. }
  1106. var models forms.ListRes
  1107. models.List = res.List
  1108. if res.TotalCount <= 0 {
  1109. res.TotalCount = 1
  1110. }
  1111. models.Page = int64(params.Page)
  1112. models.PerPage = int64(params.Limit)
  1113. models.PageCount = res.TotalCount / 10
  1114. c.JSON(200, serializer.Suc(models))
  1115. }
  1116. /*func UpdateGuides(c *gin.Context) {
  1117. var (
  1118. req forms.UpdateGuidesReq
  1119. err error
  1120. )
  1121. if err = c.ShouldBind(&req); err != nil {
  1122. c.JSON(200, ErrorResponse(err))
  1123. return
  1124. }
  1125. if err = forms.ParseParams(&req); err != nil {
  1126. c.JSON(200, ErrorResponse(err))
  1127. return
  1128. }
  1129. c.JSON(200, service.Gm.UpdateGuides(c, req))
  1130. }
  1131. func UpdateChapter(c *gin.Context) {
  1132. var (
  1133. req forms.UpdateChapterReq
  1134. err error
  1135. )
  1136. if err = c.ShouldBind(&req); err != nil {
  1137. c.JSON(200, ErrorResponse(err))
  1138. return
  1139. }
  1140. if err = forms.ParseParams(&req); err != nil {
  1141. c.JSON(200, ErrorResponse(err))
  1142. return
  1143. }
  1144. c.JSON(200, service.Gm.UpdateChapter(c, req))
  1145. }
  1146. func UpdateTalents(c *gin.Context) {
  1147. var (
  1148. req forms.UpdateTalentReq
  1149. err error
  1150. )
  1151. if err = c.ShouldBind(&req); err != nil {
  1152. c.JSON(200, ErrorResponse(err))
  1153. return
  1154. }
  1155. if err = forms.ParseParams(&req); err != nil {
  1156. c.JSON(200, ErrorResponse(err))
  1157. return
  1158. }
  1159. c.JSON(200, service.Gm.UpdateTalent(c, req))
  1160. }
  1161. func UpdatePlayerBase(c *gin.Context) {
  1162. var (
  1163. req forms.UpdatePlayerBaseReq
  1164. err error
  1165. )
  1166. if err = c.ShouldBind(&req); err != nil {
  1167. c.JSON(200, ErrorResponse(err))
  1168. return
  1169. }
  1170. if err = forms.ParseParams(&req); err != nil {
  1171. c.JSON(200, ErrorResponse(err))
  1172. return
  1173. }
  1174. c.JSON(200, service.Gm.UpdatePlayerBase(c, req))
  1175. }*/
  1176. ////////////.....///
  1177. func AddRoleExp(ctx *gin.Context) {
  1178. var (
  1179. params forms.UpdateRoleReq
  1180. err error
  1181. )
  1182. if err = ctx.ShouldBind(&params); err != nil {
  1183. ctx.JSON(200, ErrorResponse(err))
  1184. return
  1185. }
  1186. if err = gm_services.UpdatePlayAttr(ctx, params); err != nil {
  1187. ctx.JSON(200, ErrorResponse(err))
  1188. return
  1189. }
  1190. ctx.JSON(200, serializer.Suc(nil))
  1191. }
  1192. func AddRoleStamina(ctx *gin.Context) {
  1193. var params forms.UpdateRoleReq
  1194. ctx.ShouldBindJSON(&params)
  1195. err := gm_services.UpdatePlayAttr(ctx, params)
  1196. if err != nil {
  1197. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1198. return
  1199. }
  1200. ctx.JSON(200, forms.Resp{})
  1201. }
  1202. func UpgradeRole(ctx *gin.Context) {
  1203. var params forms.UpgradeRoleReq
  1204. ctx.ShouldBind(&params)
  1205. err := gm_services.UpgradeRole(ctx, params)
  1206. if err != nil {
  1207. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1208. return
  1209. }
  1210. ctx.JSON(200, forms.Resp{})
  1211. }
  1212. func GetRoleLevel(ctx *gin.Context) {
  1213. var params forms.GetRoleLevelReq
  1214. if err := ctx.ShouldBind(&params); err != nil {
  1215. ctx.JSON(200, ErrorResponse(err))
  1216. return
  1217. }
  1218. params.RoleName = ctx.Query("role_name")
  1219. //fmt.Println()
  1220. levelList, err := gm_services.GetRoleLevel(ctx, params)
  1221. if err != nil {
  1222. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1223. return
  1224. }
  1225. ctx.JSON(200, forms.Resp{
  1226. Code: 0,
  1227. Msg: "",
  1228. Data: levelList,
  1229. })
  1230. }
  1231. func AddCoin(ctx *gin.Context) {
  1232. var params forms.AddCoinReq
  1233. ctx.ShouldBindJSON(&params)
  1234. err := gm_services.AddCoin(ctx, params)
  1235. if err != nil {
  1236. ctx.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1237. return
  1238. }
  1239. ctx.JSON(200, forms.Resp{})
  1240. }
  1241. // 删除玩家游戏数据
  1242. func DeletePlayer(ctx *gin.Context) {
  1243. var (
  1244. req forms.DeleteUserPlayerReq
  1245. err error
  1246. )
  1247. if err = ctx.ShouldBind(&req); err != nil {
  1248. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1249. return
  1250. }
  1251. err = gm_services.DeleteUserAccount(ctx, req.UserId)
  1252. if err != nil {
  1253. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1254. return
  1255. }
  1256. ctx.JSON(http.StatusOK, forms.Resp{})
  1257. }
  1258. // 删除玩家账号
  1259. func DeleteAccount(ctx *gin.Context) {
  1260. var (
  1261. req forms.DeleteUserAccountReq
  1262. err error
  1263. )
  1264. if err = ctx.ShouldBind(&req); err != nil {
  1265. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1266. return
  1267. }
  1268. err = gm_services.DeleteAccount(ctx, req.AccId)
  1269. if err != nil {
  1270. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1271. return
  1272. }
  1273. ctx.JSON(http.StatusOK, forms.Resp{})
  1274. }
  1275. func OpenAccount(ctx *gin.Context) {
  1276. var (
  1277. req forms.OpenAccountReq
  1278. err error
  1279. )
  1280. if err = ctx.ShouldBind(&req); err != nil {
  1281. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1282. return
  1283. }
  1284. err = gm_services.OpenAccount(req.UserId)
  1285. if err != nil {
  1286. ctx.JSON(http.StatusOK, ErrorResponse(err))
  1287. return
  1288. }
  1289. ctx.JSON(http.StatusOK, forms.Resp{})
  1290. }
  1291. func LevelProgress(c *gin.Context) {
  1292. var params = forms.LevelProgressReq{}
  1293. if err := c.ShouldBind(&params); err != nil {
  1294. c.JSON(http.StatusOK, ErrorResponse(err))
  1295. return
  1296. }
  1297. data, total := gm_services.QueryPlayerChapter(params.PlayerId)
  1298. var models forms.ListRes
  1299. models.List = data
  1300. if total <= 0 {
  1301. total = 1
  1302. }
  1303. models.PageCount = 1
  1304. c.JSON(200, serializer.Suc(models))
  1305. }
  1306. // 游戏玩家数据报警列表
  1307. func AlarmGameDataList(c *gin.Context) {
  1308. var req forms.AlarmGameDataListReq
  1309. if err := c.ShouldBind(&req); err != nil {
  1310. c.JSON(http.StatusOK, ErrorResponse(err))
  1311. return
  1312. }
  1313. if err := forms.ParseParams(&req); err != nil {
  1314. c.JSON(http.StatusOK, ErrorResponse(err))
  1315. return
  1316. }
  1317. result := gm_services.AlarmGameDataList(c, req)
  1318. c.JSON(http.StatusOK, result)
  1319. }
  1320. func AlarmAttrList(c *gin.Context) {
  1321. var req forms.AlarmAttrReq
  1322. if err := c.ShouldBind(&req); err != nil {
  1323. c.JSON(http.StatusOK, ErrorResponse(err))
  1324. return
  1325. }
  1326. if err := forms.ParseParams(&req); err != nil {
  1327. c.JSON(http.StatusOK, ErrorResponse(err))
  1328. return
  1329. }
  1330. result := gm_services.AlarmAttrList(c, req)
  1331. c.JSON(http.StatusOK, result)
  1332. }
  1333. func AlarmCheatingList(c *gin.Context) {
  1334. var req forms.AlarmCheatingReq
  1335. if err := c.ShouldBind(&req); err != nil {
  1336. c.JSON(http.StatusOK, ErrorResponse(err))
  1337. return
  1338. }
  1339. if err := forms.ParseParams(&req); err != nil {
  1340. c.JSON(http.StatusOK, ErrorResponse(err))
  1341. return
  1342. }
  1343. result := gm_services.AlarmCheatingList(c, req)
  1344. c.JSON(http.StatusOK, result)
  1345. }
  1346. func AddGift(c *gin.Context) {
  1347. var params forms.AddGiftReq
  1348. c.ShouldBind(&params)
  1349. err := gm_services.AddGift(c, params)
  1350. if err != nil {
  1351. c.JSON(200, forms.Resp{Code: 1, Msg: err.Error()})
  1352. return
  1353. }
  1354. c.JSON(200, forms.Resp{})
  1355. }