transaction.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. package video
  2. import (
  3. "runtime/debug"
  4. "bet24.com/servers/adminserver/dao"
  5. "bet24.com/database"
  6. "bet24.com/log"
  7. )
  8. // 广告播放统计(按天)
  9. func playStat(beginTime, endTime string, partnerId int) []*playStatInfo {
  10. defer func() {
  11. if err := recover(); err != nil {
  12. log.Error("transaction recover err %v", err)
  13. log.Error("%s", debug.Stack())
  14. }
  15. }()
  16. var list []*playStatInfo
  17. statement := database.NewStatement()
  18. statement.SetNeedReturnValue(false)
  19. statement.SetOpenRecordSet(true)
  20. statement.SetProcName("Manage_UserVideo_GetPlayStat")
  21. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  22. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  23. statement.AddParamter("@PartnerID", database.AdParamInput, database.AdInteger, 4, partnerId)
  24. sqlstring := statement.GenSql()
  25. retRows := dao.CenterDB.ExecSql(sqlstring)
  26. rowLen := len(retRows)
  27. if rowLen <= 0 {
  28. return list
  29. }
  30. for i := 0; i < rowLen; i++ {
  31. ret := retRows[i]
  32. var out playStatInfo
  33. out.DateFlag = (*ret[0].(*interface{})).(string)
  34. out.ReqTimes = int((*ret[1].(*interface{})).(int64))
  35. out.PlayTimes = int((*ret[2].(*interface{})).(int64))
  36. out.FailTimes = int((*ret[3].(*interface{})).(int64))
  37. list = append(list, &out)
  38. }
  39. return list
  40. }
  41. // 广告播放统计(按时段)
  42. type (
  43. playStatByHour_in struct {
  44. BeginTime string
  45. EndTime string
  46. PartnerID int
  47. }
  48. playStatByHourModel struct {
  49. DateFlag string
  50. Hour_0000 int // 00:00
  51. Hour_0030 int // 00:30
  52. Hour_0100 int // 01:00
  53. Hour_0130 int // 01:30
  54. Hour_0200 int // 02:00
  55. Hour_0230 int // 02:30
  56. Hour_0300 int // 03:00
  57. Hour_0330 int // 03:30
  58. Hour_0400 int // 04:00
  59. Hour_0430 int // 04:30
  60. Hour_0500 int // 05:00
  61. Hour_0530 int // 05:30
  62. Hour_0600 int // 06:00
  63. Hour_0630 int // 06:30
  64. Hour_0700 int // 07:00
  65. Hour_0730 int // 07:30
  66. Hour_0800 int // 08:00
  67. Hour_0830 int // 08:30
  68. Hour_0900 int // 09:00
  69. Hour_0930 int // 09:30
  70. Hour_1000 int // 10:00
  71. Hour_1030 int // 10:30
  72. Hour_1100 int // 11:00
  73. Hour_1130 int // 11:30
  74. Hour_1200 int // 12:00
  75. Hour_1230 int // 12:30
  76. Hour_1300 int // 13:00
  77. Hour_1330 int // 13:30
  78. Hour_1400 int // 14:00
  79. Hour_1430 int // 14:30
  80. Hour_1500 int // 15:00
  81. Hour_1530 int // 15:30
  82. Hour_1600 int // 16:00
  83. Hour_1630 int // 16:30
  84. Hour_1700 int // 17:00
  85. Hour_1730 int // 17:30
  86. Hour_1800 int // 18:00
  87. Hour_1830 int // 18:30
  88. Hour_1900 int // 19:00
  89. Hour_1930 int // 19:30
  90. Hour_2000 int // 20:00
  91. Hour_2030 int // 20:30
  92. Hour_2100 int // 21:00
  93. Hour_2130 int // 21:30
  94. Hour_2200 int // 22:00
  95. Hour_2230 int // 22:30
  96. Hour_2300 int // 23:00
  97. Hour_2330 int // 23:30
  98. }
  99. playStatByHour_out struct {
  100. RecordCount int
  101. List []playStatByHourModel
  102. }
  103. playStatByHour struct {
  104. database.Trans_base
  105. In playStatByHour_in
  106. Out playStatByHour_out
  107. }
  108. )
  109. func NewPlayStatByHour() *playStatByHour {
  110. return &playStatByHour{}
  111. }
  112. func (this *playStatByHour) DoAction() {
  113. defer func() {
  114. if err := recover(); err != nil {
  115. log.Error("transaction recover err %v", err)
  116. log.Error("%s", debug.Stack())
  117. }
  118. }()
  119. statement := database.NewStatement()
  120. statement.SetNeedReturnValue(false)
  121. statement.SetOpenRecordSet(true)
  122. statement.SetProcName("Manage_UserVideo_GetPlayStatByHour")
  123. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, this.In.BeginTime)
  124. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, this.In.EndTime)
  125. statement.AddParamter("@PartnerID", database.AdParamInput, database.AdInteger, 4, this.In.PartnerID)
  126. sqlstring := statement.GenSql()
  127. retRows := dao.CenterDB.ExecSql(sqlstring)
  128. rowLen := len(retRows)
  129. if rowLen <= 0 {
  130. return
  131. }
  132. this.Out.List = make([]playStatByHourModel, rowLen)
  133. for i := 0; i < rowLen; i++ {
  134. ret := retRows[i]
  135. out := &this.Out.List[i]
  136. out.DateFlag = (*ret[0].(*interface{})).(string)
  137. out.Hour_0000 = int((*ret[1].(*interface{})).(int64))
  138. out.Hour_0030 = int((*ret[2].(*interface{})).(int64))
  139. out.Hour_0100 = int((*ret[3].(*interface{})).(int64))
  140. out.Hour_0130 = int((*ret[4].(*interface{})).(int64))
  141. out.Hour_0200 = int((*ret[5].(*interface{})).(int64))
  142. out.Hour_0230 = int((*ret[6].(*interface{})).(int64))
  143. out.Hour_0300 = int((*ret[7].(*interface{})).(int64))
  144. out.Hour_0330 = int((*ret[8].(*interface{})).(int64))
  145. out.Hour_0400 = int((*ret[9].(*interface{})).(int64))
  146. out.Hour_0430 = int((*ret[10].(*interface{})).(int64))
  147. out.Hour_0500 = int((*ret[11].(*interface{})).(int64))
  148. out.Hour_0530 = int((*ret[12].(*interface{})).(int64))
  149. out.Hour_0600 = int((*ret[13].(*interface{})).(int64))
  150. out.Hour_0630 = int((*ret[14].(*interface{})).(int64))
  151. out.Hour_0700 = int((*ret[15].(*interface{})).(int64))
  152. out.Hour_0730 = int((*ret[16].(*interface{})).(int64))
  153. out.Hour_0800 = int((*ret[17].(*interface{})).(int64))
  154. out.Hour_0830 = int((*ret[18].(*interface{})).(int64))
  155. out.Hour_0900 = int((*ret[19].(*interface{})).(int64))
  156. out.Hour_0930 = int((*ret[20].(*interface{})).(int64))
  157. out.Hour_1000 = int((*ret[21].(*interface{})).(int64))
  158. out.Hour_1030 = int((*ret[22].(*interface{})).(int64))
  159. out.Hour_1100 = int((*ret[23].(*interface{})).(int64))
  160. out.Hour_1130 = int((*ret[24].(*interface{})).(int64))
  161. out.Hour_1200 = int((*ret[25].(*interface{})).(int64))
  162. out.Hour_1230 = int((*ret[26].(*interface{})).(int64))
  163. out.Hour_1300 = int((*ret[27].(*interface{})).(int64))
  164. out.Hour_1330 = int((*ret[28].(*interface{})).(int64))
  165. out.Hour_1400 = int((*ret[29].(*interface{})).(int64))
  166. out.Hour_1430 = int((*ret[30].(*interface{})).(int64))
  167. out.Hour_1500 = int((*ret[31].(*interface{})).(int64))
  168. out.Hour_1530 = int((*ret[32].(*interface{})).(int64))
  169. out.Hour_1600 = int((*ret[33].(*interface{})).(int64))
  170. out.Hour_1630 = int((*ret[34].(*interface{})).(int64))
  171. out.Hour_1700 = int((*ret[35].(*interface{})).(int64))
  172. out.Hour_1730 = int((*ret[36].(*interface{})).(int64))
  173. out.Hour_1800 = int((*ret[37].(*interface{})).(int64))
  174. out.Hour_1830 = int((*ret[38].(*interface{})).(int64))
  175. out.Hour_1900 = int((*ret[39].(*interface{})).(int64))
  176. out.Hour_1930 = int((*ret[40].(*interface{})).(int64))
  177. out.Hour_2000 = int((*ret[41].(*interface{})).(int64))
  178. out.Hour_2030 = int((*ret[42].(*interface{})).(int64))
  179. out.Hour_2100 = int((*ret[43].(*interface{})).(int64))
  180. out.Hour_2130 = int((*ret[44].(*interface{})).(int64))
  181. out.Hour_2200 = int((*ret[45].(*interface{})).(int64))
  182. out.Hour_2230 = int((*ret[46].(*interface{})).(int64))
  183. out.Hour_2300 = int((*ret[47].(*interface{})).(int64))
  184. out.Hour_2330 = int((*ret[48].(*interface{})).(int64))
  185. }
  186. }
  187. // 广告来源统计
  188. func source(beginTime, endTime string, partnerId int) []*sourceInfo {
  189. defer func() {
  190. if err := recover(); err != nil {
  191. log.Error("transaction recover err %v", err)
  192. log.Error("%s", debug.Stack())
  193. }
  194. }()
  195. var list []*sourceInfo
  196. statement := database.NewStatement()
  197. statement.SetNeedReturnValue(false)
  198. statement.SetOpenRecordSet(true)
  199. statement.SetProcName("Manage_UserVideo_GetSourceList")
  200. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  201. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  202. statement.AddParamter("@PartnerID", database.AdParamInput, database.AdInteger, 4, partnerId)
  203. sqlstring := statement.GenSql()
  204. retRows := dao.CenterDB.ExecSql(sqlstring)
  205. rowLen := len(retRows)
  206. if rowLen <= 0 {
  207. return list
  208. }
  209. for i := 0; i < rowLen; i++ {
  210. ret := retRows[i]
  211. var out sourceInfo
  212. out.DateFlag = (*ret[0].(*interface{})).(string)
  213. out.VideoName = (*ret[1].(*interface{})).(string)
  214. out.PlayTimes = int((*ret[2].(*interface{})).(int64))
  215. list = append(list, &out)
  216. }
  217. return list
  218. }
  219. //广告分布
  220. type (
  221. regionList_in struct {
  222. BeginTime string
  223. EndTime string
  224. }
  225. regionListModel struct {
  226. VideoName string
  227. ModuleName string
  228. ReqTimes int
  229. PlayTimes int
  230. }
  231. regionList_out struct {
  232. RecordCount int
  233. List []regionListModel
  234. }
  235. regionList struct {
  236. database.Trans_base
  237. In regionList_in
  238. Out regionList_out
  239. }
  240. )
  241. func NewRegionList() *regionList {
  242. return &regionList{}
  243. }
  244. func (this *regionList) DoAction() {
  245. defer func() {
  246. if err := recover(); err != nil {
  247. log.Error("transaction recover err %v", err)
  248. log.Error("%s", debug.Stack())
  249. }
  250. }()
  251. statement := database.NewStatement()
  252. statement.SetNeedReturnValue(false)
  253. statement.SetOpenRecordSet(true)
  254. statement.SetProcName("Manage_UserVideo_GetRegionList")
  255. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, this.In.BeginTime)
  256. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, this.In.EndTime)
  257. sqlstring := statement.GenSql()
  258. retRows := dao.CenterDB.ExecSql(sqlstring)
  259. rowLen := len(retRows)
  260. if rowLen <= 0 {
  261. return
  262. }
  263. this.Out.List = make([]regionListModel, rowLen)
  264. for i := 0; i < rowLen; i++ {
  265. ret := retRows[i]
  266. out := &this.Out.List[i]
  267. out.VideoName = (*ret[0].(*interface{})).(string)
  268. out.ModuleName = (*ret[1].(*interface{})).(string)
  269. out.ReqTimes = int((*ret[2].(*interface{})).(int64))
  270. out.PlayTimes = int((*ret[3].(*interface{})).(int64))
  271. }
  272. }
  273. // 广告指标
  274. func index(beginTime, endTime string) []*indexInfo {
  275. defer func() {
  276. if err := recover(); err != nil {
  277. log.Error("transaction recover err %v", err)
  278. log.Error("%s", debug.Stack())
  279. }
  280. }()
  281. var list []*indexInfo
  282. statement := database.NewStatement()
  283. statement.SetNeedReturnValue(false)
  284. statement.SetOpenRecordSet(true)
  285. statement.SetProcName("Manage_UserVideo_GetIndexList")
  286. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  287. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  288. sqlstring := statement.GenSql()
  289. retRows := dao.CenterDB.ExecSql(sqlstring)
  290. rowLen := len(retRows)
  291. if rowLen <= 0 {
  292. return list
  293. }
  294. for i := 0; i < rowLen; i++ {
  295. ret := retRows[i]
  296. var out indexInfo
  297. out.DateFlag = (*ret[0].(*interface{})).(string)
  298. out.ReqTimes = int((*ret[1].(*interface{})).(int64))
  299. out.PlayTimes = int((*ret[2].(*interface{})).(int64))
  300. out.UserCount = int((*ret[3].(*interface{})).(int64))
  301. out.GoldTimes = int((*ret[4].(*interface{})).(int64))
  302. out.GoldGiftTimes = int((*ret[5].(*interface{})).(int64))
  303. out.PlayUserCount = int((*ret[6].(*interface{})).(int64))
  304. list = append(list, &out)
  305. }
  306. return list
  307. }
  308. // 广告用户统计(按天)
  309. func userStat(beginTime, endTime string) []*userStatInfo {
  310. defer func() {
  311. if err := recover(); err != nil {
  312. log.Error("transaction recover err %v", err)
  313. log.Error("%s", debug.Stack())
  314. }
  315. }()
  316. var list []*userStatInfo
  317. statement := database.NewStatement()
  318. statement.SetNeedReturnValue(false)
  319. statement.SetOpenRecordSet(true)
  320. statement.SetProcName("Manage_UserVideo_GetUserStat")
  321. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, beginTime)
  322. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, endTime)
  323. sqlstring := statement.GenSql()
  324. retRows := dao.CenterDB.ExecSql(sqlstring)
  325. rowLen := len(retRows)
  326. if rowLen <= 0 {
  327. return list
  328. }
  329. for i := 0; i < rowLen; i++ {
  330. ret := retRows[i]
  331. var out userStatInfo
  332. out.DateFlag = (*ret[0].(*interface{})).(string)
  333. out.ReqUsers = int((*ret[1].(*interface{})).(int64))
  334. out.PlayUsers = int((*ret[2].(*interface{})).(int64))
  335. out.FailUsers = int((*ret[3].(*interface{})).(int64))
  336. list = append(list, &out)
  337. }
  338. return list
  339. }
  340. //广告用户统计(按时段)
  341. type (
  342. userStatByHour_in struct {
  343. BeginTime string
  344. EndTime string
  345. }
  346. userStatByHourModel struct {
  347. DateFlag string
  348. Hour_0000 int // 00:00
  349. Hour_0030 int // 00:30
  350. Hour_0100 int // 01:00
  351. Hour_0130 int // 01:30
  352. Hour_0200 int // 02:00
  353. Hour_0230 int // 02:30
  354. Hour_0300 int // 03:00
  355. Hour_0330 int // 03:30
  356. Hour_0400 int // 04:00
  357. Hour_0430 int // 04:30
  358. Hour_0500 int // 05:00
  359. Hour_0530 int // 05:30
  360. Hour_0600 int // 06:00
  361. Hour_0630 int // 06:30
  362. Hour_0700 int // 07:00
  363. Hour_0730 int // 07:30
  364. Hour_0800 int // 08:00
  365. Hour_0830 int // 08:30
  366. Hour_0900 int // 09:00
  367. Hour_0930 int // 09:30
  368. Hour_1000 int // 10:00
  369. Hour_1030 int // 10:30
  370. Hour_1100 int // 11:00
  371. Hour_1130 int // 11:30
  372. Hour_1200 int // 12:00
  373. Hour_1230 int // 12:30
  374. Hour_1300 int // 13:00
  375. Hour_1330 int // 13:30
  376. Hour_1400 int // 14:00
  377. Hour_1430 int // 14:30
  378. Hour_1500 int // 15:00
  379. Hour_1530 int // 15:30
  380. Hour_1600 int // 16:00
  381. Hour_1630 int // 16:30
  382. Hour_1700 int // 17:00
  383. Hour_1730 int // 17:30
  384. Hour_1800 int // 18:00
  385. Hour_1830 int // 18:30
  386. Hour_1900 int // 19:00
  387. Hour_1930 int // 19:30
  388. Hour_2000 int // 20:00
  389. Hour_2030 int // 20:30
  390. Hour_2100 int // 21:00
  391. Hour_2130 int // 21:30
  392. Hour_2200 int // 22:00
  393. Hour_2230 int // 22:30
  394. Hour_2300 int // 23:00
  395. Hour_2330 int // 23:30
  396. }
  397. userStatByHour_out struct {
  398. RecordCount int
  399. List []userStatByHourModel
  400. }
  401. userStatByHour struct {
  402. database.Trans_base
  403. In userStatByHour_in
  404. Out userStatByHour_out
  405. }
  406. )
  407. func NewUserStatByHour() *userStatByHour {
  408. return &userStatByHour{}
  409. }
  410. func (this *userStatByHour) DoAction() {
  411. defer func() {
  412. if err := recover(); err != nil {
  413. log.Error("transaction recover err %v", err)
  414. log.Error("%s", debug.Stack())
  415. }
  416. }()
  417. statement := database.NewStatement()
  418. statement.SetNeedReturnValue(false)
  419. statement.SetOpenRecordSet(true)
  420. statement.SetProcName("Manage_UserVideo_GetUserStatByHour")
  421. statement.AddParamter("@BeginTime", database.AdParamInput, database.AdVarChar, 20, this.In.BeginTime)
  422. statement.AddParamter("@EndTime", database.AdParamInput, database.AdVarChar, 20, this.In.EndTime)
  423. sqlstring := statement.GenSql()
  424. retRows := dao.CenterDB.ExecSql(sqlstring)
  425. rowLen := len(retRows)
  426. if rowLen <= 0 {
  427. return
  428. }
  429. this.Out.List = make([]userStatByHourModel, rowLen)
  430. for i := 0; i < rowLen; i++ {
  431. ret := retRows[i]
  432. out := &this.Out.List[i]
  433. out.DateFlag = (*ret[0].(*interface{})).(string)
  434. out.Hour_0000 = int((*ret[1].(*interface{})).(int64))
  435. out.Hour_0030 = int((*ret[2].(*interface{})).(int64))
  436. out.Hour_0100 = int((*ret[3].(*interface{})).(int64))
  437. out.Hour_0130 = int((*ret[4].(*interface{})).(int64))
  438. out.Hour_0200 = int((*ret[5].(*interface{})).(int64))
  439. out.Hour_0230 = int((*ret[6].(*interface{})).(int64))
  440. out.Hour_0300 = int((*ret[7].(*interface{})).(int64))
  441. out.Hour_0330 = int((*ret[8].(*interface{})).(int64))
  442. out.Hour_0400 = int((*ret[9].(*interface{})).(int64))
  443. out.Hour_0430 = int((*ret[10].(*interface{})).(int64))
  444. out.Hour_0500 = int((*ret[11].(*interface{})).(int64))
  445. out.Hour_0530 = int((*ret[12].(*interface{})).(int64))
  446. out.Hour_0600 = int((*ret[13].(*interface{})).(int64))
  447. out.Hour_0630 = int((*ret[14].(*interface{})).(int64))
  448. out.Hour_0700 = int((*ret[15].(*interface{})).(int64))
  449. out.Hour_0730 = int((*ret[16].(*interface{})).(int64))
  450. out.Hour_0800 = int((*ret[17].(*interface{})).(int64))
  451. out.Hour_0830 = int((*ret[18].(*interface{})).(int64))
  452. out.Hour_0900 = int((*ret[19].(*interface{})).(int64))
  453. out.Hour_0930 = int((*ret[20].(*interface{})).(int64))
  454. out.Hour_1000 = int((*ret[21].(*interface{})).(int64))
  455. out.Hour_1030 = int((*ret[22].(*interface{})).(int64))
  456. out.Hour_1100 = int((*ret[23].(*interface{})).(int64))
  457. out.Hour_1130 = int((*ret[24].(*interface{})).(int64))
  458. out.Hour_1200 = int((*ret[25].(*interface{})).(int64))
  459. out.Hour_1230 = int((*ret[26].(*interface{})).(int64))
  460. out.Hour_1300 = int((*ret[27].(*interface{})).(int64))
  461. out.Hour_1330 = int((*ret[28].(*interface{})).(int64))
  462. out.Hour_1400 = int((*ret[29].(*interface{})).(int64))
  463. out.Hour_1430 = int((*ret[30].(*interface{})).(int64))
  464. out.Hour_1500 = int((*ret[31].(*interface{})).(int64))
  465. out.Hour_1530 = int((*ret[32].(*interface{})).(int64))
  466. out.Hour_1600 = int((*ret[33].(*interface{})).(int64))
  467. out.Hour_1630 = int((*ret[34].(*interface{})).(int64))
  468. out.Hour_1700 = int((*ret[35].(*interface{})).(int64))
  469. out.Hour_1730 = int((*ret[36].(*interface{})).(int64))
  470. out.Hour_1800 = int((*ret[37].(*interface{})).(int64))
  471. out.Hour_1830 = int((*ret[38].(*interface{})).(int64))
  472. out.Hour_1900 = int((*ret[39].(*interface{})).(int64))
  473. out.Hour_1930 = int((*ret[40].(*interface{})).(int64))
  474. out.Hour_2000 = int((*ret[41].(*interface{})).(int64))
  475. out.Hour_2030 = int((*ret[42].(*interface{})).(int64))
  476. out.Hour_2100 = int((*ret[43].(*interface{})).(int64))
  477. out.Hour_2130 = int((*ret[44].(*interface{})).(int64))
  478. out.Hour_2200 = int((*ret[45].(*interface{})).(int64))
  479. out.Hour_2230 = int((*ret[46].(*interface{})).(int64))
  480. out.Hour_2300 = int((*ret[47].(*interface{})).(int64))
  481. out.Hour_2330 = int((*ret[48].(*interface{})).(int64))
  482. }
  483. }