goods.go 5.66 KB
package models

import (
	"database/sql"
	"errors"
	//"fmt"
	"time"

	db "client/icesimba.mall/database"
	//"icesimba.mall/utils"
)

type Goods struct {
	Id       string  `json:"id"`
	Desc     string  `json:"desc"`
	Name     string  `json:"name"`
	Icon     string  `json:"icon"`
	Price    float64 `json:"price"`
	Discount float64 `json:"discount"`
}

type IOUGoods struct {
	GameId    string
	GoodsId   string
	GoodsCode string
	GoodsDesc string
	GoodsName string
	GoodsIcon string
	StartTime int64
	EndTime   int64
	Price     float64
	Discount  float64
	MallCode  string
	MallId    string
}

type goodsDb struct {
	Id        sql.NullString
	Desc      sql.NullString
	Name      sql.NullString
	Icon      sql.NullString
	Price     sql.NullFloat64
	Discount  sql.NullFloat64
	StartTime sql.NullInt64
	EndTime   sql.NullInt64
}

func (in *Goods) QueryGoodsByGoodsId(goodsId string) (out Goods, err error) {
	if goodsId == "" {
		err = errors.New("参数错误")
		return
	}
	sqlQu := "select code,description,name,icon,price,discount,starttime,endtime from ice_mall_goods where id=?"
	row := db.SqlDB.QueryRow(sqlQu, goodsId)
	goodsdb := goodsDb{}
	err = row.Scan(
		&goodsdb.Id,
		&goodsdb.Desc,
		&goodsdb.Name,
		&goodsdb.Icon,
		&goodsdb.Price,
		&goodsdb.Discount,
		&goodsdb.StartTime,
		&goodsdb.EndTime,
	)
	if err != nil {
		return
	}
	currTime := time.Now().UnixNano() / 1e6
	if goodsdb.StartTime.Valid && goodsdb.EndTime.Valid {
		if goodsdb.StartTime.Int64 > currTime || goodsdb.EndTime.Int64 < currTime {
			err = errors.New("商品已过期")
			return
		}
	}
	if goodsdb.Id.Valid {
		out.Id = goodsdb.Id.String
	}
	if goodsdb.Desc.Valid {
		out.Desc = goodsdb.Desc.String
	}
	if goodsdb.Name.Valid {
		out.Name = goodsdb.Name.String
	}
	if goodsdb.Icon.Valid {
		out.Icon = goodsdb.Icon.String
	}
	if goodsdb.Price.Valid {
		out.Price = goodsdb.Price.Float64
	}
	if goodsdb.Discount.Valid {
		out.Discount = goodsdb.Discount.Float64
	}
	return
}

//func (in *IOUGoods) QueryGoodsByGoodsCode() (code int, out Goods, err error) {
//	if in.GoodsCode == "" {
//		code = 400
//		err = errors.New("参数错误")
//		return
//	}
//	sqlQu := "select id,desc,name,icon,price,discount,starttime,endtime from ice_mall_goods where code=? and game_id=?"
//	row := db.SqlDB.QueryRow(sqlQu, in.GoodsCode, in.GameId)
//	goodsdb := goodsDb{}
//	err = row.Scan(
//		&goodsdb.Id,
//		&goodsdb.Desc,
//		&goodsdb.Name,
//		&goodsdb.Icon,
//		&goodsdb.Price,
//		&goodsdb.Discount,
//		&goodsdb.StartTime,
//		&goodsdb.EndTime,
//	)
//	if err != nil {
//		code = 400
//		err = errors.New("数据不存在")
//		return
//	}
//	currTime := time.Now().UnixNano() / 1e6
//	if goodsdb.StartTime.Valid && goodsdb.EndTime.Valid {
//		if goodsdb.StartTime.Int64 > currTime || goodsdb.EndTime.Int64 < currTime {
//			err = errors.New("商品已过期")
//			return
//		}
//	}
//	out.Code = in.GoodsCode
//	if goodsdb.Id.Valid {
//		out.Id = goodsdb.Id.String
//	}
//	if goodsdb.Desc.Valid {
//		out.Desc = goodsdb.Desc.String
//	}
//	if goodsdb.Name.Valid {
//		out.Name = goodsdb.Name.String
//	}
//	if goodsdb.Icon.Valid {
//		out.Icon = goodsdb.Icon.String
//	}
//	if goodsdb.Price.Valid {
//		out.Price = goodsdb.Price.Float64
//	}
//	if goodsdb.Discount.Valid {
//		out.Discount = goodsdb.Discount.Float64
//	}

