package logic import ( "context" "errors" "fmt" "git.i2edu.net/i2/i2-bill-erp/internal/svc" "git.i2edu.net/i2/i2-bill-erp/transform" "git.i2edu.net/i2/go-zero/core/logx" ) type GetErpRoleLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewGetErpRoleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetErpRoleLogic { return &GetErpRoleLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 获取 erp 用户角色 func (l *GetErpRoleLogic) GetErpRole(in *transform.GetErpRoleReq) (*transform.GetErpRoleRes, error) { // todo: add your logic here and delete this line if in.Mobile == "" && in.UserId == "" { return nil, errors.New("mobile and user_id is empty") } sql := `select sys_user.id user_id,GROUP_CONCAT(sys_role.code) role,sys_user_school.os_id sch_id,sys_user.mobile from sys_user LEFT JOIN sys_user_role on sys_user.id=sys_user_role.user_id LEFT JOIN sys_role on sys_user_role.role_id= sys_role.id LEFT JOIN sys_user_school on sys_user_school.user_id = sys_user.id where sys_user_role.del_flag =0 and sys_user.status = 0 and sys_user.del_flag = 0 %s GROUP BY sys_user.mobile` var args string if in.Mobile != "" { args = in.Mobile sql = fmt.Sprintf(sql, " and sys_user.mobile = ? ") } if in.UserId != "" { args = in.UserId sql = fmt.Sprintf(sql, " and sys_user.id = ? ") } result, err := l.svcCtx.DB.SQL(sql, args).Query().List() if err != nil { return nil, err } if len(result) == 0 { return &transform.GetErpRoleRes{}, nil } user_id, _ := result[0]["user_id"].(string) role, _ := result[0]["role"].(string) sch_id, _ := result[0]["sch_id"].(int64) return &transform.GetErpRoleRes{UserId: user_id, Role: role, SchId: sch_id}, nil }