backstage_service.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /*
  2. * @description:登陆相关数据操作
  3. * @Author: CP
  4. * @Date: 2020-09-02 09:56:28
  5. * @FilePath: \construction_management\services\backstage_service.go
  6. */
  7. package services
  8. import (
  9. "errors"
  10. "log"
  11. "net/http"
  12. "net/url"
  13. "github.com/kataras/iris/v12"
  14. "go.mod/comm"
  15. "go.mod/conf"
  16. "go.mod/lib"
  17. "go.mod/web/viewmodels"
  18. )
  19. //定义项目用户Service接口
  20. type BackstageService interface {
  21. ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error)
  22. ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error)
  23. ValidRuleProject(ctx iris.Context) (viewmodels.Project, error)
  24. ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
  25. GetCldByCategoryId(categoryId int)
  26. Out(ctx iris.Context) error
  27. }
  28. //返回service操作类
  29. type backstageService struct {
  30. // projectAccountDao *dao.ProjectAccountDao
  31. // projectDao *dao.ProjectDao
  32. }
  33. //创建项目用户service
  34. func NewBackstageService() BackstageService {
  35. return &backstageService{
  36. // projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
  37. // projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()),
  38. }
  39. }
  40. // 登陆验证
  41. func (s *backstageService) ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error) {
  42. loginVaild := viewmodels.StaffCld{}
  43. err := ctx.ReadJSON(&loginVaild)
  44. if err != nil {
  45. log.Println("ReadForm转换异常, error=", err)
  46. return loginVaild, err
  47. }
  48. err = loginVaild.ValidateLogin()
  49. if err != nil {
  50. log.Println("登录验证, error=", err)
  51. return loginVaild, err
  52. }
  53. return loginVaild, nil
  54. }
  55. // 验证项目
  56. func (s *backstageService) ValidRuleProject(ctx iris.Context) (viewmodels.Project, error) {
  57. projectVaild := viewmodels.Project{}
  58. err := ctx.ReadForm(&projectVaild)
  59. if err != nil {
  60. log.Println("ReadForm转换异常, error=", err)
  61. return projectVaild, err
  62. }
  63. err = projectVaild.ValidateId()
  64. if err != nil {
  65. log.Println("登录验证, error=", err)
  66. return projectVaild, err
  67. }
  68. return projectVaild, nil
  69. }
  70. // 验证项目
  71. func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) {
  72. projectVaild := viewmodels.Project{}
  73. err := ctx.ReadForm(&projectVaild)
  74. if err != nil {
  75. log.Println("ReadForm转换异常, error=", err)
  76. return projectVaild, err
  77. }
  78. err = projectVaild.ValidateAdd()
  79. if err != nil {
  80. log.Println("登录验证, error=", err)
  81. return projectVaild, err
  82. }
  83. return projectVaild, nil
  84. }
  85. // 验证项目用户登陆相关
  86. func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) {
  87. // 1.验证CLD账号密码
  88. cld := lib.NewCld()
  89. result, err := cld.LoginValid(loginData)
  90. if err != nil {
  91. return nil, err
  92. }
  93. if result.Code != 0 {
  94. return nil, errors.New(result.Msg)
  95. }
  96. // 2.写入登录态
  97. // 加密用户标识
  98. identity, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
  99. if err != nil {
  100. return nil, err
  101. }
  102. // 加密项目标识
  103. category, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
  104. if err != nil {
  105. return nil, err
  106. }
  107. digitalToken := comm.CreateSign(conf.CookieSecret + identity)
  108. // 设置cookie
  109. maxAge := 60 * 60 * 24 * 7
  110. params := url.Values{}
  111. params.Add("identity", identity)
  112. params.Add("attachedIdentity", category)
  113. params.Add("digitalToken", digitalToken)
  114. c := &http.Cookie{
  115. Name: "cmBackstage",
  116. Value: params.Encode(),
  117. Path: "/",
  118. MaxAge: maxAge,
  119. HttpOnly: true,
  120. }
  121. http.SetCookie(writer, c)
  122. // staffCld := &viewmodels.StaffCld{}
  123. // staffCld.Category = result.Data.Category
  124. // staffCld.StaffName = result.Data.UserName
  125. return &result.Data, nil
  126. }
  127. // 登出
  128. func (s *backstageService) Out(ctx iris.Context) error {
  129. // 移除cookie
  130. ctx.RemoveCookie("cmBackstage")
  131. return nil
  132. }
  133. // 获得cld办事处和员工 列表
  134. func (s *backstageService) GetCldByCategoryId(categoryId int) {
  135. cld := lib.NewCld()
  136. cld.GetList(categoryId)
  137. // result, err := cld.GetList(categoryId)
  138. }