买卖上限检测
(uid int64, saleName string, salesNum int)
| 772 | |
| 773 | // 买卖上限检测 |
| 774 | func (sql *fishdb) checkCanSalesFor(uid int64, saleName string, salesNum int) (int, error) { |
| 775 | sql.Lock() |
| 776 | defer sql.Unlock() |
| 777 | userInfo := buffInfo{ID: uid} |
| 778 | err := sql.db.Create("buff", &userInfo) |
| 779 | if err != nil { |
| 780 | return salesNum, err |
| 781 | } |
| 782 | _ = sql.db.Find("buff", &userInfo, "WHERE ID = ?", uid) |
| 783 | if time.Now().Day() != time.Unix(userInfo.Duration, 0).Day() { |
| 784 | userInfo.Duration = time.Now().Unix() |
| 785 | userInfo.SalesPole = 0 |
| 786 | userInfo.BuyTing = 0 |
| 787 | err := sql.db.Insert("buff", &userInfo) |
| 788 | if err != nil { |
| 789 | return salesNum, err |
| 790 | } |
| 791 | } |
| 792 | if strings.Contains(saleName, "竿") { |
| 793 | if userInfo.SalesPole >= 10 { |
| 794 | salesNum = -1 |
| 795 | } |
| 796 | } else if !checkIsWaste(saleName) { |
| 797 | maxSales := 30 - userInfo.BuyTing |
| 798 | if maxSales < 0 { |
| 799 | salesNum = 0 |
| 800 | } |
| 801 | if salesNum > maxSales { |
| 802 | salesNum = maxSales |
| 803 | } |
| 804 | } |
| 805 | |
| 806 | return salesNum, err |
| 807 | } |
| 808 | |
| 809 | // 更新买卖鱼上限,假定sales变量已经在 checkCanSalesFor 进行了防护 |
| 810 | func (sql *fishdb) updateCanSalesFor(uid int64, saleName string, sales int) error { |
no test coverage detected