/* * @description:标段账号相关数据操作 * @Author: CP * @Date: 2020-10-22 16:13:32 * @FilePath: \construction_management\services\bid_account_service.go */ package services import ( "errors" "log" "github.com/kataras/iris/v12" "go.mod/dao" "go.mod/datasource" "go.mod/web/utils" "go.mod/web/viewmodels" ) //定义项目用户Service接口 type BidAccountService interface { ValidRule(ctx iris.Context) (viewmodels.BidAccount, error) ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error) Create(viewBidAccount viewmodels.BidAccount, projectId int, accountId int) error Delete(viewBidAccount viewmodels.BidAccount, projectId int) error GetPermission(accountId int, bidsectionId int, projectId int) (viewmodels.PermissionView, error) } //返回service操作类 type bidAccountService struct { projectAccountDao *dao.ProjectAccountDao projectDao *dao.ProjectDao bidsectionDao *dao.BidsectionDao treeDao *dao.TreeDao bidAccountDao *dao.BidAccountDao permissionDao *dao.PermissionAccountDao } //创建项目用户service func NewBidAccountService() BidAccountService { return &bidAccountService{ projectAccountDao: dao.NewProjectAccountDao(datasource.InstanceDbMaster()), projectDao: dao.NewProjectDao(datasource.InstanceDbMaster()), bidsectionDao: dao.NewBidsectionDao(datasource.InstanceDbMaster()), treeDao: dao.NewTreeDao(datasource.InstanceDbMaster()), bidAccountDao: dao.NewBidAccountDao(datasource.InstanceDbMaster()), permissionDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()), } } // 登陆验证 func (s *bidAccountService) ValidRule(ctx iris.Context) (viewmodels.BidAccount, error) { bidAccountVaild := viewmodels.BidAccount{} err := ctx.ReadJSON(&bidAccountVaild) if err != nil { log.Println("ReadForm转换异常, error=", err) return bidAccountVaild, err } err = bidAccountVaild.Validate() if err != nil { log.Println("登录验证, error=", err) return bidAccountVaild, err } return bidAccountVaild, nil } // 删除标段关系用户验证 func (s *bidAccountService) ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error) { bidAccountVaild := viewmodels.BidAccount{} err := ctx.ReadForm(&bidAccountVaild) if err != nil { log.Println("ReadForm转换异常, error=", err) return bidAccountVaild, err } err = bidAccountVaild.Validate() if err != nil { log.Println("登录验证, error=", err) return bidAccountVaild, err } return bidAccountVaild, nil } // 获取当前标段的权限 func (s *bidAccountService) GetPermission(accountId int, bidsectionId int, projectId int) (viewmodels.PermissionView, error) { account := s.projectAccountDao.Get(accountId, projectId) var isAdmin bool if account.IsAdmin == 1 { isAdmin = true } else { isAdmin = false } data, err := s.permissionDao.GetPermissionWithAccountId(accountId, bidsectionId, isAdmin) return data, err } // 新增标段于账号的关系 func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, projectId int, loginAccountId int) error { // 写入关系表-标段的成员数量-账号表中标段ID // 1.检查账号合法性 accountId, err := utils.GetDecryptId(viewBidAccount.AccountId) if err != nil { return err } if loginAccountId == accountId { return errors.New("不能添加自己") } accountData := s.projectAccountDao.Get(accountId, projectId) if accountData.Id == 0 { return errors.New("添加的账号不合法") } // 2.检查标段合法性 bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId) if err != nil { return err } bidsection := s.bidsectionDao.Get(bidsectionId, projectId) if bidsection.Id == 0 { return errors.New("标段不合法") } // 3.检查目录的合法性 // 3-1标段ID,,项目ID treeData := s.treeDao.GetBidParentId(bidsectionId, projectId) // 3-2获得目录ID if treeData.Id == 0 { return errors.New("目录不合法") } treeId := treeData.Id // 4.检查账号是否已经添加过 bidAccountData := s.bidAccountDao.GetAccountId(projectId, bidsectionId, accountId) if bidAccountData.Id != 0 { return errors.New("已添加过该账号") } // 新增成员到标段 err = s.bidAccountDao.Create(bidsectionId, accountData, treeId, projectId) if err != nil { return err } return nil } //移除标段成员 func (s *bidAccountService) Delete(viewBidAccount viewmodels.BidAccount, projectId int) error { // 1.检查账号合法性 accountId, err := utils.GetDecryptId(viewBidAccount.AccountId) if err != nil { return err } accountData := s.projectAccountDao.Get(accountId, projectId) if accountData.Id == 0 { return errors.New("添加的账号不合法") } // 1-2 标段关系中是否有改账号 TODO // 2.检查标段合法性 bidsectionId, err := utils.GetDecryptId(viewBidAccount.BidsectionId) if err != nil { return err } bidsection := s.bidsectionDao.Get(bidsectionId, projectId) if bidsection.Id == 0 { return errors.New("标段不合法") } // 3.检查目录的合法性 // 3-1标段ID,,项目ID treeData := s.treeDao.GetBidParentId(bidsectionId, projectId) // 3-2获得目录ID if treeData.Id == 0 { return errors.New("目录不合法") } treeId := treeData.Id // 删除成员到标段 err = s.bidAccountDao.Delete(bidsectionId, accountData, treeId, projectId) if err != nil { return err } return nil }