base_from_smm.go 13 KB

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