bid_account_service.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. * @description:标段账号相关数据操作
  3. * @Author: CP
  4. * @Date: 2020-10-22 16:13:32
  5. * @FilePath: \construction_management\services\bid_account_service.go
  6. */
  7. package services
  8. import (
  9. "errors"
  10. "log"
  11. "github.com/kataras/iris/v12"
  12. "go.mod/dao"
  13. "go.mod/datasource"
  14. "go.mod/web/utils"
  15. "go.mod/web/viewmodels"
  16. )
  17. //定义项目用户Service接口
  18. type BidAccountService interface {
  19. ValidRule(ctx iris.Context) (viewmodels.BidAccount, error)
  20. ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error)
  21. Create(viewBidAccount viewmodels.BidAccount, projectId int, accountId int) error
  22. Delete(viewBidAccount viewmodels.BidAccount, projectId int) error
  23. GetPermission(accountId int, bidsectionId int, projectId int) (viewmodels.PermissionView, error)
  24. }
  25. //返回service操作类
  26. type bidAccountService struct {
  27. projectAccountDao *dao.ProjectAccountDao
  28. projectDao *dao.ProjectDao
  29. bidsectionDao *dao.BidsectionDao
  30. treeDao *dao.TreeDao
  31. bidAccountDao *dao.BidAccountDao
  32. permissionDao *dao.PermissionAccountDao
  33. }
  34. //创建项目用户service
  35. func NewBidAccountService() BidAccountService {
  36. return &bidAccountService{
  37. projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
  38. projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()),
  39. bidsectionDao: dao.NewBidsectionDao(datasource.InstanceDbMaster()),
  40. treeDao: dao.NewTreeDao(datasource.InstanceDbMaster()),
  41. bidAccountDao: dao.NewBidAccountDao(datasource.InstanceDbMaster()),
  42. permissionDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
  43. }
  44. }
  45. // 登陆验证
  46. func (s *bidAccountService) ValidRule(ctx iris.Context) (viewmodels.BidAccount, error) {
  47. bidAccountVaild := viewmodels.BidAccount{}
  48. err := ctx.ReadJSON(&bidAccountVaild)
  49. if err != nil {
  50. log.Println("ReadForm转换异常, error=", err)
  51. return bidAccountVaild, err
  52. }
  53. err = bidAccountVaild.Validate()
  54. if err != nil {
  55. log.Println("登录验证, error=", err)
  56. return bidAccountVaild, err
  57. }
  58. return bidAccountVaild, nil
  59. }
  60. // 删除标段关系用户验证
  61. func (s *bidAccountService) ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error) {
  62. bidAccountVaild := viewmodels.BidAccount{}
  63. err := ctx.ReadForm(&bidAccountVaild)
  64. if err != nil {
  65. log.Println("ReadForm转换异常, error=", err)
  66. return bidAccountVaild, err
  67. }
  68. err = bidAccountVaild.Validate()
  69. if err != nil {
  70. log.Println("登录验证, error=", err)
  71. return bidAccountVaild, err
  72. }
  73. return bidAccountVaild, nil
  74. }
  75. // 获取当前标段的权限
  76. func (s *bidAccountService) GetPermission(accountId int, bidsectionId int, projectId int) (viewmodels.PermissionView, error) {
  77. account := s.projectAccountDao.Get(accountId, projectId)
  78. var isAdmin bool
  79. if account.IsAdmin == 1 {
  80. isAdmin = true
  81. } else {
  82. isAdmin = false
  83. }
  84. data, err := s.permissionDao.GetPermissionWithAccountId(accountId, bidsectionId, isAdmin)
  85. return data, err
  86. }
  87. // 新增标段于账号的关系
  88. func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, projectId int, loginAccountId int) error {
  89. // 写入关系表-标段的成员数量-账号表中标段ID
  90. // 1.检查账号合法性
  91. accountId, err := utils.GetDecryptId(viewBidAccount.AccountId)
  92. if err != nil {
  93. return err
  94. }
  95. if loginAccountId == accountId {
  96. return errors.New("不能添加自己")
  97. }
  98. accountData := s.projectAccountDao.Get(accountId, projectId)
  99. if accountData.Id == 0 {
  100. return errors.New("添加的账号不合法")
  101. }
  102. // 2.检查标段合法性
  103. bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId)
  104. if err != nil {
  105. return err
  106. }
  107. bidsection := s.bidsectionDao.Get(bidsectionId, projectId)
  108. if bidsection.Id == 0 {
  109. return errors.New("标段不合法")
  110. }
  111. // 3.检查目录的合法性
  112. // 3-1标段ID,,项目ID
  113. treeData := s.treeDao.GetBidParentId(bidsectionId, projectId)
  114. // 3-2获得目录ID
  115. if treeData.Id == 0 {
  116. return errors.New("目录不合法")
  117. }
  118. treeId := treeData.Id
  119. // 4.检查账号是否已经添加过
  120. bidAccountData := s.bidAccountDao.GetAccountId(projectId, bidsectionId, accountId)
  121. if bidAccountData.Id != 0 {
  122. return errors.New("已添加过该账号")
  123. }
  124. // 新增成员到标段
  125. err = s.bidAccountDao.Create(bidsectionId, accountData, treeId, projectId)
  126. if err != nil {
  127. return err
  128. }
  129. return nil
  130. }
  131. //移除标段成员
  132. func (s *bidAccountService) Delete(viewBidAccount viewmodels.BidAccount, projectId int) error {
  133. // 1.检查账号合法性
  134. accountId, err := utils.GetDecryptId(viewBidAccount.AccountId)
  135. if err != nil {
  136. return err
  137. }
  138. accountData := s.projectAccountDao.Get(accountId, projectId)
  139. if accountData.Id == 0 {
  140. return errors.New("添加的账号不合法")
  141. }
  142. // 1-2 标段关系中是否有改账号 TODO
  143. // 2.检查标段合法性
  144. bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId)
  145. if err != nil {
  146. return err
  147. }
  148. bidsection := s.bidsectionDao.Get(bidsectionId, projectId)
  149. if bidsection.Id == 0 {
  150. return errors.New("标段不合法")
  151. }
  152. // 3.检查目录的合法性
  153. // 3-1标段ID,,项目ID
  154. treeData := s.treeDao.GetBidParentId(bidsectionId, projectId)
  155. // 3-2获得目录ID
  156. if treeData.Id == 0 {
  157. return errors.New("目录不合法")
  158. }
  159. treeId := treeData.Id
  160. // 删除成员到标段
  161. err = s.bidAccountDao.Delete(bidsectionId, accountData, treeId, projectId)
  162. if err != nil {
  163. return err
  164. }
  165. return nil
  166. }