base_from_smm.go 15 KB

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