/* * @description:登陆相关数据操作 * @Author: CP * @Date: 2020-09-02 09:56:28 * @FilePath: \construction_management\services\backstage_service.go */ package services import ( "errors" "log" "net/http" "net/url" "github.com/kataras/iris/v12" "go.mod/comm" "go.mod/conf" "go.mod/lib" "go.mod/web/viewmodels" ) //定义项目用户Service接口 type BackstageService interface { ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) ValidRuleProject(ctx iris.Context) (viewmodels.Project, error) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) GetCldByCategoryId(categoryId int) Out(ctx iris.Context) error } //返回service操作类 type backstageService struct { // projectAccountDao *dao.ProjectAccountDao // projectDao *dao.ProjectDao } //创建项目用户service func NewBackstageService() BackstageService { return &backstageService{ // projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()), // projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()), } } // 登陆验证 func (s *backstageService) ValidRuleLogin(ctx iris.Context) (viewmodels.StaffCld, error) { loginVaild := viewmodels.StaffCld{} err := ctx.ReadJSON(&loginVaild) if err != nil { log.Println("ReadForm转换异常, error=", err) return loginVaild, err } err = loginVaild.ValidateLogin() if err != nil { log.Println("登录验证, error=", err) return loginVaild, err } return loginVaild, nil } // 验证项目 func (s *backstageService) ValidRuleProject(ctx iris.Context) (viewmodels.Project, error) { projectVaild := viewmodels.Project{} err := ctx.ReadForm(&projectVaild) if err != nil { log.Println("ReadForm转换异常, error=", err) return projectVaild, err } err = projectVaild.ValidateId() if err != nil { log.Println("登录验证, error=", err) return projectVaild, err } return projectVaild, nil } // 验证项目 func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error) { projectVaild := viewmodels.Project{} err := ctx.ReadForm(&projectVaild) if err != nil { log.Println("ReadForm转换异常, error=", err) return projectVaild, err } err = projectVaild.ValidateAdd() if err != nil { log.Println("登录验证, error=", err) return projectVaild, err } return projectVaild, nil } // 验证项目用户登陆相关 func (s *backstageService) ValidCldStaff(loginData viewmodels.StaffCld, writer http.ResponseWriter) (*viewmodels.ResultCld, error) { // 1.验证CLD账号密码 cld := lib.NewCld() result, err := cld.LoginValid(loginData) if err != nil { return nil, err } if result.Code != 0 { return nil, errors.New(result.Msg) } // 2.写入登录态 // 加密用户标识 identity, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret) if err != nil { return nil, err } // 加密项目标识 category, err := comm.AesEncrypt(result.Data.UserName, conf.CookieSecret) if err != nil { return nil, err } digitalToken := comm.CreateSign(conf.CookieSecret + identity) // 设置cookie maxAge := 60 * 60 * 24 * 7 params := url.Values{} params.Add("identity", identity) params.Add("attachedIdentity", category) params.Add("digitalToken", digitalToken) c := &http.Cookie{ Name: "cmBackstage", Value: params.Encode(), Path: "/", MaxAge: maxAge, HttpOnly: true, } http.SetCookie(writer, c) // staffCld := &viewmodels.StaffCld{} // staffCld.Category = result.Data.Category // staffCld.StaffName = result.Data.UserName return &result.Data, nil } // 登出 func (s *backstageService) Out(ctx iris.Context) error { // 移除cookie ctx.RemoveCookie("cmBackstage") return nil } // 获得cld办事处和员工 列表 func (s *backstageService) GetCldByCategoryId(categoryId int) { cld := lib.NewCld() cld.GetList(categoryId) // result, err := cld.GetList(categoryId) }