|
...
|
...
|
@@ -249,6 +249,7 @@ func (service UsersService) GetUserList(queryOption query.UserListQuery) (int, [ |
|
|
|
UserNameMatch: queryOption.UserNameMatch,
|
|
|
|
Offset: queryOption.Offset,
|
|
|
|
Limit: queryOption.Limit,
|
|
|
|
CompanyId: queryOption.CompanyId,
|
|
|
|
})
|
|
|
|
var permissionQuery domain.PermissionFindOption
|
|
|
|
permissionList, err = permissionRepository.Find(permissionQuery)
|
|
...
|
...
|
@@ -295,3 +296,189 @@ func (service UsersService) buildGetUserList(usersData []domain.Users, permissio |
|
|
|
}
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
func (service UsersService) GetUserData(userId int64, companyId int64) (map[string]interface{}, error) {
|
|
|
|
var (
|
|
|
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
if err = transactionContext.StartTransaction(); err != nil {
|
|
|
|
return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
defer func() {
|
|
|
|
transactionContext.RollbackTransaction()
|
|
|
|
}()
|
|
|
|
var (
|
|
|
|
userRespository domain.UsersRepository
|
|
|
|
perterRespository domain.PartnerInfoRepository
|
|
|
|
usersData domain.Users
|
|
|
|
pertnerList []domain.PartnerInfo
|
|
|
|
)
|
|
|
|
if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
if perterRespository, err = factory.CreatePartnerInfoRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
usersData, err = userRespository.FindOne(domain.UsersFindOneQuery{
|
|
|
|
Id: userId, CompanyId: companyId,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("获取用户(id=%d)数据失败;%s", userId, err)
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
var partnerIds []int64
|
|
|
|
for _, v := range usersData.AccessPartners {
|
|
|
|
partnerIds = append(partnerIds, v.Id)
|
|
|
|
}
|
|
|
|
if len(partnerIds) > 0 {
|
|
|
|
pertnerList, err = perterRespository.Find(domain.PartnerFindQuery{
|
|
|
|
Ids: partnerIds,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("获取合伙人数据失败:%s", err)
|
|
|
|
return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
transactionContext.CommitTransaction()
|
|
|
|
result := service.buildGetUserData(&usersData, pertnerList)
|
|
|
|
return result, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
//buildGetUserData 构建前端需要的数据
|
|
|
|
func (service UsersService) buildGetUserData(userData *domain.Users, partnerList []domain.PartnerInfo) map[string]interface{} {
|
|
|
|
result := map[string]interface{}{
|
|
|
|
"id": userData.Id,
|
|
|
|
"permissionType": []int64{},
|
|
|
|
"name": userData.Name,
|
|
|
|
"account": userData.Phone,
|
|
|
|
"isAdmin": 0,
|
|
|
|
"status": 0,
|
|
|
|
"checkedPartner": []map[string]interface{}{},
|
|
|
|
}
|
|
|
|
if userData.IsSuperAdmin() {
|
|
|
|
result["isAdmin"] = 1
|
|
|
|
}
|
|
|
|
if userData.IsUsable() {
|
|
|
|
result["status"] = 1
|
|
|
|
}
|
|
|
|
permissionIds := make([]int64, len(userData.Permission))
|
|
|
|
for _, v := range userData.Permission {
|
|
|
|
permissionIds = append(permissionIds, v.Id)
|
|
|
|
}
|
|
|
|
result["permissionType"] = permissionIds
|
|
|
|
checkedPartner := make([]map[string]interface{}, len(partnerList))
|
|
|
|
for i := range partnerList {
|
|
|
|
m := map[string]interface{}{
|
|
|
|
"id": partnerList[i].Partner.Id,
|
|
|
|
"name": partnerList[i].Partner.PartnerName,
|
|
|
|
}
|
|
|
|
checkedPartner = append(checkedPartner, m)
|
|
|
|
}
|
|
|
|
result["checkedPartner"] = checkedPartner
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
//EditUserPermission 编辑用户的权限
|
|
|
|
func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCommand) error {
|
|
|
|
var (
|
|
|
|
transactionContext, _ = factory.CreateTransactionContext(nil)
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
if err = transactionContext.StartTransaction(); err != nil {
|
|
|
|
return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
defer func() {
|
|
|
|
transactionContext.RollbackTransaction()
|
|
|
|
}()
|
|
|
|
var (
|
|
|
|
userRespository domain.UsersRepository
|
|
|
|
usersData domain.Users
|
|
|
|
permissionRepository domain.AdminPermissionRepository
|
|
|
|
permissionList []domain.AdminPermission
|
|
|
|
partnerRespository domain.PartnerInfoRepository
|
|
|
|
partnerList []domain.PartnerInfo
|
|
|
|
)
|
|
|
|
if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
usersData, err = userRespository.FindOne(domain.UsersFindOneQuery{
|
|
|
|
Id: cmd.Id,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("获取用户(id=%d)数据失败,%s", cmd.Id, err)
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
if !usersData.InCompany(cmd.CompanyId) {
|
|
|
|
return lib.ThrowError(lib.BUSINESS_ERROR, "提交的数据异常")
|
|
|
|
}
|
|
|
|
if usersData.IsSuperAdmin() {
|
|
|
|
//超级管理员无需编辑权限
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
if permissionRepository, err = factory.CreateAdminPermissionRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
if len(cmd.PermissionType) > 0 {
|
|
|
|
permissionList, err = permissionRepository.Find(domain.PermissionFindOption{
|
|
|
|
Ids: cmd.PermissionType,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("获取权限列表数据失败:%s", err)
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if partnerRespository, err = factory.CreatePartnerInfoRepository(map[string]interface{}{
|
|
|
|
"transactionContext": transactionContext,
|
|
|
|
}); err != nil {
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
}
|
|
|
|
if len(cmd.CheckedPartner) > 0 {
|
|
|
|
partnerList, err = partnerRespository.Find(domain.PartnerFindQuery{
|
|
|
|
Ids: cmd.CheckedPartner,
|
|
|
|
CompanyId: cmd.CompanyId,
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("获取合伙人列表数据失败:%s", err)
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var (
|
|
|
|
partners = make([]domain.Partner, len(partnerList))
|
|
|
|
permissionsBase = make([]domain.AdminPermissionBase, len(permissionList))
|
|
|
|
)
|
|
|
|
for i := range partnerList {
|
|
|
|
p := partnerList[i].Partner
|
|
|
|
partners = append(partners, p)
|
|
|
|
}
|
|
|
|
for i := range permissionList {
|
|
|
|
if permissionList[i].Code == domain.PERMINSSION_ADMIN_USER {
|
|
|
|
return lib.ThrowError(lib.BUSINESS_ERROR, "操作异常")
|
|
|
|
}
|
|
|
|
p := domain.AdminPermissionBase{
|
|
|
|
Id: permissionList[i].Id,
|
|
|
|
Code: permissionList[i].Code,
|
|
|
|
}
|
|
|
|
permissionsBase = append(permissionsBase, p)
|
|
|
|
}
|
|
|
|
|
|
|
|
_ = usersData.Update(map[string]interface{}{
|
|
|
|
"AccessPartners": partners,
|
|
|
|
"Permission": permissionsBase,
|
|
|
|
})
|
|
|
|
err = userRespository.Edit(&usersData)
|
|
|
|
if err != nil {
|
|
|
|
e := fmt.Sprintf("更新用户(id=%d)数据失败:%s", usersData.Id, err)
|
|
|
|
return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e)
|
|
|
|
}
|
|
|
|
err = transactionContext.CommitTransaction()
|
|
|
|
return nil
|
|
|
|
} |
...
|
...
|
|