package svc import ( "applet/app/comm/db" "applet/app/comm/db/model" "applet/app/comm/utils/logx" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" "reflect" "xorm.io/xorm" ) func SysModData(c *gin.Context, ids []int) (interface{}, error) { // 获取模块下级的信息 subMod, err := db.SysModFindByPIds(c, db.DBs[c.GetString("mid")], ids...) if err != nil { return nil, logx.Error(err) } res := map[int][]model.SysModule{} for _, v := range ids { for _, val := range *subMod { if val.ModPid == v { res[v] = append(res[v], val) } } } // 没有子模块的话 返回自己 if len(res) == 0 { ms, err := db.SysModFindByIds(db.DBs[c.GetString("mid")], ids...) if err != nil { return nil, logx.Error(err) } for _, v := range ids { for _, val := range *ms { if val.ModId == v { res[v] = append(res[v], val) } } } } return res, nil } // 获取mod data by SkipIdentifier func SysModDataBySkipIdentifier(c *gin.Context, name string) (*model.SysModule, error) { mod, err := db.SysModFindBySkipIdentifier(c, db.DBs[c.GetString("mid")], name) if err != nil { return nil, err } return mod, nil } func SysModDataByModName(c *gin.Context, name string) (*model.SysModule, error) { mod, err := db.SysModFindBySkipIdentifier(c, db.DBs[c.GetString("mid")], name) if err != nil { return nil, err } return mod, nil } // SysModDataById is获取mod data by id func SysModDataById(c *gin.Context, id string) (*model.SysModule, error) { mod, err := db.SysModFindById(c, db.DBs[c.GetString("mid")], id) if err != nil || mod == nil { return nil, err } mod = db.SysModDataByReplaceSecond(c, mod) return mod, nil } // ShareModBySkipIdentifierAndPosition is 获取所有分享父模块 func ShareModBySkipIdentifierAndPosition(c *gin.Context, name string, t string) (*[]model.SysModule, error) { position := "base." + t mods, err := db.SysModFindBySkipIdentifierAndPosition(c, db.DBs[c.GetString("mid")], name, position) if err != nil { return nil, err } return mods, nil } //整合云打包GetCloudBundleByVersionPlatform和SysTmpFindByID获取模板信息 func GetTemplateInfo(Db *xorm.Engine, appVersion string, platform string) (*model.SysTemplate, error) { m, err := db.GetCloudBundleByVersionPlatform(Db, appVersion, platform) if err != nil { return nil, logx.Warn(err) } temp, err2 := db.SysTmpFindByID(Db, int(gjson.Get(m.TemplateDuringAudit, "product_detail").Int())) if err2 != nil { return nil, logx.Warn(err2) } return temp, nil } //判断某个字符串是否在数组里 func InArray(val interface{}, array interface{}) (exists bool, index int) { exists = false index = -1 switch reflect.TypeOf(array).Kind() { case reflect.Slice: s := reflect.ValueOf(array) for i := 0; i < s.Len(); i++ { if reflect.DeepEqual(val, s.Index(i).Interface()) == true { index = i exists = true return } } } return } //获取审核模板内容 func GetAuditTemplate(c *gin.Context, temp *model.SysTemplate) (*model.SysTemplate, error) { platform := c.GetHeader("platform") if c.GetHeader("app_version_name") == "" { return temp, nil } switch platform { case "ios": appVersion := SysCfgGet(c, "ios_audit_version") if c.GetHeader("app_version_name") == appVersion { temps := []string{"index", "bottom", "member", "product_detail"} exists, flag := InArray(temp.Type, temps) if exists != false && flag != -1 { temp, err := GetTemplateInfo(db.DBs[c.GetString("mid")], appVersion, platform) if err != nil { return nil, logx.Warn(err) } return temp, nil } } case "android": appVersion := SysCfgGet(c, "android_audit_version") if c.GetHeader("app_version_name") == appVersion { temps := []string{"index", "bottom", "member", "product_detail"} exists, flag := InArray(temp.Type, temps) if exists != false && flag != -1 { temp, err := GetTemplateInfo(db.DBs[c.GetString("mid")], appVersion, platform) if err != nil { return nil, logx.Warn(err) } return temp, nil } } case "wx_applet", "wap": appVersion := SysCfgGet(c, "mp_audit_version") if c.GetHeader("app_version_name") == appVersion { m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "mp_audit_template") if err != nil { return nil, logx.Warn(err) } tmpId := int(gjson.Get(m.Val, "product_detail").Int()) temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId) if err != nil { return nil, logx.Warn(err) } return temp, nil } case "baidu_applet": appVersion := SysCfgGet(c, "baidu_audit_version") if c.GetHeader("app_version_name") == appVersion { m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "baidu_audit_template") if err != nil { return nil, logx.Warn(err) } tmpId := int(gjson.Get(m.Val, "product_detail").Int()) temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId) if err != nil { return nil, logx.Warn(err) } return temp, nil } case "toutiao_applet": appVersion := SysCfgGet(c, "tt_audit_version") if c.GetHeader("app_version_name") == appVersion { m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "tt_audit_template") if err != nil { return nil, logx.Warn(err) } tmpId := int(gjson.Get(m.Val, "product_detail").Int()) temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId) if err != nil { return nil, logx.Warn(err) } return temp, nil } case "alipay_applet": appVersion := SysCfgGet(c, "zfb_audit_version") if c.GetHeader("app_version_name") == appVersion { m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "zfb_audit_template") if err != nil { return nil, logx.Warn(err) } tmpId := int(gjson.Get(m.Val, "product_detail").Int()) temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId) if err != nil { return nil, logx.Warn(err) } return temp, nil } } return temp, nil }