123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- package logic
- import (
- "context"
- "fmt"
- "strings"
- "git.i2edu.net/i2/i2-bill-erp/internal/svc"
- "git.i2edu.net/i2/i2-bill-erp/model"
- "git.i2edu.net/i2/i2-bill-erp/transform"
- "github.com/thoas/go-funk"
- "git.i2edu.net/i2/go-zero/core/logx"
- )
- var roleMap = map[string]map[string]string{
- // ##渠道一级
- "one_level_channel": map[string]string{"市场": "1001", "网络": "1002", "老推": "1003", "品牌": "1004", "其他": "1005"},
- // ##任务
- // #目标计划
- // 市场人员计划
- "mkt_marketer_plan_target": map[string]string{"市场人员划分": "user", "校区划分": "os"}, //
- // 校区市场计划
- "mkt_sch_market_plan": map[string]string{"校区划分": "os"},
- // 销售人员计划
- "mkt_ec_user_targetplan": map[string]string{"销售人员划分": "user", "校区划分": "os"}, //
- // 校区销售计划
- "mkt_sch_targetsign_plan": map[string]string{"校区划分": "os"},
- // 客服人员计划
- "mkt_ta_target_plan": map[string]string{"客服人员划分": "user", "校区划分": "os"}, //
- // 校区客服计划
- "mkt_sch_ta_targetplan": map[string]string{"校区划分": "os"},
- // 生日提醒
- "remind_birthday": map[string]string{"跟进校区划分": "os", "班型客服划分": "ta"},
- // ##营销
- // #线索管理
- // 线索学员
- "mkt_resource": map[string]string{"资源销售划分": "ec", "资源收集人划分": "load_user", "资源收集校区划分": "os",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "非网络渠道划分": "no_tmk", "分配tmk划分": "allot_tmk", "资源录入人划分": "create_by", "收集城市划分": "tmk_city",
- "资源收集校区筛选": "load_sch", "资源跟进校区筛选": "stu_sch"},
- // 市场活动管理
- "mkt_activity": map[string]string{"活动创建人划分": "user", "活动校区划分": "os"},
- // #潜在学员管理
- // 潜在学员列表
- "existing_students": map[string]string{"学员销售划分": "ec", "学员跟进校区划分": "os",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "资源收集校区筛选": "load_sch", "资源跟进校区筛选": "stu_sch", "资源收集人划分": "load_user", "分配tmk划分": "allot_tmk"},
- // 老推学员列表
- "old_students": map[string]string{"资源收集人划分": "load_user", "学员跟进校区划分": "os"},
- // 邀约上门学员列表
- "mkt_invite_visit": map[string]string{"资源收集人划分": "load_user", "学员销售划分": "ec", "资源收集校区划分": "os"},
- // 无效资源列表
- "invalid_students": map[string]string{"学员销售划分": "ec", "学员跟进校区划分": "os"},
- // #试听课管理
- // 试听课列表
- "mkt_trial_lesson": map[string]string{"试听课客服划分": "ta", "试听课教师划分": "tea", "试听课校区划分": "os"},
- // 试听课学员列表
- "mkt_trial_lesson_student": map[string]string{"学员销售划分": "ec", "试听课教师划分": "ta", "试听课校区划分": "os",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "收集城市划分": "tmk_city", "分配tmk划分": "allot_tmk", "资源收集人划分": "load_user", "资源收集校区划分": "load_sch"},
- // tmk待分配学员列表
- "mkt_stu_unallot_tmk": map[string]string{"资源销售划分": "ec", "资源收集人划分": "load_user", "资源收集校区划分": "os",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "非网络渠道划分": "no_tmk", "资源录入人划分": "create_by", "收集城市划分": "tmk_city"},
- // tmk已分配学员列表
- "mkt_stu_allot_tmk": map[string]string{"收集城市划分": "os", "资源收集人划分": "user", "分配tmk划分": "tmk_user",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other"},
- // 学员回访列表
- "mkt_student_visit": map[string]string{"学员销售划分": "ec", "学员跟进校区划分": "os"},
- // ##教务
- "stu_class": map[string]string{"班级客服划分": "kf", "学员跟进校区划分": "os"},
- "edu_tea_leave_management": map[string]string{"教师所属校区划分": "sys_os", "教师权限校区划分": "os", "教师划分": "tea"},
- "crm_complaints_repair_order": map[string]string{"校区划分": "os"},
- "order_student_class_type": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "签单校区划分": "of_os",
- "学员跟进校区划分": "os"},
- "order_deposit_in": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "学员跟进校区划分": "os"},
- "edu_sc_class_tea": map[string]string{"班级所在校区划分": "os", "班级客服划分": "ta"},
- "stu_tea_class_schedule": map[string]string{"班级所在校区划分": "os", "班级客服划分": "ta"},
- // ##财务
- "order_form": map[string]string{"学员跟进校区划分": "os", "签单校区划分": "of_os", "学员销售划分": "ec", "分配tmk划分": "allot_tmk",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "学员收集人划分": "load_user", "学员班型客服划分": "ta", "收集城市划分": "tmk_city", "资源收集校区划分": "load_sch"},
- "order_tb_form": map[string]string{"学员跟进校区划分": "os", "签单校区划分": "of_os", "学员销售划分": "ec", "分配tmk划分": "allot_tmk",
- "网络渠道划分": "tmk", "市场渠道划分": "mkt", "品牌渠道划分": "prod", "老推渠道划分": "old", "其他渠道划分": "other",
- "学员收集人划分": "load_user", "学员班型客服划分": "ta", "收集城市划分": "tmk_city", "资源收集校区划分": "load_sch"},
- "order_refund": map[string]string{"学员跟进校区划分": "os", "签单校区划分": "of_os", "学员销售划分": "ec",
- "学员收集人划分": "load_user", "班型分配班级客服划分": "ta"},
- "fin_temp_storage_cz": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "学员跟进校区划分": "os"},
- "fn_student_account": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "学员跟进校区划分": "os"},
- "fin_stu_account_flow": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "学员跟进校区划分": "os"},
- "fin_invoice": map[string]string{"学员销售划分": "ec", "班型客服划分": "ta", "签单校区划分": "os"},
- "fin_stu_integral_flow": map[string]string{"学员跟进校区划分": "os"},
- "fin_yb_pay_flowing": map[string]string{"支付校区划分": "os"},
- "fin_yeepay_reconciliations_record": map[string]string{"流水支付校区划分": "os"},
- "base_class_manage": map[string]string{"班级客服划分": "ta", "班级校区划分": "os"},
- "student": map[string]string{"学员跟进校区划分": "os", "学员销售划分": "ec", "学员收集人划分": "load_user", "班型分配客服划分": "ta"},
- "order_student_gift": map[string]string{"学员跟进校区划分": "os", "班级客服划分": "ta"},
- "edu_stu_ct_renew_log": map[string]string{"班型客服划分": "ta", "学员跟进校区划分": "os"},
- "attendance_list": map[string]string{"班级校区划分": "os", "教师划分": "tea", "班型客服划分": "ta"},
- "role_trial_lesson": map[string]string{"班级校区划分": "os", "教师划分": "tea", "试听课销售划分": "ec"},
- "sys_user": map[string]string{"所属校区划分": "sys_os", "权限校区划分": "base_os"},
- // "base_on_sale": map[string]string{"校区划分": "os"},
- "stu_class_type_textbook": map[string]string{"学员跟进校区划分": "os"},
- "edu_class_schedule_student": map[string]string{"班级客服划分": "ta", "学员跟进校区划分": "os"},
- "edu_class_schedule_student_absenceList": map[string]string{"班型客服划分": "ta", "学员跟进校区划分": "os"},
- "base_organ_school": map[string]string{"权限校区划分": "os"},
- "ecs_stu": map[string]string{"班型客服划分": "ecs_ta", "班级状态修改权限": "manage"},
- "encode": map[string]string{"导出联系方式加密": "export_stu_phone", "显示联系方式不加密": "list_stu_phone"},
- "order_exchange_gift_jfsc": map[string]string{"积分兑换记录用户权限校区": "os"},
- "task_pg": map[string]string{"批改作业权限": "os"},
- "cmp_plan": map[string]string{"权限校区划分": "os", "班级客服划分": "ta"},
- "eschool_stu_study_report": map[string]string{"班级所在校区划分": "os", "班级客服划分": "ta"},
- "order_sch_achievement_divide": map[string]string{"所属校区划分": "base_os", "权限校区划分": "sys_os"},
- "user_city": map[string]string{"所属校区划分": "base_os", "权限校区划分": "sys_os", "学员跟进校区划分": "os"},
- "rl_hour_list": map[string]string{"权限校区划分": "os"},
- "eschool_class_schedule_unit_pick": map[string]string{"学员跟进校区划分": "os", "班型客服划分": "ta"},
- "teacher_ft": map[string]string{"权限校区划分": "os"},
- "teacher_oa": map[string]string{"权限校区划分": "os"},
- "fin_pay_flowing": map[string]string{"权限校区划分": "os"},
- "fin_reconciliations_record": map[string]string{"权限校区划分": "os"},
- // 收单的数据
- "acquirer_student": map[string]string{"本人及所管兼职划分": "self_acquirer", "本人及所管兼职和专员划分": "self_acquirer_market", "所管兼职和市场划分": "acquirer_market_mgn"},
- // 兼职人员的数据
- "part_time_user": map[string]string{"所有数据": "all", "所管兼职": "self_part_time", "mk归属校区": "mk_sch"},
- }
- type GetDataPermissionLogic struct {
- ctx context.Context
- svcCtx *svc.ServiceContext
- logx.Logger
- }
- func NewGetDataPermissionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetDataPermissionLogic {
- return &GetDataPermissionLogic{
- ctx: ctx,
- svcCtx: svcCtx,
- Logger: logx.WithContext(ctx),
- }
- }
- // 获取数据权限
- func (l *GetDataPermissionLogic) GetDataPermission(in *transform.DataPermissionReq) (*transform.DataPermissionRes, error) {
- rule_code, UserId, params := in.RuleCode, in.UserId, transform.DataPermissionRes{MapList: map[string]string{}}
- var channelMap = map[string]string{
- "mkt": "1001", "tmk": "1002", "old": "1003", "other": "1005", "prod": "1004",
- }
- mainRoleCode := []string{"tmk", "mkt", "prod", "old", "other", "no_tmk"}
- if roleM, ok := roleMap[rule_code]; ok {
- var roleRules []model.SysDataPermissionDetail
- err := l.svcCtx.SqlConn.QueryRowsPartial(&roleRules, `SELECT
- sys_data_permission_detail.*
- FROM
- sys_data_permission, sys_data_permission_detail,sys_user_role
- WHERE
- sys_data_permission.id = sys_data_permission_detail.data_permission_id
- AND FIND_IN_SET(sys_user_role.role_id, sys_data_permission_detail.role_id)
- AND sys_user_role.del_flag = 0
- AND sys_data_permission_detail.del_flag = 0
- AND sys_data_permission.code = ?
- AND sys_user_role.user_id = ?`, rule_code, UserId)
- if err == nil && len(roleRules) > 0 {
- roles := funk.Get(roleRules, "Rule").([]string)
- roleStr := strings.Join(roles, ",")
- if rule_code == "one_level_channel" {
- params.MapList["role_channel"] = roleStr
- } else {
- var role_channel []string
- for _, code := range mainRoleCode {
- if strings.Index(fmt.Sprintf(",%v,", roleStr), fmt.Sprintf(",%v,", code)) >= 0 {
- if channel, ok := channelMap[code]; ok {
- role_channel = append(role_channel, channel)
- } else {
- params.MapList[fmt.Sprintf("role_%v", code)] = "true"
- }
- }
- }
- if len(role_channel) > 0 {
- params.MapList["role_channel"] = strings.Join(role_channel, ",")
- }
- // 并列权限,如果有了os的权限,其他的权限就不使用了,如果需要增加别的权限需要在此之前设置
- if strings.Index(fmt.Sprintf(",%v,", roleStr), ",os,") >= 0 {
- params.MapList["role_os"] = "true"
- } else {
- for _, v := range roleM {
- if strings.Index(fmt.Sprintf(",%v,", roleStr), fmt.Sprintf(",%v,", v)) >= 0 {
- params.MapList[fmt.Sprintf("role_%v", v)] = "true"
- }
- }
- }
- }
- }
- }
- return ¶ms, nil
- }
|