|
|
package scripts
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"mygo/dbhelper"
|
|
|
"mygo/libs"
|
|
|
"mygo/model"
|
|
|
"mygo/response"
|
|
|
"mygo/say"
|
|
|
"mygo/validator"
|
|
|
"strconv"
|
|
|
|
|
|
"github.com/labstack/echo/v4"
|
|
|
"gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
//获取角色下的用户列表
|
|
|
func GetUsersByRoleId(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
role_id := c.QueryParam("role_id")
|
|
|
data := response.AdminListResponse{}
|
|
|
if id == "" || role_id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
page, _ := strconv.Atoi(c.QueryParam("page"))
|
|
|
if page <= 0 {
|
|
|
page = 1
|
|
|
}
|
|
|
limit, _ := strconv.Atoi(c.QueryParam("limit"))
|
|
|
|
|
|
if limit <= 0 {
|
|
|
limit = 10
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
var count int64 = 0
|
|
|
|
|
|
db.Where("role_id = ?", role_id).Find(&model.UserRole{}).Count(&count)
|
|
|
|
|
|
offset := (page - 1) * limit
|
|
|
users, _ := model.GetUsersByRoleId(db, role_id, offset, limit)
|
|
|
data.Users = users
|
|
|
data.Count = count
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func GetRoleByUserId(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
user_id := c.QueryParam("user_id")
|
|
|
data := response.GetRoleResponse{}
|
|
|
if id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
if user_id == "" {
|
|
|
user_id = id
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
r, err := model.GetRoleByUserId(db, user_id)
|
|
|
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
if r.RoleID == "" {
|
|
|
return say.Success(c, 10006, data)
|
|
|
}
|
|
|
|
|
|
role, err := model.GetRoleById(db, r.RoleID)
|
|
|
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
if role.ID == "" {
|
|
|
return say.Success(c, 10006, data)
|
|
|
}
|
|
|
|
|
|
data.Role = role
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
//角色批量绑定用户
|
|
|
func RoleBindUser(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.RoleBindUserBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || len(body.Users) <= 0 || body.RoleID == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
role_id := body.RoleID
|
|
|
role, err := model.GetRoleById(db, role_id)
|
|
|
if err != nil || role.ID == "" {
|
|
|
return say.Success(c, 10006, data)
|
|
|
}
|
|
|
|
|
|
//启动事务
|
|
|
txerr := db.Transaction(func(tx *gorm.DB) error {
|
|
|
// 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db')
|
|
|
|
|
|
for _, user_id := range body.Users {
|
|
|
|
|
|
r, err := model.GetUserRole(tx, user_id, role_id)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
if r.ID != "" {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
route := model.UserRole{
|
|
|
ID: libs.GenId(),
|
|
|
UserID: user_id,
|
|
|
RoleID: role_id,
|
|
|
}
|
|
|
|
|
|
if err := tx.Create(&route).Error; err != nil {
|
|
|
// 返回任何错误都会回滚事务
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 返回 nil 提交事务
|
|
|
return nil
|
|
|
})
|
|
|
|
|
|
if txerr != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
//用户绑定角色
|
|
|
func UserBindRole(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.UserBindRoleBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserID == "" || body.RoleID == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
user_id := body.UserID
|
|
|
|
|
|
user, err := model.GetUserById(db, user_id)
|
|
|
if err != nil || user.ID == "" {
|
|
|
return say.Success(c, 10004, data)
|
|
|
}
|
|
|
|
|
|
role_id := body.RoleID
|
|
|
role, err := model.GetRoleById(db, role_id)
|
|
|
|
|
|
if err != nil || role.ID == "" {
|
|
|
return say.Success(c, 10006, data)
|
|
|
}
|
|
|
|
|
|
r, err := model.GetRoleByUserId(db, user_id)
|
|
|
|
|
|
if err != nil || r.ID != "" {
|
|
|
a := model.UserRole{
|
|
|
UserID: user_id,
|
|
|
RoleID: r.RoleID,
|
|
|
}
|
|
|
if err := db.Delete(&model.UserRole{}, &a).Error; err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
a := model.UserRole{
|
|
|
ID: libs.GenId(),
|
|
|
UserID: user_id,
|
|
|
RoleID: role_id,
|
|
|
}
|
|
|
|
|
|
if err := db.Create(&a).Error; err != nil {
|
|
|
fmt.Println("插入失败 err=", err)
|
|
|
return say.Success(c, 10011, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
//用户绑定角色通过code
|
|
|
func UserBindByRoleCode(c echo.Context) error {
|
|
|
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.UserBindByRoleCodeBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserID == "" || body.RoleCode == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
user_id := body.UserID
|
|
|
|
|
|
user, err := model.GetUserById(db, user_id)
|
|
|
if err != nil || user.ID == "" {
|
|
|
return say.Success(c, 10004, data)
|
|
|
}
|
|
|
|
|
|
role_code := body.RoleCode
|
|
|
role, err := model.GetRoleByCode(db, role_code)
|
|
|
|
|
|
if err != nil || role.ID == "" {
|
|
|
return say.Success(c, 10006, data)
|
|
|
}
|
|
|
|
|
|
r, err := model.GetRoleByUserId(db, user_id)
|
|
|
|
|
|
if err != nil || r.ID != "" {
|
|
|
a := model.UserRole{
|
|
|
UserID: user_id,
|
|
|
RoleID: r.RoleID,
|
|
|
}
|
|
|
if err := db.Delete(&model.UserRole{}, &a).Error; err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
a := model.UserRole{
|
|
|
ID: libs.GenId(),
|
|
|
UserID: user_id,
|
|
|
RoleID: role.ID,
|
|
|
}
|
|
|
|
|
|
if err := db.Create(&a).Error; err != nil {
|
|
|
fmt.Println("插入失败 err=", err)
|
|
|
return say.Success(c, 10011, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
//解除用户和角色的绑定
|
|
|
func DelRoleBind(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.UserBindRoleBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.UserID == "" || body.RoleID == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
user_id := body.UserID
|
|
|
|
|
|
role_id := body.RoleID
|
|
|
|
|
|
a := model.UserRole{
|
|
|
UserID: user_id,
|
|
|
RoleID: role_id,
|
|
|
}
|
|
|
|
|
|
if err := db.Delete(&model.UserRole{}, &a).Error; err != nil {
|
|
|
return say.Success(c, 10023, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|