123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package goods
-
- import (
- "errors"
- "spaceofcheng/services/models"
- "spaceofcheng/services/models/cases"
- "spaceofcheng/services/models/coupon"
- "spaceofcheng/services/models/customer"
- "spaceofcheng/services/models/goods"
- "spaceofcheng/services/models/model"
- "spaceofcheng/services/models/system"
- "spaceofcheng/services/models/vipcard"
- "spaceofcheng/services/utils"
- "strings"
- )
-
- // GoodsServ 系统处理
- type GoodsServ struct {
- ctx *utils.Context
- dao *goods.GoodsDAO
- caseDAO *cases.CaseDAO
- custDAO *customer.CustomerDAO
- userDAO *system.UserDAO
- couponDAO *coupon.CouponDAO
- vipDAO *vipcard.VipcardDAO
- }
-
- // NewGoodsServ 初始化
- func NewGoodsServ(ctx *utils.Context) *GoodsServ {
- return &GoodsServ{
- ctx: ctx,
- dao: goods.NewGoodsDAO(ctx),
- caseDAO: cases.NewCaseDAO(ctx),
- custDAO: customer.NewCustomerDAO(ctx),
- userDAO: system.NewUserDAO(ctx),
- couponDAO: coupon.NewCouponDAO(ctx),
- vipDAO: vipcard.NewVipcardDAO(ctx),
- }
- }
-
- // GetListByCase 获取商品列表
- // 微信端
- func (s *GoodsServ) GetListByCase(id string) ([]goods.GoodsWithSpec, error) {
- res, err := s.dao.GetGoodsListOfCase(id)
-
- if err != nil {
- utils.LogError("获取商品列表失败: " + err.Error())
- return nil, errors.New("获取列表失败, 请重试")
- }
-
- return res, nil
- }
-
- // GetGoodsListPageNavi 获取商品列表
- // 前端 - 非统计部分
- func (s *GoodsServ) GetGoodsListPageNavi(name, typeID, caseids string, page, pagesize int) ([]goods.GoodsWithSpec, int64, error) {
- if page < 1 {
- page = 1
- }
- if pagesize < 0 {
- pagesize = 0
- }
-
- offset := (page - 1) * pagesize
-
- res, cnt, err := s.dao.GetGoodsListPageNavi(strings.ToLower(name), typeID, caseids, []int{pagesize, offset})
- if err != nil {
- utils.LogError("获取商品列表失败: " + err.Error())
- return nil, 0, errors.New("获取列表失败, 请重试")
- }
-
- return res, cnt, nil
- }
-
- // GetGoodsByID 根据id获取商品信息
- func (s *GoodsServ) GetGoodsByID(id string) (*goods.GoodsWithSpec, error) {
- goods, err := s.dao.GetGoodsWithSpecByID(id)
- return goods, err
- }
-
- // UpdateGoods 更新商品
- // 如果没有则新增
- func (s *GoodsServ) UpdateGoods(goods *model.TaGoods, images []string, specs []goods.SpecWithPrice) error {
- if err := utils.NewAuthEngine(s.ctx).CheckCase(goods.CaseId); err != nil {
- return err
- }
-
- if goods.GoodsId == "" {
- if err := s.dao.SaveGoods(goods, images, specs); err != nil {
- utils.LogError("保存商品失败: " + err.Error())
- return errors.New("保存商品失败, 请重试")
- }
- } else {
- if err := s.dao.UpdateGoods(goods, images, specs); err != nil {
- utils.LogError("更新商品失败: " + err.Error())
- return errors.New("更新商品失败, 请重试")
- }
- }
-
- return nil
- }
-
- // DeleteGoods 删除商品
- func (s *GoodsServ) DeleteGoods(id string) error {
- goods, err := s.dao.GetGoodsByID(id)
- if err != nil {
- utils.LogError("查询商品失败: " + err.Error())
- return errors.New("校验商品失败")
- }
-
- if goods.Status == models.STATUS_DEL {
- return nil
- }
-
- if err := utils.NewAuthEngine(s.ctx).CheckCase(goods.CaseId); err != nil {
- return err
- }
-
- if err := s.dao.DeleteGoods(id); err != nil {
- utils.LogError("删除商品失败: " + err.Error())
- return errors.New("删除商品失败")
- }
-
- return nil
- }
|