123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- package db
- import (
- "context"
- "fmt"
- "github.com/sirupsen/logrus"
- "youngee_b_api/consts"
- "youngee_b_api/model/gorm_model"
- "youngee_b_api/model/http_model"
- "gorm.io/gorm"
- )
- func CreateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
- db := GetReadDB(ctx)
- err := db.Create(&product).Error
- if err != nil {
- return nil, err
- }
- return &product.ProductID, nil
- }
- func UpdateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
- db := GetReadDB(ctx)
- err := db.Model(&product).Updates(product).Error
- if err != nil {
- return nil, err
- }
- return &product.ProductID, nil
- }
- func GetProductByEnterpriseID(ctx context.Context, enterpriseID string) ([]gorm_model.YounggeeProduct, error) {
- db := GetReadDB(ctx)
- products := []gorm_model.YounggeeProduct{}
- err := db.Where("enterprise_id = ?", enterpriseID).Find(&products).Error
- if err != nil {
- return nil, err
- }
- return products, nil
- }
- func GetProductByID(ctx context.Context, productID int64) (*gorm_model.YounggeeProduct, error) {
- db := GetReadDB(ctx)
- product := &gorm_model.YounggeeProduct{}
- err := db.First(&product, productID).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return product, nil
- }
- func GetProductIDByName(ctx context.Context, brandName string, productName string) (*int64, error) {
- db := GetReadDB(ctx)
- product := &gorm_model.YounggeeProduct{}
- err := db.Where("product_name = ? AND brand_name = ?", productName, brandName).First(&product).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- return &product.ProductID, nil
- }
- func GetProductInfoBySelectionId(ctx context.Context, selectionId string) (*gorm_model.YounggeeProduct, error) {
- db := GetReadDB(ctx)
- productId := 0
- err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
- return nil, err
- }
- productInfo := gorm_model.YounggeeProduct{}
- err = db.Model(gorm_model.YounggeeProduct{}).Where("product_id = ?", productId).Find(&productInfo).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
- return nil, err
- }
- return &productInfo, nil
- }
- func GetProductPhotoInfoBySelectionId(ctx context.Context, selectionId string) ([]*gorm_model.YounggeeProductPhoto, error) {
- db := GetReadDB(ctx)
- productId := 0
- err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
- return nil, err
- }
- var productPhotoInfo []*gorm_model.YounggeeProductPhoto
- err = db.Model(gorm_model.YounggeeProductPhoto{}).Where("product_id = ?", productId).Find(&productPhotoInfo).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
- return nil, err
- }
- return productPhotoInfo, nil
- }
- func GetAllProduct(ctx context.Context, req *http_model.GetAllProductRequest, enterpriseID string) ([]*http_model.ProjectBriefInfo, int64, error) {
- var ProjectBriefInfos []*http_model.ProjectBriefInfo
- db := GetReadDB(ctx)
- var projectInfos []*gorm_model.ProjectInfo
- fmt.Printf("请求试探", req.Platform)
- db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
- if req.Platform != 0 {
- db = db.Model(gorm_model.ProjectInfo{}).Where("project_platform = ?", req.Platform)
- }
- if req.FeeForm != 0 {
- db = db.Model(gorm_model.ProjectInfo{}).Where("fee_form = ?", req.FeeForm)
- }
- if req.ProjectForm != 0 {
- db = db.Model(gorm_model.ProjectInfo{}).Where("project_form = ?", req.ProjectForm)
- }
- // 查询总数
- var total int64
- if err := db.Count(&total).Error; err != nil {
- logrus.WithContext(ctx).Errorf("[GetAllProduct] error query mysql total, err:%+v", err)
- return nil, 0, err
- }
- // 查询该页数据
- limit := req.PageSize
- offset := req.PageSize * req.PageNum // assert pageNum start with 0
- err := db.Order("submit_at desc").Limit(int(limit)).Offset(int(offset)).Find(&projectInfos).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
- return nil, 0, err
- }
- projectIdToRecruitStrategy := make(map[string][]*gorm_model.RecruitStrategy)
- platformToPlatformIcon := make(map[int64]string)
- projectIdToSignNum := make(map[string]int64)
- for _, projectInfo := range projectInfos {
- var RecruitStrategys []*gorm_model.RecruitStrategy
- db1 := GetReadDB(ctx)
- err := db1.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id = ?", projectInfo.ProjectID).Find(&RecruitStrategys).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetAllProduct] error query RecruitStrategys, err:%+v", err)
- return nil, 0, err
- }
- projectIdToRecruitStrategy[projectInfo.ProjectID] = RecruitStrategys
- }
- for _, projectInfo := range projectInfos {
- PlatformIcon := ""
- db1 := GetReadDB(ctx)
- err := db1.Debug().Model(gorm_model.InfoThirdPlatform{}).Select("platform_icon").Where("platform_id = ?", projectInfo.ProjectPlatform).Find(&PlatformIcon).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetAllProduct] error query PlatformIcon, err:%+v", err)
- return nil, 0, err
- }
- platformToPlatformIcon[projectInfo.ProjectPlatform] = PlatformIcon
- }
- for _, projectInfo := range projectInfos {
- var SignNum int64
- db1 := GetReadDB(ctx)
- err := db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ?", projectInfo.ProjectID).Count(&SignNum).Error
- if err != nil {
- logrus.WithContext(ctx).Errorf("[GetAllProduct] error query SignNum, err:%+v", err)
- return nil, 0, err
- }
- projectIdToSignNum[projectInfo.ProjectID] = SignNum
- }
- for _, projectInfo := range projectInfos {
- ProjectBriefInfo := new(http_model.ProjectBriefInfo)
- ProjectBriefInfo.ProjectID = projectInfo.ProjectID
- ProjectBriefInfo.ProjectForm = projectInfo.ProjectForm
- ProjectBriefInfo.ProjectName = projectInfo.ProjectName
- ProjectBriefInfo.ProductSnap = projectInfo.ProductSnap
- ProjectBriefInfo.ProductPhotoSnap = projectInfo.ProductPhotoSnap
- ProjectBriefInfo.Platform = consts.GetProjectPlatform(projectInfo.ProjectPlatform)
- ProjectBriefInfo.PlatformIcon = platformToPlatformIcon[projectInfo.ProjectPlatform]
- ProjectBriefInfo.RecruitStrategys = projectIdToRecruitStrategy[projectInfo.ProjectID]
- ProjectBriefInfo.SignNum = projectIdToSignNum[projectInfo.ProjectID]
- ProjectBriefInfos = append(ProjectBriefInfos, ProjectBriefInfo)
- }
- return ProjectBriefInfos, total, nil
- }
- func GetProductType(ctx context.Context, selectionId string) (*int, error) {
- db := GetReadDB(ctx)
- var productId int
- err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
- if err != nil || productId == 0 {
- logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
- return nil, err
- }
- var productType int
- err = db.Model(gorm_model.YounggeeProduct{}).Select("product_type").Where("product_id = ?", productId).Find(&productType).Error
- if err != nil || productType == 0 {
- logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
- return nil, err
- }
- return &productType, nil
- }
|