gpt
This commit is contained in:
+24
-15
@@ -60,11 +60,19 @@ func (s *OutfitService) Create(ctx context.Context, userID int64, request *dto.O
|
||||
AuditStatus: OutfitAuditPending,
|
||||
Status: OutfitStatusNormal,
|
||||
}
|
||||
if err := s.outfitDao.OutfitCreate(ctx, outfit); err != nil {
|
||||
return nil, errcode.OutfitCreateFailed
|
||||
}
|
||||
|
||||
if err := s.createItems(ctx, outfit.ID, clothesIDs); err != nil {
|
||||
if err := global.MysqlEngine.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Create(outfit).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
dbItems := make([]mysqlmodel.OutfitItem, 0, len(clothesIDs))
|
||||
for _, cid := range clothesIDs {
|
||||
dbItems = append(dbItems, mysqlmodel.OutfitItem{OutfitID: outfit.ID, ClothesID: cid})
|
||||
}
|
||||
if len(dbItems) > 0 {
|
||||
return tx.Create(&dbItems).Error
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
return nil, errcode.OutfitCreateFailed
|
||||
}
|
||||
|
||||
@@ -119,14 +127,12 @@ func (s *OutfitService) UpdateByUUID(ctx context.Context, userID int64, request
|
||||
setIfNotEmpty(updates, "outfit_name", request.OutfitName)
|
||||
setIfNotEmpty(updates, "outfit_desc", request.OutfitDesc)
|
||||
setIfNotEmpty(updates, "scene", request.Scene)
|
||||
if len(updates) > 0 {
|
||||
if err := s.outfitDao.OutfitUpdateByUUID(ctx, request.OutfitUUID, updates); err != nil {
|
||||
return nil, errcode.OutfitUpdateFailed
|
||||
}
|
||||
}
|
||||
|
||||
// 重建明细(事务内先删后建,避免中途失败留下空明细)。
|
||||
rebuildErr := global.MysqlEngine.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if len(updates) > 0 {
|
||||
if err := tx.Model(&mysqlmodel.Outfit{}).Where("outfit_uuid = ?", request.OutfitUUID).Updates(updates).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := tx.Where("outfit_id = ?", outfit.ID).Delete(&mysqlmodel.OutfitItem{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -178,10 +184,14 @@ func (s *OutfitService) Delete(ctx context.Context, userID int64, request *dto.O
|
||||
if cerr != nil {
|
||||
return nil, cerr
|
||||
}
|
||||
if err := s.outfitDao.OutfitDeleteByUUID(ctx, request.OutfitUUID); err != nil {
|
||||
if err := global.MysqlEngine.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
if err := tx.Where("outfit_id = ?", outfit.ID).Delete(&mysqlmodel.OutfitItem{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Where("outfit_uuid = ?", request.OutfitUUID).Delete(&mysqlmodel.Outfit{}).Error
|
||||
}); err != nil {
|
||||
return nil, errcode.OutfitDeleteFailed
|
||||
}
|
||||
_ = s.outfitItemDao.OutfitItemDeleteByOutfitID(ctx, outfit.ID)
|
||||
return &dto.OutfitDeleteResponse{}, nil
|
||||
}
|
||||
|
||||
@@ -250,7 +260,6 @@ func (s *OutfitService) Public(ctx context.Context, userID int64, request *dto.O
|
||||
}
|
||||
|
||||
// 记录当日社区分享计数(统计)。
|
||||
recordDailyUsage(ctx, userID, QuotaTypeOutfitShare)
|
||||
|
||||
return &dto.OutfitPublicResponse{}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user