From 00b79a40b46c85e1d216a8c19209a45c5fea7f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 26 Sep 2025 16:49:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/user/UShopUserController.java | 11 +++++ .../service/MemberPointsLogService.java | 6 ++- .../com/czg/account/vo/PointsShopListVO.java | 13 ++++++ .../impl/MemberPointsLogServiceImpl.java | 41 ++++++++++++++++++- 4 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/vo/PointsShopListVO.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java index 0c312e7d6..e1c8904f8 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java @@ -9,6 +9,7 @@ import com.czg.account.entity.ShopUserFlow; import com.czg.account.service.MemberPointsLogService; import com.czg.account.service.ShopUserFlowService; import com.czg.account.service.UShopUserService; +import com.czg.account.vo.PointsShopListVO; import com.czg.annotation.Debounce; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; @@ -19,6 +20,8 @@ import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 店铺会员相关 * @@ -98,6 +101,14 @@ public class UShopUserController { .eq(ShopUserFlow::getUserId, StpKit.USER.getLoginIdAsLong()).eq(ShopUserFlow::getId, id))); } + /** + * 获取用户所有门店下积分列表 + */ + @GetMapping("/pointsShopList") + public CzgResult> getList() { + return CzgResult.success(memberPointsLogService.getList(StpKit.USER.getLoginIdAsLong())); + } + /** * 获取积分明细 * @return 分页数据 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/MemberPointsLogService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/MemberPointsLogService.java index 66a1e044e..30a919aec 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/MemberPointsLogService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/MemberPointsLogService.java @@ -2,9 +2,12 @@ package com.czg.account.service; import com.czg.account.dto.points.MemberPointsLogDTO; import com.czg.account.entity.MemberPointsLog; +import com.czg.account.vo.PointsShopListVO; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; +import java.util.List; + /** * 会员积分变动记录 * @@ -15,4 +18,5 @@ public interface MemberPointsLogService extends IService { Page getMemberPointsLogPage(MemberPointsLogDTO param); -} \ No newline at end of file + List getList(long userId); +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/PointsShopListVO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/PointsShopListVO.java new file mode 100644 index 000000000..59f63c953 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/PointsShopListVO.java @@ -0,0 +1,13 @@ +package com.czg.account.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PointsShopListVO { + private String shopName; + private String logo; + private Long shopId; + private Integer accountPoints; +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsLogServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsLogServiceImpl.java index 4a4fe676d..724ce41a5 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsLogServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsLogServiceImpl.java @@ -4,16 +4,27 @@ import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.czg.account.dto.points.MemberPointsLogDTO; import com.czg.account.entity.MemberPointsLog; +import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; import com.czg.account.service.MemberPointsLogService; +import com.czg.account.service.ShopInfoService; +import com.czg.account.service.ShopUserService; +import com.czg.account.vo.PointsShopListVO; import com.czg.sa.StpKit; import com.czg.service.account.mapper.MemberPointsLogMapper; import com.czg.utils.PageUtil; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + import static com.czg.account.entity.table.MemberPointsLogTableDef.MEMBER_POINTS_LOG; import static com.czg.account.entity.table.MemberPointsTableDef.MEMBER_POINTS; import static com.czg.account.entity.table.ShopUserTableDef.SHOP_USER; @@ -26,6 +37,10 @@ import static com.czg.account.entity.table.ShopUserTableDef.SHOP_USER; */ @Service public class MemberPointsLogServiceImpl extends ServiceImpl implements MemberPointsLogService { + @Resource + private ShopUserService shopUserService; + @Resource + private ShopInfoService shopInfoService; private QueryWrapper buildQueryWrapper(MemberPointsLogDTO param) { QueryWrapper queryWrapper = PageUtil.buildSortQueryWrapper(); @@ -73,4 +88,28 @@ public class MemberPointsLogServiceImpl extends ServiceImpl getList(long userId) { + ArrayList pointsShopListVOS = new ArrayList<>(); + List shopUserList = shopUserService.list(new QueryWrapper().eq(ShopUser::getUserId, userId).gt(ShopUser::getAccountPoints, 0)); + if (shopUserList.isEmpty()) { + return pointsShopListVOS; + } + Set shopIdList = shopUserList.stream().map(ShopUser::getSourceShopId).collect(Collectors.toSet()); + Map shopInfoMap = shopInfoService.listByIds(shopIdList).stream().collect(Collectors.toMap(ShopInfo::getId, item -> item)); + for (ShopUser shopUser : shopUserList) { + ShopInfo shopInfo = shopInfoMap.get(shopUser.getSourceShopId()); + if (shopInfo == null) { + continue; + } + pointsShopListVOS.add(new PointsShopListVO() + .setShopName(shopInfo.getShopName()) + .setLogo(shopInfo.getLogo()) + .setAccountPoints(shopUser.getAccountPoints()) + .setShopId(shopInfo.getId())); + } + + return pointsShopListVOS; + } +}