劲创营---任务项目
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

204 строки
5.8 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/db/model"
  5. "applet/app/comm/utils/logx"
  6. "github.com/gin-gonic/gin"
  7. "github.com/tidwall/gjson"
  8. "reflect"
  9. "xorm.io/xorm"
  10. )
  11. func SysModData(c *gin.Context, ids []int) (interface{}, error) {
  12. // 获取模块下级的信息
  13. subMod, err := db.SysModFindByPIds(c, db.DBs[c.GetString("mid")], ids...)
  14. if err != nil {
  15. return nil, logx.Error(err)
  16. }
  17. res := map[int][]model.SysModule{}
  18. for _, v := range ids {
  19. for _, val := range *subMod {
  20. if val.ModPid == v {
  21. res[v] = append(res[v], val)
  22. }
  23. }
  24. }
  25. // 没有子模块的话 返回自己
  26. if len(res) == 0 {
  27. ms, err := db.SysModFindByIds(db.DBs[c.GetString("mid")], ids...)
  28. if err != nil {
  29. return nil, logx.Error(err)
  30. }
  31. for _, v := range ids {
  32. for _, val := range *ms {
  33. if val.ModId == v {
  34. res[v] = append(res[v], val)
  35. }
  36. }
  37. }
  38. }
  39. return res, nil
  40. }
  41. // 获取mod data by SkipIdentifier
  42. func SysModDataBySkipIdentifier(c *gin.Context, name string) (*model.SysModule, error) {
  43. mod, err := db.SysModFindBySkipIdentifier(c, db.DBs[c.GetString("mid")], name)
  44. if err != nil {
  45. return nil, err
  46. }
  47. return mod, nil
  48. }
  49. func SysModDataByModName(c *gin.Context, name string) (*model.SysModule, error) {
  50. mod, err := db.SysModFindBySkipIdentifier(c, db.DBs[c.GetString("mid")], name)
  51. if err != nil {
  52. return nil, err
  53. }
  54. return mod, nil
  55. }
  56. // SysModDataById is获取mod data by id
  57. func SysModDataById(c *gin.Context, id string) (*model.SysModule, error) {
  58. mod, err := db.SysModFindById(c, db.DBs[c.GetString("mid")], id)
  59. if err != nil || mod == nil {
  60. return nil, err
  61. }
  62. mod = db.SysModDataByReplaceSecond(c, mod)
  63. return mod, nil
  64. }
  65. // ShareModBySkipIdentifierAndPosition is 获取所有分享父模块
  66. func ShareModBySkipIdentifierAndPosition(c *gin.Context, name string, t string) (*[]model.SysModule, error) {
  67. position := "base." + t
  68. mods, err := db.SysModFindBySkipIdentifierAndPosition(c, db.DBs[c.GetString("mid")], name, position)
  69. if err != nil {
  70. return nil, err
  71. }
  72. return mods, nil
  73. }
  74. //整合云打包GetCloudBundleByVersionPlatform和SysTmpFindByID获取模板信息
  75. func GetTemplateInfo(Db *xorm.Engine, appVersion string, platform string) (*model.SysTemplate, error) {
  76. m, err := db.GetCloudBundleByVersionPlatform(Db, appVersion, platform)
  77. if err != nil {
  78. return nil, logx.Warn(err)
  79. }
  80. temp, err2 := db.SysTmpFindByID(Db, int(gjson.Get(m.TemplateDuringAudit, "product_detail").Int()))
  81. if err2 != nil {
  82. return nil, logx.Warn(err2)
  83. }
  84. return temp, nil
  85. }
  86. //判断某个字符串是否在数组里
  87. func InArray(val interface{}, array interface{}) (exists bool, index int) {
  88. exists = false
  89. index = -1
  90. switch reflect.TypeOf(array).Kind() {
  91. case reflect.Slice:
  92. s := reflect.ValueOf(array)
  93. for i := 0; i < s.Len(); i++ {
  94. if reflect.DeepEqual(val, s.Index(i).Interface()) == true {
  95. index = i
  96. exists = true
  97. return
  98. }
  99. }
  100. }
  101. return
  102. }
  103. //获取审核模板内容
  104. func GetAuditTemplate(c *gin.Context, temp *model.SysTemplate) (*model.SysTemplate, error) {
  105. platform := c.GetHeader("platform")
  106. if c.GetHeader("app_version_name") == "" {
  107. return temp, nil
  108. }
  109. switch platform {
  110. case "ios":
  111. appVersion := SysCfgGet(c, "ios_audit_version")
  112. if c.GetHeader("app_version_name") == appVersion {
  113. temps := []string{"index", "bottom", "member", "product_detail"}
  114. exists, flag := InArray(temp.Type, temps)
  115. if exists != false && flag != -1 {
  116. temp, err := GetTemplateInfo(db.DBs[c.GetString("mid")], appVersion, platform)
  117. if err != nil {
  118. return nil, logx.Warn(err)
  119. }
  120. return temp, nil
  121. }
  122. }
  123. case "android":
  124. appVersion := SysCfgGet(c, "android_audit_version")
  125. if c.GetHeader("app_version_name") == appVersion {
  126. temps := []string{"index", "bottom", "member", "product_detail"}
  127. exists, flag := InArray(temp.Type, temps)
  128. if exists != false && flag != -1 {
  129. temp, err := GetTemplateInfo(db.DBs[c.GetString("mid")], appVersion, platform)
  130. if err != nil {
  131. return nil, logx.Warn(err)
  132. }
  133. return temp, nil
  134. }
  135. }
  136. case "wx_applet", "wap":
  137. appVersion := SysCfgGet(c, "mp_audit_version")
  138. if c.GetHeader("app_version_name") == appVersion {
  139. m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "mp_audit_template")
  140. if err != nil {
  141. return nil, logx.Warn(err)
  142. }
  143. tmpId := int(gjson.Get(m.Val, "product_detail").Int())
  144. temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId)
  145. if err != nil {
  146. return nil, logx.Warn(err)
  147. }
  148. return temp, nil
  149. }
  150. case "baidu_applet":
  151. appVersion := SysCfgGet(c, "baidu_audit_version")
  152. if c.GetHeader("app_version_name") == appVersion {
  153. m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "baidu_audit_template")
  154. if err != nil {
  155. return nil, logx.Warn(err)
  156. }
  157. tmpId := int(gjson.Get(m.Val, "product_detail").Int())
  158. temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId)
  159. if err != nil {
  160. return nil, logx.Warn(err)
  161. }
  162. return temp, nil
  163. }
  164. case "toutiao_applet":
  165. appVersion := SysCfgGet(c, "tt_audit_version")
  166. if c.GetHeader("app_version_name") == appVersion {
  167. m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "tt_audit_template")
  168. if err != nil {
  169. return nil, logx.Warn(err)
  170. }
  171. tmpId := int(gjson.Get(m.Val, "product_detail").Int())
  172. temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId)
  173. if err != nil {
  174. return nil, logx.Warn(err)
  175. }
  176. return temp, nil
  177. }
  178. case "alipay_applet":
  179. appVersion := SysCfgGet(c, "zfb_audit_version")
  180. if c.GetHeader("app_version_name") == appVersion {
  181. m, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], "zfb_audit_template")
  182. if err != nil {
  183. return nil, logx.Warn(err)
  184. }
  185. tmpId := int(gjson.Get(m.Val, "product_detail").Int())
  186. temp, err := db.SysTmpFindByID(db.DBs[c.GetString("mid")], tmpId)
  187. if err != nil {
  188. return nil, logx.Warn(err)
  189. }
  190. return temp, nil
  191. }
  192. }
  193. return temp, nil
  194. }