//	code = 200
//	return
//}

//func (in *IOUGoods) InsertGoodsToMall() (code int, err error) {
//	if in.MallId == "" || in.GoodsId == "" {
//		code = 400
//		err = errors.New("参数错误")
//		return
//	}
//	sqlIn := "insert into ice_mall_gom(mallid, goodsid) values(?,?)"
//	_, err = db.SqlDB.Exec(
//		sqlIn,
//		in.MallId,
//		in.GoodsId,
//	)
//	if in.MallId == "" || in.GoodsId == "" {
//		code = 400
//		err = errors.New("创建商城商品关联失败")
//		return
//	}
//	code = 200
//	return
//}

//func (in *IOUGoods) InsertOrUpdateGoods() (code int, err error) {
//	if in.GameId == "" || in.GoodsCode == "" {
//		code = 400
//		err = errors.New("参数错误")
//		return
//	}
//	if in.MallCode != "" {
//		mall := Mall{
//			Id:     in.MallCode,
//			GameId: in.GameId,
//		}
//		_, mall, err = mall.QueryMallByMallCode()
//		if err != nil {
//			err = errors.New("商城不存在")
//			code = 400
//			return
//		}
//		in.MallId = mall.Id
//	}
//	goods := IOUGoods{
//		GoodsId: in.GoodsCode,
//	}
//	_, _, err = goods.QueryGoodsByGoodsCode()
//	if err != nil {
//		_, id, err := in.CreateNewGoods()
//		if err != nil {
//			in.GoodsId = id
//			code, err = in.InsertGoodsToMall()
//		}
//	} else {
//		code, err = in.UpdateGoods()
//	}
//	return
//}

//func (in *IOUGoods) CreateNewGoods() (code int, goodsId string, err error) {
//	in.GoodsId = utils.GetUuid()
//	goodsId = in.GoodsId
//	sqlIn := "insert into ice_mall_goods(id, code, desc, name, icon, price, discount, starttime, endtime, gameid) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
//	_, err = db.SqlDB.Exec(
//		sqlIn,
//		in.GoodsId,
//		in.GoodsCode,
//		in.GoodsDesc,
//		in.GoodsName,
//		in.GoodsIcon,
//		in.Price,
//		in.Discount,
//		in.StartTime,
//		in.EndTime,
//		in.GameId,
//	)
//	if err != nil {
//		err = errors.New("创建商品失败")
//		code = 400
//		fmt.Println(err)
//		return
//	}
//	code = 200
//	return
//}

//func (in *IOUGoods) UpdateGoods() (code int, err error) {
//	sqlUp := "update ice_mall_goods set desc=?, name=?, icon=?, price=?, discount=?, starttime=?, endtime=?,  where code=? and gameid=?"
//	stmt, err := db.SqlDB.Prepare(sqlUp)
//	defer stmt.Close()
//	_, err = stmt.Exec(
//		in.GoodsCode,
//		in.GoodsDesc,
//		in.GoodsName,
//		in.GoodsIcon,
//		in.Price,
//		in.Discount,
//		in.StartTime,
//		in.EndTime,
//		in.GoodsCode,
//		in.GameId,
//	)
//	if err != nil {
//		code = 400
//		err = errors.New("更新商品数据失败")
//		return
//	}
//	code = 200
//	return
//}