Skip to content

Commit 1f61a91

Browse files
committed
优化purchaseItem方法
&& 删除Redeem函数的无用注释代码 && 优化代码
1 parent 61f930d commit 1f61a91

File tree

2 files changed

+32
-42
lines changed

2 files changed

+32
-42
lines changed

niu/main.go

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ var (
2626
globalLock sync.Mutex
2727

2828
errCancelFail = errors.New("遇到不可抗力因素,注销失败!")
29+
30+
// ErrInvalidProductID 商品ID无效
31+
ErrInvalidProductID = errors.New("商品id不存在")
32+
2933
// ErrNoBoys 表示当前没有男孩子可用的错误。
3034
ErrNoBoys = errors.New("暂时没有男孩子哦")
3135

@@ -337,24 +341,15 @@ func Redeem(gid, uid int64, lastLength float64) error {
337341
return ErrNoNiuNiu
338342
}
339343

340-
/* var n niuNiuManager
341-
if err = db.Where("niu_id = ?", niuID).First(&n).Error; err != nil {
342-
return err
343-
}
344-
345-
switch n.Status {
346-
case 1:
347-
return errors.New("你的牛牛已经被拍卖无法赎回")
348-
case 2:
349-
return errors.New("你的牛牛已经被注销无法赎回")
350-
}*/
351-
352344
money := wallet.GetWalletOf(uid)
353345

354-
if money < 150 {
346+
price := 150
347+
348+
if money < price {
355349
var builder strings.Builder
356350
walletName := wallet.GetWalletName()
357-
builder.WriteString("赎牛牛需要150")
351+
builder.WriteString("赎牛牛需要")
352+
builder.WriteString(strconv.Itoa(price))
358353
builder.WriteString(walletName)
359354
builder.WriteString(",快去赚钱吧,目前仅有:")
360355
builder.WriteString(strconv.Itoa(money))
@@ -363,15 +358,15 @@ func Redeem(gid, uid int64, lastLength float64) error {
363358
return errors.New(builder.String())
364359
}
365360

366-
if err = wallet.InsertWalletOf(uid, -150); err != nil {
361+
if err = wallet.InsertWalletOf(uid, -price); err != nil {
367362
return err
368363
}
369364

370365
return TableFor(gid, ur).Where("user_id = ?", uid).Update("length", lastLength).Error
371366
}
372367

373368
// Store 牛牛商店
374-
func Store(gid, uid int64, n int) error {
369+
func Store(gid, uid int64, productID int, quantity int) error {
375370
globalLock.Lock()
376371
defer globalLock.Unlock()
377372
if err := ensureUserInfoTable[userInfo](gid, ur); err != nil {
@@ -383,7 +378,7 @@ func Store(gid, uid int64, n int) error {
383378
return err
384379
}
385380

386-
money, err := info.purchaseItem(n)
381+
money, err := info.purchaseItem(productID, quantity)
387382
if err != nil {
388383
return err
389384
}
@@ -442,9 +437,7 @@ func Sell(gid, uid int64) (string, error) {
442437
return "", err
443438
}
444439

445-
db.Model(&niuNiuManager{}).Where("niu_id = ?", niu.NiuID).Update("status", 1)
446-
447-
return message, err
440+
return message, db.Model(&niuNiuManager{}).Where("niu_id = ?", niu.NiuID).Update("status", 1).Error
448441
}
449442

450443
// ShowAuction 展示牛牛拍卖行
@@ -481,8 +474,10 @@ func Auction(gid, uid int64, index int) (string, error) {
481474

482475
niu, err := getUserByID(gid, uid)
483476

484-
if err != nil {
477+
if errors.Is(err, gorm.ErrRecordNotFound) {
485478
niu.UserID = uid
479+
} else if err != nil {
480+
return "", err
486481
}
487482

488483
niu.Length = info.Length

niu/models.go

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -250,28 +250,23 @@ func (u *userInfo) checkProps(props, propSort string) error {
250250
return ErrPropNotFound
251251
}
252252

253-
func (u *userInfo) purchaseItem(n int) (int, error) {
254-
var (
255-
money int
256-
err error
257-
)
258-
switch n {
259-
case 1:
260-
money = 300
261-
u.WeiGe += 5
262-
case 2:
263-
money = 300
264-
u.MeiYao += 5
265-
case 3:
266-
money = 500
267-
u.Artifact += 2
268-
case 4:
269-
money = 500
270-
u.ShenJi += 2
271-
default:
272-
err = errors.New("无效的选择")
253+
func (u *userInfo) purchaseItem(productID, quantity int) (money int, err error) {
254+
255+
m := map[int]int{
256+
1: 300, // 伟哥
257+
2: 300, // 媚药
258+
3: 500, // 击剑神器
259+
4: 500, // 击剑神稽
273260
}
274-
return money, err
261+
262+
var ok bool
263+
if money, ok = m[productID]; !ok {
264+
return 0, ErrInvalidProductID
265+
}
266+
267+
money *= quantity
268+
269+
return
275270
}
276271

277272
func (u *userInfo) processDaJiao(props string) (messages string, err error) {

0 commit comments

Comments
 (0)