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
}
2025-01-12 13:50:43 +08:00
// 历史记录模块
/*********************************************************************************/
func ( s * ItemService ) PutHistory ( uid uint , item_id uint ) * ecode . Ecode {
h := new ( model . HistoryModel )
// 查看以前共有几条纪录
var c int64
2025-01-21 14:37:34 +08:00
model . DB . Model ( h ) . Where ( "user_id=? and item_id=?" , uid , item_id ) . Count ( & c )
2025-01-12 13:50:43 +08:00
h . UserId = uid
h . ItemId = item_id
h . Count = int ( c ) + 1
model . DB . Create ( h )
return ecode . OK ( )
}
2024-11-09 22:33:01 +08:00
// 类型服务模块
/*********************************************************************************/
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
}
2024-11-09 22:33:01 +08:00
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 ( )
}