Ver Fonte

refactor(marketing): 增加促销活动工厂

hechunping há 4 meses atrás
pai
commit
f24c38bfbb

+ 10 - 1
src/main/java/com/xynet/marketing/service/MercProjectDeviceService.java

@@ -31,12 +31,21 @@ public interface MercProjectDeviceService {
      * @param param
      * @return
      */
-    List<Map<String,Object>> list(JMap<String,Object> param);
+    List<Map<String, Object>> list(JMap<String, Object> param);
 
     /**
      * 分页查询
+     *
      * @param param
      * @return
      */
     Page<Map<String, Object>> page(JMap<String, Object> param);
+
+    /**
+     * 根据活动ID删除设备
+     *
+     * @param actId
+     * @return
+     */
+    void removeByActId(Integer actId);
 }

+ 18 - 1
src/main/java/com/xynet/marketing/service/MercProjectGoodsService.java

@@ -31,12 +31,29 @@ public interface MercProjectGoodsService {
      * @param param
      * @return
      */
-    List<Map<String,Object>> list(JMap<String,Object> param);
+    List<Map<String, Object>> list(JMap<String, Object> param);
 
     /**
      * 分页查询
+     *
      * @param param
      * @return
      */
     Page<Map<String, Object>> page(JMap<String, Object> param);
+
+    /**
+     * 根据活动ID删除商品
+     *
+     * @param actId
+     * @return
+     */
+    void removeByActId(Integer actId);
+
+    /**
+     * 根据活动ID批量增加商品
+     *
+     * @param param
+     * @return
+     */
+    void batchSaveByActId(Integer actId, List<JMap<String, Object>> param);
 }

+ 2 - 1
src/main/java/com/xynet/marketing/service/PromotionService.java

@@ -16,10 +16,11 @@ public interface PromotionService {
 
     /**
      * 新增或修改
+     *
      * @param param
      * @return
      */
-    void saveOrUpdate(JMap<String, Object> param);
+    Integer saveOrUpdate(JMap<String, Object> param);
 
     /**
      * 列表查询

+ 21 - 0
src/main/java/com/xynet/marketing/service/factory/promotion/PromotionFactory.java

@@ -0,0 +1,21 @@
+package com.xynet.marketing.service.factory.promotion;
+
+
+import com.xynet.marketing.utils.collections.map.JMap;
+
+/**
+ * 促销活动工厂-接口
+ *
+ * @author hechunping
+ * @date 2025/1/20
+ */
+public interface PromotionFactory {
+
+    /**
+     * 新增或修改
+     *
+     * @param param
+     * @return
+     */
+    Integer saveOrUpdate(JMap<String, Object> param);
+}

+ 58 - 0
src/main/java/com/xynet/marketing/service/factory/promotion/impl/base/PromotionFactoryBase.java

@@ -0,0 +1,58 @@
+package com.xynet.marketing.service.factory.promotion.impl.base;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xynet.marketing.entity.Promotion;
+import com.xynet.marketing.mapper.PromotionMapper;
+import com.xynet.marketing.service.MercProjectDeviceService;
+import com.xynet.marketing.service.MercProjectGoodsService;
+import com.xynet.marketing.service.factory.promotion.PromotionFactory;
+import com.xynet.marketing.utils.Emptys;
+import com.xynet.marketing.utils.collections.map.JMap;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 促销活动工厂-基类
+ *
+ * @author hechunping
+ * @date 2025/1/21
+ */
+@Service
+@Slf4j
+@AllArgsConstructor
+public class PromotionFactoryBase extends ServiceImpl<PromotionMapper, Promotion> implements PromotionFactory {
+
+    private MercProjectGoodsService goodsService;
+
+    private MercProjectDeviceService deviceService;
+
+    @Override
+    public Integer saveOrUpdate(JMap<String, Object> param) {
+        Promotion save = BeanUtil.copyProperties(param, Promotion.class);
+        if (Emptys.check(save.getId())) {
+            updateById(save);
+            //保存商品
+            if (!save.getIsAllGoods()) {
+                //删除原来的商品
+                goodsService.removeByActId(save.getId());
+            }
+            //保存设备
+            if (!save.getIsAllDevice()) {
+                //删除原来的设备
+                deviceService.removeByActId(save.getId());
+            }
+        } else {
+            save(save);
+        }
+        //保存商品
+        if (!save.getIsAllGoods()) {
+            //删除原来的商品
+            //goodsService.removeByActId(save.getId());
+        }
+        //保存设备
+
+        return save.getId();
+    }
+}

+ 7 - 0
src/main/java/com/xynet/marketing/service/impl/MercProjectDeviceServiceImpl.java

@@ -62,4 +62,11 @@ public class MercProjectDeviceServiceImpl extends ServiceImpl<MercProjectDeviceM
         Page<MercProjectDevice> list = page(page, lqw);
         return JHashMap.copy(list);
     }
+
+    @Override
+    public void removeByActId(Integer actId) {
+        LambdaQueryWrapper<MercProjectDevice> lqw = new LambdaQueryWrapper<MercProjectDevice>()
+                .eq(MercProjectDevice::getActId, actId);
+        remove(lqw);
+    }
 }

+ 13 - 1
src/main/java/com/xynet/marketing/service/impl/MercProjectGoodsServiceImpl.java

@@ -58,8 +58,20 @@ public class MercProjectGoodsServiceImpl extends ServiceImpl<MercProjectGoodsMap
     @Override
     public Page<Map<String, Object>> page(JMap<String, Object> param) {
         LambdaQueryWrapper<MercProjectGoods> lqw = commonQueryWrapper(param).orderByAsc(MercProjectGoods::getId);
-        Page<MercProjectGoods> page = new Page<>(param.getInt("pageCurrent"), param.getInt("pageSize"),true);
+        Page<MercProjectGoods> page = new Page<>(param.getInt("pageCurrent"), param.getInt("pageSize"), true);
         Page<MercProjectGoods> list = page(page, lqw);
         return JHashMap.copy(list);
     }
+
+    @Override
+    public void removeByActId(Integer actId) {
+        LambdaQueryWrapper<MercProjectGoods> lqw = new LambdaQueryWrapper<MercProjectGoods>()
+                .eq(MercProjectGoods::getActId, actId);
+        remove(lqw);
+    }
+
+    @Override
+    public void batchSaveByActId(Integer actId, List<JMap<String, Object>> param) {
+
+    }
 }

+ 2 - 1
src/main/java/com/xynet/marketing/service/impl/PromotionServiceImpl.java

@@ -38,13 +38,14 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
     }
 
     @Override
-    public void saveOrUpdate(JMap<String, Object> param) {
+    public Integer saveOrUpdate(JMap<String, Object> param) {
         Promotion save = BeanUtil.copyProperties(param, Promotion.class);
         if (Emptys.check(save.getId())) {
             updateById(save);
         } else {
             save(save);
         }
+        return save.getId();
     }
 
     @Override