base_from_ths_hf_classify.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. package data_manage
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // BaseFromThsHfClassify 同花顺高频数据-分类
  10. type BaseFromThsHfClassify struct {
  11. BaseFromThsHfClassifyId int `orm:"column(base_from_ths_hf_classify_id);pk" gorm:"primaryKey"`
  12. ClassifyName string `description:"分类名称"`
  13. ClassifyNameEn string `description:"英文分类名称"`
  14. ParentId int `description:"父级ID"`
  15. SysUserId int `description:"创建人ID"`
  16. SysUserRealName string `description:"创建人姓名"`
  17. Level int `description:"层级"`
  18. Sort int `description:"排序"`
  19. RootId int `description:"顶级分类ID"`
  20. LevelPath string `description:"层级路径"`
  21. UniqueCode string `description:"唯一编码"`
  22. CreateTime time.Time `description:"创建时间"`
  23. ModifyTime time.Time `description:"修改时间"`
  24. }
  25. func (m *BaseFromThsHfClassify) TableName() string {
  26. return "base_from_ths_hf_classify"
  27. }
  28. type BaseFromThsHfClassifyCols struct {
  29. PrimaryId string
  30. ClassifyName string
  31. ClassifyNameEn string
  32. ParentId string
  33. SysUserId string
  34. SysUserRealName string
  35. Level string
  36. Sort string
  37. RootId string
  38. LevelPath string
  39. UniqueCode string
  40. CreateTime string
  41. ModifyTime string
  42. }
  43. func (m *BaseFromThsHfClassify) Cols() BaseFromThsHfClassifyCols {
  44. return BaseFromThsHfClassifyCols{
  45. PrimaryId: "base_from_ths_hf_classify_id",
  46. ClassifyName: "classify_name",
  47. ClassifyNameEn: "classify_name_en",
  48. ParentId: "parent_id",
  49. SysUserId: "sys_user_id",
  50. SysUserRealName: "sys_user_real_name",
  51. Level: "level",
  52. Sort: "sort",
  53. RootId: "root_id",
  54. LevelPath: "level_path",
  55. UniqueCode: "unique_code",
  56. CreateTime: "create_time",
  57. ModifyTime: "modify_time",
  58. }
  59. }
  60. func (m *BaseFromThsHfClassify) Create() (err error) {
  61. o := global.DbMap[utils.DbNameIndex]
  62. err = o.Create(m).Error
  63. return
  64. }
  65. func (m *BaseFromThsHfClassify) CreateMulti(items []*BaseFromThsHfClassify) (err error) {
  66. if len(items) == 0 {
  67. return
  68. }
  69. o := global.DbMap[utils.DbNameIndex]
  70. err = o.CreateInBatches(items, utils.MultiAddNum).Error
  71. return
  72. }
  73. func (m *BaseFromThsHfClassify) Update(cols []string) (err error) {
  74. o := global.DbMap[utils.DbNameIndex]
  75. err = o.Select(cols).Updates(m).Error
  76. return
  77. }
  78. func (m *BaseFromThsHfClassify) Remove() (err error) {
  79. o := global.DbMap[utils.DbNameIndex]
  80. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  81. err = o.Exec(sql, m.BaseFromThsHfClassifyId).Error
  82. return
  83. }
  84. func (m *BaseFromThsHfClassify) MultiRemove(ids []int) (err error) {
  85. if len(ids) == 0 {
  86. return
  87. }
  88. o := global.DbMap[utils.DbNameIndex]
  89. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
  90. err = o.Exec(sql, ids).Error
  91. return
  92. }
  93. func (m *BaseFromThsHfClassify) RemoveByCondition(condition string, pars []interface{}) (err error) {
  94. if condition == "" {
  95. return
  96. }
  97. o := global.DbMap[utils.DbNameIndex]
  98. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
  99. err = o.Exec(sql, pars...).Error
  100. return
  101. }
  102. func (m *BaseFromThsHfClassify) GetItemById(id int) (item *BaseFromThsHfClassify, err error) {
  103. o := global.DbMap[utils.DbNameIndex]
  104. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
  105. err = o.Raw(sql, id).First(&item).Error
  106. return
  107. }
  108. func (m *BaseFromThsHfClassify) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfClassify, err error) {
  109. o := global.DbMap[utils.DbNameIndex]
  110. order := ``
  111. if orderRule != "" {
  112. order = ` ORDER BY ` + orderRule
  113. }
  114. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  115. err = o.Raw(sql, pars...).First(&item).Error
  116. return
  117. }
  118. func (m *BaseFromThsHfClassify) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  119. o := global.DbMap[utils.DbNameIndex]
  120. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  121. err = o.Raw(sql, pars...).Scan(&count).Error
  122. return
  123. }
  124. func (m *BaseFromThsHfClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfClassify, err error) {
  125. o := global.DbMap[utils.DbNameIndex]
  126. fields := strings.Join(fieldArr, ",")
  127. if len(fieldArr) == 0 {
  128. fields = `*`
  129. }
  130. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  131. if orderRule != "" {
  132. order = ` ORDER BY ` + orderRule
  133. }
  134. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  135. err = o.Raw(sql, pars...).Find(&items).Error
  136. return
  137. }
  138. func (m *BaseFromThsHfClassify) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfClassify, err error) {
  139. o := global.DbMap[utils.DbNameIndex]
  140. fields := strings.Join(fieldArr, ",")
  141. if len(fieldArr) == 0 {
  142. fields = `*`
  143. }
  144. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  145. if orderRule != "" {
  146. order = ` ORDER BY ` + orderRule
  147. }
  148. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  149. pars = append(pars, startSize, pageSize)
  150. err = o.Raw(sql, pars...).Find(&items).Error
  151. return
  152. }
  153. // BaseFromThsHfClassifyItem 同花顺高频数据信息
  154. type BaseFromThsHfClassifyItem struct {
  155. ClassifyId int `description:"分类ID"`
  156. ClassifyName string `description:"分类名称"`
  157. ClassifyNameEn string `description:"英文分类名称"`
  158. ParentId int `description:"父级ID"`
  159. Level int `description:"层级"`
  160. Sort int `description:"排序"`
  161. LevelPath string `description:"层级路径"`
  162. UniqueCode string `description:"唯一编码"`
  163. Children []*BaseFromThsHfClassifyItem `description:"子分类"`
  164. }
  165. func (m *BaseFromThsHfClassify) Format2Item() (item *BaseFromThsHfClassifyItem) {
  166. item = new(BaseFromThsHfClassifyItem)
  167. item.ClassifyId = m.BaseFromThsHfClassifyId
  168. item.ClassifyName = m.ClassifyName
  169. item.ClassifyNameEn = m.ClassifyNameEn
  170. item.ParentId = m.ParentId
  171. item.Level = m.Level
  172. item.Sort = m.Sort
  173. item.LevelPath = m.LevelPath
  174. item.UniqueCode = m.UniqueCode
  175. item.Children = make([]*BaseFromThsHfClassifyItem, 0)
  176. return
  177. }
  178. type ThsHfClassifyAddReq struct {
  179. ClassifyName string `description:"分类名称"`
  180. ParentId int `description:"父级ID, 第一级传0"`
  181. Level int `description:"层级, 第一级传0, 其余传上一级的层级"`
  182. }
  183. type ThsHfClassifyEditReq struct {
  184. ClassifyId int `description:"分类ID"`
  185. ClassifyName string `description:"分类名称"`
  186. }
  187. func (m *BaseFromThsHfClassify) GetSortMax(parentId int) (sort int, err error) {
  188. o := global.DbMap[utils.DbNameIndex]
  189. sql := fmt.Sprintf(`SELECT COALESCE(Max(%s), 0) as sort FROM %s WHERE %s = ?`, m.Cols().Sort, m.TableName(), m.Cols().ParentId)
  190. err = o.Raw(sql, parentId).Scan(&sort).Error
  191. return
  192. }
  193. type ThsHfClassifyRemoveReq struct {
  194. ClassifyId int `description:"分类ID"`
  195. }
  196. type BaseFromThsHfClassifyListItem struct {
  197. ItemType int `description:"类型: 0-分类; 1-指标"`
  198. ClassifyId int `description:"分类ID"`
  199. ClassifyName string `description:"分类名称"`
  200. ClassifyNameEn string `description:"英文分类名称"`
  201. IndexId int `description:"指标ID"`
  202. IndexCode string `description:"指标编码"`
  203. IndexName string `description:"指标名称"`
  204. ParentId int `description:"父级ID"`
  205. Level int `description:"层级"`
  206. Sort int `description:"排序"`
  207. UniqueCode string `description:"唯一编码, 指标的话用indexCode"`
  208. Children []*BaseFromThsHfClassifyListItem `description:"子分类"`
  209. }
  210. type BaseFromThsHfClassifyMoveReq struct {
  211. ClassifyId int `description:"分类ID"`
  212. ParentClassifyId int `description:"父级分类ID"`
  213. PrevClassifyId int `description:"上一个兄弟节点分类ID"`
  214. NextClassifyId int `description:"下一个兄弟节点分类ID"`
  215. ItemId int `description:"指标ID, 如果指标ID有值,则移动对象为指标,否则认为移动对象为分类"`
  216. PrevItemId int `description:"上一个指标ID"`
  217. NextItemId int `description:"下一个指标ID"`
  218. }
  219. func GetThsHfClassifyById(classifyId int) (item *BaseFromThsHfClassify, err error) {
  220. o := global.DbMap[utils.DbNameIndex]
  221. sql := `SELECT * FROM base_from_ths_hf_classify WHERE base_from_ths_hf_classify_id = ?`
  222. err = o.Raw(sql, classifyId).First(&item).Error
  223. return
  224. }
  225. func GetThsHfClassifyByRootIdLevel(rootId int, orderStr string) (items []*BaseFromThsHfClassify, err error) {
  226. o := global.DbMap[utils.DbNameIndex]
  227. sql := ` SELECT * FROM base_from_ths_hf_classify WHERE root_id = ? `
  228. if orderStr != "" {
  229. sql += orderStr
  230. } else {
  231. sql += ` order by level desc, sort asc, base_from_ths_hf_classify_id asc`
  232. }
  233. err = o.Raw(sql, rootId).Find(&items).Error
  234. return
  235. }
  236. // UpdateThsHfClassifySortByParentId 根据父类id更新排序
  237. func UpdateThsHfClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  238. o := global.DbMap[utils.DbNameIndex]
  239. sql := ` update base_from_ths_hf_classify set sort = ` + updateSort + ` WHERE parent_id = ? AND sort > ? `
  240. if classifyId > 0 {
  241. sql += ` or ( base_from_ths_hf_classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  242. }
  243. err = o.Exec(sql, parentId, nowSort).Error
  244. return
  245. }
  246. // GetFirstThsHfClassifyByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
  247. func GetFirstThsHfClassifyByParentId(parentId int) (item *BaseFromThsHfClassify, err error) {
  248. o := global.DbMap[utils.DbNameIndex]
  249. sql := ` SELECT * FROM base_from_ths_hf_classify WHERE parent_id = ? order by sort asc,base_from_ths_hf_classify_id asc limit 1`
  250. err = o.Raw(sql, parentId).First(&item).Error
  251. return
  252. }
  253. func UpdateThsHfClassifyChildByParentClassifyId(classifyIds []int, rootId int, levelStep int) (err error) {
  254. o := global.DbMap[utils.DbNameIndex]
  255. var pars []interface{}
  256. pars = append(pars, rootId, levelStep)
  257. pars = append(pars, classifyIds)
  258. // 更新相关联的二级分类的parentId,和classify_name_second
  259. sql := `update base_from_ths_hf_classify SET root_id = ?, level = level+? where base_from_ths_hf_classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  260. err = o.Exec(sql, pars...).Error
  261. return
  262. }