1
This commit is contained in:
parent
25edd3d477
commit
4f47bc4132
@ -6,6 +6,7 @@ import (
|
|||||||
"main/constant"
|
"main/constant"
|
||||||
"main/common"
|
"main/common"
|
||||||
. "main/global"
|
. "main/global"
|
||||||
|
"strings"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -14,6 +15,7 @@ type ShopCartApi struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *ShopCartApi) List(c *gin.Context) {
|
func (this *ShopCartApi) List(c *gin.Context) {
|
||||||
|
openId := c.MustGet("open_id").(string)
|
||||||
rspObj := &struct {
|
rspObj := &struct {
|
||||||
ErrCode int32 `json:"errcode"`
|
ErrCode int32 `json:"errcode"`
|
||||||
ErrMsg string `json:"errmsg"`
|
ErrMsg string `json:"errmsg"`
|
||||||
@ -22,7 +24,7 @@ func (this *ShopCartApi) List(c *gin.Context) {
|
|||||||
Nft interface{} `json:"nft"`
|
Nft interface{} `json:"nft"`
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}{}
|
}{}
|
||||||
openId := c.MustGet("open_id").(string)
|
q5.NewSlice(&rspObj.Data, 0, 10)
|
||||||
f5.GetGoStyleDb().OrmSelectOne(
|
f5.GetGoStyleDb().OrmSelectOne(
|
||||||
constant.BCNFT_DB,
|
constant.BCNFT_DB,
|
||||||
"t_shopcart",
|
"t_shopcart",
|
||||||
@ -36,13 +38,15 @@ func (this *ShopCartApi) List(c *gin.Context) {
|
|||||||
c.JSON(200, rspObj)
|
c.JSON(200, rspObj)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
cartDb := new(common.ShopCart)
|
cartDb := common.NewShopCart()
|
||||||
nfts := []*common.NftDto{}
|
nfts := []*common.NftDto{}
|
||||||
if q5.DecodeJson(ds.GetByName("data"), cartDb) == nil {
|
if q5.DecodeJson(ds.GetByName("data"), cartDb) == nil {
|
||||||
q5.Sort[common.ShopCartGoods](cartDb.Goods,
|
q5.Sort[common.ShopCartGoods](cartDb.Goods,
|
||||||
func (a *common.ShopCartGoods, b *common.ShopCartGoods) bool{
|
func (a *common.ShopCartGoods, b *common.ShopCartGoods) bool{
|
||||||
return a.SortIdx < b.SortIdx
|
return a.SortIdx < b.SortIdx
|
||||||
})
|
})
|
||||||
|
dirty := false
|
||||||
|
newGoods := []*common.ShopCartGoods{}
|
||||||
for _, val := range cartDb.Goods {
|
for _, val := range cartDb.Goods {
|
||||||
var err1 error
|
var err1 error
|
||||||
f5.GetGoStyleDb().OrmSelectOne(
|
f5.GetGoStyleDb().OrmSelectOne(
|
||||||
@ -65,6 +69,10 @@ func (this *ShopCartApi) List(c *gin.Context) {
|
|||||||
p.Payload = map[string]interface{}{}
|
p.Payload = map[string]interface{}{}
|
||||||
q5.DecodeJson(ds.GetByName("event_data"), &p.Payload)
|
q5.DecodeJson(ds.GetByName("event_data"), &p.Payload)
|
||||||
q5.AppendSlice(&nfts, p)
|
q5.AppendSlice(&nfts, p)
|
||||||
|
q5.AppendSlice(&newGoods, val)
|
||||||
|
} else {
|
||||||
|
dirty = true
|
||||||
|
val.Flag = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -74,6 +82,10 @@ func (this *ShopCartApi) List(c *gin.Context) {
|
|||||||
c.JSON(200, rspObj)
|
c.JSON(200, rspObj)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}//end for goods
|
||||||
|
if dirty {
|
||||||
|
cartDb.Goods = newGoods
|
||||||
|
this.save(openId, cartDb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GetCacheMgr().GetNfts(nfts)
|
GetCacheMgr().GetNfts(nfts)
|
||||||
@ -92,7 +104,102 @@ func (this *ShopCartApi) Add(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *ShopCartApi) Del(c *gin.Context) {
|
func (this *ShopCartApi) Del(c *gin.Context) {
|
||||||
|
openId := c.MustGet("open_id").(string)
|
||||||
|
|
||||||
|
rspObj := &struct {
|
||||||
|
ErrCode int32 `json:"errcode"`
|
||||||
|
ErrMsg string `json:"errmsg"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
reqJson := struct {
|
||||||
|
NetId interface{} `json:"net_id"`
|
||||||
|
Tokens []struct {
|
||||||
|
TokenId interface{} `json:"token_id"`
|
||||||
|
ContractAddress string `json:"contract_address"`
|
||||||
|
} `json:"tokens"`
|
||||||
|
}{}
|
||||||
|
if err := c.ShouldBindJSON(&reqJson); err != nil {
|
||||||
|
rspObj.ErrCode = 1
|
||||||
|
rspObj.ErrMsg = "json parse error"
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
f5.GetGoStyleDb().OrmSelectOne(
|
||||||
|
constant.BCNFT_DB,
|
||||||
|
"t_shopcart",
|
||||||
|
[][]string{
|
||||||
|
{"open_id", openId},
|
||||||
|
},
|
||||||
|
func (err error, ds* f5.DataSet) {
|
||||||
|
if err != nil {
|
||||||
|
rspObj.ErrCode = 500
|
||||||
|
rspObj.ErrMsg = "server internal error"
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ds.Next() {
|
||||||
|
cartDb := common.NewShopCart()
|
||||||
|
dirty := false
|
||||||
|
if q5.DecodeJson(ds.GetByName("data"), cartDb) == nil {
|
||||||
|
newGoods := []*common.ShopCartGoods{}
|
||||||
|
for _, val := range cartDb.Goods {
|
||||||
|
found := false
|
||||||
|
for _, val2 := range reqJson.Tokens {
|
||||||
|
if val.NetId == reqJson.NetId && val.TokenId == val2.TokenId &&
|
||||||
|
strings.ToLower(val.ContractAddress) == strings.ToLower(val2.ContractAddress) {
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
q5.AppendSlice(&newGoods, val)
|
||||||
|
} else {
|
||||||
|
dirty = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if dirty {
|
||||||
|
this.save(openId, cartDb)
|
||||||
|
}
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
} else {
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *ShopCartApi) Clear(c *gin.Context) {
|
func (this *ShopCartApi) Clear(c *gin.Context) {
|
||||||
|
openId := c.MustGet("open_id").(string)
|
||||||
|
|
||||||
|
rspObj := &struct {
|
||||||
|
ErrCode int32 `json:"errcode"`
|
||||||
|
ErrMsg string `json:"errmsg"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
cartDb := common.NewShopCart()
|
||||||
|
this.save(openId, cartDb)
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *ShopCartApi) save(openId string, cartDb *common.ShopCart) {
|
||||||
|
nowTime := f5.GetApp().GetRealSeconds()
|
||||||
|
f5.GetGoStyleDb().Upsert(
|
||||||
|
constant.BCNFT_DB,
|
||||||
|
"t_shopcart",
|
||||||
|
[][]string{
|
||||||
|
{"open_id", openId},
|
||||||
|
},
|
||||||
|
[][]string{
|
||||||
|
{"data", q5.EncodeJson(cartDb)},
|
||||||
|
{"modifytime", q5.ToString(nowTime)},
|
||||||
|
},
|
||||||
|
[][]string{
|
||||||
|
{"open_id", openId},
|
||||||
|
{"data", q5.EncodeJson(cartDb)},
|
||||||
|
{"createtime", q5.ToString(nowTime)},
|
||||||
|
{"modifytime", q5.ToString(nowTime)},
|
||||||
|
},
|
||||||
|
func (err error, lastInsertId int64, rowsAffected int64) {
|
||||||
|
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,7 @@ type ShopCartGoods struct {
|
|||||||
TokenId string `json:"token_id"`
|
TokenId string `json:"token_id"`
|
||||||
SortIdx uint32 `json:"idx"`
|
SortIdx uint32 `json:"idx"`
|
||||||
CreateTime int32 `json:"addtime"`
|
CreateTime int32 `json:"addtime"`
|
||||||
|
Flag int32
|
||||||
}
|
}
|
||||||
|
|
||||||
type ShopCart struct {
|
type ShopCart struct {
|
||||||
@ -115,3 +116,9 @@ func (this* NftDto) GetKey() string {
|
|||||||
key := fmt.Sprintf("%d_%s_%s", this.NetId, this.ContractAddress, this.TokenId)
|
key := fmt.Sprintf("%d_%s_%s", this.NetId, this.ContractAddress, this.TokenId)
|
||||||
return key
|
return key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewShopCart() *ShopCart {
|
||||||
|
p := new(ShopCart)
|
||||||
|
q5.NewSlice(&p.Goods, 0, 10)
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user