bid_account_service.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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) (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) (viewmodels.PermissionView, error) {
  77. data, err := s.permissionDao.GetPermissionWithAccountId(accountId, bidsectionId)
  78. return data, err
  79. }
  80. // 新增标段于账号的关系
  81. func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, projectId int, loginAccountId int) error {
  82. // 写入关系表-标段的成员数量-账号表中标段ID
  83. // 1.检查账号合法性
  84. accountId, err := utils.GetDecryptId(viewBidAccount.AccountId)
  85. if err != nil {
  86. return err
  87. }
  88. if loginAccountId == accountId {
  89. return errors.New("不能添加自己")
  90. }
  91. accountData := s.projectAccountDao.Get(accountId, projectId)
  92. if accountData.Id == 0 {
  93. return errors.New("添加的账号不合法")
  94. }
  95. // 2.检查标段合法性
  96. bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId)
  97. if err != nil {
  98. return err
  99. }
  100. bidsection := s.bidsectionDao.Get(bidsectionId, projectId)
  101. if bidsection.Id == 0 {
  102. return errors.New("标段不合法")
  103. }
  104. // 3.检查目录的合法性
  105. // 3-1标段ID,,项目ID
  106. treeData := s.treeDao.GetBidParentId(bidsectionId, projectId)
  107. // 3-2获得目录ID
  108. if treeData.Id == 0 {
  109. return errors.New("目录不合法")
  110. }
  111. treeId := treeData.Id
  112. // 4.检查账号是否已经添加过
  113. bidAccountData := s.bidAccountDao.GetAccountId(projectId, bidsectionId, accountId)
  114. if bidAccountData.Id != 0 {
  115. return errors.New("已添加过该账号")
  116. }
  117. // 新增成员到标段
  118. err = s.bidAccountDao.Create(bidsectionId, accountData, treeId, projectId)
  119. if err != nil {
  120. return err
  121. }
  122. return nil
  123. }
  124. //移除标段成员
  125. func (s *bidAccountService) Delete(viewBidAccount viewmodels.BidAccount, projectId int) error {
  126. // 1.检查账号合法性
  127. accountId, err := utils.GetDecryptId(viewBidAccount.AccountId)
  128. if err != nil {
  129. return err
  130. }
  131. accountData := s.projectAccountDao.Get(accountId, projectId)
  132. if accountData.Id == 0 {
  133. return errors.New("添加的账号不合法")
  134. }
  135. // 1-2 标段关系中是否有改账号 TODO
  136. // 2.检查标段合法性
  137. bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId)
  138. if err != nil {
  139. return err
  140. }
  141. bidsection := s.bidsectionDao.Get(bidsectionId, projectId)
  142. if bidsection.Id == 0 {
  143. return errors.New("标段不合法")
  144. }
  145. // 3.检查目录的合法性
  146. // 3-1标段ID,,项目ID
  147. treeData := s.treeDao.GetBidParentId(bidsectionId, projectId)
  148. // 3-2获得目录ID
  149. if treeData.Id == 0 {
  150. return errors.New("目录不合法")
  151. }
  152. treeId := treeData.Id
  153. // 删除成员到标段
  154. err = s.bidAccountDao.Delete(bidsectionId, accountData, treeId, projectId)
  155. if err != nil {
  156. return err
  157. }
  158. return nil
  159. }