|
|
package BaseRoleDao
|
|
|
|
|
|
import (
|
|
|
"dsBaseRpc/RpcService/BaseRole/BaseRoleProto"
|
|
|
"dsBaseRpc/Utils/CommonUtil"
|
|
|
"dsBaseRpc/Utils/DbUtil"
|
|
|
"dsBaseRpc/Utils/SqlKit"
|
|
|
"dsBaseRpc/models"
|
|
|
"github.com/xormplus/builder"
|
|
|
)
|
|
|
|
|
|
var db = DbUtil.Engine
|
|
|
|
|
|
//批量增加
|
|
|
func AddBaseRole(ms models.TBaseRole) (int64, error) {
|
|
|
return db.Insert(ms)
|
|
|
}
|
|
|
|
|
|
//检查一个角色编码是不是已存在
|
|
|
func ExistRoleCode(roleId string, roleCode string) (bool, error) {
|
|
|
sql := `select count(1) as c from t_base_role where b_use=1 and role_code=? and role_id<>?`
|
|
|
list, err := db.SQL(sql, roleCode, roleId).Query().List()
|
|
|
if err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
c := list[0]["c"].(int64)
|
|
|
if c == 0 {
|
|
|
return false, nil
|
|
|
} else {
|
|
|
return true, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//更新
|
|
|
func UpdateBaseRole(model models.TBaseRole, ForceUpdateFields []string) (int64, error) {
|
|
|
//1、清除Redis缓存
|
|
|
var ids = []string{model.RoleId}
|
|
|
var selector = SqlKit.GetBean("t_base_role")
|
|
|
SqlKit.DeleteCacheByIds(ids, selector)
|
|
|
//2、计算本次操作,有哪些字段需要更新
|
|
|
NeedUpdateFields := CommonUtil.GetNeedUpdateFields(model)
|
|
|
//3、合并强制更新的字段
|
|
|
ForceUpdateFields = append(ForceUpdateFields, NeedUpdateFields...)
|
|
|
//4、去重
|
|
|
ForceUpdateFields = CommonUtil.RemoveDuplicatesAndEmpty(ForceUpdateFields)
|
|
|
//5、更新操作,强制更新这些列
|
|
|
affected, err := db.ID(model.RoleId).Cols(ForceUpdateFields...).Update(model)
|
|
|
return affected, err
|
|
|
}
|
|
|
|
|
|
//分页查询
|
|
|
func PageBaseRole(in *BaseRoleProto.QueryArg) ([]map[string]interface{}, int32, error) {
|
|
|
//接收传入参数
|
|
|
var limit = int(in.Limit)
|
|
|
var offset = int((in.Page - 1) * in.Limit)
|
|
|
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("t1.*").From("t_base_role as t1")
|
|
|
myBuilder.InnerJoin("t_base_role_app as t2", "t1.role_id=t2.role_id")
|
|
|
myBuilder.And(builder.Eq{"t2.app_id": in.AppId})
|
|
|
myBuilder.And(builder.Eq{"t1.identity_id": in.IdentityId})
|
|
|
myBuilder.And(builder.Eq{"t1.b_use": 1})
|
|
|
myBuilder.And(builder.Eq{"t2.b_use": 1})
|
|
|
//获取拼接完成的SQL语句
|
|
|
sql, err := myBuilder.OrderBy("t1.sort_id").Limit(limit, offset).ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return nil, 0, err
|
|
|
}
|
|
|
//调用多查询字段通用方法
|
|
|
list, count, err := SqlKit.Query(sql)
|
|
|
return list, count, err
|
|
|
}
|
|
|
|
|
|
//增加角色与系统的关联关系
|
|
|
func AddRoleAppReleation(ms models.TBaseRoleApp) (int64, error) {
|
|
|
return db.Insert(ms)
|
|
|
}
|
|
|
|
|
|
//删除角色与系统的关联关系
|
|
|
func DeleteRoleAppRepleation(roleId string) {
|
|
|
sql := `update t_base_role_app set b_use=-2 where role_id=? and b_use=1`
|
|
|
db.SQL(sql, roleId).Execute()
|
|
|
}
|
|
|
|
|
|
//获取角色与系统的关联关系
|
|
|
func GetRoleAppRepleation(roleId string) ([]map[string]interface{}, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("t1.*,t2.app_name").From("t_base_role_app as t1")
|
|
|
myBuilder.InnerJoin("t_app_base as t2", "t1.app_id=t2.app_id")
|
|
|
myBuilder.And(builder.Eq{"t1.role_id": roleId})
|
|
|
myBuilder.And(builder.Eq{"t1.b_use": 1})
|
|
|
//获取拼接完成的SQL语句
|
|
|
sql, err := myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
//调用多查询字段通用方法
|
|
|
list, _, err := SqlKit.Query(sql)
|
|
|
return list, err
|
|
|
}
|