123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- package service
- import (
- "errors"
- "time"
- "youngee_b_api/app/dao"
- "youngee_b_api/app/entity"
- "youngee_b_api/app/vo"
- )
- type ProductService struct{}
- func (p ProductService) GetTaskProductsByUserId(param vo.GetAllProductParam) (vo.ResultVO, error) {
- if param.Page == 0 {
- param.Page = 1
- }
- if param.PageSize == 0 {
- param.PageSize = 10
- }
- var result vo.ResultVO
- var products []entity.Product
- var err error
- var total int64
- //if param.SubAccountId == 0 {
- // enterpriseId := param.EnterpriseId
- // if enterpriseId == "" {
- // return result, errors.New("enterpriseId is empty")
- // }
- // products, total, err = (&dao.ProductDAO{}).GetProductsByEnterpriseID(enterpriseId, param.Page, param.PageSize)
- //} else {
- // products, total, err = (&dao.ProductDAO{}).GetProductsBySubAccountId(param.SubAccountId, param.Page, param.PageSize)
- //}
- enterpriseId := param.EnterpriseId
- if enterpriseId == "" {
- return result, errors.New("enterpriseId is empty")
- }
- products, total, err = (&dao.ProductDAO{}).GetProductsByEnterpriseIDAndTypeTitle(enterpriseId, param.ProductType, param.ProductTitle, param.Page, param.PageSize)
- if err != nil {
- // 数据库查询error
- return result, err
- }
- var reProducts []vo.ReProductPreview
- for _, product := range products {
- var createrName string
- photoUrl, e := dao.ProductPhotoDAO{}.GetMainPhotoByProductID(product.ProductID)
- if e != nil {
- photoUrl = ""
- }
- if product.SubAccountID == 0 {
- enterprise, err := dao.EnterpriseDao{}.GetEnterprise(product.EnterpriseID)
- if err == nil && enterprise != nil {
- createrName = enterprise.BusinessName
- }
- } else {
- subAccount, err := dao.SubAccountDao{}.GetSubAccount(product.SubAccountID)
- if err == nil && subAccount != nil {
- createrName = subAccount.SubAccountName
- }
- }
- reProduct := vo.ReProductPreview{
- ProductID: product.ProductID,
- ProductName: product.ProductName,
- ProductType: product.ProductType,
- ProductCategory: product.ProductCategory,
- ProductPrice: product.ProductPrice,
- ProductDetail: product.ProductDetail,
- CreatedAt: product.CreatedAt.Format("2006-01-02 15:04:05"),
- PhotoUrl: photoUrl,
- CreateName: createrName,
- }
- reProducts = append(reProducts, reProduct)
- }
- result = vo.ResultVO{
- Page: param.Page,
- PageSize: param.PageSize,
- Total: total,
- Data: reProducts,
- }
- return result, nil
- }
- func (p ProductService) CreateProduct(productCreateParam *vo.ProductCreateParam) (int64, error) {
- product := entity.Product{
- ProductType: productCreateParam.ProductType,
- KuaishouProductId: productCreateParam.ProductId,
- ProductName: productCreateParam.ProductName,
- ProductCategory: productCreateParam.ProductCategory,
- ProductPrice: productCreateParam.ProductPrice,
- ProductDetail: productCreateParam.ProductDetail,
- EnterpriseID: productCreateParam.EnterpriseId,
- SubAccountID: productCreateParam.SubAccountId,
- ExclusiveCommission: productCreateParam.ExclusiveCommission,
- CommissionPrice: productCreateParam.CommissionPrice,
- PublicCommission: productCreateParam.PublicCommission,
- ProductUrl: productCreateParam.ProductUrl,
- }
- productID, err := dao.ProductDAO{}.CreateProduct(product)
- if err != nil {
- return 0, err
- }
- if productCreateParam.ProductPhotos != nil {
- productPhotos := []entity.ProductPhoto{}
- for _, photo := range productCreateParam.ProductPhotos {
- productPhoto := entity.ProductPhoto{
- PhotoUrl: photo.PhotoUrl,
- PhotoUid: photo.PhotoUid,
- Symbol: photo.Symbol,
- ProductID: productID,
- CreatedAt: time.Now(),
- }
- productPhotos = append(productPhotos, productPhoto)
- }
- err = dao.ProductPhotoDAO{}.CreateProductPhoto(productPhotos)
- if err != nil {
- return 0, err
- }
- }
- return productID, nil
- }
- // 商品详情
- func (s ProductService) GetProductDetail(param *vo.ProductSearchParam) (*vo.ReProductInfo, error) {
- var reProductInfo *vo.ReProductInfo
- product, err := dao.ProductDAO{}.GetProductByID(param.ProductId)
- if err != nil {
- return nil, err
- }
- photoMain, _ := dao.ProductPhotoDAO{}.GetMainPhotoByProductID(param.ProductId)
- photosAll, _ := dao.ProductPhotoDAO{}.GetProductPhotoByProductID(param.ProductId)
- var photoRotates []vo.Photo
- var photoDetails []vo.Photo
- for _, photosOne := range photosAll {
- if photosOne.Symbol == 2 || photosOne.Symbol == 3 {
- photo := vo.Photo{
- PhotoUrl: photosOne.PhotoUrl,
- Symbol: photosOne.Symbol,
- }
- photoRotates = append(photoRotates, photo)
- } else if photosOne.Symbol == 4 || photosOne.Symbol == 5 {
- photo := vo.Photo{
- PhotoUrl: photosOne.PhotoUrl,
- Symbol: photosOne.Symbol,
- }
- photoDetails = append(photoDetails, photo)
- }
- }
- reProductInfo = &vo.ReProductInfo{
- ProductID: product.ProductID,
- ProductName: product.ProductName,
- ProductCategory: product.ProductCategory,
- ProductPrice: product.ProductPrice,
- ExclusiveCommission: product.ExclusiveCommission,
- CommissionPrice: product.CommissionPrice,
- ProductDetail: product.ProductDetail,
- ProductUrl: product.ProductUrl,
- PhotoMain: photoMain,
- PhotoRotates: photoRotates,
- PhotoDetails: photoDetails,
- CreatedAt: product.CreatedAt.Format("2006-01-02 15:04:05"),
- }
- return reProductInfo, nil
- }
- // 更新商品
- func (p ProductService) UpdateProduct(param *vo.ProductUpdateParam) (int64, error) {
- newProduct := entity.Product{
- ProductID: param.ProductId,
- ProductName: param.ProductName,
- ProductCategory: param.ProductCategory,
- ProductPrice: param.ProductPrice,
- ExclusiveCommission: param.ExclusiveCommission,
- CommissionPrice: param.CommissionPrice,
- ProductDetail: param.ProductDetail,
- ProductUrl: param.ProductUrl,
- UpdatedAt: time.Now(),
- }
- productId, err := dao.ProductDAO{}.UpdateProduct(newProduct)
- if err != nil {
- return 0, err
- }
- if param.ProductPhotos != nil {
- productPhotos := []entity.ProductPhoto{}
- for _, photo := range param.ProductPhotos {
- productPhoto := entity.ProductPhoto{
- PhotoUrl: photo.PhotoUrl,
- PhotoUid: photo.PhotoUid,
- Symbol: photo.Symbol,
- StoreID: productId,
- ProductPhotoType: 1,
- CreatedAt: time.Now(),
- }
- productPhotos = append(productPhotos, productPhoto)
- }
- err = dao.ProductPhotoDAO{}.CreateProductPhoto(productPhotos)
- if err != nil {
- return 0, err
- }
- }
- return productId, nil
- }
- // 删除商品
- func (p ProductService) DeleteProduct(param *vo.ProductUpdateParam) (int64, error) {
- err := dao.ProductDAO{}.DeleteProduct(param.ProductId)
- if err != nil {
- return 0, err
- }
- return param.ProductId, nil
- }
- // 商品列表-角标
- func (t ProductService) CountProduct(param *vo.GetAllProductParam) map[string]int64 {
- res := make(map[string]int64)
- var commonProduct int64
- var kuaishouProduct int64
- if param.ProductTitle != "" {
- dao.Db.Model(&entity.Product{}).Where("enterprise_id = ? sub_account_id = ? and product_type = ? AND is_deleted = 0 and product_name LIKE ?", param.EnterpriseId, param.SubAccountId, 0, "%"+param.ProductTitle+"%").Count(&commonProduct)
- dao.Db.Model(&entity.Product{}).Where("enterprise_id = ? sub_account_id = ? and product_type = ? AND is_deleted = 0 and product_name LIKE ?", param.EnterpriseId, param.SubAccountId, 1, "%"+param.ProductTitle+"%").Count(&kuaishouProduct)
- } else {
- dao.Db.Model(&entity.Product{}).Where("enterprise_id = ? sub_account_id = ? and product_type = ? AND is_deleted = 0", param.EnterpriseId, param.SubAccountId, 0).Count(&commonProduct)
- dao.Db.Model(&entity.Product{}).Where("enterprise_id = ? sub_account_id = ? and product_type = ? AND is_deleted = 0", param.EnterpriseId, param.SubAccountId, 1).Count(&kuaishouProduct)
- }
- res["commonProduct"] = commonProduct
- res["kuaishouProduct"] = kuaishouProduct
- return res
- }
- // 获取商品类目
- func (p ProductService) GetProductCategorys() ([]string, error) {
- var categorys []string
- productCategorys, err := dao.ProductDAO{}.GetProductCategorys()
- if err != nil {
- return nil, err
- }
- for _, productCategory := range productCategorys {
- categorys = append(categorys, productCategory.ProductCategory)
- }
- return categorys, nil
- }
|