Bläddra i källkod

完成商品增删改查

tsurumure 1 månad sedan
förälder
incheckning
733dc8dbd1

+ 2 - 2
src/main/java/com/backendsys/modules/b2c/good/controller/GoodController.java

@@ -43,13 +43,13 @@ public class GoodController {
     @PreAuthorize("@sr.hasPermission('11.1.3')")
     @PutMapping("/api/b2c/good/updateGood")
     public Result updateGood(@Validated(Good.Update.class) @RequestBody Good good) {
-        return Result.success();
+        return Result.success().put("data", goodService.updateGood(good));
     }
 
     @Operation(summary = "删除商品")
     @PreAuthorize("@sr.hasPermission('11.1.4')")
     @DeleteMapping("/api/b2c/good/deleteGood")
     public Result deleteGood(@Validated(Good.Delete.class) @RequestBody Good good) {
-        return Result.success();
+        return Result.success().put("data", goodService.deleteGood(good));
     }
 }

+ 16 - 11
src/main/java/com/backendsys/modules/b2c/good/entity/Good.java

@@ -1,7 +1,6 @@
 package com.backendsys.modules.b2c.good.entity;
 
 import com.backendsys.config.Mybatis.handler.timezone.LocalDateTimeAdapter;
-import com.backendsys.entity.B2c.B2cGoodDTO;
 import com.backendsys.entity.validator.RangeArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -41,41 +40,47 @@ public class Good {
     @NotEmpty(message="uid 不能为空", groups = { DetailByUid.class })
     private String uid;
 
-    @NotNull(message = "商品分类ID不能为空", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @NotNull(message = "商品分类ID不能为空", groups = { Create.class, Update.class })
     private Long category_id;
+
+    @TableField(exist = false)
     private String category_name;
 
     private Long brand_id;
+
+    @TableField(exist = false)
     private String brand_name;
     private Long unit_id;
+
+    @TableField(exist = false)
     private String unit_name;
 
-    @NotBlank(message = "商品名称不能为空", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
-    @Size(max = 50, message = "商品名称长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @TableField(exist = false)
     private String good_name;
 
-    @Size(max = 200, message = "商品描述长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @TableField(exist = false)
     private String good_description;
 
-    @Size(max = 20000, message = "商品内容长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @TableField(exist = false)
     private String good_content;
 
-    @Size(max = 2000, message = "商品缩略图地址长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @Size(max = 2000, message = "商品缩略图地址长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String good_thumb;
 
-    @Size(max = 20000, message = "商品图片地址长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @Size(max = 20000, message = "商品图片地址长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String good_images;
 
-    @Size(max = 100, message = "关键词长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @TableField(exist = false)
     private String meta_keyword;
-    @Size(max = 200, message = "关键词描述长度不超过 {max} 字符", groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+
+    @TableField(exist = false)
     private String meta_description;
 
     @TableField(exist = false)
     @NotEmpty(message="内容不能为空", groups = { Create.class, Update.class})
     private List<GoodI18n> translations;
 
-    @RangeArray(message="商品状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { B2cGoodDTO.Create.class, B2cGoodDTO.Update.class })
+    @RangeArray(message="商品状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { Create.class, Update.class })
     private Integer status;
 
     private Integer del_flag;

+ 3 - 3
src/main/java/com/backendsys/modules/b2c/good/entity/GoodI18n.java

@@ -26,10 +26,10 @@ public class GoodI18n {
     @Size(max = 100, message = "商品名称长度不超过 {max} 字符", groups = { Create.class, Update.class })
     @NotEmpty(message="商品名称不能为空", groups = { Create.class, Update.class })
     private String good_name;
-    @Size(max = 200, message = "资讯描述长度不超过 {max} 字符", groups = { Create.class, Update.class })
+    @Size(max = 200, message = "商品描述长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String good_description;
-    @Size(max = 10000, message = "资讯内容长度不超过 {max} 字符", groups = { Create.class, Update.class })
-    @NotEmpty(message="资讯内容不能为空")
+    @Size(max = 20000, message = "商品内容长度不超过 {max} 字符", groups = { Create.class, Update.class })
+    @NotEmpty(message="商品内容不能为空")
     private String good_content;
     @Size(max = 100, message = "关键词长度不超过 {max} 字符", groups = { Create.class, Update.class })
     private String meta_keyword;

+ 4 - 0
src/main/java/com/backendsys/modules/b2c/good/service/GoodService.java

@@ -13,4 +13,8 @@ public interface GoodService {
     Map<String, Object> selectGoodDetail(Good good);
     // 创建商品
     Map<String, Object> insertGood(Good good);
+    // 编辑商品
+    Map<String, Object> updateGood(Good good);
+    // 删除商品
+    Map<String, Object> deleteGood(Good good);
 }

+ 49 - 2
src/main/java/com/backendsys/modules/b2c/good/service/impl/GoodServiceImpl.java

@@ -7,12 +7,11 @@ import com.backendsys.modules.b2c.good.dao.GoodI18nDao;
 import com.backendsys.modules.b2c.good.entity.Good;
 import com.backendsys.modules.b2c.good.entity.GoodI18n;
 import com.backendsys.modules.b2c.good.service.GoodService;
-import com.backendsys.modules.cms.article.entity.Article;
-import com.backendsys.modules.cms.article.entity.ArticleI18n;
 import com.backendsys.modules.common.utils.ValidationUtil;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -71,4 +70,52 @@ public class GoodServiceImpl implements GoodService {
         return Map.of("good_id", good_id);
     }
 
+    /**
+     * 编辑商品
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> updateGood(Good good) {
+
+        Long good_id = good.getGood_id();
+
+        Good goodDetail = goodDao.selectById(good_id);
+        if (goodDetail == null) throw new CustException("商品不存在");
+
+        // 更新
+        good.setId(good_id);
+        goodDao.updateById(good);
+
+        // 批量更新 (翻译字段)
+        List<GoodI18n> translations = good.getTranslations().stream()
+            .peek(item -> { ValidationUtil.validateObject(item, GoodI18n.Update.class); })
+            .map(t -> { t.setGood_id(good_id); return t; })
+            .collect(Collectors.toList());
+
+        System.out.println("translations:");
+        System.out.println(translations);
+
+        goodI18nDao.updateBatch(translations);
+
+        return Map.of("good_id", good_id);
+    }
+
+    /**
+     * 删除商品
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> deleteGood(Good good) {
+
+        Long good_id = good.getGood_id();
+
+        Good detail = goodDao.selectById(good_id);
+        if (detail == null) throw new CustException("商品不存在");
+
+        goodDao.deleteById(good_id);
+        goodI18nDao.delete(new QueryWrapper<GoodI18n>().eq("good_id", good_id));
+
+        return Map.of("good_id", good_id);
+    }
+
 }