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
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
|
|
}
|
|
|