|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- package svc
-
- import (
- "applet/app/md"
- "errors"
- "github.com/gin-gonic/gin"
- "strings"
- "xorm.io/xorm"
-
- "applet/app/cfg"
- "applet/app/db"
-
- "applet/app/utils"
- "applet/app/utils/cache"
- )
-
- // 单挑记录获取
- func SysCfgGet(c *gin.Context, key string) string {
- mid := c.GetString("mid")
- eg := db.DBs[mid]
- return db.SysCfgGetWithDb(eg, mid, key)
- }
-
- // 多条记录获取
- func SysCfgFind(c *gin.Context, keys ...string) map[string]string {
- var masterId string
- if c == nil {
- masterId = ""
- } else {
- masterId = c.GetString("mid")
- }
- tmp := SysCfgFindComm(masterId, keys...)
- return tmp
- }
-
- // SysCfgGetByMasterId get one config by master id
- func SysCfgGetByMasterId(masterId, key string) string {
- res := SysCfgFindComm(masterId, key)
- if _, ok := res[key]; !ok {
- return ""
- }
- return res[key]
- }
-
- // SysCfgFindComm get cfg by master id
- func SysCfgFindComm(masterId string, keys ...string) map[string]string {
- var eg *xorm.Engine
- if masterId == "" {
- eg = db.Db
- } else {
- eg = db.DBs[masterId]
- }
- res := map[string]string{}
- //TODO::判断keys长度(大于10个直接查数据库)
- if len(keys) > 10 {
- cfgList, _ := db.SysCfgGetAll(eg)
- if cfgList == nil {
- return nil
- }
- for _, v := range *cfgList {
- res[v.Key] = v.Val
- }
- } else {
- for _, key := range keys {
- res[key] = db.SysCfgGetWithDb(eg, masterId, key)
- }
- }
- return res
- }
-
- // 多条记录获取
- func EgSysCfgFind(keys ...string) map[string]string {
- var e *xorm.Engine
- res := map[string]string{}
- if len(res) == 0 {
- cfgList, _ := db.SysCfgGetAll(e)
- if cfgList == nil {
- return nil
- }
- for _, v := range *cfgList {
- res[v.Key] = v.Val
- }
- // 先不设置缓存
- // cache.SetJson(md.KEY_SYS_CFG_CACHE, res, 60)
- }
- if len(keys) == 0 {
- return res
- }
- tmp := map[string]string{}
- for _, v := range keys {
- if val, ok := res[v]; ok {
- tmp[v] = val
- } else {
- tmp[v] = ""
- }
- }
- return tmp
- }
-
- // 清理系统配置信息
- func SysCfgCleanCache() {
- cache.Del(md.KEY_SYS_CFG_CACHE)
- }
-
- // 写入系统设置
- func SysCfgSet(c *gin.Context, key, val, memo string) bool {
- cfg, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], key)
- if err != nil || cfg == nil {
- return db.SysCfgInsert(db.DBs[c.GetString("mid")], key, val, memo)
- }
- if memo != "" && cfg.Memo != memo {
- cfg.Memo = memo
- }
- SysCfgCleanCache()
- return db.SysCfgUpdate(db.DBs[c.GetString("mid")], key, val, cfg.Memo)
- }
-
- // 多条记录获取
- func SysCfgFindByIds(eg *xorm.Engine, keys ...string) map[string]string {
- key := utils.Md5(eg.DataSourceName() + md.KEY_SYS_CFG_CACHE)
- res := map[string]string{}
- c, ok := cfg.MemCache.Get(key).(map[string]string)
- if !ok || len(c) == 0 {
- cfgList, _ := db.DbsSysCfgGetAll(eg)
- if cfgList == nil {
- return nil
- }
- for _, v := range *cfgList {
- res[v.Key] = v.Val
- }
- cfg.MemCache.Put(key, res, 10)
- } else {
- res = c
- }
- if len(keys) == 0 {
- return res
- }
- tmp := map[string]string{}
- for _, v := range keys {
- if val, ok := res[v]; ok {
- tmp[v] = val
- } else {
- tmp[v] = ""
- }
- }
- return tmp
- }
-
- // 多条记录获取
- func SysCfgFindByIdsToCache(eg *xorm.Engine, dbName string, keys ...string) map[string]string {
- key := utils.Md5(dbName + md.KEY_SYS_CFG_CACHE)
- res := map[string]string{}
- c, ok := cfg.MemCache.Get(key).(map[string]string)
- if !ok || len(c) == 0 {
- cfgList, _ := db.DbsSysCfgGetAll(eg)
- if cfgList == nil {
- return nil
- }
- for _, v := range *cfgList {
- res[v.Key] = v.Val
- }
- cfg.MemCache.Put(key, res, 1800)
- } else {
- res = c
- }
- if len(keys) == 0 {
- return res
- }
- tmp := map[string]string{}
- for _, v := range keys {
- if val, ok := res[v]; ok {
- tmp[v] = val
- } else {
- tmp[v] = ""
- }
- }
- return tmp
- }
-
- // 支付配置
- func SysCfgFindPayment(c *gin.Context) ([]map[string]string, error) {
- platform := c.GetHeader("platform")
- payCfg := SysCfgFind(c, "pay_wx_pay_img", "pay_ali_pay_img", "pay_balance_img", "pay_type")
- if payCfg["pay_wx_pay_img"] == "" || payCfg["pay_ali_pay_img"] == "" || payCfg["pay_balance_img"] == "" || payCfg["pay_type"] == "" {
- return nil, errors.New("lack of payment config")
- }
- payCfg["pay_wx_pay_img"] = ImageFormat(c, payCfg["pay_wx_pay_img"])
- payCfg["pay_ali_pay_img"] = ImageFormat(c, payCfg["pay_ali_pay_img"])
- payCfg["pay_balance_img"] = ImageFormat(c, payCfg["pay_balance_img"])
-
- var result []map[string]string
-
- if strings.Contains(payCfg["pay_type"], "aliPay") && platform != md.PLATFORM_WX_APPLET {
- item := make(map[string]string)
- item["pay_channel"] = "alipay"
- item["img"] = payCfg["pay_ali_pay_img"]
- item["name"] = "支付宝支付"
- result = append(result, item)
- }
-
- if strings.Contains(payCfg["pay_type"], "wxPay") {
- item := make(map[string]string)
- item["pay_channel"] = "wx"
- item["img"] = payCfg["pay_wx_pay_img"]
- item["name"] = "微信支付"
- result = append(result, item)
- }
-
- if strings.Contains(payCfg["pay_type"], "walletPay") {
- item := make(map[string]string)
- item["pay_channel"] = "fin"
- item["img"] = payCfg["pay_balance_img"]
- item["name"] = "余额支付"
- result = append(result, item)
- }
-
- return result, nil
- }
|