You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.1 KiB

package service
import (
"time"
"pure-admin/global"
"pure-admin/model"
"pure-admin/model/request"
"pure-admin/model/response"
)
func ListGoods(info request.PageInfo) (list any, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
db := global.MG_DB.Model(&model.TbGoods{})
err = db.Count(&total).Error
if err != nil {
return nil, 0, err
}
var res []model.TbGoods4List
err = db.Select("id,title,tags,retail_price,price_min,price_max,stock,sales,online,created_at").Order("id DESC").Limit(limit).Offset(offset).Find(&res).Error
if err != nil {
return nil, 0, err
}
return res, total, nil
}
func SearchGoods(info request.SearchGoods) (res any, total int64, err error) {
var (
bIds = make([]string, 0)
)
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
db := global.MG_DB.Model(&model.TbGoods{})
if info.Id != 0 {
db = db.Where("id = ?", info.Id)
}
if info.Title != "" {
db = db.Where("title like ?", "%"+info.Title+"%")
}
//取消账号,使用邮箱搜索
if info.StoreNo != "" {
//db = db.Where("store_no = ?", info.StoreNo)
db = db.Joins("join seller_store on seller_store.store_no = tb_goods.store_no").Where("seller_store.email like ?", "%"+info.StoreNo+"%")
}
if info.Status == 1 { // on/off
db = db.Where("online = ?", "on")
}
if info.Status == 2 { // on/off
db = db.Where("stock = 0")
}
if info.Status == 3 { // on/off
db = db.Where("online = ?", "off")
}
err = db.Count(&total).Error
if err != nil {
return nil, 0, err
}
var list []model.TbGoods
err = db.Select("tb_goods.id,title,retail_price,cover,tags,tb_goods.stock,tb_goods.sales,tb_goods.store_no,tb_goods.created_at,tb_goods.price_min,tb_goods.price_max").Order("id DESC").Limit(limit).Offset(offset).Find(&list).Error
if err != nil {
return nil, 0, err
}
resp := make([]response.Goods, 0)
for _, v := range list {
bIds = append(bIds, v.StoreNo)
resp = append(resp, response.Goods{
Id: v.ID,
Cover: v.Cover,
Title: v.Title,
RetailPrice: v.RetailPrice,
Tags: v.Tags,
Stock: v.Stock,
Sales: v.Sales,
StoreNo: v.StoreNo,
CreatedAt: v.CreatedAt,
PriceMax: v.PriceMax,
PriceMin: v.PriceMin,
})
}
// 获取商家信息
business, err := model.GetBusinessEmail(bIds)
if err != nil {
return nil, 0, err
}
for k, v := range resp {
resp[k].StoreNo = business[v.StoreNo]
}
return resp, total, nil
}
func GetGoodsVisitCount() (total, yesterday int64) {
global.MG_DB.Model(&model.GoodsVisit{}).Count(&total)
day := time.Now().AddDate(0, 0, -1)
now := time.Now()
global.MG_DB.Model(&model.GoodsVisit{}).Where("created_at BETWEEN ? AND ?", day.Format("2006-01-02 00:00:00"), now.Format("2006-01-02 00:00:00")).Count(&yesterday)
return
}
func GetGoodsCount() (total, yesterday int64) {
global.MG_DB.Model(&model.TbGoods{}).Count(&total)
day := time.Now().AddDate(0, 0, -1)
now := time.Now()
global.MG_DB.Model(&model.TbGoods{}).Where("created_at BETWEEN ? AND ?", day.Format("2006-01-02 00:00:00"), now.Format("2006-01-02 00:00:00")).Count(&yesterday)
return
}