project_account_service.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*
  2. * @description:项目用户相关数据处理
  3. * @Author: CP
  4. * @Date: 2020-08-27 17:23:58
  5. * @FilePath: \construction_management\services\project_account_service.go
  6. */
  7. package services
  8. import (
  9. "errors"
  10. "html"
  11. "log"
  12. "github.com/kataras/iris/v12"
  13. "go.mod/comm"
  14. "go.mod/web/viewmodels"
  15. "go.mod/dao"
  16. "go.mod/datasource"
  17. )
  18. //定义项目用户Service接口
  19. type ProjectAccountService interface {
  20. ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error)
  21. ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error)
  22. ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error)
  23. ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error)
  24. ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error)
  25. ValidRuleProjectId(ctx iris.Context) (viewmodels.ProjectAccount, error)
  26. Get(accountId int) *viewmodels.ProjectAccount
  27. }
  28. //返回service操作类
  29. type projectAccountService struct {
  30. dao *dao.ProjectAccountDao
  31. bidAccountDao *dao.BidAccountDao
  32. permissionAccountDao *dao.PermissionAccountDao
  33. validSave string
  34. validAdd string
  35. validPassword string
  36. }
  37. //创建项目用户service
  38. func NewProjectAccountService() ProjectAccountService {
  39. return &projectAccountService{
  40. dao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
  41. bidAccountDao: dao.NewBidAccountDao(datasource.InstanceDbMaster()),
  42. permissionAccountDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
  43. validSave: "/api/projectSetting/account/save",
  44. validAdd: "/api/projectSetting/account/create",
  45. validPassword: "/api/projectSetting/account/change",
  46. }
  47. }
  48. // 用户规则验证
  49. func (s *projectAccountService) ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  50. accountVaild := viewmodels.ProjectAccount{}
  51. err := ctx.ReadJSON(&accountVaild)
  52. if err != nil {
  53. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  54. return accountVaild, err
  55. }
  56. if ctx.Path() == s.validAdd {
  57. err = accountVaild.Validate()
  58. } else if ctx.Path() == s.validSave {
  59. err = accountVaild.ValidateUpdate()
  60. } else if ctx.Path() == s.validPassword {
  61. err = accountVaild.ValidatePassword()
  62. } else {
  63. log.Println("请求路径找不到对应的验证规则")
  64. return accountVaild, errors.New("验证错误-未找到验证规则")
  65. }
  66. if err != nil {
  67. log.Println("用户验证, error=", err)
  68. return accountVaild, err
  69. }
  70. // 验证账号组
  71. if ctx.Path() != s.validPassword {
  72. accountGroup := comm.NewAccountGroup()
  73. err = accountGroup.ValidRule(accountVaild.AccountGroup)
  74. if err != nil {
  75. log.Println("用户验证, error=", err)
  76. return accountVaild, err
  77. }
  78. }
  79. // xss
  80. accountVaild.Account = html.EscapeString(accountVaild.Account)
  81. accountVaild.Password = html.EscapeString(accountVaild.Password)
  82. accountVaild.Name = html.EscapeString(accountVaild.Name)
  83. accountVaild.Company = html.EscapeString(accountVaild.Company)
  84. accountVaild.Position = html.EscapeString(accountVaild.Position)
  85. accountVaild.Mobile = html.EscapeString(accountVaild.Mobile)
  86. accountVaild.Telephone = html.EscapeString(accountVaild.Telephone)
  87. return accountVaild, nil
  88. }
  89. // 验证密码
  90. func (s *projectAccountService) ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error) {
  91. accountVaild := viewmodels.AccountPassword{}
  92. err := ctx.ReadJSON(&accountVaild)
  93. if err != nil {
  94. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  95. return accountVaild, err
  96. }
  97. err = accountVaild.ValidateChangePassword()
  98. if err != nil {
  99. log.Println("权限验证, error=", err)
  100. return accountVaild, err
  101. }
  102. return accountVaild, nil
  103. }
  104. // 用户规则验证
  105. func (s *projectAccountService) ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error) {
  106. accountVaild := viewmodels.Permission{}
  107. err := ctx.ReadJSON(&accountVaild)
  108. if err != nil {
  109. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  110. return accountVaild, err
  111. }
  112. err = accountVaild.Validate()
  113. if err != nil {
  114. log.Println("权限验证, error=", err)
  115. return accountVaild, err
  116. }
  117. return accountVaild, nil
  118. }
  119. // 用户规则验证
  120. func (s *projectAccountService) ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error) {
  121. accountVaild := viewmodels.Permission{}
  122. err := ctx.ReadForm(&accountVaild)
  123. if err != nil {
  124. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  125. return accountVaild, err
  126. }
  127. err = accountVaild.ValidateSinglePermission()
  128. if err != nil {
  129. log.Println("权限验证, error=", err)
  130. return accountVaild, err
  131. }
  132. return accountVaild, nil
  133. }
  134. // 验证编辑用户
  135. func (s *projectAccountService) ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  136. accountVaild := viewmodels.ProjectAccount{}
  137. err := ctx.ReadJSON(&accountVaild)
  138. if err != nil {
  139. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  140. return accountVaild, err
  141. }
  142. err = accountVaild.ValidateAccount()
  143. if err != nil {
  144. log.Println("权限验证, error=", err)
  145. return accountVaild, err
  146. }
  147. return accountVaild, nil
  148. }
  149. // 验证用户项目ID
  150. func (s *projectAccountService) ValidRuleProjectId(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  151. accountVaild := viewmodels.ProjectAccount{}
  152. err := ctx.ReadForm(&accountVaild)
  153. if err != nil {
  154. log.Println("account-ValidRule-ReadForm转换异常, error=", err)
  155. return accountVaild, err
  156. }
  157. err = accountVaild.ValidateProjectId()
  158. if err != nil {
  159. log.Println("权限验证, error=", err)
  160. return accountVaild, err
  161. }
  162. return accountVaild, nil
  163. }
  164. // 获得一个项目用户
  165. func (s *projectAccountService) Get(id int) *viewmodels.ProjectAccount {
  166. modelsAccount := s.dao.Get(id)
  167. viewAccountData := viewmodels.ProjectAccount{}
  168. if modelsAccount.Id == 0 {
  169. viewAccountData.Id = "0"
  170. return &viewAccountData
  171. }
  172. viewAccountData = comm.MakeProjectAccountVM(modelsAccount)
  173. return &viewAccountData
  174. }