123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- /*
- * @description:项目用户相关数据处理
- * @Author: CP
- * @Date: 2020-08-27 17:23:58
- * @FilePath: \construction_management\services\project_account_service.go
- */
- package services
- import (
- "errors"
- "html"
- "log"
- "github.com/kataras/iris/v12"
- "go.mod/comm"
- "go.mod/web/viewmodels"
- "go.mod/dao"
- "go.mod/datasource"
- )
- //定义项目用户Service接口
- type ProjectAccountService interface {
- ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error)
- ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error)
- ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error)
- ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error)
- ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error)
- ValidRuleProjectId(ctx iris.Context) (viewmodels.ProjectAccount, error)
- Get(accountId int) *viewmodels.ProjectAccount
- }
- //返回service操作类
- type projectAccountService struct {
- dao *dao.ProjectAccountDao
- bidAccountDao *dao.BidAccountDao
- permissionAccountDao *dao.PermissionAccountDao
- validSave string
- validAdd string
- validPassword string
- }
- //创建项目用户service
- func NewProjectAccountService() ProjectAccountService {
- return &projectAccountService{
- dao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
- bidAccountDao: dao.NewBidAccountDao(datasource.InstanceDbMaster()),
- permissionAccountDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
- validSave: "/api/projectSetting/account/save",
- validAdd: "/api/projectSetting/account/create",
- validPassword: "/api/projectSetting/account/change",
- }
- }
- // 用户规则验证
- func (s *projectAccountService) ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error) {
- accountVaild := viewmodels.ProjectAccount{}
- err := ctx.ReadJSON(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- if ctx.Path() == s.validAdd {
- err = accountVaild.Validate()
- } else if ctx.Path() == s.validSave {
- err = accountVaild.ValidateUpdate()
- } else if ctx.Path() == s.validPassword {
- err = accountVaild.ValidatePassword()
- } else {
- log.Println("请求路径找不到对应的验证规则")
- return accountVaild, errors.New("验证错误-未找到验证规则")
- }
- if err != nil {
- log.Println("用户验证, error=", err)
- return accountVaild, err
- }
- // 验证账号组
- if ctx.Path() != s.validPassword {
- accountGroup := comm.NewAccountGroup()
- err = accountGroup.ValidRule(accountVaild.AccountGroup)
- if err != nil {
- log.Println("用户验证, error=", err)
- return accountVaild, err
- }
- }
- // xss
- accountVaild.Account = html.EscapeString(accountVaild.Account)
- accountVaild.Password = html.EscapeString(accountVaild.Password)
- accountVaild.Name = html.EscapeString(accountVaild.Name)
- accountVaild.Company = html.EscapeString(accountVaild.Company)
- accountVaild.Position = html.EscapeString(accountVaild.Position)
- accountVaild.Mobile = html.EscapeString(accountVaild.Mobile)
- accountVaild.Telephone = html.EscapeString(accountVaild.Telephone)
- return accountVaild, nil
- }
- // 验证密码
- func (s *projectAccountService) ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error) {
- accountVaild := viewmodels.AccountPassword{}
- err := ctx.ReadJSON(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- err = accountVaild.ValidateChangePassword()
- if err != nil {
- log.Println("权限验证, error=", err)
- return accountVaild, err
- }
- return accountVaild, nil
- }
- // 用户规则验证
- func (s *projectAccountService) ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error) {
- accountVaild := viewmodels.Permission{}
- err := ctx.ReadJSON(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- err = accountVaild.Validate()
- if err != nil {
- log.Println("权限验证, error=", err)
- return accountVaild, err
- }
- return accountVaild, nil
- }
- // 用户规则验证
- func (s *projectAccountService) ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error) {
- accountVaild := viewmodels.Permission{}
- err := ctx.ReadForm(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- err = accountVaild.ValidateSinglePermission()
- if err != nil {
- log.Println("权限验证, error=", err)
- return accountVaild, err
- }
- return accountVaild, nil
- }
- // 验证编辑用户
- func (s *projectAccountService) ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error) {
- accountVaild := viewmodels.ProjectAccount{}
- err := ctx.ReadJSON(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- err = accountVaild.ValidateAccount()
- if err != nil {
- log.Println("权限验证, error=", err)
- return accountVaild, err
- }
- return accountVaild, nil
- }
- // 验证用户项目ID
- func (s *projectAccountService) ValidRuleProjectId(ctx iris.Context) (viewmodels.ProjectAccount, error) {
- accountVaild := viewmodels.ProjectAccount{}
- err := ctx.ReadForm(&accountVaild)
- if err != nil {
- log.Println("account-ValidRule-ReadForm转换异常, error=", err)
- return accountVaild, err
- }
- err = accountVaild.ValidateProjectId()
- if err != nil {
- log.Println("权限验证, error=", err)
- return accountVaild, err
- }
- return accountVaild, nil
- }
- // 获得一个项目用户
- func (s *projectAccountService) Get(id int) *viewmodels.ProjectAccount {
- modelsAccount := s.dao.Get(id)
- viewAccountData := viewmodels.ProjectAccount{}
- if modelsAccount.Id == 0 {
- viewAccountData.Id = "0"
- return &viewAccountData
- }
- viewAccountData = comm.MakeProjectAccountVM(modelsAccount)
- return &viewAccountData
- }
|