diff --git a/cash-api/market-server/src/main/java/com/czg/controller/user/UShopCouponController.java b/cash-api/market-server/src/main/java/com/czg/controller/user/UShopCouponController.java index c7be3f666..96a49dcda 100644 --- a/cash-api/market-server/src/main/java/com/czg/controller/user/UShopCouponController.java +++ b/cash-api/market-server/src/main/java/com/czg/controller/user/UShopCouponController.java @@ -1,5 +1,6 @@ package com.czg.controller.user; +import com.czg.account.vo.ShopInfoCouponVO; import com.czg.account.vo.UserCouponVo; import com.czg.market.service.ShopCouponService; import com.czg.market.vo.UserCouponVO; @@ -22,6 +23,19 @@ public class UShopCouponController { @Resource private ShopCouponService couponService; + + + /** + * 获取当前店铺会员信息 + * 请求头必须携带shopId, 不携带则会失败 + * + * @return 店铺会员信息 + */ + @GetMapping("/shops") + public CzgResult> shops() { + return CzgResult.success(couponService.getShopByCouponRecord(StpKit.USER.getShopId(), StpKit.USER.getLoginIdAsLong())); + } + /** * 通过用户Id 查找优惠券 * diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopInfoCouponVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopInfoCouponVO.java new file mode 100644 index 000000000..bc12012b3 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/ShopInfoCouponVO.java @@ -0,0 +1,57 @@ +package com.czg.account.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 店铺信息 优惠券选择VO + * + * @author Administrator + * @since 2025-02-10 + */ +@Data + +@NoArgsConstructor +@AllArgsConstructor +public class ShopInfoCouponVO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * shopId + */ + private Long shopId; + + /** + * 店铺名称 + */ + private String shopName; + + /** + * 连锁店扩展店名 + */ + private String chainName; + + /** + * 店铺logo + */ + private String logo; + + + /** + * 详细地址 + */ + private String shopAddress; + + /** + * 优惠券数量 + */ + private Integer couponCount; + + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/ShopCouponService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/ShopCouponService.java index dc9cfe8bd..1ffa64657 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/ShopCouponService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/ShopCouponService.java @@ -1,5 +1,6 @@ package com.czg.market.service; +import com.czg.account.vo.ShopInfoCouponVO; import com.czg.account.vo.UserCouponVo; import com.czg.market.dto.ShopCouponDTO; import com.czg.market.entity.MkShopCouponRecord; @@ -34,4 +35,6 @@ public interface ShopCouponService extends IService { Boolean use(List ids, Long shopUserId, Long orderId); Boolean refund(Long orderId, Long shopUserId); + + List getShopByCouponRecord(Long shopId, Long shopUserId); } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkShopCouponRecordMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkShopCouponRecordMapper.java index f1e856e3d..e6fbd5774 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkShopCouponRecordMapper.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkShopCouponRecordMapper.java @@ -2,6 +2,7 @@ package com.czg.service.market.mapper; import com.czg.account.dto.QueryReceiveDto; import com.czg.account.vo.CouponReceiveVo; +import com.czg.account.vo.ShopInfoCouponVO; import com.czg.account.vo.UserCouponVo; import com.czg.market.vo.UserCouponVO; import com.mybatisflex.core.BaseMapper; @@ -24,4 +25,5 @@ public interface MkShopCouponRecordMapper extends BaseMapper List queryByVipIdAndShopId(Long shopId, Long shopUserId, Integer type); + List getShopByCouponRecord(Long userId); } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java index bff806623..e0dbc7889 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java @@ -13,6 +13,7 @@ import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; +import com.czg.account.vo.ShopInfoCouponVO; import com.czg.account.vo.UserCouponFoodVo; import com.czg.account.vo.UserCouponVo; import com.czg.market.dto.ShopCouponDTO; @@ -24,6 +25,7 @@ import com.czg.market.service.ShopCouponService; import com.czg.market.vo.UserCouponVO; import com.czg.product.entity.Product; import com.czg.product.service.ProductService; +import com.czg.service.market.mapper.MkShopCouponRecordMapper; import com.czg.service.market.mapper.ShopCouponMapper; import com.czg.utils.AssertUtil; import com.czg.utils.PageUtil; @@ -56,6 +58,8 @@ public class ShopCouponServiceImpl extends ServiceImpl shopNames = shopInfoService.listAs(new QueryWrapper().select(ShopInfo::getShopName) .in(ShopInfo::getId, Arrays.stream(coupon.getUseShops().split(",")).map(Long::parseLong).toList()) .eq(ShopInfo::getStatus, 1), String.class); @@ -265,6 +269,42 @@ public class ShopCouponServiceImpl extends ServiceImpl getShopByCouponRecord(Long shopId, Long shopUserId) { + List originalList = recordMapper.getShopByCouponRecord(shopUserId); + // 2. 若shopId为空,直接返回原集合 + if (shopId == null) { + return originalList; + } + + // 3. 若shopId不为空,筛选目标元素并重组列表 + List resultList = new ArrayList<>(); + ShopInfoCouponVO targetShop = null; + + // 遍历原始集合,找到目标元素 + for (ShopInfoCouponVO shopVO : originalList) { + if (Objects.equals(shopVO.getShopId(), shopId)) { + targetShop = shopVO; + break; + } + } + + + if (targetShop != null) { + resultList.add(targetShop); + // 再添加其余非目标元素 + for (ShopInfoCouponVO shopVO : originalList) { + if (!Objects.equals(shopVO.getShopId(), shopId)) { + resultList.add(shopVO); + } + } + } else { + resultList = originalList; + } + + return resultList; + } + private void setCouponInfo(Map coupons, UserCouponVo tbUserCouponVo, BigDecimal amount, String week, DateTimeFormatter formatter) { JSONObject json = new JSONObject(); boolean isUse = true; diff --git a/cash-service/market-service/src/main/resources/mapper/MkShopCouponRecordMapper.xml b/cash-service/market-service/src/main/resources/mapper/MkShopCouponRecordMapper.xml index ff1750ea6..583fb8992 100644 --- a/cash-service/market-service/src/main/resources/mapper/MkShopCouponRecordMapper.xml +++ b/cash-service/market-service/src/main/resources/mapper/MkShopCouponRecordMapper.xml @@ -106,4 +106,16 @@ and inRecord.is_del = 0 order by inRecord.use_end_time +