package db import ( "applet/app/db/model" "applet/app/e" "applet/app/utils" "applet/app/utils/logx" "errors" "fmt" "strconv" "strings" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" "xorm.io/xorm" ) // 返回所有, 不管是否显示 func SysModFindAll(Db *xorm.Engine) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.Find(&m); err != nil { return nil, err } return &m, nil } // 查找主模块数据 func SysModFindMain(Db *xorm.Engine) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.Where("mod_pid = 0 AND state = 1 AND position = 'base'"). Asc("sort"). Find(&m); err != nil { return nil, err } return &m, nil } // 用父ID查找子模块数据 func SysModFindByPId(c *gin.Context, Db *xorm.Engine, id int) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.Where("state = 1").Where("mod_pid = ?", id). Asc("sort"). Find(&m); err != nil { return nil, err } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } var ms []model.SysModule modname_list := []string{"product", "search_result_taobao_item", "hot_rank_tab_view"} for _, item := range *mm.(*[]model.SysModule) { if item.ModName == "product_detail_title" { if strings.Contains(item.Data, "tmall") == false { item.Data = strings.Replace(item.Data, "\"platform_css\":[", "\"platform_css\":[{\"name\":\"天猫\",\"type\":\"tmall\",\"text_color\":\"#FFFFFF\",\"bg_color\":\"#FF4242\"},", 1) } if strings.Contains(item.Data, "kuaishou") == false { item.Data = strings.Replace(item.Data, "\"platform_css\":[", "\"platform_css\":[{\"name\":\"快手\",\"type\":\"kuaishou\",\"text_color\":\"#FFFFFF\",\"bg_color\":\"#FF4242\"},", 1) } if strings.Contains(item.Data, "tikTok") == false { item.Data = strings.Replace(item.Data, "\"platform_css\":[", "\"platform_css\":[{\"name\":\"抖音\",\"type\":\"tikTok\",\"text_color\":\"#FFFFFF\",\"bg_color\":\"#FF4242\"},", 1) } } if strings.Contains(item.Data, "tmall") == false && utils.InArr(item.ModName, modname_list) { item.Data = strings.Replace(item.Data, "{\"index\":\"6\",\"type\":\"kaola\",\"platform_name\":\"考拉\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", "{\"index\":\"6\",\"type\":\"kaola\",\"platform_name\":\"考拉\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"},{\"index\":\"7\",\"type\":\"tmall\",\"platform_name\":\"天猫\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", 1) item.Data = strings.Replace(item.Data, "{\"type\":\"kaola\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", "{\"type\":\"kaola\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"},{\"type\":\"tmall\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", 1) } if strings.Contains(item.Data, "优惠卷") { item.Data = strings.Replace(item.Data, "优惠卷", "优惠券", -1) } item.Data = strings.ReplaceAll(item.Data, "\\/", "/") item.Data = strings.ReplaceAll(item.Data, "\\u0026", "&") ms = append(ms, item) } return &ms, nil } // 用父ID查找子模块数据 func SysModFindByPIds(c *gin.Context, Db *xorm.Engine, ids ...int) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.In("mod_pid", ids).Where("state = 1"). Asc("sort"). Find(&m); err != nil { return nil, err } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } var ms []model.SysModule for _, item := range *mm.(*[]model.SysModule) { //数据里面 if strings.Contains(item.Data, "tmall") == false && item.ModName == "product" { item.Data = strings.Replace(item.Data, "{\"index\":\"6\",\"type\":\"kaola\",\"platform_name\":\"考拉\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", "{\"index\":\"6\",\"type\":\"kaola\",\"platform_name\":\"考拉\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"},{\"index\":\"7\",\"type\":\"tmall\",\"platform_name\":\"天猫\",\"provider_name_color\":\"#FFFFFF\",\"provider_bg_color\":\"#FF4242\"}", 1) } item = SysModDataByReplace(c, item) ms = append(ms, item) } return &ms, nil } // 用IDS找对应模块数据 func SysModFindByIds(Db *xorm.Engine, ids ...int) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.In("mod_id", ids).Where("state = 1"). Cols("mod_id,mod_pid,mod_name,position,skip_identifier,title,subtitle,url,margin,aspect_ratio,icon,img,font_color,bg_img,bg_color,bg_color_t,badge,path,data,sort"). Asc("sort").Find(&m); err != nil { return nil, err } return &m, nil } // ID查找对应模块 func SysModFindById(c *gin.Context, Db *xorm.Engine, id string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND mod_id = ?", id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // SysModFindByTmpId is 根据模板 func SysModFindByTmpId(c *gin.Context, Db *xorm.Engine, id string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND template_id = ?", id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // Name查找对应模块 func SysModFindByName(c *gin.Context, Db *xorm.Engine, name string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND mod_name = ?", name). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // SysModFindByName is Name查找对应模块 func SysModFindByNames(names ...string) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.In("mod_name", names).Where("state = 1"). Cols("mod_id,mod_pid,mod_name,position,skip_identifier,title,subtitle,url,margin,aspect_ratio,icon,img,font_color,bg_img,bg_color,bg_color_t,badge,path,data,sort"). Find(&m); err != nil { return nil, err } return &m, nil } // SysModFindByPosition is 根据位置查找对应模块 func SysModFindByPosition(Db *xorm.Engine, positions ...string) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.In("position", positions).Where("state = 1").Find(&m); err != nil { return nil, err } return &m, nil } // 根据跳转标识 查找对应模块 func SysModFindBySkipIdentifier(c *gin.Context, Db *xorm.Engine, name string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND skip_identifier = ?", name). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } func SysModFindBySkipIdentifierWithUid(c *gin.Context, Db *xorm.Engine, name string, uid int) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND skip_identifier = ? and uid=?", name, uid). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // 根据跳转标识和位置 查找对应模块list func SysModFindBySkipIdentifierAndPosition(c *gin.Context, Db *xorm.Engine, name string, position string) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.Where("state = 1 AND skip_identifier = ? AND position = ?", name, position). Cols("mod_id,mod_pid,mod_name,position,skip_identifier,title,subtitle,url,margin,aspect_ratio,icon,img,font_color,bg_img,bg_color,bg_color_t,badge,path,data,sort"). Asc("sort").Find(&m); err != nil { return nil, err } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*[]model.SysModule), nil } func SysModFindByTempId(Db *xorm.Engine, ids []int) (*[]model.SysModule, error) { var m []model.SysModule if err := Db.Where("state = 1 ").In("template_id", ids).Asc("sort").Find(&m); err != nil { return nil, err } return &m, nil } // SysModFindByTemplateIDAndSkip is 根据模板id 查找对应模块 func SysModFindByTemplateIDAndSkip(Db *xorm.Engine, id interface{}, skip string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND template_id = ? AND skip_identifier = ?", id, skip). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // SysModFindByTemplateIDAndPID is 根据模板id 和pid =0 查找父模块 func SysModFindByTemplateIDAndPID(Db *xorm.Engine, id interface{}, pid interface{}) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND template_id = ? AND mod_pid = ?", id, pid). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // SysModFindByTemplateIDAndModName is 根据模板id 和mod name 查找模块 func SysModFindByTemplateIDAndModName(Db *xorm.Engine, id interface{}, modName string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = ?", id, modName). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } func SysModFindByTemplateIDAndModNameWithIds(Db *xorm.Engine, ids []int, modName string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.In("template_id", ids).And(" mod_name = ?", modName). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // SysModFindNavIsUsed 查找正在使用的底部导航栏模板 func SysModFindNavIsUsedByPlatform(c *gin.Context, Db *xorm.Engine, platform string) (*model.SysModule, error) { var ( tm model.SysTemplate m model.SysModule ) mid := c.GetString("mid") fmt.Println("===================================app_type", c.GetString("app_type")) if c.GetString("app_type") != "" && c.GetString("app_type") != "daogou" { var ( tempType string ) switch c.GetString("app_type") { case "o2o": tempType = "o2o_store_bottomNav" } switch platform { case "ios": if has, err := Db.Where("is_use = 1 AND type = ? AND platform = 2 ", tempType). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } appVersion := GetCloudBuild(c, platform) if c.GetHeader("app_version_name") == appVersion && c.GetHeader("app_version_name") != "" { m, err := GetCloudBundleByVersion(Db, appVersion, 2, 1) if err != nil { return nil, logx.Warn(err) } tm.Id = int(gjson.Get(m.TemplateDuringAudit, "bottom").Int()) } case "android": has, err := Db.Where("is_use = 1 AND type = ? AND platform = 2 ", tempType).Cols("id,uid,name,is_use,is_system").Get(&tm) if err != nil || has == false { return nil, logx.Warn(err) } fmt.Println("===================================app_type", tm) appVersion := GetCloudBuild(c, platform) fmt.Println("===================================app_type", appVersion) if appVersion != "" && c.GetHeader("app_version_name") == appVersion { m, err := GetCloudBundleByVersion(Db, appVersion, 1, 1) if err != nil { return nil, logx.Warn(err) } fmt.Println("===================================app_type", m) tm.Id = int(gjson.Get(m.TemplateDuringAudit, "bottom").Int()) } case "wx_applet", "wap": if has, err := Db.Where("is_use = 1 AND type = ? AND platform = 4 ", tempType). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } case "baidu_applet": if has, err := Db.Where("is_use = 1 AND type = ? AND platform = 4 ", tempType). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } case "toutiao_applet": if has, err := Db.Where("is_use = 1 AND type = ? AND platform = 4 ", tempType). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } case "alipay_applet": if has, err := Db.Where("is_use = 1 AND type = ? AND platform = 4 ", tempType). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } default: return &m, errors.New("Platform not support") } if has, err := Db.Where("state = 1 AND template_id = ?", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } fmt.Println("===================================app_type", m) if tempType == "o2o_store_bottomNav" { bottomMap := make(map[string]interface{}) utils.Unserialize([]byte(m.Data), &bottomMap) list, ok := bottomMap["list"] if ok { m.Data = string(utils.MarshalJSONCamelCase2JsonSnakeCase(utils.SerializeStr(list))) } } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } switch platform { case "ios": if has, err := Db.Where("is_use = 1 AND type = 'bottom' AND platform = 2 "). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } appVersion := GetCloudBuild(c, platform) if c.GetHeader("app_version_name") == appVersion && c.GetHeader("app_version_name") != "" { m, err := GetCloudBundleByVersion(Db, appVersion, 2, 0) if err != nil { return nil, logx.Warn(err) } tm.Id = int(gjson.Get(m.TemplateDuringAudit, "bottom").Int()) } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil case "android": has, err := Db.Where("is_use = 1 AND type = 'bottom' AND platform = 2 ").Cols("id,uid,name,is_use,is_system").Get(&tm) if err != nil || has == false { return nil, logx.Warn(err) } appVersion := GetCloudBuild(c, platform) if appVersion != "" && c.GetHeader("app_version_name") == appVersion { m, err := GetCloudBundleByVersion(Db, appVersion, 1, 0) if err != nil { return nil, logx.Warn(err) } tm.Id = int(gjson.Get(m.TemplateDuringAudit, "bottom").Int()) } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil case "wx_applet", "wap": wxAppletCfg := GetAppletKey(c, Db) id := utils.StrToInt(wxAppletCfg["bottom_nav_css_id"]) if id == 0 { return nil, e.NewErr(400, "找不到模板配置") } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil case "baidu_applet": if has, err := Db.Where("is_use = 1 AND type = 'bottom' AND platform = 4 "). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } appVersion := SysCfgGetWithDb(Db, mid, "baidu_audit_version") if appVersion != "" && c.GetHeader("app_version_name") == appVersion { m := SysCfgGetWithDb(Db, mid, "baidu_audit_template") if m == "" { return nil, e.NewErr(400, "找不到模板配置") } tm.Id = int(gjson.Get(m, "bottom").Int()) } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil case "toutiao_applet": if has, err := Db.Where("is_use = 1 AND type = 'bottom' AND platform = 4 "). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } appVersion := SysCfgGetWithDb(Db, mid, "tt_audit_version") if appVersion != "" && c.GetHeader("app_version_name") == appVersion { m := SysCfgGetWithDb(Db, mid, "tt_audit_template") if m == "" { return nil, errors.New("找不到模板配置") } tm.Id = int(gjson.Get(m, "bottom").Int()) } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil case "alipay_applet": if has, err := Db.Where("is_use = 1 AND type = 'bottom' AND platform = 4 "). Cols("id,uid,name,is_use,is_system"). Get(&tm); err != nil || has == false { return nil, logx.Warn(err) } appVersion := SysCfgGetWithDb(Db, mid, "zfb_audit_version") if appVersion != "" && c.GetHeader("app_version_name") == appVersion { m := SysCfgGetWithDb(Db, mid, "zfb_audit_template") if m == "" { return nil, errors.New("找不到模板配置") } tm.Id = int(gjson.Get(m, "bottom").Int()) } if has, err := Db.Where("state = 1 AND template_id = ? AND mod_name = 'bottom_nav'", tm.Id). Get(&m); err != nil || has == false { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil default: return &m, errors.New("Platform not support") } } // SysModFindBySkipIdentifierAndModName is 根据mod_name和位置 查找对应模块 func SysModFindBySkipIdentifierAndModName(c *gin.Context, Db *xorm.Engine, name string, modName string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND skip_identifier = ? AND mod_name = ?", name, modName).Get(&m); err != nil || !has { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // SysModFindByModName is 根据mod_name和位置 查找对应模块 func SysModFindByModName(c *gin.Context, Db *xorm.Engine, modName string) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND mod_name = ?", modName).Get(&m); err != nil || !has { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // 根据跳转标识和平台类型查找 func SysModFindBySkipIdentifierAndPlatform(c *gin.Context, Db *xorm.Engine, name string, platform int) (*model.SysModule, error) { var m model.SysModule if has, err := Db.Where("state = 1 AND skip_identifier = ? AND platform = ?", name, platform).Get(&m); err != nil || !has { return nil, logx.Warn(err) } mm, err := sysModFormat(c, &m) if err != nil { return nil, err } return mm.(*model.SysModule), nil } // 公共处理modData的链接 func SysModDataByReplace(c *gin.Context, mod model.SysModule) model.SysModule { //替换链接的一些参数 if strings.Contains(mod.Data, "[replace_APP_URL]") { mod.Data = strings.Replace(mod.Data, "[replace_APP_URL]", c.GetString("domain_wap_base"), -1) } if strings.Contains(mod.Data, "[replace_masterId]") { mod.Data = strings.Replace(mod.Data, "[replace_masterId]", c.GetString("mid"), -1) } if strings.Contains(mod.Data, "[replace_platform]") { mod.Data = strings.Replace(mod.Data, "[replace_platform]", c.GetHeader("Platform"), -1) } if strings.Contains(mod.Data, "优惠卷") { mod.Data = strings.Replace(mod.Data, "优惠卷", "优惠券", -1) } if strings.Contains(mod.Data, "[replace_uid]") { token := c.GetHeader("Authorization") // 按空格分割 parts := strings.SplitN(token, " ", 2) if len(parts) == 2 && parts[0] == "Bearer" { // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它 mc, _ := utils.ParseToken(parts[1]) mod.Data = strings.Replace(mod.Data, "[replace_uid]", strconv.Itoa(mc.UID), -1) } } //if strings.Contains(mod.Data, "\"child_category_id") && strings.Contains(mod.Data, "\"category_id") { // //如果存在这两个字段,要换一下 // mod.Data = strings.ReplaceAll(mod.Data, "\"category_id", "\"null_category_id") // mod.Data = strings.ReplaceAll(mod.Data, "\"child_category_id", "\"category_id") //} return mod } // 公共处理modData的链接 func StringByReplace(c *gin.Context, skip string) string { //替换链接的一些参数 if strings.Contains(skip, "[replace_APP_URL]") { skip = strings.Replace(skip, "[replace_APP_URL]", c.GetString("domain_wap_base"), -1) } if strings.Contains(skip, "[replace_masterId]") { skip = strings.Replace(skip, "[replace_masterId]", c.GetString("mid"), -1) } if strings.Contains(skip, "[replace_platform]") { skip = strings.Replace(skip, "[replace_platform]", c.GetHeader("Platform"), -1) } if strings.Contains(skip, "优惠卷") { skip = strings.Replace(skip, "优惠卷", "优惠券", -1) } if strings.Contains(skip, "[replace_uid]") { token := c.GetHeader("Authorization") // 按空格分割 parts := strings.SplitN(token, " ", 2) if len(parts) == 2 && parts[0] == "Bearer" { // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它 mc, _ := utils.ParseToken(parts[1]) skip = strings.Replace(skip, "[replace_uid]", strconv.Itoa(mc.UID), -1) } } //if strings.Contains(mod.Data, "\"child_category_id") && strings.Contains(mod.Data, "\"category_id") { // //如果存在这两个字段,要换一下 // mod.Data = strings.ReplaceAll(mod.Data, "\"category_id", "\"null_category_id") // mod.Data = strings.ReplaceAll(mod.Data, "\"child_category_id", "\"category_id") //} return skip } // 公共处理modSkip的链接 首页弹窗 func SysModSkipByReplace(c *gin.Context, mod *model.SysPopup) *model.SysPopup { //替换链接的一些参数 if strings.Contains(mod.Skip, "[replace_APP_URL]") { mod.Skip = strings.Replace(mod.Skip, "[replace_APP_URL]", c.GetString("domain_wap_base"), -1) } if strings.Contains(mod.Skip, "[replace_masterId]") { mod.Skip = strings.Replace(mod.Skip, "[replace_masterId]", c.GetString("mid"), -1) } if strings.Contains(mod.Skip, "[replace_platform]") { mod.Skip = strings.Replace(mod.Skip, "[replace_platform]", c.GetHeader("Platform"), -1) } if strings.Contains(mod.Skip, "优惠卷") { mod.Skip = strings.Replace(mod.Skip, "优惠卷", "优惠券", -1) } if strings.Contains(mod.Skip, "[replace_uid]") { token := c.GetHeader("Authorization") // 按空格分割 parts := strings.SplitN(token, " ", 2) if len(parts) == 2 && parts[0] == "Bearer" { // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它 mc, _ := utils.ParseToken(parts[1]) mod.Skip = strings.Replace(mod.Skip, "[replace_uid]", strconv.Itoa(mc.UID), -1) } } //if strings.Contains(mod.Data, "\"child_category_id") && strings.Contains(mod.Data, "\"category_id") { // //如果存在这两个字段,要换一下 // mod.Data = strings.ReplaceAll(mod.Data, "\"category_id", "\"null_category_id") // mod.Data = strings.ReplaceAll(mod.Data, "\"child_category_id", "\"category_id") //} return mod } // 公共处理modData的链接 func SysModDataByReplaceSecond(c *gin.Context, mod *model.SysModule) *model.SysModule { //替换链接的一些参数 if strings.Contains(mod.Data, "[replace_APP_URL]") { mod.Data = strings.Replace(mod.Data, "[replace_APP_URL]", c.GetString("domain_wap_base"), -1) } if strings.Contains(mod.Data, "[replace_masterId]") { mod.Data = strings.Replace(mod.Data, "[replace_masterId]", c.GetString("mid"), -1) } if strings.Contains(mod.Data, "优惠卷") { mod.Data = strings.Replace(mod.Data, "优惠卷", "优惠券", -1) } if strings.Contains(mod.Data, "[replace_uid]") { token := c.GetHeader("Authorization") // 按空格分割 parts := strings.SplitN(token, " ", 2) if len(parts) == 2 && parts[0] == "Bearer" { // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它 mc, _ := utils.ParseToken(parts[1]) if mc == nil { mod.Data = strings.Replace(mod.Data, "[replace_uid]", "0", -1) } else { mod.Data = strings.Replace(mod.Data, "[replace_uid]", strconv.Itoa(mc.UID), -1) } } } if mod.ModName == "product" && strings.Contains(mod.Data, "product_3") { if strings.Contains(mod.Data, "second_kill_style") == false { mod.Data = strings.ReplaceAll(mod.Data, "\"coupon_commission\"", "\"second_kill_style\":{\"btn_bg_img\":\"http://ossn.izhim.net/gift.png\",\"left_stock_text_color\":\"#D59E21\",\"buy_now_text_color\":\"#D59E21\",\"is_show\":\"0\"},\"coupon_commission\"") } } mod.Data = strings.ReplaceAll(mod.Data, "\\/", "/") mod.Data = strings.ReplaceAll(mod.Data, "\\u0026", "&") //if strings.Contains(mod.Data, "\"child_category_id") && strings.Contains(mod.Data, "\"category_id") { // //如果存在这两个字段,要换一下 // mod.Data = strings.ReplaceAll(mod.Data, "\"category_id", "\"null_category_id") // mod.Data = strings.ReplaceAll(mod.Data, "\"child_category_id", "\"category_id") //} return mod }