/* * @description:项目用户相关数据处理 * @Author: CP * @Date: 2020-08-27 17:23:58 * @FilePath: \construction_management\services\project_account_service.go */ package services import ( "log" "strconv" "github.com/kataras/iris/v12" "go.mod/comm" "go.mod/conf" "go.mod/models" "go.mod/web/viewmodels" "go.mod/dao" "go.mod/datasource" ) //定义项目用户Service接口 type ProjectAccountService interface { ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error) Save(viewAccount viewmodels.ProjectAccount, id int) error Get(id int) *viewmodels.ProjectAccount } //返回service操作类 type projectAccountService struct { dao *dao.ProjectAccountDao } //创建项目用户service func NewProjectAccountService() ProjectAccountService { return &projectAccountService{ dao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()), } } // 获得一个项目用户 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 } aesId, _ := comm.AesEncrypt(strconv.Itoa(modelsAccount.Id), conf.SignSecret) aesProjectId, _ := comm.AesEncrypt(strconv.Itoa(modelsAccount.ProjectId), conf.SignSecret) viewAccountData.Id = aesId viewAccountData.ProjectId = aesProjectId viewAccountData.Account = modelsAccount.Account viewAccountData.Name = modelsAccount.Name viewAccountData.Company = modelsAccount.Company viewAccountData.Role = modelsAccount.Role viewAccountData.Mobile = modelsAccount.Mobile viewAccountData.Telephone = modelsAccount.Telephone return &viewAccountData } // 用户规则验证 func (s *projectAccountService) ValidRule(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.Validate() if err != nil { log.Println("用户验证, error=", err) return accountVaild, err } return accountVaild, nil } // 保存用户信息 func (s *projectAccountService) Save(viewAccount viewmodels.ProjectAccount, id int) error { account := models.CmProjectAccount{} account.Id = id account.Name = viewAccount.Name account.Company = viewAccount.Company account.Role = viewAccount.Role account.Mobile = viewAccount.Mobile account.Telephone = viewAccount.Telephone err := s.dao.Update(&account, []string{"Name", "Company", "Role", "Mobile", "Telephone"}) return err }