package db import ( "applet/app/db/model" "applet/app/md" "applet/app/utils" "applet/app/utils/cache" "applet/app/utils/logx" "fmt" "reflect" "xorm.io/xorm" ) func GetVirtualCoinList(eg *xorm.Engine) ([]*model.VirtualCoin, error) { var m []*model.VirtualCoin err := eg.Find(&m) if err != nil { return nil, err } return m, nil } func GetVirtualCoinIsUseList(eg *xorm.Engine) ([]*model.VirtualCoin, error) { var m []*model.VirtualCoin err := eg.Where("is_use = ?", 1).Find(&m) if err != nil { return nil, err } return m, nil } // VirtualCoinListInUse 查询正在使用中的虚拟币 func VirtualCoinListInUse(Db *xorm.Engine, masterId string) ([]*model.VirtualCoin, error) { var m []*model.VirtualCoin cacheKey := fmt.Sprintf(md.VirtualCoinCfgCacheKey, masterId) err := cache.GetJson(cacheKey, &m) if err != nil || len(m) == 0 { err := Db.Where("is_use=1").Find(&m) if err != nil { return nil, err } cache.SetJson(cacheKey, m, md.CfgCacheTime) } return m, nil } // VirtualCoinGetOneByParams 通过参数查询数据(单条) func VirtualCoinGetOneByParams(Db *xorm.Engine, params map[string]interface{}) (*model.VirtualCoin, error) { var m model.VirtualCoin var query = fmt.Sprintf("%s =?", params["key"]) if has, err := Db.Where(query, params["value"]).Get(&m); err != nil || has == false { return nil, logx.Error(err) } return &m, nil } // VirtualCoinFindByParams 通过传入的参数查询数据(多条) func VirtualCoinFindByParams(Db *xorm.Engine, params map[string]interface{}) (*[]model.VirtualCoin, error) { var m []model.VirtualCoin if params["key"] == nil { //查询全部数据 err := Db.Find(&m) if err != nil { return nil, logx.Error(err) } return &m, nil } else { if reflect.TypeOf(params["value"]).Kind() == reflect.Slice { //指定In查询 if err := Db.In(utils.AnyToString(params["key"]), params["value"]).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } else { var query = fmt.Sprintf("%s =?", params["key"]) err := Db.Where(query, params["value"]).Find(&m) if err != nil { return nil, logx.Error(err) } return &m, nil } } } func VirtualCoinGetOneById(Db *xorm.Engine, coinId string) (*model.VirtualCoin, error) { var m model.VirtualCoin if has, err := Db.ID(coinId).Get(&m); err != nil || has == false { return nil, logx.Error(err) } return &m, nil } func VirtualCoinOrderRelateDeleteByOid(Db *xorm.Engine, oid int64, pvd string) (int64, error) { _, err := Db.Where("oid=? and pvd=?", oid, pvd).Delete(model.VirtualCoinRelate{}) if err != nil { return 0, err } return 1, nil } func VirtualCoinMapInUse(Db *xorm.Engine, masterId string) (map[string]model.VirtualCoin, error) { virtualCoinMap := make(map[string]model.VirtualCoin) listInUse, err := VirtualCoinListInUse(Db, masterId) if err != nil { return nil, err } for _, coin := range listInUse { virtualCoinMap[utils.AnyToString(coin.Id)] = *coin } return virtualCoinMap, nil }