劲创营---任务项目
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

207 řádky
4.8 KiB

  1. package svc
  2. import (
  3. "errors"
  4. "github.com/gin-gonic/gin"
  5. "strings"
  6. "xorm.io/xorm"
  7. "applet/app/cfg"
  8. "applet/app/comm/db"
  9. "applet/app/comm/md"
  10. "applet/app/comm/utils"
  11. "applet/app/comm/utils/cache"
  12. )
  13. // 单挑记录获取
  14. func SysCfgGet(c *gin.Context, key string) string {
  15. mid := c.GetString("mid")
  16. eg := db.DBs[mid]
  17. return db.SysCfgGetWithDb(eg, mid, key)
  18. }
  19. func SysCfgGetOne(c *gin.Context, key string) string {
  20. cfgs, _ := db.SysCfgGetOne(db.DBs[c.GetString("mid")], key)
  21. str := ""
  22. if cfgs != nil {
  23. str = cfgs.Val
  24. }
  25. return str
  26. }
  27. // 多条记录获取
  28. func SysCfgFind(c *gin.Context, keys ...string) map[string]string {
  29. masterId := c.GetString("mid")
  30. eg := db.DBs[c.GetString("mid")]
  31. res := map[string]string{}
  32. //TODO::判断keys长度(大于5个直接查数据库)
  33. if len(keys) > 5 {
  34. cfgList, _ := db.SysCfgGetAll(eg)
  35. if cfgList == nil {
  36. return nil
  37. }
  38. for _, v := range *cfgList {
  39. res[v.Key] = v.Val
  40. }
  41. } else {
  42. for _, key := range keys {
  43. res[key] = db.SysCfgGetWithDb(eg, masterId, key)
  44. }
  45. }
  46. return res
  47. }
  48. // 多条记录获取
  49. func EgSysCfgFind(keys ...string) map[string]string {
  50. var e *xorm.Engine
  51. res := map[string]string{}
  52. if len(res) == 0 {
  53. cfgList, _ := db.SysCfgGetAll(e)
  54. if cfgList == nil {
  55. return nil
  56. }
  57. for _, v := range *cfgList {
  58. res[v.Key] = v.Val
  59. }
  60. // 先不设置缓存
  61. // cache.SetJson(md.KEY_SYS_CFG_CACHE, res, 60)
  62. }
  63. if len(keys) == 0 {
  64. return res
  65. }
  66. tmp := map[string]string{}
  67. for _, v := range keys {
  68. if val, ok := res[v]; ok {
  69. tmp[v] = val
  70. } else {
  71. tmp[v] = ""
  72. }
  73. }
  74. return tmp
  75. }
  76. // 清理系统配置信息
  77. func SysCfgCleanCache() {
  78. cache.Del(md.KEY_SYS_CFG_CACHE)
  79. }
  80. // 写入系统设置
  81. func SysCfgSet(c *gin.Context, key, val, memo string) bool {
  82. cfg, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], key)
  83. if err != nil || cfg == nil {
  84. return db.SysCfgInsert(db.DBs[c.GetString("mid")], key, val, memo)
  85. }
  86. if memo != "" && cfg.Memo != memo {
  87. cfg.Memo = memo
  88. }
  89. SysCfgCleanCache()
  90. return db.SysCfgUpdate(db.DBs[c.GetString("mid")], key, val, cfg.Memo)
  91. }
  92. // 多条记录获取
  93. func SysCfgFindByIds(eg *xorm.Engine, keys ...string) map[string]string {
  94. key := utils.Md5(eg.DataSourceName() + md.KEY_SYS_CFG_CACHE)
  95. res := map[string]string{}
  96. c, ok := cfg.MemCache.Get(key).(map[string]string)
  97. if !ok || len(c) == 0 {
  98. cfgList, _ := db.DbsSysCfgGetAll(eg)
  99. if cfgList == nil {
  100. return nil
  101. }
  102. for _, v := range *cfgList {
  103. res[v.Key] = v.Val
  104. }
  105. cfg.MemCache.Put(key, res, 10)
  106. } else {
  107. res = c
  108. }
  109. if len(keys) == 0 {
  110. return res
  111. }
  112. tmp := map[string]string{}
  113. for _, v := range keys {
  114. if val, ok := res[v]; ok {
  115. tmp[v] = val
  116. } else {
  117. tmp[v] = ""
  118. }
  119. }
  120. return tmp
  121. }
  122. // 支付配置
  123. func SysCfgFindPayment(c *gin.Context) ([]map[string]string, error) {
  124. platform := c.GetHeader("platform")
  125. payCfg := SysCfgFind(c, "pay_wx_pay_img", "pay_ali_pay_img", "pay_balance_img", "pay_type")
  126. if payCfg["pay_wx_pay_img"] == "" || payCfg["pay_ali_pay_img"] == "" || payCfg["pay_balance_img"] == "" || payCfg["pay_type"] == "" {
  127. return nil, errors.New("lack of payment config")
  128. }
  129. payCfg["pay_wx_pay_img"] = ImageFormat(c, payCfg["pay_wx_pay_img"])
  130. payCfg["pay_ali_pay_img"] = ImageFormat(c, payCfg["pay_ali_pay_img"])
  131. payCfg["pay_balance_img"] = ImageFormat(c, payCfg["pay_balance_img"])
  132. var result []map[string]string
  133. if strings.Contains(payCfg["pay_type"], "aliPay") && platform != md.PLATFORM_WX_APPLET {
  134. item := make(map[string]string)
  135. item["pay_channel"] = "alipay"
  136. item["img"] = payCfg["pay_ali_pay_img"]
  137. item["name"] = "支付宝支付"
  138. result = append(result, item)
  139. }
  140. if strings.Contains(payCfg["pay_type"], "wxPay") {
  141. item := make(map[string]string)
  142. item["pay_channel"] = "wx"
  143. item["img"] = payCfg["pay_wx_pay_img"]
  144. item["name"] = "微信支付"
  145. result = append(result, item)
  146. }
  147. if strings.Contains(payCfg["pay_type"], "walletPay") {
  148. item := make(map[string]string)
  149. item["pay_channel"] = "fin"
  150. item["img"] = payCfg["pay_balance_img"]
  151. item["name"] = "余额支付"
  152. result = append(result, item)
  153. }
  154. return result, nil
  155. }
  156. // 多条记录获取
  157. func SysCfgFindByIdsToCache(eg *xorm.Engine, dbName string, keys ...string) map[string]string {
  158. key := utils.Md5(dbName + md.KEY_SYS_CFG_CACHE)
  159. res := map[string]string{}
  160. c, ok := cfg.MemCache.Get(key).(map[string]string)
  161. if !ok || len(c) == 0 {
  162. cfgList, _ := db.DbsSysCfgGetAll(eg)
  163. if cfgList == nil {
  164. return nil
  165. }
  166. for _, v := range *cfgList {
  167. res[v.Key] = v.Val
  168. }
  169. cfg.MemCache.Put(key, res, 1800)
  170. } else {
  171. res = c
  172. }
  173. if len(keys) == 0 {
  174. return res
  175. }
  176. tmp := map[string]string{}
  177. for _, v := range keys {
  178. if val, ok := res[v]; ok {
  179. tmp[v] = val
  180. } else {
  181. tmp[v] = ""
  182. }
  183. }
  184. return tmp
  185. }
  186. func GetZhimengKey(c *gin.Context) (string, string) {
  187. ak := SysCfgGet(c, "third_zm_app_key")
  188. sk := SysCfgGet(c, "third_zm_app_secret")
  189. return ak, sk
  190. }