@@ -0,0 +1,48 @@ | |||||
package db | |||||
import ( | |||||
"applet/app/db/model" | |||||
"applet/app/utils" | |||||
"xorm.io/xorm" | |||||
) | |||||
func GetUserVirtualAmountOne(session *xorm.Session, uid int, coinId int) (*model.UserVirtualAmount, error) { | |||||
var m model.UserVirtualAmount | |||||
isExist, err := session.Table("user_virtual_amount").Where("uid = ? AND coin_id = ?", uid, coinId).Get(&m) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if !isExist { | |||||
return nil, nil | |||||
} | |||||
return &m, nil | |||||
} | |||||
func GetUserVirtualAmountOneEg(eg *xorm.Engine, uid int, coinId int) (*model.UserVirtualAmount, error) { | |||||
var m model.UserVirtualAmount | |||||
isExist, err := eg.Table("user_virtual_amount").Where("uid = ? AND coin_id = ?", uid, coinId).Get(&m) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
if !isExist { | |||||
return nil, nil | |||||
} | |||||
return &m, nil | |||||
} | |||||
func GetUserVirtualAmountSum(eg *xorm.Engine, uid int) (string, error) { | |||||
var m model.UserVirtualAmount | |||||
sum, err := eg.Table("user_virtual_amount").Where("uid = ? ", uid).Sum(&m, "amount") | |||||
if err != nil { | |||||
return "0", err | |||||
} | |||||
return utils.Float64ToStr(sum), nil | |||||
} | |||||
/*func UserVirtualAmountUpdateWithSession(session *xorm.Session, m *model.UserVirtualAmount) bool { | |||||
}*/ |
@@ -0,0 +1,114 @@ | |||||
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 | |||||
} |
@@ -0,0 +1,12 @@ | |||||
package model | |||||
type UserVirtualAmount struct { | |||||
Id int64 `json:"id" xorm:"pk autoincr BIGINT(20)"` | |||||
Uid int `json:"uid" xorm:"index INT(11)"` | |||||
CoinId int `json:"coin_id" xorm:"INT(11)"` | |||||
Amount string `json:"amount" xorm:"DECIMAL(16,6)"` | |||||
FreezeAmount string `json:"freeze_amount" xorm:"DECIMAL(16,6)"` | |||||
WaitAmount string `json:"wait_amount" xorm:"DECIMAL(16,6)"` | |||||
TeamFreezeAmount string `json:"team_freeze_amount" xorm:"DECIMAL(16,6)"` | |||||
UseAmount string `json:"use_amount" xorm:"DECIMAL(16,6)"` | |||||
} |
@@ -2,10 +2,14 @@ package hdl | |||||
import ( | import ( | ||||
"applet/app/db" | "applet/app/db" | ||||
"applet/app/db/model" | |||||
"applet/app/e" | "applet/app/e" | ||||
"applet/app/svc" | "applet/app/svc" | ||||
"applet/app/utils" | |||||
"fmt" | "fmt" | ||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
"github.com/tidwall/gjson" | |||||
"time" | |||||
) | ) | ||||
func City(c *gin.Context) { | func City(c *gin.Context) { | ||||
@@ -52,3 +56,39 @@ func StoreAddLike(c *gin.Context) { | |||||
func StoreCancelLike(c *gin.Context) { | func StoreCancelLike(c *gin.Context) { | ||||
svc.StoreCancelLike(c) | svc.StoreCancelLike(c) | ||||
} | } | ||||
func User(c *gin.Context) { | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
res := map[string]string{ | |||||
"head_img": "", | |||||
"nickname": "", | |||||
"coupon_str": "优惠券:", | |||||
"coupon": "0", | |||||
"integral_str": "积分:", | |||||
"integral": "0", | |||||
} | |||||
if user != nil && user.Info.Uid > 0 { | |||||
res["head_img"] = user.Profile.AvatarUrl | |||||
res["nickname"] = user.Info.Nickname | |||||
now := time.Now().Format("2006-01-02 15:04:05") | |||||
count, _ := svc.MasterDb(c).Table("act_coupon_user"). | |||||
Where("store_type=? and uid = ? AND is_use = ? AND (valid_time_start < ? AND valid_time_end > ?)", 0, | |||||
user.Info.Uid, 0, now, now).Count(&model.CommunityTeamCouponUser{}) | |||||
res["coupon"] = utils.Int64ToStr(count) | |||||
mod, _ := db.SysModFindBySkipIdentifier(c, svc.MasterDb(c), "pub.flutter.community_team_store_index") | |||||
if mod != nil { | |||||
integralCoinId := gjson.Get(mod.Data, "integralCoinId").String() | |||||
if utils.StrToInt(integralCoinId) > 0 { | |||||
coin, _ := db.VirtualCoinGetOneById(svc.MasterDb(c), integralCoinId) | |||||
if coin != nil { | |||||
amount, _ := db.GetUserVirtualAmountOneEg(svc.MasterDb(c), user.Info.Uid, utils.StrToInt(integralCoinId)) | |||||
res["integral_str"] = coin.Name + ":" | |||||
if amount != nil { | |||||
res["integral"] = svc.GetCommissionPrec(c, amount.Amount, svc.SysCfgGet(c, "integral_prec"), "0") | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} |
@@ -52,6 +52,7 @@ func routeCommunityTeam(r *gin.RouterGroup) { | |||||
r.GET("/goods/cate", hdl.Cate) | r.GET("/goods/cate", hdl.Cate) | ||||
r.POST("/goods", hdl.Goods) | r.POST("/goods", hdl.Goods) | ||||
r.POST("/goods/sku", hdl.GoodsSku) | r.POST("/goods/sku", hdl.GoodsSku) | ||||
r.GET("/user", hdl.User) | |||||
// 用户授权后调用的接口 | // 用户授权后调用的接口 | ||||
r.Use(mw.AuthJWT) | r.Use(mw.AuthJWT) | ||||
r.POST("/store/addLike", hdl.StoreAddLike) | r.POST("/store/addLike", hdl.StoreAddLike) | ||||