chart_permission.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. package models
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. const (
  10. FiccProductId = 1
  11. )
  12. // ChartPermission 报告权限表
  13. //type ChartPermission struct {
  14. // ChartPermissionId int `orm:"column(chart_permission_id);pk" description:"问题ID" json:"chart_permission_id"`
  15. // ChartPermissionName string `description:"名称" json:"chart_permission_name"`
  16. // PermissionName string `description:"权限名" json:"permission_name"`
  17. // Sort int `description:"排序" json:"sort"`
  18. // Enabled int `description:"是否可用" json:"enabled"`
  19. // CreatedTime time.Time `description:"创建时间" json:"created_time"`
  20. // LastUpdatedTime time.Time `description:"更新时间" json:"last_updated_time"`
  21. // TeleconferenceSort int `description:"电话会类型排序" json:"teleconference_sort"`
  22. // Remark string `description:"备注" json:"remark"`
  23. // ClassifyName string `description:"分类名称" json:"classify_name"`
  24. // ProductName string `description:"产品名称" json:"product_name"`
  25. // ProductId int `description:"产品ID" json:"product_id"`
  26. // ImageURL string `orm:"column(image_url);" description:"图片地址" json:"image_url"`
  27. // ShowType int `description:"1:查研观向小程序展示" json:"show_type"`
  28. // IsOther int `description:"是否是其他,用于查研观向小程序后台展示" json:"is_other"`
  29. // IsReport int `description:"是否是报告,用于查研观向小程序前台报告展示" json:"is_report"`
  30. // CygxAuth int `description:"是否是权限,用于查研观向小程序前台权限校验" json:"cygx_auth"`
  31. // PermissionType int `description:"1主观,2客观" json:"permission_type"`
  32. // YbImgUrl string `description:"研报小程序报告列表icon" json:"yb_img_url"`
  33. // ProductPermissionName string `description:"种类权限名称" json:"product_permission_name"`
  34. // PriceDrivenState int `description:"品种价格驱动开启状态 0-关闭 1-开启" json:"price_driven_state"`
  35. // ImageUrlM string `description:"图片地址(查研观向移动端)" json:"image_url_m"`
  36. // ParentId int `description:"父级权限id" json:"parent_id"`
  37. // IsPublic int `description:"是否是公有权限1:公有权限,0私有权限" json:"is_public"`
  38. //}
  39. // ChartPermission 报告权限表
  40. type ChartPermission struct {
  41. ChartPermissionId int `gorm:"column:chart_permission_id;primaryKey"` //`orm:"column(chart_permission_id);pk" gorm:"primaryKey" description:"问题ID" json:"chart_permission_id"`
  42. ChartPermissionName string `gorm:"column:chart_permission_name"` //`description:"名称" json:"chart_permission_name"`
  43. PermissionName string `gorm:"column:permission_name"` //`description:"权限名" json:"permission_name"`
  44. Sort int `gorm:"column:sort"` //`description:"排序" json:"sort"`
  45. Enabled int `gorm:"column:enabled"` //`description:"是否可用" json:"enabled"`
  46. CreatedTime time.Time `gorm:"column:created_time"` //`description:"创建时间" json:"created_time"`
  47. LastUpdatedTime time.Time `gorm:"column:last_updated_time"` //`description:"更新时间" json:"last_updated_time"`
  48. TeleconferenceSort int `gorm:"column:teleconference_sort"` //`description:"电话会类型排序" json:"teleconference_sort"`
  49. Remark string `gorm:"column:remark"` //`description:"备注" json:"remark"`
  50. ClassifyName string `gorm:"column:classify_name"` //`description:"分类名称" json:"classify_name"`
  51. ProductName string `gorm:"column:product_name"` //`description:"产品名称" json:"product_name"`
  52. ProductId int `gorm:"column:product_id"` //`description:"产品ID" json:"product_id"`
  53. ImageURL string `gorm:"column:image_url"` //`orm:"column(image_url);" description:"图片地址" json:"image_url"`
  54. ShowType int `gorm:"column:show_type"` //`description:"1:查研观向小程序展示" json:"show_type"`
  55. IsOther int `gorm:"column:is_other"` //`description:"是否是其他,用于查研观向小程序后台展示" json:"is_other"`
  56. IsReport int `gorm:"column:is_report"` //`description:"是否是报告,用于查研观向小程序前台报告展示" json:"is_report"`
  57. CygxAuth int `gorm:"column:cygx_auth"` //`description:"是否是权限,用于查研观向小程序前台权限校验" json:"cygx_auth"`
  58. PermissionType int `gorm:"column:permission_type"` //`description:"1主观,2客观" json:"permission_type"`
  59. YbImgUrl string `gorm:"column:yb_img_url"` //`description:"研报小程序报告列表icon" json:"yb_img_url"`
  60. ProductPermissionName string `gorm:"column:product_permission_name"` //`description:"种类权限名称" json:"product_permission_name"`
  61. PriceDrivenState int `gorm:"column:price_driven_state"` //`description:"品种价格驱动开启状态 0-关闭 1-开启" json:"price_driven_state"`
  62. ImageUrlM string `gorm:"column:image_url_m"` //`description:"图片地址(查研观向移动端)" json:"image_url_m"`
  63. ParentId int `gorm:"column:parent_id"` //`description:"父级权限id" json:"parent_id"`
  64. IsPublic int `gorm:"column:is_public"` //`description:"是否是公有权限1:公有权限,0私有权限" json:"is_public"`
  65. }
  66. //type ChartPermissionVO struct {
  67. // ChartPermissionId int `orm:"column(chart_permission_id);pk" description:"问题ID" json:"chart_permission_id"`
  68. // ChartPermissionName string `description:"名称" json:"chart_permission_name"`
  69. // PermissionName string `description:"权限名" json:"permission_name"`
  70. // Sort int `description:"排序" json:"sort"`
  71. // Enabled int `description:"是否可用" json:"enabled"`
  72. // CreatedTime time.Time `description:"创建时间" json:"created_time"`
  73. // LastUpdatedTime time.Time `description:"更新时间" json:"last_updated_time"`
  74. // ParentId int `description:"父级权限id" json:"parent_id"`
  75. // Children []*ChartPermissionVO
  76. //}
  77. type ChartPermissionVO struct {
  78. ChartPermissionId int `gorm:"column:chart_permission_id;primaryKey" json:"chart_permission_id"`
  79. ChartPermissionName string `description:"名称" json:"chart_permission_name"`
  80. PermissionName string `description:"权限名" json:"permission_name"`
  81. Sort int `description:"排序" json:"sort"`
  82. Enabled int `description:"是否可用" json:"enabled"`
  83. CreatedTime time.Time `description:"创建时间" json:"created_time"`
  84. LastUpdatedTime time.Time `description:"更新时间" json:"last_updated_time"`
  85. ParentId int `description:"父级权限id" json:"parent_id"`
  86. Children []*ChartPermissionVO
  87. }
  88. type ChartPermissionItem struct {
  89. PermissionId int `description:"品种权限ID"`
  90. PermissionName string `description:"品种权限名称"`
  91. ParentId int `description:"父级ID"`
  92. Enabled int `description:"是否可用:1可用,0不可用" `
  93. Sort int `description:"排序"`
  94. CreateTime string `description:"创建时间"`
  95. Child []*ChartPermissionItem
  96. IsPublic int
  97. }
  98. // Update 更新
  99. func (c *ChartPermission) Update(cols []string) (err error) {
  100. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(c).Error
  101. return
  102. }
  103. type PermissionAddReq struct {
  104. PermissionName string `description:"品种权限名称"`
  105. ParentId int `description:"父级ID"`
  106. Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
  107. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"`
  108. }
  109. type PermissionEditReq struct {
  110. PermissionId int `description:"品种权限Id"` // 如果ID存在,则是更新操作,否则是新增操作
  111. PermissionName string `description:"品种权限名称"`
  112. ParentId int `description:"父级ID"`
  113. Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
  114. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限"`
  115. PublicPermissionIds []int `description:"公有权限的ID列表"` //一级品种没有公有私有属性
  116. }
  117. type PermissionEnabledReq struct {
  118. PermissionId int `description:"品种权限Id"` // 如果ID存在,则是更新操作,否则是新增操作
  119. Enabled int `description:"是否可用 0禁用, 1启用"` //启用,禁用操作会关联二级品种
  120. }
  121. type PermissionMoveReq struct {
  122. PermissionId int `description:"品种id"`
  123. // ParentChartPermissionId int `description:"父级品种id"`
  124. PrevPermissionId int `description:"上一个兄弟节点品种id"`
  125. NextPermissionId int `description:"下一个兄弟节点品种id"`
  126. }
  127. func (c *ChartPermission) SetEnabled(id, enabled int) (err error) {
  128. to := global.DbMap[utils.DbNameReport].Begin()
  129. if err != nil {
  130. return
  131. }
  132. defer func() {
  133. if err != nil {
  134. _ = to.Rollback()
  135. } else {
  136. _ = to.Commit()
  137. }
  138. }()
  139. sql := ` UPDATE chart_permission SET enabled =? WHERE id = ?`
  140. err = to.Exec(sql, enabled, id).Error
  141. if err != nil {
  142. return
  143. }
  144. sql = ` UPDATE chart_permission SET enabled =? WHERE parent_id = ?`
  145. err = to.Exec(sql, enabled, id).Error
  146. if err != nil {
  147. return
  148. }
  149. return
  150. }
  151. // Create 新增权限
  152. func (c *ChartPermission) Create() (err error) {
  153. err = global.DbMap[utils.DbNameReport].Create(c).Error
  154. return
  155. }
  156. // SetIsPublic 更新公有私有权限
  157. func (c *ChartPermission) SetIsPublic(ids []int, parentId, isPublic int) (err error) {
  158. sql := `update chart_permission set is_public=? WHERE parent_id = ? and chart_permission_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
  159. err = global.DbMap[utils.DbNameReport].Exec(sql, isPublic, parentId, ids).Error
  160. return
  161. }
  162. // UpdatesByParentId 更新启动禁用
  163. func (c *ChartPermission) UpdateClassifyNameByParentId(parentId int, classifyName string) (err error) {
  164. sql := `update chart_permission set classify_name=? WHERE parent_id = ?`
  165. err = global.DbMap[utils.DbNameReport].Exec(sql, classifyName, parentId).Error
  166. return
  167. }
  168. // SetEnabledByParentId 更新启动禁用
  169. func (c *ChartPermission) SetEnabledByParentId(parentId, enabled int) (err error) {
  170. sql := ` UPDATE chart_permission SET enabled =? WHERE parent_id = ?`
  171. err = global.DbMap[utils.DbNameReport].Exec(sql, enabled, parentId).Error
  172. return
  173. }
  174. // SetEnabledByChartPermissionId 更新启动禁用
  175. func (c *ChartPermission) SetEnabledByChartPermissionId(chartPermissionId, enabled int) (err error) {
  176. sql := ` UPDATE chart_permission SET enabled =? WHERE chart_permission_id = ?`
  177. err = global.DbMap[utils.DbNameReport].Exec(sql, enabled, chartPermissionId).Error
  178. return
  179. }
  180. // GetItemById 查询品种
  181. func (c *ChartPermission) GetItemById(chartPermissionId int) (item *ChartPermission, err error) {
  182. sql := `select * from chart_permission WHERE chart_permission_id = ?`
  183. err = global.DbMap[utils.DbNameReport].Raw(sql, chartPermissionId).First(&item).Error
  184. return
  185. }
  186. // GetItemsByCondition 查询列表
  187. func (c *ChartPermission) GetItemsByCondition(condition string, pars []interface{}) (items []*ChartPermission, err error) {
  188. sql := `select * from chart_permission WHERE 1=1 ` + condition + ` order by sort asc, chart_permission_id asc`
  189. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  190. return
  191. }
  192. // GetItemByCondition 查询列表
  193. func (c *ChartPermission) GetItemByCondition(condition string, pars []interface{}) (item *ChartPermission, err error) {
  194. sql := `select * from chart_permission WHERE 1=1 ` + condition
  195. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).First(&item).Error
  196. return
  197. }
  198. // UpdateChartPermissionSortByParentId 根据父类id更新排序
  199. func UpdateChartPermissionSortByParentId(parentId, chartPermissionId, nowSort int, updateSort string, productId int) (err error) {
  200. sql := ` update chart_permission set sort = ` + updateSort + ` WHERE parent_id=? AND product_id = ? AND (sort > ? `
  201. if chartPermissionId > 0 {
  202. sql += ` or ( chart_permission_id > ` + fmt.Sprint(chartPermissionId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  203. } else {
  204. sql += `)`
  205. }
  206. err = global.DbMap[utils.DbNameReport].Exec(sql, parentId, productId, nowSort).Error
  207. return
  208. }
  209. // GetMaxSort 获取最大的排序值
  210. func (c *ChartPermission) GetMaxSort() (maxSort int, err error) {
  211. sql := `select max(sort) from chart_permission `
  212. var maxNull sql2.NullInt64
  213. err = global.DbMap[utils.DbNameReport].Raw(sql).Scan(&maxNull).Error
  214. if err != nil {
  215. return
  216. }
  217. if maxNull.Valid {
  218. maxSort = int(maxNull.Int64)
  219. }
  220. return
  221. }
  222. // GetMaxSortByParentId 获取最大的排序值
  223. func (c *ChartPermission) GetMaxSortByParentId(parentId int) (maxSort int, err error) {
  224. sql := `select max(sort) from chart_permission WHERE parent_id=? `
  225. var maxNull sql2.NullInt64
  226. err = global.DbMap[utils.DbNameReport].Raw(sql, parentId).Scan(&maxNull).Error
  227. if err != nil {
  228. return
  229. }
  230. if maxNull.Valid {
  231. maxSort = int(maxNull.Int64)
  232. }
  233. return
  234. }
  235. // GetFirstChartPermissionByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
  236. func (c *ChartPermission) GetFirstChartPermissionByParentId(parentId int) (item *ChartPermission, err error) {
  237. sql := `select * from chart_permission WHERE parent_id=? ORDER BY sort ASC, chart_permission_id ASC LIMIT 1`
  238. err = global.DbMap[utils.DbNameReport].Raw(sql, parentId).First(&item).Error
  239. return
  240. }
  241. // GetChartPermissionById 主键获取品种
  242. func GetChartPermissionById(permissionId int) (item *ChartPermission, err error) {
  243. sql := `SELECT * FROM chart_permission WHERE chart_permission_id = ?`
  244. err = global.DbMap[utils.DbNameReport].Raw(sql, permissionId).First(&item).Error
  245. return
  246. }
  247. // GetSecondaryChartPermissions 获取二级权限列表
  248. //func GetSecondaryChartPermissions() (list []*ChartPermission, err error) {
  249. // o := orm.NewOrmUsingDB("rddp")
  250. // sql := `SELECT * FROM chart_permission WHERE product_id = ? AND parent_id > 0 AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
  251. // _, err = o.Raw(sql, FiccProductId).QueryRows(&list)
  252. // return
  253. //}
  254. type SimpleChartPermission struct {
  255. ChartPermissionId int `description:"品种ID"`
  256. ChartPermissionName string `description:"品种名称"`
  257. Sort int `description:"排序"`
  258. Children []*SimpleChartPermission `description:"子分类"`
  259. }
  260. func FormatChartPermission2Simple(origin *ChartPermission) (item *SimpleChartPermission) {
  261. if origin == nil {
  262. return
  263. }
  264. item = new(SimpleChartPermission)
  265. item.ChartPermissionId = origin.ChartPermissionId
  266. item.ChartPermissionName = origin.PermissionName
  267. item.Sort = origin.Sort
  268. return
  269. }
  270. // GetChartPermissionsByProductId 获取权限列表
  271. func GetChartPermissionsByProductId() (list []*ChartPermission, err error) {
  272. sql := `SELECT * FROM chart_permission WHERE product_id = ? AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
  273. err = global.DbMap[utils.DbNameReport].Raw(sql, FiccProductId).Find(&list).Error
  274. return
  275. }
  276. // GetChartPermissionByIdList
  277. // @Description: 根据品种ID列表获取权限列表
  278. // @author: Roc
  279. // @datetime 2024-06-07 10:32:29
  280. // @param permissionIdList []int
  281. // @return items []*ChartPermission
  282. // @return err error
  283. func GetChartPermissionByIdList(permissionIdList []int) (items []*ChartPermission, err error) {
  284. num := len(permissionIdList)
  285. if num <= 0 {
  286. return
  287. }
  288. sql := `SELECT * FROM chart_permission WHERE chart_permission_id in (` + utils.GetOrmInReplace(num) + `) `
  289. err = global.DbMap[utils.DbNameReport].Raw(sql, permissionIdList).Find(&items).Error
  290. return
  291. }