MrShi
7 小时以前 59bfd0b8bbbf0ee94ec68e4a3a1a6e536d0ad8fd
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -410,9 +410,9 @@
            }
        }
        // 根据openid查询当前绑定的门店
        if (StringUtils.isNotBlank(member.getOpenid())) {
        if (Objects.nonNull(member.getLoginShopId())) {
            ShopInfo bindShop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
                    .eq(ShopInfo::getOpenid, member.getOpenid())
                    .eq(ShopInfo::getId, member.getLoginShopId())
                    .eq(ShopInfo::getDeleted, Constants.ZERO)
                    .last("limit 1"));
            if (bindShop != null) {
@@ -725,6 +725,12 @@
        );
    }
    /**
     * 注册满X年赠送优惠券(定时任务调用)
     * 规则:根据运营配置 registerCouponYears(满几年赠送)、registerCouponGiftCount(至多赠送次数)、registerCouponId(赠送优惠券ID列表),
     * 遍历所有普通会员,计算注册年限,每满配置年数赠送一次,累计赠送次数不超过配置上限。
     * 例如:配置满2年赠送、至多3次,则注册第2/4/6年各赠送一次,共3次。
     */
    @Override
    public void giftRegisterCoupon() {
        // 1. 读取配置
@@ -753,11 +759,17 @@
            return;
        }
        // 3. 查询所有普通会员
        // 3. 数据库层面过滤:注册满configYears且未赠满的普通会员
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.YEAR, -configYears);
        Date minRegisterDate = cal.getTime();
        List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                .eq(Member::getDeleted, Constants.ZERO)
                .eq(Member::getStatus, Constants.ZERO)
                .eq(Member::getUserType, Constants.ZERO)
                .le(Member::getCreateTime, minRegisterDate)
                .lt(Member::getRegisterCouponGiftCount, maxGiftCount)
                .isNotNull(Member::getCreateTime));
        Date now = new Date();