切换导航条
此项目
正在载入...
登录
mmm-go
/
partnermg
·
提交
转到一个项目
GitLab
转到群组
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
唐旭辉
5 years ago
提交
9689dc887b13ad4f5b79e83586799a84edaf85be
1 个父辈
42aca3b1
成员管理 完成
隐藏空白字符变更
内嵌
并排对比
正在显示
9 个修改的文件
包含
324 行增加
和
11 行删除
pkg/application/users/command/edit_user_permission.go
pkg/application/users/query/user_list.go
pkg/application/users/service/service.go
pkg/domain/partner_info.go
pkg/infrastructure/pg/models/partner_info.go
pkg/infrastructure/repository/pg_partner_info_repository.go
pkg/port/beego/controllers/user_controller.go
pkg/port/beego/routers/router.go
pkg/port/beego/routers/router2.go
pkg/application/users/command/edit_user_permission.go
0 → 100644
查看文件 @
9689dc8
package
command
type
EditUserPermissionCommand
struct
{
Id
int64
`json:"id"`
CompanyId
int64
`json:"-"`
PermissionType
[]
int64
`json:"permissionType"`
//权限数据
CheckedPartner
[]
int64
`json:"checkedPartner"`
//可查看合伙人列表合伙人
}
...
...
pkg/application/users/query/user_list.go
查看文件 @
9689dc8
...
...
@@ -6,5 +6,6 @@ type UserListQuery struct {
// 查询偏离量
Offset
int
`json:"offset" `
// 查询限制
Limit
int
`json:"limit"`
Limit
int
`json:"limit"`
CompanyId
int64
`json:"companyId"`
}
...
...
pkg/application/users/service/service.go
查看文件 @
9689dc8
...
...
@@ -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
}
...
...
pkg/domain/partner_info.go
查看文件 @
9689dc8
...
...
@@ -46,6 +46,8 @@ type PartnerInfo struct {
PartnerCategoryInfos
[]
PartnerCategoryInfo
`json:"partnerCategoryInfos"`
//合伙类别
PartnerCategory
int
`json:"partnerCategory"`
//公司id
CompanyId
int64
`json:"companyId"`
}
func
(
p
*
PartnerInfo
)
GetPartnerCategory
()
map
[
int
]
string
{
...
...
@@ -63,6 +65,7 @@ func (p *PartnerInfo) IsUsable() bool {
type
PartnerFindOneQuery
struct
{
UserId
int64
AccountEqual
string
CompanyId
int64
}
type
PartnerFindQuery
struct
{
...
...
@@ -71,6 +74,8 @@ type PartnerFindQuery struct {
PartnerCategory
[]
int
//合伙人类型
RegionInfo
*
RegionInfo
//区域
PartnerName
string
//合伙人姓名
CompanyId
int64
Ids
[]
int64
}
type
PartnerInfoRepository
interface
{
...
...
pkg/infrastructure/pg/models/partner_info.go
查看文件 @
9689dc8
...
...
@@ -20,7 +20,6 @@ type PartnerInfo struct {
Password
string
// 状态(1:启用或者0:禁用)
Status
int
`pg:",use_zero"`
//所属区域信息
RegionInfo
*
domain
.
RegionInfo
//创建时间
...
...
@@ -35,6 +34,8 @@ type PartnerInfo struct {
PartnerCategory
int
`pg:",default:1"`
//partner_category
//合伙类别
PartnerCategoryInfos
[]
PartnerCategoryInfo
//公司id
CompanyId
int64
}
var
_
pg
.
BeforeUpdateHook
=
(
*
PartnerInfo
)(
nil
)
...
...
pkg/infrastructure/repository/pg_partner_info_repository.go
查看文件 @
9689dc8
...
...
@@ -30,6 +30,7 @@ func (repository *PartnerInfoRepository) transformPgModelToDomainModel(partnerIn
Salesman
:
partnerInfoModel
.
Salesman
,
RegionInfo
:
partnerInfoModel
.
RegionInfo
,
CooperateTime
:
partnerInfoModel
.
CooperateTime
,
CompanyId
:
partnerInfoModel
.
CompanyId
,
}
return
m
,
nil
}
...
...
@@ -56,6 +57,7 @@ func (repository *PartnerInfoRepository) Save(dm domain.PartnerInfo) (*domain.Pa
Salesman
:
dm
.
Salesman
,
RegionInfo
:
dm
.
RegionInfo
,
CooperateTime
:
dm
.
CooperateTime
,
CompanyId
:
dm
.
CompanyId
,
}
if
m
.
Id
==
0
{
err
=
tx
.
Insert
(
m
)
...
...
@@ -85,6 +87,9 @@ func (repository *PartnerInfoRepository) FindOne(queryOptions domain.PartnerFind
if
queryOptions
.
UserId
>
0
{
query
=
query
.
Where
(
"id=?"
,
queryOptions
.
UserId
)
}
if
queryOptions
.
CompanyId
>
0
{
query
=
query
.
Where
(
"company_id=?"
,
queryOptions
.
CompanyId
)
}
if
err
:=
query
.
First
();
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -105,13 +110,19 @@ func (repository *PartnerInfoRepository) Find(queryOption domain.PartnerFindQuer
if
len
(
queryOption
.
PartnerCategory
)
>
0
{
query
=
query
.
WhereIn
(
"partner_category in(?)"
,
queryOption
.
PartnerCategory
)
}
if
queryOption
.
CompanyId
>
0
{
query
=
query
.
Where
(
"company_id=?"
,
queryOption
.
CompanyId
)
}
if
len
(
queryOption
.
Ids
)
>
0
{
query
=
query
.
WhereIn
(
"id in(?)"
,
queryOption
.
Ids
)
}
if
queryOption
.
Offset
>
-
1
{
query
=
query
.
Offset
(
queryOption
.
Offset
)
}
if
queryOption
.
Limit
>
0
{
query
=
query
.
Limit
(
queryOption
.
Limit
)
}
else
{
query
=
query
.
Limit
(
2
0
)
query
=
query
.
Limit
(
100
0
)
}
var
(
err
error
...
...
@@ -145,6 +156,9 @@ func (repository PartnerInfoRepository) CountAll(queryOption domain.PartnerFindQ
if
len
(
queryOption
.
PartnerCategory
)
>
0
{
query
=
query
.
WhereIn
(
"partner_category in(?)"
,
queryOption
.
PartnerCategory
)
}
if
queryOption
.
CompanyId
>
0
{
query
=
query
.
Where
(
"company_id=?"
,
queryOption
.
CompanyId
)
}
cnt
,
err
:=
query
.
Count
()
return
cnt
,
err
}
...
...
pkg/port/beego/controllers/user_controller.go
查看文件 @
9689dc8
...
...
@@ -4,6 +4,9 @@ import (
"errors"
"github.com/astaxie/beego/logs"
adminPermissionquery
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminPermission/query"
adminPermissionService
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminPermission/service"
userCommand
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/command"
userQuery
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/query"
userService
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/service"
"gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
...
...
@@ -25,7 +28,7 @@ func (c *UserController) Prepare() {
}
//ListUser 获取用户分页列表
func
(
c
*
Admin
UserController
)
ListUser
()
{
func
(
c
*
UserController
)
ListUser
()
{
//用与适配前端定义的数据结构
type
Paramter
struct
{
SearchText
string
`json:"searchText"`
...
...
@@ -52,6 +55,7 @@ func (c *AdminUserController) ListUser() {
UserNameMatch
:
param
.
SearchText
,
Limit
:
param
.
PageSize
,
Offset
:
param
.
PageSize
*
(
param
.
PageNumber
-
1
),
CompanyId
:
c
.
GetUserCompany
(),
}
cnt
,
usersData
,
err
:=
newUserService
.
GetUserList
(
queryOption
)
if
err
!=
nil
{
...
...
@@ -61,3 +65,97 @@ func (c *AdminUserController) ListUser() {
c
.
ResponsePageList
(
usersData
,
cnt
,
param
.
PageNumber
)
return
}
//BeforeEditUser 编辑用户数据的前置接口
func
(
c
*
UserController
)
BeforeEditUser
()
{
newPermissionSrv
:=
adminPermissionService
.
NewAdminPermissionService
(
nil
)
allPermission
,
err
:=
newPermissionSrv
.
ListAdminPermission
(
adminPermissionquery
.
ListAdminPermissionQuery
{
ParentId
:
0
,
NotCode
:
[]
string
{
domain
.
PERMINSSION_ADMIN_USER
},
})
if
err
!=
nil
{
logs
.
Error
(
"获取权限数据失败:%s"
,
err
)
c
.
ResponseError
(
errors
.
New
(
"服务异常"
))
return
}
var
rspData
[]
map
[
string
]
interface
{}
for
i
:=
range
allPermission
{
if
allPermission
[
i
]
.
Code
==
domain
.
PERMINSSION_ADMIN_USER
{
continue
}
m
:=
map
[
string
]
interface
{}{
"id"
:
allPermission
[
i
]
.
Id
,
"permissionName"
:
allPermission
[
i
]
.
Name
,
}
rspData
=
append
(
rspData
,
m
)
}
c
.
ResponseData
(
rspData
)
return
}
//GetUserData 用户详情页数据
func
(
c
*
UserController
)
GetUserData
()
{
//用与适配前端定义的数据结构
type
Paramter
struct
{
Id
int64
`json:"id"`
}
var
(
param
Paramter
err
error
)
if
err
=
c
.
BindJsonData
(
&
param
);
err
!=
nil
{
logs
.
Error
(
err
)
c
.
ResponseError
(
errors
.
New
(
"json数据解析失败"
))
return
}
companyId
:=
c
.
GetUserCompany
()
newUserService
:=
userService
.
NewUsersService
(
nil
)
usersData
,
err
:=
newUserService
.
GetUserData
(
param
.
Id
,
companyId
)
if
err
!=
nil
{
c
.
ResponseError
(
err
)
return
}
c
.
ResponseData
(
usersData
)
return
}
//EditUserPermission 编辑用户的权限数据
func
(
c
*
UserController
)
EditUserPermission
()
{
type
PartnerList
struct
{
Id
int64
`json:"id"`
}
type
UserDetailParam
struct
{
Id
int64
`json:"id"`
PermissionType
[]
int64
`json:"permissionType"`
CheckedPartner
[]
PartnerList
`json:"checkedPartner"`
//合伙人
}
var
(
param
UserDetailParam
err
error
)
if
err
=
c
.
BindJsonData
(
&
param
);
err
!=
nil
{
logs
.
Error
(
err
)
c
.
ResponseError
(
errors
.
New
(
"json数据解析失败"
))
return
}
companyId
:=
c
.
GetUserCompany
()
newUserService
:=
userService
.
NewUsersService
(
nil
)
var
(
partnerIds
=
make
([]
int64
,
len
(
param
.
CheckedPartner
))
)
for
_
,
v
:=
range
param
.
CheckedPartner
{
partnerIds
=
append
(
partnerIds
,
v
.
Id
)
}
err
=
newUserService
.
EditUserPermission
(
userCommand
.
EditUserPermissionCommand
{
Id
:
param
.
Id
,
CompanyId
:
companyId
,
PermissionType
:
param
.
PermissionType
,
CheckedPartner
:
partnerIds
,
})
if
err
!=
nil
{
c
.
ResponseError
(
err
)
return
}
c
.
ResponseData
(
nil
)
return
}
...
...
pkg/port/beego/routers/router.go
查看文件 @
9689dc8
...
...
@@ -14,11 +14,11 @@ func init() {
// beego.NSRouter("/pwd-update", &controllers.AdminLoginController{}, "POST:PwdUpdate"),
),
beego
.
NSNamespace
(
"/admin"
,
beego
.
NSRouter
(
"/update"
,
&
controllers
.
AdminUserController
{},
"POST:SaveAdminUser"
),
beego
.
NSRouter
(
"/detail"
,
&
controllers
.
AdminUserController
{},
"POST:GetAdminUser"
),
beego
.
NSRouter
(
"/list"
,
&
controllers
.
AdminUserController
{},
"POST:ListAdminUser"
),
beego
.
NSRouter
(
"/forbidden"
,
&
controllers
.
AdminUserController
{},
"POST:ForbiddenAdminUser"
),
beego
.
NSRouter
(
"/permission"
,
&
controllers
.
AdminUserController
{},
"POST:BeforeEditAdminUser"
),
beego
.
NSRouter
(
"/update"
,
&
controllers
.
UserController
{},
"POST:EditUserPermission"
),
beego
.
NSRouter
(
"/detail"
,
&
controllers
.
UserController
{},
"POST:GetUserData"
),
beego
.
NSRouter
(
"/list"
,
&
controllers
.
UserController
{},
"POST:ListUser"
),
// beego.NSRouter("/forbidden", &controllers.UserController{}, "POST:ForbiddenAdminUser"),
beego
.
NSRouter
(
"/permission"
,
&
controllers
.
UserController
{},
"POST:BeforeEditUser"
),
),
beego
.
NSNamespace
(
"/partners"
,
beego
.
NSRouter
(
"/list"
,
&
controllers
.
PartnerInfoController
{},
"POST:ListPartnerInfo"
),
...
...
pkg/port/beego/routers/router2.go
查看文件 @
9689dc8
...
...
@@ -6,7 +6,6 @@ import (
)
//外部调用,企业平台,总后台调用
func
init
()
{
nsPlatform
:=
beego
.
NewNamespace
(
"/platform"
,
beego
.
NSRouter
(
"/action"
,
&
controllers
.
SyncDataController
{},
"post:SyncData"
),
...
...
@@ -14,7 +13,7 @@ func init() {
)
nsUcenter
:=
beego
.
NewNamespace
(
"/ucenter"
,
beego
.
NSRouter
(
"/company/allow_forbid"
,
&
controllers
.
SyncDataController
{},
"post:AllowForidCompany"
),
beego
.
NSRouter
(
"/company/info"
,
&
controllers
.
SyncDataController
{},
"post:GetCompanyInfo"
),
//
beego.NSRouter("/company/info", &controllers.SyncDataController{}, "post:GetCompanyInfo"),
)
beego
.
AddNamespace
(
nsPlatform
)
//企业平台调用
...
...
请
注册
或
登录
后发表评论