3 Commits 5fa49e0b09 ... c0b73f4303

Author SHA1 Message Date
  hechunping c0b73f4303 refactor(marketing): 优化会员优惠券服务的代码逻辑 3 days ago
  hechunping d138807a11 feat(service): 增加批量查询优惠券功能 3 days ago
  hechunping f3f0f5385b refactor(MercProjectGoodsServiceImpl): 优化 commonQueryWrapper 方法 3 days ago

+ 26 - 13
src/main/java/com/xynet/marketing/service/impl/MemberCouponServiceImpl.java

@@ -107,6 +107,8 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
         Integer orderAmount = param.getInt("orderAmount");
         String thirdMercId = param.getString("thirdMercId");
         List<JMap<String, Object>> goodsList = param.getListMap("goodsList");
+        List<String> goodsIdList = goodsList.stream().map(i -> i.getString("goodsId")).collect(Collectors.toList());
+
         LambdaQueryWrapper<MemberCoupon> lqw = new LambdaQueryWrapper<MemberCoupon>()
                 .eq(MemberCoupon::getThirdMemberId, thirdMemberId)
                 .eq(MemberCoupon::getMercId, mercService.thirdMercIdToMercId(param.getString("provider-id"), thirdMercId))
@@ -118,15 +120,22 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
         if (!Emptys.check(list)) {
             return result;
         }
-        //TODO 商品限制
+        //查找商家优惠券
+        List<Integer> couponIdList = list.stream().map(i -> i.getCouponId()).collect(Collectors.toList());
+        List<Map<String, Object>> mercCouponList = mercCouponService.list(new JHashMap<String, Object>().set("idList", couponIdList));
+        Map<Integer, Map<String, Object>> mercCouponMap = mercCouponList.stream().collect(Collectors.toMap(i -> Integer.valueOf(i.get("id").toString()), i -> i));
+
+
         for (int i = 0; i < list.size(); i++) {
             MemberCoupon memberCoupon = list.get(i);
-            if (!memberCoupon.getIsAllDevice()) {
+            Map<String, Object> mercCoupon1 = mercCouponMap.get(list.get(i).getCouponId());
+            JMap<String, Object> mercCoupon = new JHashMap<>(mercCoupon1);
+            if (!mercCoupon.getBoolean("isAllDevice")) {
                 //判断设备是否符合
                 List<Map<String, Object>> deviceList = deviceService.list(
                         new JHashMap<String, Object>()
                                 .set("deviceId", deviceId)
-                                .set("actId", memberCoupon.getCouponId())
+                                .set("actId", mercCoupon.getInt("actId"))
                                 .set("actType", "coupon")
                 );
                 if (!Emptys.check(deviceList)) {
@@ -134,18 +143,22 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
                 }
             }
             //判断商品是否符合
-//            if (!memberCoupon.getIsAllGoods()) {
-//                List<Map<String, Object>> goodsList1 = goodsService.list(
-//                        new JHashMap<String, Object>()
-//                                .set("goodsIdList", goodsList)
-//                                .set("actId", memberCoupon.getCouponId())
-//                                .set("actType", "coupon")
-//                );
-//            }
+            if (!mercCoupon.getBoolean("isAllGoods")) {
+                List<Map<String, Object>> projectGoodsList = goodsService.list(
+                        new JHashMap<String, Object>()
+                                .set("goodsIdList", goodsIdList)
+                                .set("actId", memberCoupon.getCouponId())
+                                .set("actType", "coupon")
+                );
+                if (!Emptys.check(projectGoodsList)) {
+                    continue;
+                }
+            }
+
             //判断价格是否符合
-            if (Objects.equals(memberCoupon.getType(), CouponTypeEnum.T_1.getCode())) {
+            if (Objects.equals(mercCoupon.getString("type"), CouponTypeEnum.T_1.getCode())) {
                 //满减判断价格
-                JSONArray priceJson = JSONUtil.parseArray(memberCoupon.getPrice());
+                JSONArray priceJson = JSONUtil.parseArray(mercCoupon.getString("price"));
                 JSONObject priceObject = priceJson.getJSONObject(0);
                 Integer limit = Integer.valueOf(priceObject.get("limit").toString());
                 if (orderAmount < limit) {

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

@@ -45,7 +45,8 @@ public class MercCouponServiceImpl extends ServiceImpl<MercCouponMapper, MercCou
 
     private LambdaQueryWrapper<MercCoupon> commonQueryWrapper(JMap<String, Object> param) {
         LambdaQueryWrapper<MercCoupon> lqw = new LambdaQueryWrapper<MercCoupon>()
-                .eq(Emptys.check(param.getInt("id")), MercCoupon::getId, param.getInt("id"));
+                .eq(Emptys.check(param.getInt("id")), MercCoupon::getId, param.getInt("id"))
+                .in(Emptys.check(param.getList("idList")), MercCoupon::getId, param.getList("idList"));
         return lqw;
     }
 

+ 3 - 0
src/main/java/com/xynet/marketing/service/impl/MercProjectGoodsServiceImpl.java

@@ -28,6 +28,9 @@ public class MercProjectGoodsServiceImpl extends ServiceImpl<MercProjectGoodsMap
     private LambdaQueryWrapper<MercProjectGoods> commonQueryWrapper(JMap<String,Object> param) {
         LambdaQueryWrapper<MercProjectGoods> lqw = new LambdaQueryWrapper<MercProjectGoods>()
                 .eq(Emptys.check(param.getInt("id")), MercProjectGoods::getId, param.getInt("id"))
+                .eq(Emptys.check(param.getString("actType")), MercProjectGoods::getActType, param.getString("actType"))
+                .in(Emptys.check(param.getList("goodsIdList")), MercProjectGoods::getGoodsId, param.getList("goodsIdList"))
+                .in(Emptys.check(param.getInt("actId")), MercProjectGoods::getActId, param.getInt("actId"))
                 .in(Emptys.check(param.getList("actIdList")), MercProjectGoods::getActId, param.getList("actIdList"))
                 ;
         return lqw;