loging.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. package log
  2. import (
  3. "encoding/json"
  4. "github.com/gin-gonic/gin"
  5. "go.uber.org/zap"
  6. "log-server/global"
  7. "log-server/model/common/response"
  8. log2 "log-server/model/log"
  9. "log-server/model/log/request"
  10. "log-server/service/log"
  11. loging2 "log-server/service/log/loging"
  12. "log-server/utils"
  13. "strconv"
  14. )
  15. type ApiLoging struct {
  16. }
  17. // @Tags loging
  18. // @Summary 添加日志
  19. // @Security ApiKeyAuth
  20. // @accept application/json
  21. // @Produce application/json
  22. // @Param data body request.AddLogRequest true "simulator_ip(模拟器ip),simulator_mac(模拟器mac地址),pc_code(租机编号),pc_mac(租机mac地址),pc_ip(租机ip),device_id(绑定的设备id),account(账号),game_id(游戏id),coding(上传编码),computer_type(电脑类型),env_code(环境编号),log_uuid(日志uuid唯一,可以时间戳加随机数。上报一轮后更换),operator(脚本开发员),account_type(账号类型),remarks(备注),report_points_data(打点数据),task_type(1新增,2活跃),script_type(1中控,2脚本)脚本类型"
  23. // @Success 200 {object} response.Response{msg=string} "添加日志"
  24. // @Router /loging/setLog [Post]
  25. func (s *ApiLoging) CreateLog(c *gin.Context) {
  26. var api request.AddLogRequest
  27. _ = c.ShouldBindJSON(&api)
  28. body, _ := json.Marshal(api)
  29. global.GVA_LOG.Info(string(body))
  30. if err := utils.Verify(api, utils.LogAddVerify); err != nil {
  31. response.FailWithMessage(err.Error(), c)
  32. return
  33. }
  34. coding := strconv.Itoa(api.Coding)
  35. if len(coding) != 7 {
  36. response.FailWithMessage("该日志码没有7位"+coding, c)
  37. return
  38. }
  39. nodeCoding := coding[:3]
  40. status := coding[5:]
  41. noLogStatus := coding[3:5]
  42. var logical log.ServiceLoging
  43. switch nodeCoding {
  44. case "410":
  45. logical = new(loging2.PullAccountLog)
  46. break
  47. case "430":
  48. logical = new(loging2.SimulatorStartLog)
  49. break
  50. case "450":
  51. logical = new(loging2.GameStartLog)
  52. break
  53. case "460":
  54. logical = new(loging2.LoginLog)
  55. break
  56. case "470":
  57. logical = new(loging2.EnterMainLog)
  58. break
  59. case "480":
  60. logical = new(loging2.FeeLog)
  61. break
  62. default:
  63. logical = new(loging2.OtherLog)
  64. break
  65. }
  66. go ServiceLogList.CreateLog(c, api, logical, status, noLogStatus)
  67. response.OkWithMessage("后台已接收数据", c)
  68. }
  69. // @Tags loging
  70. // @Summary 获取log
  71. // @Security ApiKeyAuth
  72. // @accept application/json
  73. // @Produce application/json
  74. // @Param data body request.GetLogListRequest true "获取log"
  75. // @Success 200 {object} response.Response{data=response.GetLogCodingReply} "根据id获取coding,返回包括coding详情"
  76. // @Router /loging/getLogList [post]
  77. func (s *ApiLoging) GetLogList(c *gin.Context) {
  78. var paramsInfo request.GetLogListRequest
  79. _ = c.ShouldBindJSON(&paramsInfo)
  80. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  81. response.FailWithMessage(err.Error(), c)
  82. return
  83. }
  84. list, total, err := ServiceLogList.GetCodeLogList(c, paramsInfo.Loging, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc, paramsInfo.Code)
  85. if err != nil {
  86. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  87. response.FailWithMessage("获取失败", c)
  88. } else {
  89. response.OkWithDetailed(response.PageResult{
  90. List: list,
  91. Total: total,
  92. Page: paramsInfo.Page,
  93. PageSize: paramsInfo.PageSize,
  94. }, "获取成功", c)
  95. }
  96. }
  97. // @Tags loging
  98. // @Summary 获取打点log
  99. // @Security ApiKeyAuth
  100. // @accept application/json
  101. // @Produce application/json
  102. // @Param data body request.GetLogListRequest true "获取打点log"
  103. // @Success 200 {object} response.Response{data=response.GetLogCodingReply} "获取打点log列表"
  104. // @Router /loging/getReportLogList [post]
  105. func (s *ApiLoging) GetReportPointsLogList(c *gin.Context) {
  106. var paramsInfo request.ReportPointsListRequest
  107. _ = c.ShouldBindJSON(&paramsInfo)
  108. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  109. response.FailWithMessage(err.Error(), c)
  110. return
  111. }
  112. list, total, err := ServiceReportPointsLog.GetReportPointsLogList(paramsInfo.ReportPointsLog, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  113. if err != nil {
  114. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  115. response.FailWithMessage("获取失败", c)
  116. } else {
  117. response.OkWithDetailed(response.PageResult{
  118. List: list,
  119. Total: total,
  120. Page: paramsInfo.Page,
  121. PageSize: paramsInfo.PageSize,
  122. }, "获取成功", c)
  123. }
  124. }
  125. // @Tags loging
  126. // @Summary 获取iplog
  127. // @Security ApiKeyAuth
  128. // @accept application/json
  129. // @Produce application/json
  130. // @Param data body request.IpLogListRequest true "获取iplog"
  131. // @Success 200 {object} response.Response{data=log2.IpLog} "获取iplog列表"
  132. // @Router /loging/getIpLogList [post]
  133. func (s *ApiLoging) GetIpLogList(c *gin.Context) {
  134. var paramsInfo request.IpLogListRequest
  135. _ = c.ShouldBindJSON(&paramsInfo)
  136. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  137. response.FailWithMessage(err.Error(), c)
  138. return
  139. }
  140. list, total, err := ServiceIpLog.GetIpLogList(paramsInfo.IpLogRequest, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  141. if err != nil {
  142. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  143. response.FailWithMessage("获取失败", c)
  144. } else {
  145. response.OkWithDetailed(response.PageResult{
  146. List: list,
  147. Total: total,
  148. Page: paramsInfo.Page,
  149. PageSize: paramsInfo.PageSize,
  150. }, "获取成功", c)
  151. }
  152. }
  153. // @Tags loging
  154. // @Summary 获取统计节点log
  155. // @Security ApiKeyAuth
  156. // @accept application/json
  157. // @Produce application/json
  158. // @Success 200 {object} response.Response{data=interface{}} "获取统计log"
  159. // @Router /loging/getNodeStatisticsLogList [post]
  160. func (s *ApiLoging) GetNodeStatisticsLogList(c *gin.Context) {
  161. var paramsInfo request.GetStatisticsLogRequest
  162. _ = c.ShouldBindJSON(&paramsInfo)
  163. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  164. response.FailWithMessage(err.Error(), c)
  165. return
  166. }
  167. list, total, err := ServiceStatisticsLog.StatisticsNodeLogList(c, paramsInfo.StatisticsLog, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  168. if err != nil {
  169. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  170. response.FailWithMessage("获取失败", c)
  171. } else {
  172. response.OkWithDetailed(response.PageResult{
  173. List: list,
  174. Total: total,
  175. Page: paramsInfo.Page,
  176. PageSize: paramsInfo.PageSize,
  177. }, "获取成功", c)
  178. }
  179. }
  180. // @Tags loging
  181. // @Summary 获取统计log
  182. // @Security ApiKeyAuth
  183. // @accept application/json
  184. // @Produce application/json
  185. // @Success 200 {object} response.Response{data=interface{}} "获取统计log"
  186. // @Router /loging/getStatisticsLogList [post]
  187. func (s *ApiLoging) GetStatisticsLogList(c *gin.Context) {
  188. var paramsInfo request.GetStatisticsLogRequest
  189. _ = c.ShouldBindJSON(&paramsInfo)
  190. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  191. response.FailWithMessage(err.Error(), c)
  192. return
  193. }
  194. list, total, err := ServiceStatisticsLog.OtherStatisticsLogList(c, paramsInfo.StatisticsLog, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  195. if err != nil {
  196. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  197. response.FailWithMessage("获取失败", c)
  198. } else {
  199. response.OkWithDetailed(response.PageResult{
  200. List: list,
  201. Total: total,
  202. Page: paramsInfo.Page,
  203. PageSize: paramsInfo.PageSize,
  204. }, "获取成功", c)
  205. }
  206. }
  207. // @Tags loging
  208. // @Summary 重置统计log
  209. // @Security ApiKeyAuth
  210. // @accept application/json
  211. // @Produce application/json
  212. // @Param data body request.GetById true "根据id重置统计log"
  213. // @Success 200 {object} response.Response{data=interface{}} "重置统计log"
  214. // @Router /loging/resetStatisticsLog [post]
  215. //func (s *ApiLoging) ResetStatisticsLog(c *gin.Context) {
  216. // var paramsInfo request.GetById
  217. // _ = c.ShouldBindJSON(&paramsInfo)
  218. // if err := utils.Verify(paramsInfo, utils.IdVerify); err != nil {
  219. // response.FailWithMessage(err.Error(), c)
  220. // return
  221. // }
  222. // current := time.Now().Format("2006-01-02")
  223. // key := current + ":" + strconv.Itoa(paramsInfo.ID) + ":reset"
  224. // i, err := global.GVA_REDIS.Exists(c, key).Result()
  225. // if err != nil {
  226. // global.GVA_LOG.Error("重置统计数据检测key失败", zap.Error(err))
  227. // response.FailWithMessage("重置失败", c)
  228. // return
  229. // }
  230. // if i != 0 {
  231. // global.GVA_LOG.Info("还在重置中", zap.Error(err))
  232. // response.FailWithMessage("在重置中", c)
  233. // return
  234. // }
  235. // go ServiceStatisticsLog.ResetStatisticsLog(c, paramsInfo.ID, current)
  236. // response.OkWithMessage("后台重置中", c)
  237. //}
  238. // @Tags loging
  239. // @Summary 获取统计电脑
  240. // @Security ApiKeyAuth
  241. // @accept application/json
  242. // @Produce application/json
  243. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑"
  244. // @Router /loging/getComputerStatistics [post]
  245. func (s *ApiLoging) GetComputerStatistics(c *gin.Context) {
  246. var paramsInfo request.GetStatisticsComputerRequest
  247. _ = c.ShouldBindJSON(&paramsInfo)
  248. /*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  249. response.FailWithMessage(err.Error(), c)
  250. return
  251. }*/
  252. list, total, err := ServiceStatisticsLog.ComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  253. if err != nil {
  254. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  255. response.FailWithMessage("获取失败", c)
  256. } else {
  257. response.OkWithDetailed(response.PageResult{
  258. List: list,
  259. Total: total,
  260. Page: paramsInfo.Page,
  261. PageSize: paramsInfo.PageSize,
  262. }, "获取成功", c)
  263. }
  264. }
  265. // @Tags loging
  266. // @Summary 在线电脑
  267. // @Security ApiKeyAuth
  268. // @accept application/json
  269. // @Produce application/json
  270. // @Success 200 {object} response.Response{data=interface{}} "在线电脑"
  271. // @Router /loging/getOnlineComputer [post]
  272. func (s *ApiLoging) GetOnlineComputer(c *gin.Context) {
  273. var paramsInfo request.GetStatisticsComputerRequest
  274. _ = c.ShouldBindJSON(&paramsInfo)
  275. list, total, err := ServiceStatisticsLog.OnlineComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  276. if err != nil {
  277. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  278. response.FailWithMessage("获取失败", c)
  279. } else {
  280. response.OkWithDetailed(response.PageResult{
  281. List: list,
  282. Total: total,
  283. Page: paramsInfo.Page,
  284. PageSize: paramsInfo.PageSize,
  285. }, "获取成功", c)
  286. }
  287. }
  288. // @Tags loging
  289. // @Summary 获取统计电脑数量
  290. // @Security ApiKeyAuth
  291. // @accept application/json
  292. // @Produce application/json
  293. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  294. // @Router /loging/getComputerNum [post]
  295. func (s *ApiLoging) GetComputerNum(c *gin.Context) {
  296. var paramsInfo request.GetStatisticsComputerRequest
  297. _ = c.ShouldBindJSON(&paramsInfo)
  298. num := ServiceStatisticsLog.GetComputerNum(paramsInfo.CreateDate)
  299. response.OkWithDetailed(num, "获取成功", c)
  300. }
  301. // @Tags loging
  302. // @Summary 获取统计数据通过GameId
  303. // @Security ApiKeyAuth
  304. // @accept application/json
  305. // @Produce application/json
  306. // @Success 200 {object} response.Response{data=interface{}} "获取统计数据通过GameId"
  307. // @Router /loging/getGameIdStatistics [post]
  308. func (s *ApiLoging) GetGameIdStatistics(c *gin.Context) {
  309. var paramsInfo request.GetStatisticsComputerRequest
  310. _ = c.ShouldBindJSON(&paramsInfo)
  311. /*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  312. response.FailWithMessage(err.Error(), c)
  313. return
  314. }*/
  315. list, total, err := ServiceStatisticsLog.GameStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo)
  316. if err != nil {
  317. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  318. response.FailWithMessage("获取失败", c)
  319. } else {
  320. response.OkWithDetailed(response.PageResult{
  321. List: list,
  322. Total: total,
  323. Page: paramsInfo.Page,
  324. PageSize: paramsInfo.PageSize,
  325. }, "获取成功", c)
  326. }
  327. }
  328. // @Tags loging
  329. // @Summary 获取统计电脑数量
  330. // @Security ApiKeyAuth
  331. // @accept application/json
  332. // @Produce application/json
  333. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  334. // @Router /loging/computerHeartbeat [post]
  335. func (s *ApiLoging) ComputerHeartbeat(c *gin.Context) {
  336. var paramsInfo request.OnlineComputerRequest
  337. _ = c.ShouldBindJSON(&paramsInfo)
  338. if paramsInfo.PcCode == "" || paramsInfo.Operator == "" {
  339. global.GVA_LOG.Error("参数错误!")
  340. response.FailWithMessage("参数错误", c)
  341. return
  342. }
  343. num := ServiceStatisticsLog.ComputerHeartbeat(c, paramsInfo)
  344. response.OkWithDetailed(num, "上报成功", c)
  345. }
  346. // @Tags loging
  347. // @Summary 获取统计电脑数量
  348. // @Security ApiKeyAuth
  349. // @accept application/json
  350. // @Produce application/json
  351. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  352. // @Router /loging/test [post]
  353. func (s *ApiLoging) ComputerTest(c *gin.Context) {
  354. var paramsInfo request.OnlineComputerRequest
  355. _ = c.ShouldBindJSON(&paramsInfo)
  356. ServiceStatisticsLog.RegularCheckPc()
  357. response.OkWithDetailed("b", "上报成功", c)
  358. }
  359. // @Tags loging
  360. // @Summary 导出Excel
  361. // @Security ApiKeyAuth
  362. // @accept application/json
  363. // @Produce application/octet-stream
  364. // @Param data body request.GetStatisticsComputerRequest true "导出Excel文件信息"
  365. // @Success 200
  366. // @Router /loging/exportExcel [post]
  367. func (e *ApiLoging) ExportExcel(c *gin.Context) {
  368. var excelInfo request.ExcelInfo
  369. _ = c.ShouldBindJSON(&excelInfo)
  370. paramsInfo := excelInfo.InfoList
  371. paramsInfo.PageSize = 300
  372. paramsInfo.Page = 1
  373. list, _, err := ServiceStatisticsLog.OnlineComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  374. if err != nil {
  375. global.GVA_LOG.Error("获取电脑数据失败!", zap.Error(err))
  376. response.FailWithMessage("获取电脑数据失败", c)
  377. return
  378. }
  379. filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
  380. err = ServiceStatisticsLog.ParseInfoList2Excel(list, filePath)
  381. if err != nil {
  382. global.GVA_LOG.Error("转换Excel失败!", zap.Error(err))
  383. response.FailWithMessage("转换Excel失败", c)
  384. return
  385. }
  386. c.Writer.Header().Add("success", "true")
  387. c.File(filePath)
  388. }
  389. // @Tags loging
  390. // @Summary 修改租机使用备注信息
  391. // @Security ApiKeyAuth
  392. // @accept application/json
  393. // @Produce application/json
  394. // @Param data body log2.ComputerUseRemarks true "id, 租机编号, 使用者, 租机供应商"
  395. // @Success 200 {object} response.Response{msg=string} "修改租机使用备注信息"
  396. // @Router /computer/updatePcRemarks [post]
  397. func (s *ApiLoging) UpdatePcRemarks(c *gin.Context) {
  398. var paramsInfo log2.ComputerUseRemarks
  399. _ = c.ShouldBindJSON(&paramsInfo)
  400. if err := utils.Verify(paramsInfo, utils.PcVerify); err != nil {
  401. response.FailWithMessage(err.Error(), c)
  402. return
  403. }
  404. if paramsInfo.PcCode == "" || paramsInfo.CreateDate == "" {
  405. response.FailWithMessage("有必要的参数未添加", c)
  406. return
  407. }
  408. if err := ServiceStatisticsLog.UpdateComputerUseLog(paramsInfo); err != nil {
  409. global.GVA_LOG.Error("修改失败!", zap.Error(err))
  410. response.FailWithMessage(err.Error(), c)
  411. } else {
  412. response.OkWithMessage("修改成功", c)
  413. }
  414. }
  415. // @Tags loging
  416. // @Summary 上报扫码订单信息
  417. // @Security ApiKeyAuth
  418. // @accept application/json
  419. // @Produce application/json
  420. // @Param data body request.GetCardListRequest true "扫码订单列表"
  421. // @Success 200 {object} response.Response{data=response.GetGameTaskListReply,msg=string} "分页游戏任务列表,返回包括列表,总数,页码,每页数量"
  422. // @Router /loging/getLogScanningList [post]
  423. func (s *ApiLoging) GetLogScanningList(c *gin.Context) {
  424. var paramsInfo request.GetLogScanningCodeRequest
  425. _ = c.ShouldBindJSON(&paramsInfo)
  426. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  427. response.FailWithMessage(err.Error(), c)
  428. return
  429. }
  430. if list, total, err := ServiceStatisticsLog.GetScanningInfoList(paramsInfo.LogScanningRequest, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc); err != nil {
  431. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  432. response.FailWithMessage("获取失败"+err.Error(), c)
  433. } else {
  434. response.OkWithDetailed(response.PageResult{
  435. List: list,
  436. Total: total,
  437. Page: paramsInfo.Page,
  438. PageSize: paramsInfo.PageSize,
  439. }, "获取成功", c)
  440. }
  441. }
  442. // @Tags loging
  443. // @Summary 导出Excel
  444. // @Security ApiKeyAuth
  445. // @accept application/json
  446. // @Produce application/octet-stream
  447. // @Param data body request.GetStatisticsComputerRequest true "导出Excel文件信息"
  448. // @Success 200
  449. // @Router /loging/computerRateExport [post]
  450. func (e *ApiLoging) ComputerRateExport(c *gin.Context) {
  451. var excelInfo request.ExcelInfo
  452. _ = c.ShouldBindJSON(&excelInfo)
  453. paramsInfo := excelInfo.InfoList
  454. paramsInfo.PageSize = 300
  455. paramsInfo.Page = 1
  456. list, _, err := ServiceStatisticsLog.ComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  457. if err != nil {
  458. global.GVA_LOG.Error("获取电脑数据失败!", zap.Error(err))
  459. response.FailWithMessage("获取电脑数据失败", c)
  460. return
  461. }
  462. filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
  463. err = ServiceStatisticsLog.ComputeRateList2Excel(list, filePath)
  464. if err != nil {
  465. global.GVA_LOG.Error("转换Excel失败!", zap.Error(err))
  466. response.FailWithMessage("转换Excel失败", c)
  467. return
  468. }
  469. c.Writer.Header().Add("success", "true")
  470. c.File(filePath)
  471. }