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 }