permission_account_dao.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /*
  2. * @description: 账号权限
  3. * @Author: CP
  4. * @Date: 2021-01-26 15:09:10
  5. * @FilePath: \construction_management\dao\permission_account_dao.go
  6. */
  7. package dao
  8. import (
  9. "encoding/json"
  10. "errors"
  11. "github.com/go-xorm/xorm"
  12. "go.mod/models"
  13. "go.mod/web/viewmodels"
  14. )
  15. //数据库操作引擎
  16. type PermissionAccountDao struct {
  17. engine *xorm.Engine
  18. }
  19. //获得一个DAO对象
  20. func NewPermissionAccountDao(engine *xorm.Engine) *PermissionAccountDao {
  21. return &PermissionAccountDao{
  22. engine: engine,
  23. }
  24. }
  25. // 获得标段下账号权限
  26. func (d *PermissionAccountDao) GetBidsectionId(bidsectionId int) []models.CmPermissionAccount {
  27. datalist := make([]models.CmPermissionAccount, 0)
  28. _ = d.engine.
  29. Where(" bidsection_id=? ", bidsectionId).
  30. Find(&datalist)
  31. return datalist
  32. }
  33. // 获得标段下账号权限
  34. func (d *PermissionAccountDao) GetBidsectionIdAccountId(bidsectionId int, accountId int) *models.CmPermissionAccount {
  35. data := &models.CmPermissionAccount{}
  36. _, err := d.engine.
  37. Where(" bidsection_id= ? and account_id = ? ", bidsectionId, accountId).
  38. Get(data)
  39. if err == nil {
  40. return data
  41. } else {
  42. data.Id = 0
  43. return data
  44. }
  45. }
  46. // 获得项目下账号权限
  47. func (d *PermissionAccountDao) GetProjectIdAccountId(projectId int, accountId int) []models.CmPermissionAccount {
  48. datalist := make([]models.CmPermissionAccount, 0)
  49. _ = d.engine.
  50. Where(" project_id=? and account_id= ? ", projectId, accountId).
  51. Find(&datalist)
  52. return datalist
  53. }
  54. //更新
  55. func (d *PermissionAccountDao) Update(data *models.CmPermissionAccount, columns []string) error {
  56. //_, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)
  57. _, err := d.engine.Where("project_id = ? and bidsection_id = ? and account_id= ? ", data.ProjectId, data.BidsectionId, data.AccountId).MustCols(columns...).Update(data)
  58. if err != nil {
  59. return errors.New("更新权限-账号失败")
  60. }
  61. return nil
  62. }
  63. // 获得当前账号下的标段权限
  64. func (d *PermissionAccountDao) GetPermissionWithAccountId(accountId int, bidsectionId int, isAdmin bool) (viewmodels.PermissionView, error) {
  65. data := viewmodels.PermissionView{}
  66. permission := viewmodels.Permission{}
  67. if isAdmin == true {
  68. permission.ContractAccess = 1
  69. permission.ContractAdd = 1
  70. permission.ContractDelete = 1
  71. permission.QualityAccess = 1
  72. permission.QualityAdd = 1
  73. permission.QualityDelete = 1
  74. permission.SafeAccess = 1
  75. permission.SafeAdd = 1
  76. permission.SafeDelete = 1
  77. }
  78. has, err := d.engine.
  79. Sql("select * from cm_permission_account where bidsection_id= ? and account_id = ?", bidsectionId, accountId).
  80. Get(&data)
  81. if has == false {
  82. contractPermission := map[string]int{
  83. "add": permission.ContractAccess,
  84. "delete": permission.ContractDelete,
  85. "access": permission.ContractAccess,
  86. }
  87. contractPermissionByte, err := json.Marshal(contractPermission)
  88. if err != nil {
  89. return data, errors.New("合同权限解析失败")
  90. }
  91. contractPermissionStr := string(contractPermissionByte)
  92. qualityPermission := map[string]int{
  93. "add": permission.QualityAdd,
  94. "delete": permission.QualityDelete,
  95. "access": permission.QualityAccess,
  96. }
  97. qualityPermissionByte, err := json.Marshal(qualityPermission)
  98. if err != nil {
  99. return data, errors.New("合同权限解析失败")
  100. }
  101. qualityPermissionStr := string(qualityPermissionByte)
  102. safePermission := map[string]int{
  103. "add": permission.SafeAdd,
  104. "delete": permission.SafeDelete,
  105. "access": permission.SafeAccess,
  106. }
  107. safePermissionByte, err := json.Marshal(safePermission)
  108. if err != nil {
  109. return data, errors.New("合同权限解析失败")
  110. }
  111. safePermissionStr := string(safePermissionByte)
  112. data.ContractPermission = contractPermissionStr
  113. data.QualityPermission = qualityPermissionStr
  114. data.SafePermission = safePermissionStr
  115. }
  116. return data, err
  117. }