You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
3.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}