|
- 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
- }
|