base_from_smm.go 14 KB

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