backstage_service.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error)
  26. ValidRuleAccountAdd(ctx iris.Context) (viewmodels.ProjectAccount, error)
  27. ValidRuleAccountSave(ctx iris.Context) (viewmodels.ProjectAccount, error)
  28. ValidRuleAccountEnable(ctx iris.Context) (viewmodels.ProjectAccount, error)
  29. GetCldByCategoryId(categoryId string) (map[string]interface{}, error)
  30. Out(ctx iris.Context) error
  31. }
  32. //返回service操作类
  33. type backstageService struct {
  34. // projectAccountDao *dao.ProjectAccountDao
  35. // projectDao *dao.ProjectDao
  36. }
  37. //创建项目用户service
  38. func NewBackstageService() BackstageService {
  39. return &backstageService{
  40. // projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
  41. // projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()),
  42. }
  43. }
  44. // 登陆验证
  45. func (s *backstageService) ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error) {
  46. loginVaild := viewmodels.StaffCld{}
  47. err := ctx.ReadJSON(&loginVaild)
  48. if err != nil {
  49. log.Println("ReadForm转换异常, error=", err)
  50. return loginVaild, err
  51. }
  52. err = loginVaild.ValidateLogin()
  53. if err != nil {
  54. log.Println("登录验证, error=", err)
  55. return loginVaild, err
  56. }
  57. return loginVaild, nil
  58. }
  59. // 验证项目
  60. func (s *backstageService) ValidRuleProject(ctx iris.Context) (viewmodels.Project, error) {
  61. projectVaild := viewmodels.Project{}
  62. err := ctx.ReadForm(&projectVaild)
  63. if err != nil {
  64. log.Println("ReadForm转换异常, error=", err)
  65. return projectVaild, err
  66. }
  67. err = projectVaild.ValidateId()
  68. if err != nil {
  69. log.Println("验证项目, error=", err)
  70. return projectVaild, err
  71. }
  72. return projectVaild, nil
  73. }
  74. // 验证项目
  75. func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) {
  76. projectVaild := viewmodels.Project{}
  77. err := ctx.ReadJSON(&projectVaild)
  78. if err != nil {
  79. log.Println("ReadForm转换异常, error=", err)
  80. return projectVaild, err
  81. }
  82. err = projectVaild.ValidateAdd()
  83. if err != nil {
  84. log.Println("添加项目验证, error=", err)
  85. return projectVaild, err
  86. }
  87. return projectVaild, nil
  88. }
  89. // 项目保存
  90. func (s *backstageService) ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error) {
  91. projectVaild := viewmodels.Project{}
  92. err := ctx.ReadJSON(&projectVaild)
  93. if err != nil {
  94. log.Println("ReadForm转换异常, error=", err)
  95. return projectVaild, err
  96. }
  97. err = projectVaild.ValidateSave()
  98. if err != nil {
  99. log.Println("添加项目验证, error=", err)
  100. return projectVaild, err
  101. }
  102. return projectVaild, nil
  103. }
  104. // 验证账号新增
  105. func (s *backstageService) ValidRuleAccountAdd(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  106. projectVaild := viewmodels.ProjectAccount{}
  107. err := ctx.ReadJSON(&projectVaild)
  108. if err != nil {
  109. log.Println("ReadForm转换异常, error=", err)
  110. return projectVaild, err
  111. }
  112. err = projectVaild.ValidateAddBs()
  113. if err != nil {
  114. log.Println("添加账号验证, error=", err)
  115. return projectVaild, err
  116. }
  117. return projectVaild, nil
  118. }
  119. // 验证账号编辑
  120. func (s *backstageService) ValidRuleAccountSave(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  121. projectVaild := viewmodels.ProjectAccount{}
  122. err := ctx.ReadJSON(&projectVaild)
  123. if err != nil {
  124. log.Println("ReadForm转换异常, error=", err)
  125. return projectVaild, err
  126. }
  127. err = projectVaild.ValidateSaveBs()
  128. if err != nil {
  129. log.Println("编辑账号验证, error=", err)
  130. return projectVaild, err
  131. }
  132. return projectVaild, nil
  133. }
  134. // 验证账号启用
  135. func (s *backstageService) ValidRuleAccountEnable(ctx iris.Context) (viewmodels.ProjectAccount, error) {
  136. accounttVaild := viewmodels.ProjectAccount{}
  137. err := ctx.ReadForm(&accounttVaild)
  138. if err != nil {
  139. log.Println("ReadForm转换异常, error=", err)
  140. return accounttVaild, err
  141. }
  142. err = accounttVaild.ValidateEnableBs()
  143. if err != nil {
  144. log.Println("编辑账号验证, error=", err)
  145. return accounttVaild, err
  146. }
  147. return accounttVaild, nil
  148. }
  149. // 验证项目用户登陆相关
  150. func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) {
  151. // 1.验证CLD账号密码
  152. cld := lib.NewCld()
  153. result, err := cld.LoginValid(loginData)
  154. if err != nil {
  155. return nil, err
  156. }
  157. if result.Code != 0 {
  158. return nil, errors.New(result.Msg)
  159. }
  160. // 2.写入登录态
  161. // 加密用户标识
  162. identity, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret)
  163. if err != nil {
  164. return nil, err
  165. }
  166. // 加密项目标识
  167. category, err := comm.AesEncrypt(result.Data.Category, conf.CookieSecret)
  168. if err != nil {
  169. return nil, err
  170. }
  171. digitalToken := comm.CreateSign(conf.CookieSecret + identity)
  172. // 设置cookie
  173. maxAge := 60 * 60 * 24 * 7
  174. params := url.Values{}
  175. params.Add("identity", identity)
  176. params.Add("attachedIdentity", category)
  177. params.Add("digitalToken", digitalToken)
  178. c := &http.Cookie{
  179. Name: "cmBackstage",
  180. Value: params.Encode(),
  181. Path: "/",
  182. MaxAge: maxAge,
  183. HttpOnly: true,
  184. }
  185. http.SetCookie(writer, c)
  186. // staffCld := &viewmodels.StaffCld{}
  187. // staffCld.Category = result.Data.Category
  188. // staffCld.StaffName = result.Data.UserName
  189. return &result.Data, nil
  190. }
  191. // 登出
  192. func (s *backstageService) Out(ctx iris.Context) error {
  193. // 移除cookie
  194. ctx.RemoveCookie("cmBackstage")
  195. return nil
  196. }
  197. // 获得cld办事处和员工 列表
  198. func (s *backstageService) GetCldByCategoryId(categoryId string) (map[string]interface{}, error) {
  199. cld := lib.NewCld()
  200. result, err := cld.GetList(categoryId)
  201. if err != nil {
  202. return nil, err
  203. }
  204. if result["code"].(float64) != 0 {
  205. return nil, errors.New(result["code"].(string))
  206. }
  207. return result, nil
  208. }