YiTao/service/item_service.go

84 lines
2.2 KiB
Go
Raw Normal View History

2024-11-09 14:59:27 +08:00
package service
import (
2024-11-09 21:24:02 +08:00
"strconv"
2024-11-09 14:59:27 +08:00
"yitao/ecode"
"yitao/model"
)
type ItemService struct{}
2024-11-21 21:52:35 +08:00
func (s *ItemService) CreateItem(uid uint, itemname string, desc string, types []int, imgs []string, price int) (item *model.ItemModel, e *ecode.Ecode) {
2024-11-09 14:59:27 +08:00
item = new(model.ItemModel)
e = ecode.OK()
item.Itemname = itemname
item.Desc = desc
item.Types = types
2024-11-21 21:52:35 +08:00
item.Imgs = imgs
2024-11-09 14:59:27 +08:00
item.Price = price
2024-11-09 16:36:28 +08:00
item.State = model.ItemStateOnSale
item.Uid = uid
2024-11-09 14:59:27 +08:00
model.DB.Create(item)
2024-11-21 21:52:35 +08:00
if item.ID == 0 {
return nil, ecode.Item(ecode.ITEM_CREATE_ERR)
}
2024-11-09 14:59:27 +08:00
return
}
2024-11-09 16:36:28 +08:00
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()
}
2024-11-09 16:51:53 +08:00
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
}
2024-11-09 21:24:02 +08:00
2024-11-11 22:38:17 +08:00
func (s *ItemService) GetItems(ttype int, page int, page_size int) (items []model.ItemModel, e *ecode.Ecode) {
2024-11-09 21:24:02 +08:00
e = ecode.OK()
2024-11-11 22:38:17 +08:00
model.DB.Where("state!=?", model.ItemStateDelete).Where("types like ?", "%"+strconv.Itoa(ttype)+"%").Offset((page - 1) * page_size).Limit(page_size).Find(&items)
2024-11-09 21:24:02 +08:00
return
}
2024-11-09 22:11:24 +08:00
2024-11-13 16:30:51 +08:00
func (s *ItemService) Search(keyword string, page int, page_size int) (items []model.ItemModel, e *ecode.Ecode) {
2024-11-10 16:19:49 +08:00
e = ecode.OK()
2024-11-13 16:30:51 +08:00
model.DB.Where("state!=?", model.ItemStateDelete).Where("itemname like ?", "%"+keyword+"%").Offset((page - 1) * page_size).Limit(page_size).Find(&items)
2024-11-10 16:19:49 +08:00
return
}
// 类型服务模块
/*********************************************************************************/
2024-11-09 22:11:24 +08:00
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()
}