loging.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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. "time"
  15. )
  16. type ApiLoging struct {
  17. }
  18. // @Tags loging
  19. // @Summary 添加日志
  20. // @Security ApiKeyAuth
  21. // @accept application/json
  22. // @Produce application/json
  23. // @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脚本)脚本类型"
  24. // @Success 200 {object} response.Response{msg=string} "添加日志"
  25. // @Router /loging/setLog [Post]
  26. func (s *ApiLoging) CreateLog(c *gin.Context) {
  27. var api request.AddLogRequest
  28. _ = c.ShouldBindJSON(&api)
  29. body, _ := json.Marshal(api)
  30. global.GVA_LOG.Info(string(body))
  31. if err := utils.Verify(api, utils.LogAddVerify); err != nil {
  32. response.FailWithMessage(err.Error(), c)
  33. return
  34. }
  35. coding := strconv.Itoa(api.Coding)
  36. if len(coding) != 7 {
  37. response.FailWithMessage("该日志码没有7位"+coding, c)
  38. return
  39. }
  40. nodeCoding := coding[:3]
  41. status := coding[5:]
  42. noLogStatus := coding[3:5]
  43. var logical log.ServiceLoging
  44. switch nodeCoding {
  45. case "410":
  46. logical = new(loging2.PullAccountLog)
  47. break
  48. case "430":
  49. logical = new(loging2.SimulatorStartLog)
  50. break
  51. case "450":
  52. logical = new(loging2.GameStartLog)
  53. break
  54. case "460":
  55. logical = new(loging2.LoginLog)
  56. break
  57. case "470":
  58. logical = new(loging2.EnterMainLog)
  59. break
  60. case "480":
  61. logical = new(loging2.FeeLog)
  62. break
  63. default:
  64. logical = new(loging2.OtherLog)
  65. break
  66. }
  67. go ServiceLogList.CreateLog(c, api, logical, status, noLogStatus)
  68. response.OkWithMessage("后台已接收数据", c)
  69. }
  70. // @Tags loging
  71. // @Summary 获取log
  72. // @Security ApiKeyAuth
  73. // @accept application/json
  74. // @Produce application/json
  75. // @Param data body request.GetLogListRequest true "获取log"
  76. // @Success 200 {object} response.Response{data=response.GetLogCodingReply} "根据id获取coding,返回包括coding详情"
  77. // @Router /loging/getLogList [post]
  78. func (s *ApiLoging) GetLogList(c *gin.Context) {
  79. var paramsInfo request.GetLogListRequest
  80. _ = c.ShouldBindJSON(&paramsInfo)
  81. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  82. response.FailWithMessage(err.Error(), c)
  83. return
  84. }
  85. list, total, err := ServiceLogList.GetCodeLogList(c, paramsInfo.Loging, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc, paramsInfo.Code)
  86. if err != nil {
  87. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  88. response.FailWithMessage("获取失败", c)
  89. } else {
  90. response.OkWithDetailed(response.PageResult{
  91. List: list,
  92. Total: total,
  93. Page: paramsInfo.Page,
  94. PageSize: paramsInfo.PageSize,
  95. }, "获取成功", c)
  96. }
  97. }
  98. // @Tags loging
  99. // @Summary 获取打点log
  100. // @Security ApiKeyAuth
  101. // @accept application/json
  102. // @Produce application/json
  103. // @Param data body request.GetLogListRequest true "获取打点log"
  104. // @Success 200 {object} response.Response{data=response.GetLogCodingReply} "获取打点log列表"
  105. // @Router /loging/getReportLogList [post]
  106. func (s *ApiLoging) GetReportPointsLogList(c *gin.Context) {
  107. var paramsInfo request.ReportPointsListRequest
  108. _ = c.ShouldBindJSON(&paramsInfo)
  109. if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  110. response.FailWithMessage(err.Error(), c)
  111. return
  112. }
  113. list, total, err := ServiceReportPointsLog.GetReportPointsLogList(paramsInfo.ReportPointsLog, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  114. if err != nil {
  115. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  116. response.FailWithMessage("获取失败", c)
  117. } else {
  118. response.OkWithDetailed(response.PageResult{
  119. List: list,
  120. Total: total,
  121. Page: paramsInfo.Page,
  122. PageSize: paramsInfo.PageSize,
  123. }, "获取成功", c)
  124. }
  125. }
  126. // @Tags loging
  127. // @Summary 获取统计节点log
  128. // @Security ApiKeyAuth
  129. // @accept application/json
  130. // @Produce application/json
  131. // @Success 200 {object} response.Response{data=interface{}} "获取统计log"
  132. // @Router /loging/getNodeStatisticsLogList [post]
  133. func (s *ApiLoging) GetNodeStatisticsLogList(c *gin.Context) {
  134. var paramsInfo request.GetStatisticsLogRequest
  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 := ServiceStatisticsLog.StatisticsNodeLogList(c, paramsInfo.StatisticsLog, 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/getStatisticsLogList [post]
  160. func (s *ApiLoging) GetStatisticsLogList(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.OtherStatisticsLogList(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. // @Param data body request.GetById true "根据id重置统计log"
  186. // @Success 200 {object} response.Response{data=interface{}} "重置统计log"
  187. // @Router /loging/resetStatisticsLog [post]
  188. func (s *ApiLoging) ResetStatisticsLog(c *gin.Context) {
  189. var paramsInfo request.GetById
  190. _ = c.ShouldBindJSON(&paramsInfo)
  191. if err := utils.Verify(paramsInfo, utils.IdVerify); err != nil {
  192. response.FailWithMessage(err.Error(), c)
  193. return
  194. }
  195. current := time.Now().Format("2006-01-02")
  196. key := current + ":" + strconv.Itoa(paramsInfo.ID) + ":reset"
  197. i, err := global.GVA_REDIS.Exists(c, key).Result()
  198. if err != nil {
  199. global.GVA_LOG.Error("重置统计数据检测key失败", zap.Error(err))
  200. response.FailWithMessage("重置失败", c)
  201. return
  202. }
  203. if i != 0 {
  204. global.GVA_LOG.Info("还在重置中", zap.Error(err))
  205. response.FailWithMessage("在重置中", c)
  206. return
  207. }
  208. go ServiceStatisticsLog.ResetStatisticsLog(c, paramsInfo.ID, current)
  209. response.OkWithMessage("后台重置中", c)
  210. }
  211. // @Tags loging
  212. // @Summary 获取统计电脑
  213. // @Security ApiKeyAuth
  214. // @accept application/json
  215. // @Produce application/json
  216. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑"
  217. // @Router /loging/getComputerStatistics [post]
  218. func (s *ApiLoging) GetComputerStatistics(c *gin.Context) {
  219. var paramsInfo request.GetStatisticsComputerRequest
  220. _ = c.ShouldBindJSON(&paramsInfo)
  221. /*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  222. response.FailWithMessage(err.Error(), c)
  223. return
  224. }*/
  225. list, total, err := ServiceStatisticsLog.ComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  226. if err != nil {
  227. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  228. response.FailWithMessage("获取失败", c)
  229. } else {
  230. response.OkWithDetailed(response.PageResult{
  231. List: list,
  232. Total: total,
  233. Page: paramsInfo.Page,
  234. PageSize: paramsInfo.PageSize,
  235. }, "获取成功", c)
  236. }
  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/getOnlineComputer [post]
  245. func (s *ApiLoging) GetOnlineComputer(c *gin.Context) {
  246. var paramsInfo request.GetStatisticsComputerRequest
  247. _ = c.ShouldBindJSON(&paramsInfo)
  248. list, total, err := ServiceStatisticsLog.OnlineComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  249. if err != nil {
  250. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  251. response.FailWithMessage("获取失败", c)
  252. } else {
  253. response.OkWithDetailed(response.PageResult{
  254. List: list,
  255. Total: total,
  256. Page: paramsInfo.Page,
  257. PageSize: paramsInfo.PageSize,
  258. }, "获取成功", c)
  259. }
  260. }
  261. // @Tags loging
  262. // @Summary 获取统计电脑数量
  263. // @Security ApiKeyAuth
  264. // @accept application/json
  265. // @Produce application/json
  266. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  267. // @Router /loging/getComputerNum [post]
  268. func (s *ApiLoging) GetComputerNum(c *gin.Context) {
  269. var paramsInfo request.GetStatisticsComputerRequest
  270. _ = c.ShouldBindJSON(&paramsInfo)
  271. num := ServiceStatisticsLog.GetComputerNum(paramsInfo.CreateDate)
  272. response.OkWithDetailed(num, "获取成功", c)
  273. }
  274. // @Tags loging
  275. // @Summary 获取统计数据通过GameId
  276. // @Security ApiKeyAuth
  277. // @accept application/json
  278. // @Produce application/json
  279. // @Success 200 {object} response.Response{data=interface{}} "获取统计数据通过GameId"
  280. // @Router /loging/getGameIdStatistics [post]
  281. func (s *ApiLoging) GetGameIdStatistics(c *gin.Context) {
  282. var paramsInfo request.GetStatisticsComputerRequest
  283. _ = c.ShouldBindJSON(&paramsInfo)
  284. /*if err := utils.Verify(paramsInfo.PageInfo, utils.PageInfoVerify); err != nil {
  285. response.FailWithMessage(err.Error(), c)
  286. return
  287. }*/
  288. list, total, err := ServiceStatisticsLog.GameStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo)
  289. if err != nil {
  290. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  291. response.FailWithMessage("获取失败", c)
  292. } else {
  293. response.OkWithDetailed(response.PageResult{
  294. List: list,
  295. Total: total,
  296. Page: paramsInfo.Page,
  297. PageSize: paramsInfo.PageSize,
  298. }, "获取成功", c)
  299. }
  300. }
  301. // @Tags loging
  302. // @Summary 获取统计电脑数量
  303. // @Security ApiKeyAuth
  304. // @accept application/json
  305. // @Produce application/json
  306. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  307. // @Router /loging/computerHeartbeat [post]
  308. func (s *ApiLoging) ComputerHeartbeat(c *gin.Context) {
  309. var paramsInfo request.OnlineComputerRequest
  310. _ = c.ShouldBindJSON(&paramsInfo)
  311. if paramsInfo.PcCode == "" || paramsInfo.Operator == "" {
  312. global.GVA_LOG.Error("参数错误!")
  313. response.FailWithMessage("参数错误", c)
  314. return
  315. }
  316. num := ServiceStatisticsLog.ComputerHeartbeat(c, paramsInfo)
  317. response.OkWithDetailed(num, "上报成功", c)
  318. }
  319. // @Tags loging
  320. // @Summary 获取统计电脑数量
  321. // @Security ApiKeyAuth
  322. // @accept application/json
  323. // @Produce application/json
  324. // @Success 200 {object} response.Response{data=interface{}} "获取统计电脑数量"
  325. // @Router /loging/test [post]
  326. func (s *ApiLoging) ComputerTest(c *gin.Context) {
  327. var paramsInfo request.OnlineComputerRequest
  328. _ = c.ShouldBindJSON(&paramsInfo)
  329. ServiceStatisticsLog.RegularCheckPc()
  330. response.OkWithDetailed("b", "上报成功", c)
  331. }
  332. // @Tags loging
  333. // @Summary 导出Excel
  334. // @Security ApiKeyAuth
  335. // @accept application/json
  336. // @Produce application/octet-stream
  337. // @Param data body request.GetStatisticsComputerRequest true "导出Excel文件信息"
  338. // @Success 200
  339. // @Router /loging/exportExcel [post]
  340. func (e *ApiLoging) ExportExcel(c *gin.Context) {
  341. var excelInfo request.ExcelInfo
  342. _ = c.ShouldBindJSON(&excelInfo)
  343. paramsInfo := excelInfo.InfoList
  344. paramsInfo.PageSize = 300
  345. paramsInfo.Page = 1
  346. list, _, err := ServiceStatisticsLog.OnlineComputerStatistics(c, paramsInfo.LogComputer, paramsInfo.PageInfo, paramsInfo.OrderKey, paramsInfo.Desc)
  347. if err != nil {
  348. global.GVA_LOG.Error("获取电脑数据失败!", zap.Error(err))
  349. response.FailWithMessage("获取电脑数据失败", c)
  350. return
  351. }
  352. filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
  353. err = ServiceStatisticsLog.ParseInfoList2Excel(list, filePath)
  354. if err != nil {
  355. global.GVA_LOG.Error("转换Excel失败!", zap.Error(err))
  356. response.FailWithMessage("转换Excel失败", c)
  357. return
  358. }
  359. c.Writer.Header().Add("success", "true")
  360. c.File(filePath)
  361. }
  362. // @Tags loging
  363. // @Summary 修改租机使用备注信息
  364. // @Security ApiKeyAuth
  365. // @accept application/json
  366. // @Produce application/json
  367. // @Param data body log2.ComputerUseRemarks true "id, 租机编号, 使用者, 租机供应商"
  368. // @Success 200 {object} response.Response{msg=string} "修改租机使用备注信息"
  369. // @Router /computer/updatePcRemarks [post]
  370. func (s *ApiLoging) UpdatePcRemarks(c *gin.Context) {
  371. var paramsInfo log2.ComputerUseRemarks
  372. _ = c.ShouldBindJSON(&paramsInfo)
  373. if err := utils.Verify(paramsInfo, utils.PcVerify); err != nil {
  374. response.FailWithMessage(err.Error(), c)
  375. return
  376. }
  377. if paramsInfo.PcCode == "" || paramsInfo.CreateDate == "" {
  378. response.FailWithMessage("有必要的参数未添加", c)
  379. return
  380. }
  381. if err := ServiceStatisticsLog.UpdateComputerUseLog(paramsInfo); err != nil {
  382. global.GVA_LOG.Error("修改失败!", zap.Error(err))
  383. response.FailWithMessage(err.Error(), c)
  384. } else {
  385. response.OkWithMessage("修改成功", c)
  386. }
  387. }