YiTao/service/item_service.go
wzj 735aad8cc1
All checks were successful
Deploy on Tag / build-and-deploy (push) Successful in 38s
新增:历史记录与推荐接口
2025-01-21 14:37:34 +08:00

99 lines
2.7 KiB
Go

package service
import (
"strconv"
"yitao/ecode"
"yitao/model"
)
type ItemService struct{}
func (s *ItemService) CreateItem(uid uint, itemname string, desc string, types []int, imgs []string, price int) (item *model.ItemModel, e *ecode.Ecode) {
item = new(model.ItemModel)
e = ecode.OK()
item.Itemname = itemname
item.Desc = desc
item.Types = types
item.Imgs = imgs
item.Price = price
item.State = model.ItemStateOnSale
item.Uid = uid
model.DB.Create(item)
if item.ID == 0 {
return nil, ecode.Item(ecode.ITEM_CREATE_ERR)
}
return
}
func (s *ItemService) DeleteItem(uid uint, item_id uint) *ecode.Ecode {
item := new(model.ItemModel)
model.DB.Where("id=?", item_id).First(item)
if item.Uid != uid {
return ecode.Item(ecode.ITEM_PERMISSION_DENIED)
}
// 将商品状态设置为删除
item.State = model.ItemStateDelete
model.DB.Save(item)
return ecode.OK()
}
func (s *ItemService) GetItem(id uint) (item *model.ItemModel, e *ecode.Ecode) {
item = new(model.ItemModel)
e = ecode.OK()
model.DB.Where("id=?", id).Where("state!=?", model.ItemStateDelete).First(item)
if item.ID == 0 {
return item, ecode.Item(ecode.ITEM_NOT_FOUND)
}
return
}
func (s *ItemService) GetItems(ttype int, page int, page_size int) (items []model.ItemModel, e *ecode.Ecode) {
e = ecode.OK()
model.DB.Where("state!=?", model.ItemStateDelete).Where("types like ?", "%"+strconv.Itoa(ttype)+"%").Offset((page - 1) * page_size).Limit(page_size).Find(&items)
return
}
func (s *ItemService) Search(keyword string, page int, page_size int) (items []model.ItemModel, e *ecode.Ecode) {
e = ecode.OK()
model.DB.Where("state!=?", model.ItemStateDelete).Where("itemname like ?", "%"+keyword+"%").Offset((page - 1) * page_size).Limit(page_size).Find(&items)
return
}
// 历史记录模块
/*********************************************************************************/
func (s *ItemService) PutHistory(uid uint, item_id uint) *ecode.Ecode {
h := new(model.HistoryModel)
// 查看以前共有几条纪录
var c int64
model.DB.Model(h).Where("user_id=? and item_id=?", uid, item_id).Count(&c)
h.UserId = uid
h.ItemId = item_id
h.Count = int(c) + 1
model.DB.Create(h)
return ecode.OK()
}
// 类型服务模块
/*********************************************************************************/
func (s *ItemService) GetTypes() (types []model.TypeModel, e *ecode.Ecode) {
e = ecode.OK()
model.DB.Find(&types)
return
}
func (s *ItemService) CreateType(name string) *ecode.Ecode {
t := new(model.TypeModel)
// 判断该名称是否已存在
model.DB.Where("name=?", name).First(t)
if t.ID != 0 {
return ecode.Item(ecode.ITEM_TYPE_EXIST)
}
t.Name = name
model.DB.Create(t)
return ecode.OK()
}