From 71a658e8a9ae074b0a56d53cb864ab6b7b9b5a76 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 15 Oct 2025 11:09:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=20=E7=94=A8=E6=88=B7=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ShopUserController.java | 12 +++ .../java/com/czg/account/entity/ShopUser.java | 5 +- .../czg/account/service/AShopUserService.java | 2 + .../czg/market/entity/SmsPushEventUser.java | 55 +++++++++---- .../account/mapper/ShopUserMapper.java | 15 ++++ .../service/impl/AShopUserServiceImpl.java | 16 ++++ .../main/resources/mapper/ShopUserMapper.xml | 78 +++++++++++++++++++ 7 files changed, 167 insertions(+), 16 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java index 11c010768..64579d01c 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopUserController.java @@ -7,6 +7,7 @@ import com.czg.account.service.ShopUserFlowService; import com.czg.account.vo.ShopUserFlowVO; import com.czg.annotation.SaAdminCheckPermission; import com.czg.enums.ShopUserFlowBizEnum; +import com.czg.market.entity.SmsPushEventUser; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; import com.mybatisflex.core.paginate.Page; @@ -157,4 +158,15 @@ public class ShopUserController { return CzgResult.success(shopUserService.updateMoney(shopUserMoneyEditDTO) > 0L); } + /** + * 获取营销推送任务用户列表 + * @param smsPushEventUser 营销推送任务用户 + * @return 用户列表 + */ + @PostMapping("/getPushEventUser") + public CzgResult> getPushEventUser(@RequestBody @Validated SmsPushEventUser smsPushEventUser) { + smsPushEventUser.setShopId(StpKit.USER.getShopId()); + return CzgResult.success(shopUserService.getPushEventUser(smsPushEventUser)); + } + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java index e8b42be30..56dd37817 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java @@ -86,7 +86,10 @@ public class ShopUser implements Serializable { * 钱包余额 */ private BigDecimal amount; - + /** + * 充值次数 + */ + private Integer rechargeCount; /** * 消费累计 */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/AShopUserService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/AShopUserService.java index 7e7e6e123..88733e088 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/AShopUserService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/AShopUserService.java @@ -2,6 +2,7 @@ package com.czg.account.service; import com.czg.account.dto.shopuser.*; import com.czg.account.entity.ShopUser; +import com.czg.market.entity.SmsPushEventUser; import com.czg.resp.CzgResult; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -19,6 +20,7 @@ public interface AShopUserService { Page getPage(String key, Integer isVip); Page getPage(String key, Integer isVip, BigDecimal amount); + Page getPushEventUser(SmsPushEventUser smsPushEventUser); Boolean add(Long shopId, ShopUserAddDTO shopUserAddDTO); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java index 89296bad1..d371fdd4b 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/SmsPushEventUser.java @@ -41,29 +41,54 @@ public class SmsPushEventUser implements Serializable { private Long shopId; /** - * 性别 0未知 1男 2女 + * 性别 未知 男 女 + * 1查询 其余不查 */ - private String gender; + private Integer sexMan; + private Integer sexWoman; + private Integer sexUnknown; + + /** + * 是否会员 0否 1是 null全查 + */ + private Integer isVip; + /** + * 是否充值过 0否 1是 null为全查 + */ + private Integer isRecharge; + /** - * 下单时间 0:今天 1:昨天 2:两周内 3:两周前 + * 下单时间 从未下单 1查询 其余不查 */ - private String orderTimes; + private Integer noOrder; + /** + * 下单时间 下过一单 1查询 其余不查 + */ + private Integer oneOrder; + /** + * 下单时间 下过五单及以上 1查询 其余不查 + */ + private Integer fiveOrder; + /** - * 下单时间 0:从未下单 其它数字表示下过几单 + * 下单时间 今天 1查询 其余不查 */ - private String orderHistory; + private Integer orderTimeToday; + /** + * 下单时间 昨天 1查询 其余不查 + */ + private Integer orderTimeYesterday; + /** + * 下单时间 两周内 1查询 其余不查 + */ + private Integer orderTimeTwoWeeks; + /** + * 下单时间 两周前 1查询 其余不查 + */ + private Integer orderTimeMoreThanTwoWeeks; - /** - * 充值过 0否 1是 - */ - private String isRecharge; - - /** - * 会员 0非会员 1会员 - */ - private String vip; /** * 预留 短信推送用 会员等级 0 全部会员 1仅限等级 2以上等级 diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java index ec82d05bc..bc089a3bc 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopUserMapper.java @@ -5,6 +5,7 @@ import com.czg.account.dto.shopuser.ShopUserSummaryDTO; import com.czg.account.dto.shopuser.ShopUserVipCardDTO; import com.czg.account.dto.user.userinfo.UserInfoAssetsSummaryDTO; import com.czg.account.entity.ShopUser; +import com.czg.market.entity.SmsPushEventUser; import com.mybatisflex.core.BaseMapper; import com.mybatisflex.core.paginate.Page; import org.apache.ibatis.annotations.Param; @@ -24,6 +25,7 @@ public interface ShopUserMapper extends BaseMapper { List selectPageByKeyAndIsVip(@Param("shopId") Long shopId, @Param("isVip") Integer isVip, @Param("key") String key, @Param("amount") BigDecimal amount); int incrAccount(@Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money); + int decrAccount(@Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money); ShopUserSummaryDTO selectUserSummary(@Param("shopId") Long shopId, @Param("isVip") Integer isVip); @@ -34,4 +36,17 @@ public interface ShopUserMapper extends BaseMapper { UserInfoAssetsSummaryDTO selectAssetsSummary(@Param("userId") Long userInfoId); + /** + * 查询符合推送条件的用户 + * + * @param mainShopId 主店铺ID + * @param shopId 店铺ID + * @return 分页结果 + */ + Page selectPushEventUser( + @Param("mainShopId") Long mainShopId, + @Param("shopId") Long shopId, + SmsPushEventUser smsPushEventUser + ); + } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java index 3fbb4568b..4b83e7fbe 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java @@ -14,6 +14,7 @@ import com.czg.account.service.UserInfoService; import com.czg.exception.ApiNotPrintException; import com.czg.market.entity.MemberLevelConfig; import com.czg.market.entity.MkShopCouponRecord; +import com.czg.market.entity.SmsPushEventUser; import com.czg.market.service.MemberLevelConfigService; import com.czg.market.service.MkShopCouponRecordService; import com.czg.order.entity.OrderInfo; @@ -34,6 +35,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** @@ -89,6 +93,18 @@ public class AShopUserServiceImpl implements AShopUserService { return PageUtil.convert(new PageInfo<>(shopUserMapper.selectPageByKeyAndIsVip(mainIdByShopId, isVip, key, amount))); } + @Override + public Page getPushEventUser(SmsPushEventUser smsPushEventUser) { + PageHelper.startPage(PageUtil.buildPage()); + Long mainShopId = shopInfoService.getMainIdByShopId(smsPushEventUser.getShopId()); + // 调用Mapper层查询 + return shopUserMapper.selectPushEventUser( + mainShopId, + smsPushEventUser.getShopId(), + smsPushEventUser + ); + } + @Override public Boolean updateInfo(Long shopId, ShopUserEditDTO shopUserEditDTO) { if (StrUtil.isNotBlank(shopUserEditDTO.getPhone())) { diff --git a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml index f79b561e9..1229cca37 100644 --- a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml @@ -116,4 +116,82 @@ ${qwSql} + + +