mh_server/model/model_test.go
2021-11-01 11:32:23 +08:00

347 lines
8.5 KiB
Go

package model
import (
"fmt"
"github.com/codinl/go-logger"
"github.com/jinzhu/gorm"
"math/rand"
"testing"
"time"
)
func TestGameList(t *testing.T) {
InitTestDB()
var game GameCard
err := NewGameCardQuerySet(GormDb).IDEq(1).One(&game)
if err != nil {
logger.Error("err:", err)
return
}
logger.Infof("game %#v", game)
fmt.Printf("game %#v", game)
gameName := game.Name
for i := 50; i < 200; i++ {
randNum := getRandNum()
numUnix := getRandNumUnix()
num := fmt.Sprintf("0%d", i+1)
game.Name = num + gameName
game.NewProducts = 2
game.Price = uint32(randNum)
game.OrderCount = uint32(randNum + numUnix)
game.ID = 0
GormDb.Create(&game)
}
}
func getRandNum() int {
rand.Seed(time.Now().UnixNano())
return rand.Intn(1000)
}
func getRandNumUnix() int {
rand.Seed(time.Now().Unix())
return rand.Intn(1000)
}
var GormDb *gorm.DB
// 测试服务器
func InitTestDB() {
var err error
dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
"mh_dev", "m5h4parZsXjbeiFh", "39.108.188.218", "3306", "mh_dev")
db, err := gorm.Open("mysql", dialect)
if err != nil {
logger.Infof("Open DB error [%s] with dialect[%s]", err.Error(), dialect)
panic(err)
}
if db.DB().Ping() != nil {
fmt.Printf("Ping DB fail: %#v", db.Error)
panic(err)
}
db.SingularTable(true)
db.AutoMigrate(
&User{},
//&LotteryInviteTargetUser{},
&GameCard{},
&Collection{},
&Config{},
&HistoryBrowsing{},
&ShoppingCart{},
&UserAddress{},
&SearchHistory{},
&Order{},
&HotSearch{},
&HomeCarousel{},
&GameCardType{},
&Store{},
&GameType{},
&UserOpenMemberRecord{},
&CommonProblem{},
&ExpressCompany{},
&GameCardGoodsStock{},
&GameCardGoods{},
&UserInvite{},
&ArticleTitlePanel{},
)
fmt.Println("DB init success")
DB = db
logger.Info("ok")
}
var DBProd *gorm.DB
func InitDBProd() {
var err error
dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
"mh_pro", "fLeytnBFCRB553ab", "39.108.188.218", "3306",
"mh_pro")
DBProd, err = gorm.Open("mysql", dialect)
if err != nil {
fmt.Println("Connect Database Error, error = ", err)
panic(err)
}
DBProd.DB().SetMaxOpenConns(1000)
DBProd.DB().SetMaxIdleConns(500)
DBProd.DB().SetConnMaxLifetime(time.Second * 10)
DBProd.LogMode(true)
DBProd.SingularTable(true)
DBProd.AutoMigrate()
if err := DBProd.DB().Ping(); err != nil {
fmt.Println("Ping Database Fail, error = ", err)
panic(err)
}
fmt.Println("DB init success")
}
func TestHotSearch_TableName(t *testing.T) {
InitTestDB()
list := []string{"马里奥赛车8豪华版", "任天堂明星大乱斗 特别版", "超级马力欧 奥德赛", "塞尔达传说:旷野之息", "宝可梦:剑 / 盾", "精灵宝可梦 Let's Go! 皮卡丘/Let's Go! 伊布", "喷射战士2", "超级马力欧派对", "新超级马里奥兄弟U", "路易基鬼屋3", "超级马力欧创作家2", "塞尔达传说:织梦岛", "集合了!动物森友会", "1-2 Switch", "马里奥网球Aces", "马里奥+疯兔:王国之战", "火焰之纹章:风花雪月", "星之卡比:新星同盟", "大金刚国度:热带寒流"}
for i, s := range list {
hotSearch := &HotSearch{
Keyword: s,
Sort: uint32(len(list) - i),
}
err := hotSearch.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
func TestGetHomeCarouselList(t *testing.T) {
InitTestDB()
//imgs := []string{"1-2011060021334X.jpg", "1-2011060021425N.jpg", "1-201106002150294.jpg", "1-201106002159522.jpg"}
imgs := []string{"http://39.108.188.218:8000/img/1-2011060021334X.jpg", "http://39.108.188.218:8000/img/1-2011060021425N.jpg", "http://39.108.188.218:8000/img/1-201106002150294.jpg", "http://39.108.188.218:8000/img/1-201106002159522.jpg"}
for i, img := range imgs {
homeCarousel := &HomeCarousel{
Name: "banner" + fmt.Sprintf("%d", len(imgs)-i),
Img: img,
Sort: uint32(len(imgs) - i),
IsShow: 1,
Detail: "",
Link: "",
}
err := homeCarousel.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
func TestGameCardType_Create(t *testing.T) {
InitTestDB()
types := []string{"角色扮演", "射击游戏", "动作游戏", "冒险游戏", "赛车游戏", "策略游戏", "即时战略", "养成游戏", "桌面棋牌", "休闲益智", "体育运动", "模拟经营", "音乐游戏", "格斗游戏", "动作角色", "第一人称射击", "第三人称射击"}
for i, s := range types {
cardType := GameCardType{
Name: s,
Sort: uint32(i + 100),
}
err := cardType.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
func TestMemberExprireTime(t *testing.T) {
InitTestDB()
}
func TestStore_TableName(t *testing.T) {
InitTestDB()
for i := 0; i < 10; i++ {
idx := fmt.Sprintf("%d", i+1)
store := Store{
Name: "门店" + idx,
Img: "http://39.108.188.218:8000/img/1599445323_430355.jpg",
Tel: "021-54473036",
Province: "广东省",
City: "深圳市",
District: "南山区",
Address: "高新园",
Longitude: 0,
Latitude: 0,
}
err := store.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
func TestPess(t *testing.T) {
InitTestDB()
comp := []string{"圆通速递", "韵达快递", "中通快递", "顺丰速运", "申通快递", "百世快递", "邮政快递包裹", "京东物流", "EMS", "极兔速递", "EMS包裹"}
compCode := []string{"yuantong", "yunda", "zhongtong", "shunfeng", "shentong", "huitongkuaidi", "youzhengguonei", "jd", "ems", "jtexpress", "emsbg"}
for i, _ := range comp {
company := &ExpressCompany{
CompanyName: comp[i],
CompanyCode: compCode[i],
}
err := company.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
func TestGoodsStock(t *testing.T) {
InitTestDB()
cards := make([]GameCard, 0)
err := NewGameCardQuerySet(GormDb).All(&cards)
if err != nil {
logger.Error("err:", err)
}
stores := make([]Store, 0)
err = NewStoreQuerySet(GormDb).All(&stores)
if err != nil {
logger.Error("err:", err)
}
for _, store := range stores {
for _, card := range cards {
stock := &GameCardGoodsStock{
StoreId: uint64(store.ID),
GameCardId: uint64(card.ID),
StoreStock: 1000,
RentStock: 10,
}
err := stock.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
}
func TestGoodsCard(t *testing.T) {
InitTestDB()
cards := make([]GameCard, 0)
err := NewGameCardQuerySet(GormDb).All(&cards)
if err != nil {
logger.Error("err:", err)
}
stores := make([]Store, 0)
err = NewStoreQuerySet(GormDb).All(&stores)
if err != nil {
logger.Error("err:", err)
}
for _, store := range stores {
for _, card := range cards {
stock := &GameCardGoodsStock{
StoreId: uint64(store.ID),
GameCardId: uint64(card.ID),
StoreStock: 1000,
RentStock: 10,
}
err := stock.Create(GormDb)
if err != nil {
logger.Error("err:", err)
}
}
}
}
func TestOrderList(t *testing.T) {
InitTestDB()
count, err := NewOrderQuerySet(GormDb.Debug()).UidEq(uint64(55191926)).PayStatusEq(PayStatusPaid).CardStatusIn([]uint8{1, 2, 3}...).Count()
if err != nil {
logger.Error("err:", err)
}
fmt.Println("count:", count)
}
func TestGenShareCode(t *testing.T) {
}
func TestUserBundleFirstOrderStore(t *testing.T) {
UserBundleFirstOrderStore()
}
func UserBundleFirstOrderStore() {
InitDBProd()
var users []User
//err := NewUserQuerySet(DBProd).StoreIdEq(0).MemberLevelGte(2).OrderAscByID().All(&users)
err := NewUserQuerySet(DBProd).StoreTypeEq(1).OrderAscByID().All(&users)
if err != nil {
fmt.Println("users err:", err)
return
}
for i, _ := range users {
//var order Order
//err := NewOrderQuerySet(DBProd).UidEq(uint64(users[i].Uid)).PayStatusEq(PayStatusPaid).
// CardStatusEq(OrderCardStatusCompleted).OrderAscByCreatedAt().Limit(1).One(&order)
//if err != nil {
// fmt.Println("store_id err:", err)
// //return
//}
//if i > 3{
// return
//}
if users[i].Uid == 0 {
continue
}
//sql := fmt.Sprintf("UPDATE `user` SET store_id =%d,store_type=1 WHERE uid = %d;", order.StoreId, users[i].Uid)
//fmt.Println("sql:", sql)
//err = DBProd.Exec(sql).Error
//if err != nil {
// fmt.Println("store_id err:", err)
// return
//}
userInvite := &UserInvite{
FromUid: 0,
UserType: 0,
StoreId: users[i].StoreId,
MemberOpenTime: users[i].MemberExpire.AddDate(-1, 0, 0),
MemberType: 2,
MemberStatus: 2,
ToUid: users[i].Uid,
StoreType: 1,
}
err = DBProd.Create(userInvite).Error
if err != nil {
fmt.Println("create err:", err)
}
}
}