base_from_smm.go 15 KB

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