permission_account_dao.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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) (viewmodels.PermissionView, error) {
  65. data := viewmodels.PermissionView{}
  66. permission := viewmodels.Permission{}
  67. has, err := d.engine.
  68. Sql("select * from cm_permission_account where bidsection_id= ? and account_id = ?", bidsectionId, accountId).
  69. Get(&data)
  70. if has == false {
  71. contractPermission := map[string]int{
  72. "add": permission.ContractAccess,
  73. "delete": permission.ContractDelete,
  74. "access": permission.ContractAccess,
  75. }
  76. contractPermissionByte, err := json.Marshal(contractPermission)
  77. if err != nil {
  78. return data, errors.New("合同权限解析失败")
  79. }
  80. contractPermissionStr := string(contractPermissionByte)
  81. qualityPermission := map[string]int{
  82. "add": permission.QualityAdd,
  83. "delete": permission.QualityDelete,
  84. "access": permission.QualityAccess,
  85. }
  86. qualityPermissionByte, err := json.Marshal(qualityPermission)
  87. if err != nil {
  88. return data, errors.New("合同权限解析失败")
  89. }
  90. qualityPermissionStr := string(qualityPermissionByte)
  91. safePermission := map[string]int{
  92. "add": permission.SafeAdd,
  93. "delete": permission.SafeDelete,
  94. "access": permission.SafeAccess,
  95. }
  96. safePermissionByte, err := json.Marshal(safePermission)
  97. if err != nil {
  98. return data, errors.New("合同权限解析失败")
  99. }
  100. safePermissionStr := string(safePermissionByte)
  101. data.ContractPermission = contractPermissionStr
  102. data.QualityPermission = qualityPermissionStr
  103. data.SafePermission = safePermissionStr
  104. }
  105. return data, err
  106. }