base_from_smm.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. package data_manage
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "gorm.io/gorm"
  7. "time"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. )
  10. type BaseFromSmm struct {
  11. BaseFromSmmId int `orm:"column(base_from_smm_id);pk" gorm:"primaryKey"`
  12. Aid int
  13. Name string
  14. Interface string
  15. ApiUpdate int
  16. ApiUpdateType string
  17. ApiType int
  18. ApiTypeAll string
  19. Type1 string `gorm:"column:type_1"`
  20. Type2 string `gorm:"column:type_2"`
  21. Type3 string `gorm:"column:type_3"`
  22. ApiStartTime string
  23. ApiUpdateTime string
  24. StartTime string
  25. FinishTime string
  26. AuthModule string
  27. AuthLang string
  28. ApiLabel string
  29. Enable string
  30. EditPerson string
  31. EditTime string
  32. AuthDur int
  33. AuthDurType string
  34. }
  35. func AddBaseFromSmm(item *BaseFromSmm) (lastId int64, err error) {
  36. o := global.DbMap[utils.DbNameIndex]
  37. err = o.Create(item).Error
  38. if err != nil {
  39. return
  40. }
  41. lastId = int64(item.BaseFromSmmId)
  42. return
  43. }
  44. func GetBaseFromSmmList() (list []*BaseFromSmm, err error) {
  45. o := global.DbMap[utils.DbNameIndex]
  46. sql := `SELECT * FROM base_from_smm `
  47. err = o.Raw(sql).Find(&list).Error
  48. return
  49. }
  50. func GetBaseFromSmmBySmmCode(smmCode string) (item *BaseFromSmm, err error) {
  51. o := global.DbMap[utils.DbNameIndex]
  52. sql := `SELECT * FROM base_from_smm WHERE interface=?`
  53. err = o.Raw(sql, smmCode).First(&item).Error
  54. return
  55. }
  56. type BaseFromSmmIndex struct {
  57. BaseFromSmmIndexId int `gorm:"column:base_from_smm_index_id;primaryKey"`
  58. ClassifyId int
  59. Interface string
  60. Name string
  61. IndexCode string
  62. IndexName string
  63. Type1 string `gorm:"column:type_1"`
  64. Type2 string `gorm:"column:type_2"`
  65. Type3 string `gorm:"column:type_3"`
  66. Frequency string
  67. Unit string
  68. ApiStartTime string
  69. ApiUpdateTime string
  70. StartTime string
  71. FinishTime string
  72. Sort int
  73. CreateTime time.Time
  74. ModifyTime time.Time
  75. DataState string
  76. ReleaseTime string
  77. StartDate string
  78. EndDate string
  79. RenameFileName string
  80. TerminalCode string `description:"终端编码"`
  81. }
  82. func (m *BaseFromSmmIndex) AfterFind(tx *gorm.DB) (err error) {
  83. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  84. if m.ApiStartTime != "" {
  85. m.ApiStartTime = utils.GormDateStrToDateTimeStr(m.ApiStartTime)
  86. }
  87. if m.ApiUpdateTime != "" {
  88. m.ApiUpdateTime = utils.GormDateStrToDateTimeStr(m.ApiUpdateTime)
  89. }
  90. if m.StartTime != "" {
  91. m.StartTime = utils.GormDateStrToDateTimeStr(m.StartTime)
  92. }
  93. if m.FinishTime != "" {
  94. m.FinishTime = utils.GormDateStrToDateTimeStr(m.FinishTime)
  95. }
  96. if m.ReleaseTime != "" {
  97. m.ReleaseTime = utils.GormDateStrToDateTimeStr(m.ReleaseTime)
  98. }
  99. if m.StartDate != "" {
  100. m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
  101. }
  102. if m.EndDate != "" {
  103. m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
  104. }
  105. }
  106. return
  107. }
  108. func AddBaseFromSmmIndex(item *BaseFromSmmIndex) (lastId int64, err error) {
  109. o := global.DbMap[utils.DbNameIndex]
  110. err = o.Create(item).Error
  111. if err != nil {
  112. return
  113. }
  114. lastId = int64(item.BaseFromSmmIndexId)
  115. return
  116. }
  117. func GetBaseFromSmmIndex() (list []*BaseFromSmmIndex, err error) {
  118. o := global.DbMap[utils.DbNameIndex]
  119. sql := `SELECT * FROM base_from_smm_index `
  120. err = o.Raw(sql).Find(&list).Error
  121. return
  122. }
  123. type BaseFromSmmData struct {
  124. SmmDataId int `orm:"column(smm_data_id);pk" gorm:"primaryKey"`
  125. BaseFromSmmIndexId int
  126. IndexCode string
  127. DataTime string
  128. Value string
  129. CreateTime time.Time
  130. ModifyTime time.Time
  131. DataTimestamp int64
  132. }
  133. func AddBaseFromSmmData(item *BaseFromSmmData) (lastId int64, err error) {
  134. o := global.DbMap[utils.DbNameIndex]
  135. err = o.Create(item).Error
  136. if err != nil {
  137. return
  138. }
  139. lastId = int64(item.SmmDataId)
  140. return
  141. }
  142. func GetBaseFromSmmDataAll() (list []*BaseFromSmmData, err error) {
  143. o := global.DbMap[utils.DbNameIndex]
  144. sql := `SELECT * FROM base_from_smm_data `
  145. err = o.Raw(sql).Find(&list).Error
  146. return
  147. }
  148. func ModifyBaseFromSmmData(smmDataId int, value string) (err error) {
  149. o := global.DbMap[utils.DbNameIndex]
  150. sql := `UPDATE base_from_smm_data SET value=?,modify_time=NOW() WHERE smm_data_id=? `
  151. err = o.Exec(sql, value, smmDataId).Error
  152. return
  153. }
  154. func GetBaseFromSmmIndexBySmmCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
  155. o := global.DbMap[utils.DbNameIndex]
  156. sql := ` SELECT * FROM base_from_smm_index WHERE interface=? `
  157. err = o.Raw(sql, smmCode).Find(&list).Error
  158. return
  159. }
  160. func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  161. o := global.DbMap[utils.DbNameIndex]
  162. sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
  163. err = o.Raw(sql, indexCode).Row().Scan(&min_date, &max_date)
  164. return
  165. }
  166. func ModifyBaseFromSmmMinDateAndMaxDate(baseFromSmmIndexId int, minDate, maxDate string) (err error) {
  167. o := global.DbMap[utils.DbNameIndex]
  168. sql := ` UPDATE base_from_smm_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_smm_index_id=? `
  169. err = o.Exec(sql, minDate, maxDate, baseFromSmmIndexId).Error
  170. return
  171. }
  172. func GetBaseFromSmmDataAllByIndexCode(indexCode string) (list []*BaseFromSmmData, err error) {
  173. o := global.DbMap[utils.DbNameIndex]
  174. sql := `SELECT * FROM base_from_smm_data WHERE index_code=? `
  175. err = o.Raw(sql, indexCode).Find(&list).Error
  176. return
  177. }
  178. func GetBaseFromSmmIndexByIndexCode(indexCode string) (list *BaseFromSmmIndex, err error) {
  179. o := global.DbMap[utils.DbNameIndex]
  180. sql := ` SELECT * FROM base_from_smm_index WHERE index_code=? `
  181. err = o.Raw(sql, indexCode).First(&list).Error
  182. return
  183. }
  184. // GetBaseFromSmmIndexCountByClassifyIds 获取分类下指标的个数
  185. func GetBaseFromSmmIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  186. o := global.DbMap[utils.DbNameIndex]
  187. num := len(classifyIds)
  188. if num <= 0 {
  189. return
  190. }
  191. sql := `SELECT COUNT(1) AS count FROM base_from_smm_index WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  192. err = o.Raw(sql, classifyIds).Scan(&count).Error
  193. return
  194. }
  195. // GetBaseFromSmmIndexByClassifyId 获取根据分类查询指标
  196. func GetBaseFromSmmIndexByClassifyId(classifyId int) (list []*BaseFromSmmIndex, err error) {
  197. o := global.DbMap[utils.DbNameIndex]
  198. sql := `SELECT * FROM base_from_smm_index WHERE classify_id =? ORDER BY sort ASC, base_from_smm_index_id ASC `
  199. err = o.Raw(sql, classifyId).Find(&list).Error
  200. return
  201. }
  202. // GetSmmIndexAll 用于分类展示
  203. func GetSmmIndexAll() (items []*BaseFromSmmClassifyItems, err error) {
  204. o := global.DbMap[utils.DbNameIndex]
  205. sql := ` SELECT base_from_smm_index_id, classify_id, index_name as classify_name, index_code as base_from_smm_index_code
  206. FROM base_from_smm_index ORDER BY sort ASC, base_from_smm_index_id ASC `
  207. err = o.Raw(sql).Find(&items).Error
  208. return
  209. }
  210. // GetBaseFromSmmIndexByIndexId 根据指标id获取指标信息
  211. func GetBaseFromSmmIndexByIndexId(indexId int) (item *BaseFromSmmIndex, err error) {
  212. o := global.DbMap[utils.DbNameIndex]
  213. sql := `SELECT * FROM base_from_smm_index WHERE base_from_smm_index_id=? `
  214. err = o.Raw(sql, indexId).First(&item).Error
  215. return
  216. }
  217. // GetBaseFromSmmIndexMaxSortByClassifyId 根据指标id获取指标信息
  218. func GetBaseFromSmmIndexMaxSortByClassifyId(classifyId int) (sort int, err error) {
  219. o := global.DbMap[utils.DbNameIndex]
  220. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM base_from_smm_index WHERE classify_id=? `
  221. err = o.Raw(sql, classifyId).Scan(&sort).Error
  222. return
  223. }
  224. // GetBaseFromSmmIndexMinSortByClassifyId 获取最小不等于0的排序
  225. func GetBaseFromSmmIndexMinSortByClassifyId(classifyId int) (sort int, err error) {
  226. o := global.DbMap[utils.DbNameIndex]
  227. sql := `SELECT min(sort) FROM base_from_smm_index WHERE classify_id=? and sort <> 0 `
  228. err = o.Raw(sql, classifyId).Scan(&sort).Error
  229. return
  230. }
  231. type BaseFromSmmIndexType struct {
  232. Type2 string `gorm:"column:type_2"`
  233. Type3 string `gorm:"column:type_3"`
  234. }
  235. // GetBaseFromSmmIndexType 获取历史指标信息类型
  236. func GetBaseFromSmmIndexType() (list []BaseFromSmmIndexType, err error) {
  237. o := global.DbMap[utils.DbNameIndex]
  238. sql := `SELECT type_2, type_3 from base_from_smm_index where type_2 <> "" GROUP BY type_2, type_3`
  239. err = o.Raw(sql).Find(&list).Error
  240. return
  241. }
  242. // MoveBaseFromSmmIndex 移动指标分类
  243. func MoveBaseFromSmmIndex(chartInfoId, classifyId int) (err error) {
  244. o := global.DbMap[utils.DbNameIndex]
  245. sql := ` UPDATE base_from_smm_index
  246. SET
  247. classify_id = ?, modify_time=NOW()
  248. WHERE base_from_smm_index_id = ?`
  249. err = o.Exec(sql, classifyId, chartInfoId).Error
  250. return
  251. }
  252. // UpdateBaseFromSmmIndexByClassifyId 根据指标id更新排序
  253. func UpdateBaseFromSmmIndexByClassifyId(classifyId, nowSort, prevIndexInfoId int, updateSort string) (err error) {
  254. o := global.DbMap[utils.DbNameIndex]
  255. sql := ` update base_from_smm_index set sort = ` + updateSort + ` WHERE classify_id=? AND `
  256. if prevIndexInfoId > 0 {
  257. sql += ` ( sort > ? or (base_from_smm_index_id > ` + fmt.Sprint(prevIndexInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  258. }
  259. err = o.Exec(sql, classifyId, nowSort).Error
  260. return
  261. }
  262. // MoveUpSmmIndexBySort 往上移动
  263. func MoveUpSmmIndexBySort(classifyId, nextSort, currentSort int) (err error) {
  264. o := global.DbMap[utils.DbNameIndex]
  265. sql := `update base_from_smm_index set sort = sort + 1 where classify_id=? and sort >= ? and sort< ?`
  266. err = o.Exec(sql, classifyId, nextSort, currentSort).Error
  267. return
  268. }
  269. // MoveDownSmmIndexBySort 往下移动
  270. func MoveDownSmmIndexBySort(classifyId, prevSort, currentSort int) (err error) {
  271. o := global.DbMap[utils.DbNameIndex]
  272. sql := `update base_from_smm_index set sort = sort - 1 where classify_id=? and sort <= ? and sort> ? `
  273. err = o.Exec(sql, classifyId, prevSort, currentSort).Error
  274. return
  275. }
  276. // GetFirstBaseFromSmmIndexByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  277. func GetFirstBaseFromSmmIndexByClassifyId(classifyId int) (item *BaseFromSmmIndex, err error) {
  278. o := global.DbMap[utils.DbNameIndex]
  279. sql := ` SELECT * FROM base_from_smm_index WHERE classify_id=? order by sort asc,base_from_smm_index_id asc limit 1`
  280. err = o.Raw(sql, classifyId).First(&item).Error
  281. return
  282. }
  283. // Update 更新Smm指标基础信息
  284. func (item *BaseFromSmmIndex) Update(cols []string) (err error) {
  285. o := global.DbMap[utils.DbNameIndex]
  286. err = o.Select(cols).Updates(item).Error
  287. return
  288. }
  289. // DeleteBaseFromSmmIndexById 根据指标id删除对应的指标、指标数据
  290. func DeleteBaseFromSmmIndexById(smmIndexId int) (err error) {
  291. o := global.DbMap[utils.DbNameIndex]
  292. tx := o.Begin()
  293. if tx.Error != nil {
  294. return tx.Error
  295. }
  296. defer func() {
  297. if err != nil {
  298. _ = tx.Rollback()
  299. } else {
  300. _ = tx.Commit()
  301. }
  302. }()
  303. //删除指标
  304. sql := `DELETE FROM base_from_smm_index WHERE base_from_smm_index_id = ? `
  305. err = tx.Exec(sql, smmIndexId).Error
  306. if err != nil {
  307. return
  308. }
  309. //删除指标数据
  310. sql = `DELETE FROM base_from_smm_data WHERE base_from_smm_index_id = ? `
  311. err = tx.Exec(sql, smmIndexId).Error
  312. if err != nil {
  313. return
  314. }
  315. return
  316. }
  317. // EditSmmIndexInfoResp 新增指标的返回
  318. type EditSmmIndexInfoResp struct {
  319. BaseFromSmmIndexId int `description:"指标ID"`
  320. IndexCode string `description:"指标code"`
  321. }
  322. type SmmSingleDataResp struct {
  323. BaseFromSmmIndexId int
  324. ClassifyId int
  325. Interface string
  326. Name string
  327. IndexCode string
  328. IndexName string
  329. Frequency string
  330. Unit string
  331. ApiStartTime string
  332. ApiUpdateTime string
  333. StartTime string
  334. FinishTime string
  335. CreateTime string
  336. ModifyTime string
  337. Data []*SmmIndexData
  338. }
  339. func GetSmmIndexDataList(condition, sortStr string, pars []interface{}, startSize, pageSize int) (items []*BaseFromSmmIndexItem, err error) {
  340. sql := `select * FROM base_from_smm_index
  341. WHERE 1=1 `
  342. if condition != "" {
  343. sql += condition
  344. }
  345. sql += ` ORDER BY ` + sortStr
  346. sql += ` limit ?,? `
  347. o := global.DbMap[utils.DbNameIndex]
  348. pars = append(pars, startSize, pageSize)
  349. err = o.Raw(sql, pars...).Find(&items).Error
  350. return
  351. }
  352. func GetSmmIndexDataListCount(condition string, pars []interface{}) (total int, err error) {
  353. sql := `select count(1) FROM base_from_smm_index
  354. WHERE 1=1 `
  355. if condition != "" {
  356. sql += condition
  357. }
  358. o := global.DbMap[utils.DbNameIndex]
  359. err = o.Raw(sql, pars...).Scan(&total).Error
  360. return
  361. }
  362. type BaseFromSmmIndexListResp struct {
  363. List []*BaseFromSmmIndexItem
  364. Paging *paging.PagingItem `description:"分页数据"`
  365. }
  366. type BaseFromSmmIndexItem struct {
  367. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk" gorm:"primaryKey"`
  368. ClassifyId int
  369. Interface string
  370. Name string
  371. IndexCode string
  372. IndexName string
  373. Type1 string `gorm:"column:type_1"`
  374. Type2 string `gorm:"column:type_2"`
  375. Type3 string `gorm:"column:type_3"`
  376. Frequency string
  377. Unit string
  378. ApiStartTime string
  379. ApiUpdateTime string
  380. StartTime string
  381. FinishTime string
  382. Sort int
  383. CreateTime string
  384. ModifyTime string
  385. DataState string
  386. ReleaseTime string
  387. StartDate string
  388. EndDate string
  389. TypeAll string
  390. }
  391. func (item *BaseFromSmmIndexItem) AfterFind(tx *gorm.DB) (err error) {
  392. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  393. if item.CreateTime != "" {
  394. item.CreateTime = utils.GormDateStrToDateTimeStr(item.CreateTime)
  395. }
  396. if item.ModifyTime != "" {
  397. item.ModifyTime = utils.GormDateStrToDateTimeStr(item.ModifyTime)
  398. }
  399. if item.StartDate != "" {
  400. item.StartDate = utils.GormDateStrToDateStr(item.StartDate)
  401. }
  402. if item.EndDate != "" {
  403. item.EndDate = utils.GormDateStrToDateStr(item.EndDate)
  404. }
  405. if item.ApiStartTime != "" {
  406. item.ApiStartTime = utils.GormDateStrToDateTimeStr(item.ApiStartTime)
  407. }
  408. if item.ApiUpdateTime != "" {
  409. item.ApiUpdateTime = utils.GormDateStrToDateTimeStr(item.ApiUpdateTime)
  410. }
  411. if item.StartTime != "" {
  412. item.StartTime = utils.GormDateStrToDateTimeStr(item.StartTime)
  413. }
  414. if item.FinishTime != "" {
  415. item.FinishTime = utils.GormDateStrToDateTimeStr(item.FinishTime)
  416. }
  417. if item.ReleaseTime != "" {
  418. item.ReleaseTime = utils.GormDateStrToDateTimeStr(item.ReleaseTime)
  419. }
  420. }
  421. return
  422. }
  423. type BaseFromSmmIndexTypeList struct {
  424. Type1 string `gorm:"column:type_1"`
  425. Type2 string `gorm:"column:type_2"`
  426. Type3 string `gorm:"column:type_3"`
  427. }
  428. // GetBaseFromSmmIndexTypeList
  429. func GetBaseFromSmmIndexTypeList() (list []BaseFromSmmIndexTypeList, err error) {
  430. o := global.DbMap[utils.DbNameIndex]
  431. sql := `SELECT type_1,type_2, type_3 from base_from_smm_index GROUP BY type_1,type_2,type_3 `
  432. err = o.Raw(sql).Find(&list).Error
  433. return
  434. }
  435. type TypeListRespItem struct {
  436. Type string
  437. Child []TypeListRespItem
  438. }
  439. func GetSmmIndexDataListNoPage(condition string, pars []interface{}) (items []*BaseFromSmmIndexItem, err error) {
  440. sql := `select * FROM base_from_smm_index
  441. WHERE 1=1 `
  442. if condition != "" {
  443. sql += condition
  444. }
  445. o := global.DbMap[utils.DbNameIndex]
  446. err = o.Raw(sql, pars...).Find(&items).Error
  447. return
  448. }
  449. func GetBaseFromSmmIndexByIndexCodes(indexCodes string) (list []*BaseFromSmmIndex, err error) {
  450. o := global.DbMap[utils.DbNameIndex]
  451. sql := ` SELECT * FROM base_from_smm_index WHERE index_code IN (` + indexCodes + `)`
  452. err = o.Raw(sql).Find(&list).Error
  453. return
  454. }
  455. // SmmIndexListReq
  456. type SmmIndexListReq struct {
  457. Types []string `description:"分类"`
  458. Frequency string `description:"频度"`
  459. DataState string `description:"数据状态"`
  460. Keyword string `description:"关键字"`
  461. IndexCodes string `description:"指标代码"`
  462. SortType string `description:"排序类型"`
  463. SortParam string `description:"排序参数"`
  464. PageSize int
  465. CurrentIndex int
  466. }
  467. // SmmIndexExistCheckReq
  468. type SmmIndexExistCheckReq struct {
  469. Types []string `description:"分类"`
  470. Frequency string `description:"频度"`
  471. DataState string `description:"数据状态"`
  472. EdbCode string `description:"指标代码"`
  473. SelectAll bool `description:"是否全选"`
  474. Keyword string `description:"关键字"`
  475. }