|
@@ -7,18 +7,12 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
- "encoding/json"
|
|
|
"errors"
|
|
|
"html"
|
|
|
"log"
|
|
|
- "strconv"
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
|
|
|
"github.com/kataras/iris/v12"
|
|
|
"go.mod/comm"
|
|
|
- "go.mod/models"
|
|
|
- "go.mod/web/utils"
|
|
|
"go.mod/web/viewmodels"
|
|
|
|
|
|
"go.mod/dao"
|
|
@@ -33,23 +27,7 @@ type ProjectAccountService interface {
|
|
|
ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error)
|
|
|
ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error)
|
|
|
ValidRuleProjectId(ctx iris.Context) (viewmodels.ProjectAccount, error)
|
|
|
- Get(accountId int, projectId int) *viewmodels.ProjectAccount
|
|
|
- GetAll(projectId int) []viewmodels.ProjectAccount
|
|
|
- GetBidAccount(bidsectionId int, projectId int, projectAccountId int, name string) []viewmodels.ProjectAccount
|
|
|
- Search(name string, projectId int) []viewmodels.ProjectAccount
|
|
|
- AddBs(viewAccount viewmodels.ProjectAccount, projectId int) error
|
|
|
- Add(viewAccount viewmodels.ProjectAccount, projectId int) error
|
|
|
- Save(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
|
|
|
- SaveAccount(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
|
|
|
- Enable(id int, projectId int, enable int) error
|
|
|
- ChangeAccount(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
|
|
|
- ChangeAccountBS(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
|
|
|
- GetProjectInfo(id int) (viewmodels.ProjectInfo, error)
|
|
|
- Delete(id int, projectId int) error
|
|
|
-
|
|
|
- ChangePassword(AccountData viewmodels.AccountPassword, projectId int, projectAccountId int) error
|
|
|
-
|
|
|
- SaveAuth(permission viewmodels.Permission, projectId int, bidsectionId int, accountId int) error
|
|
|
+ Get(accountId int) *viewmodels.ProjectAccount
|
|
|
}
|
|
|
|
|
|
//返回service操作类
|
|
@@ -216,8 +194,8 @@ func (s *projectAccountService) ValidRuleProjectId(ctx iris.Context) (viewmodels
|
|
|
}
|
|
|
|
|
|
// 获得一个项目用户
|
|
|
-func (s *projectAccountService) Get(id int, projectId int) *viewmodels.ProjectAccount {
|
|
|
- modelsAccount := s.dao.Get(id, projectId)
|
|
|
+func (s *projectAccountService) Get(id int) *viewmodels.ProjectAccount {
|
|
|
+ modelsAccount := s.dao.Get(id)
|
|
|
viewAccountData := viewmodels.ProjectAccount{}
|
|
|
if modelsAccount.Id == 0 {
|
|
|
viewAccountData.Id = "0"
|
|
@@ -227,296 +205,3 @@ func (s *projectAccountService) Get(id int, projectId int) *viewmodels.ProjectAc
|
|
|
viewAccountData = comm.MakeProjectAccountVM(modelsAccount)
|
|
|
return &viewAccountData
|
|
|
}
|
|
|
-
|
|
|
-// 获得项目下所有账号信息
|
|
|
-func (s *projectAccountService) GetAll(projectId int) []viewmodels.ProjectAccount {
|
|
|
- accountList := s.dao.GetAll(projectId)
|
|
|
- accountListVM := make([]viewmodels.ProjectAccount, 0)
|
|
|
- for _, data := range accountList {
|
|
|
- //if data.IsAdmin != 1 {
|
|
|
- account := comm.MakeProjectAccountVM(&data)
|
|
|
- accountListVM = append(accountListVM, account)
|
|
|
- //}
|
|
|
- }
|
|
|
- return accountListVM
|
|
|
-}
|
|
|
-
|
|
|
-// 获得标段下的账号
|
|
|
-func (s *projectAccountService) GetBidAccount(bidsectionId int, projectId int, projectAccountId int, name string) []viewmodels.ProjectAccount {
|
|
|
- // 1.获得标段账号ID
|
|
|
- bidAccountData := s.bidAccountDao.GetBidAccount(bidsectionId, projectId)
|
|
|
-
|
|
|
- // 组合账号ID集合
|
|
|
- idList := []string{}
|
|
|
- // 管理员账号-可能不必要
|
|
|
- // idList = append(idList, strconv.Itoa(projectAccountId))
|
|
|
- for _, item := range bidAccountData {
|
|
|
- idList = append(idList, strconv.Itoa(item.AccountId))
|
|
|
- }
|
|
|
- inId := strings.Join(idList, ",")
|
|
|
-
|
|
|
- // 获得账号信息
|
|
|
- accountData := s.dao.GetInId(inId, name)
|
|
|
-
|
|
|
- // 2.获得账号权限
|
|
|
- permissionData := s.permissionAccountDao.GetBidsectionId(bidsectionId)
|
|
|
-
|
|
|
- // 格式化账号数据
|
|
|
- accountListVM := make([]viewmodels.ProjectAccount, 0)
|
|
|
- for _, data := range accountData {
|
|
|
- account := comm.MakeProjectAccountVM(&data)
|
|
|
- for _, item := range permissionData {
|
|
|
- if data.Id == item.AccountId {
|
|
|
- account.ContractPermission = item.ContractPermission
|
|
|
- account.QualityPermission = item.QualityPermission
|
|
|
- account.SafePermission = item.SafePermission
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- accountListVM = append(accountListVM, account)
|
|
|
- }
|
|
|
-
|
|
|
- return accountListVM
|
|
|
-}
|
|
|
-
|
|
|
-// 检索 账号姓名单位手机
|
|
|
-func (s *projectAccountService) Search(name string, projectId int) []viewmodels.ProjectAccount {
|
|
|
- accountList := s.dao.Search(name, projectId)
|
|
|
- accountListVM := make([]viewmodels.ProjectAccount, 0)
|
|
|
- for _, data := range accountList {
|
|
|
- account := comm.MakeProjectAccountVM(&data)
|
|
|
- accountListVM = append(accountListVM, account)
|
|
|
- }
|
|
|
- return accountListVM
|
|
|
-}
|
|
|
-
|
|
|
-// 新增账号-后台
|
|
|
-func (s *projectAccountService) AddBs(viewAccount viewmodels.ProjectAccount, projectId int) error {
|
|
|
-
|
|
|
- // 验证该项目下是否有同名账号
|
|
|
- accountValid := s.dao.GetAccount(viewAccount.Account)
|
|
|
- if accountValid.Id != 0 {
|
|
|
- return errors.New("已存在相同的账号")
|
|
|
- }
|
|
|
-
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Account = viewAccount.Account
|
|
|
- account.Password = comm.CreatePasswordSign(viewAccount.Password, viewAccount.Account)
|
|
|
- account.Name = viewAccount.Name
|
|
|
- account.Company = viewAccount.Company
|
|
|
- account.Position = viewAccount.Position
|
|
|
- account.Mobile = viewAccount.Mobile
|
|
|
- account.Telephone = viewAccount.Telephone
|
|
|
- account.Enable = 1
|
|
|
- // account.IsAdmin = viewAccount.IsAdmin
|
|
|
- account.CreateTime = time.Now()
|
|
|
- err := s.dao.Add(&account)
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-// 新增账号
|
|
|
-func (s *projectAccountService) Add(viewAccount viewmodels.ProjectAccount, projectId int) error {
|
|
|
-
|
|
|
- // 验证该项目下是否有同名账号
|
|
|
- accountValid := s.dao.GetAccount(viewAccount.Account)
|
|
|
- if accountValid.Id != 0 {
|
|
|
- return errors.New("已存在相同的账号")
|
|
|
- }
|
|
|
-
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Account = viewAccount.Account
|
|
|
- account.Password = comm.CreatePasswordSign(viewAccount.Password, viewAccount.Account)
|
|
|
- account.Name = viewAccount.Name
|
|
|
- account.Company = viewAccount.Company
|
|
|
- account.Position = viewAccount.Position
|
|
|
- account.Mobile = viewAccount.Mobile
|
|
|
- account.Telephone = viewAccount.Telephone
|
|
|
- account.AccountGroup = viewAccount.AccountGroup
|
|
|
- account.Enable = 1
|
|
|
- account.CreateTime = time.Now()
|
|
|
- err := s.dao.Add(&account)
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-// 保存用户信息
|
|
|
-func (s *projectAccountService) Save(viewAccount viewmodels.ProjectAccount, id int, projectId int) error {
|
|
|
-
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Name = viewAccount.Name
|
|
|
- account.Company = viewAccount.Company
|
|
|
- account.Position = viewAccount.Position
|
|
|
- account.Mobile = viewAccount.Mobile
|
|
|
- account.Telephone = viewAccount.Telephone
|
|
|
- account.AccountGroup = viewAccount.AccountGroup
|
|
|
-
|
|
|
- err := s.dao.Update(&account, []string{"Name", "Company", "Position", "Telephone", "AccountGroup"})
|
|
|
-
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-func (s *projectAccountService) SaveAccount(viewAccount viewmodels.ProjectAccount, id int, projectId int) error {
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Name = viewAccount.Name
|
|
|
- account.Company = viewAccount.Company
|
|
|
- account.Position = viewAccount.Position
|
|
|
- account.Telephone = viewAccount.Telephone
|
|
|
- err := s.dao.Update(&account, []string{"Name", "Company", "Position", "Telephone"})
|
|
|
-
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-// 设置启用/禁止
|
|
|
-func (s *projectAccountService) Enable(id int, projectId int, enable int) error {
|
|
|
-
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Enable = enable
|
|
|
- err := s.dao.Update(&account, []string{"Enable"})
|
|
|
-
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-// 删除账号
|
|
|
-func (s *projectAccountService) Delete(id int, projectId int) error {
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
- err := s.dao.Delete(&account)
|
|
|
-
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
-// 更改账号或者密码
|
|
|
-func (s *projectAccountService) ChangeAccount(id int, projectId int, viewAccount viewmodels.ProjectAccount) error {
|
|
|
- // 1.是否修改账号
|
|
|
- field := []string{"Password"}
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
-
|
|
|
- // 2.修改密码
|
|
|
- account.Password = comm.CreatePasswordSign(viewAccount.Password, viewAccount.Account)
|
|
|
-
|
|
|
- accountData := s.dao.Get(id, projectId)
|
|
|
- if accountData.Account != viewAccount.Account {
|
|
|
- account.Account = viewAccount.Account
|
|
|
- field = append(field, "Account")
|
|
|
- }
|
|
|
-
|
|
|
- // 3.发送短信-TODO
|
|
|
- utils.SendSMS()
|
|
|
-
|
|
|
- s.dao.Update(&account, field)
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-// 更改账号或者密码-后台
|
|
|
-func (s *projectAccountService) ChangeAccountBS(id int, projectId int, viewAccount viewmodels.ProjectAccount) error {
|
|
|
- // 1.是否修改账号
|
|
|
- field := []string{"Password"}
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = id
|
|
|
- account.ProjectId = projectId
|
|
|
-
|
|
|
- // 2.修改密码
|
|
|
- account.Password = comm.CreatePasswordSign(viewAccount.Password, viewAccount.Account)
|
|
|
-
|
|
|
- accountData := s.dao.Get(id, projectId)
|
|
|
- if accountData.Account != viewAccount.Account {
|
|
|
- account.Account = viewAccount.Account
|
|
|
- field = append(field, "Account")
|
|
|
- }
|
|
|
-
|
|
|
- s.dao.Update(&account, field)
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-// 更换密码
|
|
|
-func (s *projectAccountService) ChangePassword(AccountData viewmodels.AccountPassword, projectId int, projectAccountId int) error {
|
|
|
- // 1.获得账号
|
|
|
- accountData := s.dao.Get(projectAccountId, projectId)
|
|
|
- // 2.比对密码
|
|
|
- password := comm.CreatePasswordSign(AccountData.Password, accountData.Account)
|
|
|
-
|
|
|
- if accountData.Password != password {
|
|
|
- return errors.New("原密码输入不正确")
|
|
|
- }
|
|
|
-
|
|
|
- // 3修改密码
|
|
|
- field := []string{"Password"}
|
|
|
- account := models.CmProjectAccount{}
|
|
|
- account.Id = projectAccountId
|
|
|
- account.ProjectId = projectId
|
|
|
- account.Password = comm.CreatePasswordSign(AccountData.NewPassword, accountData.Account)
|
|
|
-
|
|
|
- err := s.dao.Update(&account, field)
|
|
|
- if err != nil {
|
|
|
- return errors.New("密码更新失败")
|
|
|
- }
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-func (s *projectAccountService) GetProjectInfo(id int) (viewmodels.ProjectInfo, error) {
|
|
|
- projectInfo, err := s.dao.FindById(id)
|
|
|
-
|
|
|
- return projectInfo, err
|
|
|
-}
|
|
|
-
|
|
|
-// 保存权限设置
|
|
|
-func (s *projectAccountService) SaveAuth(permission viewmodels.Permission, projectId int, bidsectionId int, accountId int) error {
|
|
|
- // 1.构造权限字符串
|
|
|
- // 1-1.合同权限
|
|
|
- contractPermission := map[string]int{
|
|
|
- "add": permission.ContractAdd,
|
|
|
- "delete": permission.ContractDelete,
|
|
|
- "access": permission.ContractAccess,
|
|
|
- }
|
|
|
- contractPermissionByte, err := json.Marshal(contractPermission)
|
|
|
- if err != nil {
|
|
|
- return errors.New("合同权限解析失败")
|
|
|
- }
|
|
|
- contractPermissionStr := string(contractPermissionByte)
|
|
|
- // 1.2 安全巡检权限
|
|
|
- safePermission := map[string]int{
|
|
|
- "add": permission.SafeAdd,
|
|
|
- "delete": permission.SafeDelete,
|
|
|
- "access": permission.SafeAccess,
|
|
|
- }
|
|
|
- safePermissionByte, err := json.Marshal(safePermission)
|
|
|
- if err != nil {
|
|
|
- return errors.New("合同权限解析失败")
|
|
|
- }
|
|
|
- safePermissionStr := string(safePermissionByte)
|
|
|
- // 1.3 质量巡检权限
|
|
|
- qualityPermission := map[string]int{
|
|
|
- "add": permission.QualityAdd,
|
|
|
- "delete": permission.QualityDelete,
|
|
|
- "access": permission.QualityAccess,
|
|
|
- }
|
|
|
- qualityPermissionByte, err := json.Marshal(qualityPermission)
|
|
|
- if err != nil {
|
|
|
- return errors.New("合同权限解析失败")
|
|
|
- }
|
|
|
- qualityPermissionStr := string(qualityPermissionByte)
|
|
|
-
|
|
|
- // 2.保存权限
|
|
|
- permissionAccount := models.CmPermissionAccount{}
|
|
|
- permissionAccount.ProjectId = projectId
|
|
|
- permissionAccount.BidsectionId = bidsectionId
|
|
|
- permissionAccount.AccountId = accountId
|
|
|
- permissionAccount.ContractPermission = contractPermissionStr
|
|
|
- permissionAccount.SafePermission = safePermissionStr
|
|
|
- permissionAccount.QualityPermission = qualityPermissionStr
|
|
|
-
|
|
|
- err = s.permissionAccountDao.Update(&permissionAccount, []string{"ContractPermission", "SafePermission", "QualityPermission"})
|
|
|
- return err
|
|
|
-}
|