en_permission.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package models
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. "strings"
  9. "time"
  10. )
  11. type EnPermission struct {
  12. EnPermissionId int `gorm:"primaryKey;autoIncrement" description:"英文品种权限ID"`
  13. EnPermissionName string `description:"品种权限名称"`
  14. CnPermissionName string `description:"对应的中文权限名称"`
  15. ParentId int `description:"父级ID"`
  16. Sort int `description:"排序"`
  17. CreateTime time.Time `description:"创建时间"`
  18. ModifyTime time.Time `description:"修改时间"`
  19. Enabled int `description:"是否可用,1可用,0禁用"`
  20. }
  21. var EnPermissionColumns = struct {
  22. EnPermissionId string
  23. EnPermissionName string
  24. CnPermissionName string
  25. ParentId string
  26. Sort string
  27. CreateTime string
  28. ModifyTime string
  29. Enabled string
  30. }{
  31. EnPermissionId: "en_permission_id",
  32. EnPermissionName: "en_permission_name",
  33. CnPermissionName: "cn_permission_name",
  34. ParentId: "parent_id",
  35. Sort: "sort",
  36. CreateTime: "create_time",
  37. ModifyTime: "modify_time",
  38. Enabled: "enabled",
  39. }
  40. func (m *EnPermission) TableName() string {
  41. return "en_permission"
  42. }
  43. func (m *EnPermission) Create() (err error) {
  44. err = global.DbMap[utils.DbNameReport].Create(m).Error
  45. return
  46. }
  47. func (m *EnPermission) Update(cols []string) (err error) {
  48. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(m).Error
  49. return
  50. }
  51. func (m *EnPermission) Del() (err error) {
  52. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnPermissionColumns.EnPermissionId)
  53. err = global.DbMap[utils.DbNameReport].Exec(sql, m.EnPermissionId).Error
  54. return
  55. }
  56. func (m *EnPermission) GetItemById(id int) (item *EnPermission, err error) {
  57. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnPermissionColumns.EnPermissionId)
  58. err = global.DbMap[utils.DbNameReport].Raw(sql, id).First(&item).Error
  59. return
  60. }
  61. func (m *EnPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnPermission, err error) {
  62. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
  63. sql += condition
  64. sql += ` LIMIT 1`
  65. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).First(&item).Error
  66. return
  67. }
  68. func (m *EnPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  69. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  70. var countNull sql2.NullInt64
  71. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Scan(&countNull).Error
  72. if err != nil {
  73. return
  74. }
  75. if countNull.Valid {
  76. count = int(countNull.Int64)
  77. }
  78. return
  79. }
  80. func (m *EnPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnPermission, err error) {
  81. fields := strings.Join(fieldArr, ",")
  82. if len(fieldArr) == 0 {
  83. fields = `*`
  84. }
  85. order := `ORDER BY create_time DESC`
  86. if orderRule != "" {
  87. order = ` ORDER BY ` + orderRule
  88. }
  89. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  90. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  91. return
  92. }
  93. func (m *EnPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnPermission, err error) {
  94. fields := strings.Join(fieldArr, ",")
  95. if len(fieldArr) == 0 {
  96. fields = `*`
  97. }
  98. order := `ORDER BY create_time DESC`
  99. if orderRule != "" {
  100. order = ` ORDER BY ` + orderRule
  101. }
  102. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  103. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
  104. var totalNull sql2.NullInt64
  105. err = global.DbMap[utils.DbNameReport].Raw(totalSql, pars...).Scan(&totalNull).Error
  106. if err != nil {
  107. return
  108. }
  109. if totalNull.Valid {
  110. total = int(totalNull.Int64)
  111. }
  112. sql += ` LIMIT ?,?`
  113. pars = append(pars, startSize)
  114. pars = append(pars, pageSize)
  115. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  116. return
  117. }
  118. type EnPermissionAddReq struct {
  119. PermissionName string `description:"品种权限名称"`
  120. CnPermissionName string `description:"对应的中文权限名称"`
  121. ParentId int `description:"父级ID"`
  122. Enabled int `description:"是否可用,1可用,0禁用"`
  123. }
  124. type EnPermissionEditReq struct {
  125. PermissionId int `description:"英文品种权限ID"`
  126. PermissionName string `description:"品种权限名称"`
  127. CnPermissionName string `description:"对应的中文权限名称"`
  128. ParentId int `description:"父级ID"`
  129. }
  130. type EnPermissionEnabledReq struct {
  131. PermissionId int `description:"英文品种权限ID"`
  132. Enabled int `description:"是否可用,1可用,0禁用"`
  133. }
  134. type EnPermissionRemoveReq struct {
  135. PermissionId int `description:"英文品种权限ID"`
  136. }
  137. type EnPermissionPageListResp struct {
  138. List []*EnPermissionItem
  139. Paging *paging.PagingItem `description:"分页数据"`
  140. }
  141. type EnPermissionItem struct {
  142. PermissionId int `description:"英文品种权限ID"`
  143. PermissionName string `description:"品种权限名称"`
  144. CnPermissionName string `description:"对应的中文权限名称"`
  145. ParentId int `description:"父级ID"`
  146. Sort int `description:"排序"`
  147. CreateTime string `description:"创建时间"`
  148. Child []*EnPermissionItem
  149. Enabled int `description:"是否可用,1可用,0禁用"`
  150. }
  151. type EnPermissionMoveReq struct {
  152. PermissionId int `description:"品种id"`
  153. PrevPermissionId int `description:"上一个兄弟节点品种id"`
  154. NextPermissionId int `description:"下一个兄弟节点品种id"`
  155. }
  156. func GetEnPermissionUnionList(condition string, pars []interface{}) (items []*EnPermission, err error) {
  157. sql := fmt.Sprintf(`
  158. SELECT
  159. *
  160. FROM
  161. (
  162. SELECT * FROM en_permission WHERE 1=1 %s
  163. UNION
  164. SELECT * FROM en_permission WHERE en_permission_id IN (
  165. SELECT parent_id FROM en_permission WHERE parent_id > 0 %s
  166. )
  167. ) AS t
  168. ORDER BY
  169. parent_id ASC,
  170. sort ASC,
  171. create_time ASC`, condition, condition)
  172. pars = append(pars, pars...)
  173. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  174. return
  175. }
  176. func ClearEnPermissionsByPermissionId(permissionId int) (err error) {
  177. tx := global.DbMap[utils.DbNameReport].Begin()
  178. defer func() {
  179. if err != nil {
  180. _ = tx.Rollback()
  181. return
  182. }
  183. _ = tx.Commit()
  184. }()
  185. sql := `DELETE FROM en_classify_permission WHERE en_permission_id = ?`
  186. e := tx.Exec(sql, permissionId).Error
  187. if e != nil {
  188. err = fmt.Errorf("delete en_classify_permission err: %s", e.Error())
  189. return
  190. }
  191. sql = `DELETE FROM en_company_permission WHERE en_permission_id = ?`
  192. e = tx.Exec(sql, permissionId).Error
  193. if e != nil {
  194. err = fmt.Errorf("delete en_company_permission err: %s", e.Error())
  195. return
  196. }
  197. return
  198. }
  199. // UpdateEnPermissionSortByParentId 根据父类id更新排序
  200. func UpdateEnPermissionSortByParentId(parentId, permissionId, nowSort int, updateSort string) (err error) {
  201. sql := ` update en_permission set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? `
  202. if permissionId > 0 {
  203. sql += ` or ( en_permission_id > ` + fmt.Sprint(permissionId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  204. }
  205. err = global.DbMap[utils.DbNameReport].Exec(sql, parentId, nowSort).Error
  206. return
  207. }
  208. // GetMaxSortByParentId 获取最大的排序值
  209. func (m *EnPermission) GetMaxSortByParentId(parentId int) (maxSort int, err error) {
  210. var maxNull sql2.NullInt64
  211. sql := fmt.Sprintf(`SELECT max(%s) AS sort FROM %s WHERE %s = ? `, EnPermissionColumns.Sort, m.TableName(), EnPermissionColumns.ParentId)
  212. err = global.DbMap[utils.DbNameReport].Raw(sql, parentId).Scan(&maxNull).Error
  213. if maxNull.Valid {
  214. maxSort = int(maxNull.Int64)
  215. }
  216. return
  217. }
  218. // GetMaxSort 获取最大的排序值
  219. func (m *EnPermission) GetMaxSort() (maxSort int, err error) {
  220. var maxNull sql2.NullInt64
  221. sql := fmt.Sprintf(`SELECT max(%s) AS sort FROM %s`, EnPermissionColumns.Sort, m.TableName())
  222. err = global.DbMap[utils.DbNameReport].Raw(sql).Scan(&maxNull).Error
  223. if maxNull.Valid {
  224. maxSort = int(maxNull.Int64)
  225. }
  226. return
  227. }
  228. // GetFirstEnPermissionByParentId 获取当前父级分类下,且排序数相同 的排序第一条的数据
  229. func (m *EnPermission) GetFirstEnPermissionByParentId(parentId int) (item *EnPermission, err error) {
  230. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? order by sort asc, en_permission_id asc limit 1`, m.TableName(), EnPermissionColumns.ParentId)
  231. err = global.DbMap[utils.DbNameReport].Raw(sql, parentId).First(&item).Error
  232. return
  233. }
  234. // SetEnabled 更新启动禁用
  235. func (m *EnPermission) SetEnabled(parentId, enabled int) (err error) {
  236. sql := fmt.Sprintf(`UPDATE %s SET %s = ? WHERE %s = ?`, m.TableName(), EnPermissionColumns.Enabled, EnPermissionColumns.ParentId)
  237. err = global.DbMap[utils.DbNameReport].Exec(sql, enabled, parentId).Error
  238. return
  239. }
  240. // SetEnabledByPermissionId 更新启动禁用
  241. func (m *EnPermission) SetEnabledByPermissionId(permissionId, enabled int) (err error) {
  242. sql := fmt.Sprintf(`UPDATE %s SET %s = ? WHERE %s = ?`, m.TableName(), EnPermissionColumns.Enabled, EnPermissionColumns.EnPermissionId)
  243. err = global.DbMap[utils.DbNameReport].Exec(sql, enabled, permissionId).Error
  244. return
  245. }