package cn.iocoder.yudao.module.promotion.service.reward; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; import cn.iocoder.yudao.module.promotion.api.reward.dto.RewardActivityMatchRespDTO; import cn.iocoder.yudao.module.promotion.controller.admin.reward.vo.RewardActivityCreateReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.reward.vo.RewardActivityPageReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.reward.vo.RewardActivityUpdateReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.reward.RewardActivityDO; import cn.iocoder.yudao.module.promotion.enums.common.PromotionConditionTypeEnum; import jakarta.validation.Valid; import java.util.ArrayList; import java.util.Collection; import java.util.List; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue; /** * 满减送活动 Service 接口 * * @author 芋道源码 */ public interface RewardActivityService { /** * 创建满减送活动 * * @param createReqVO 创建信息 * @return 编号 */ Long createRewardActivity(@Valid RewardActivityCreateReqVO createReqVO); /** * 更新满减送活动 * * @param updateReqVO 更新信息 */ void updateRewardActivity(@Valid RewardActivityUpdateReqVO updateReqVO); /** * 关闭满减送活动 * * @param id 活动编号 */ void closeRewardActivity(Long id); /** * 删除满减送活动 * * @param id 编号 */ void deleteRewardActivity(Long id); /** * 获得满减送活动 * * @param id 编号 * @return 满减送活动 */ RewardActivityDO getRewardActivity(Long id); /** * 获得满减送活动分页 * * @param pageReqVO 分页查询 * @return 满减送活动分页 */ PageResult getRewardActivityPage(RewardActivityPageReqVO pageReqVO); /** * 获得 spuId 商品匹配的的满减送活动列表 * * @param spuIds SPU 编号数组 * @return 满减送活动列表 */ List getMatchRewardActivityListBySpuIds(Collection spuIds); default String getRewardActivityRuleDescription(Integer conditionType, RewardActivityDO.Rule rule) { String description = ""; if (PromotionConditionTypeEnum.PRICE.getType().equals(conditionType)) { description += StrUtil.format("满 {} 元", MoneyUtils.fenToYuanStr(rule.getLimit())); } else { description += StrUtil.format("满 {} 件", rule.getLimit()); } List tips = new ArrayList<>(10); if (rule.getDiscountPrice() != null) { tips.add(StrUtil.format("减 {}", MoneyUtils.fenToYuanStr(rule.getDiscountPrice()))); } if (Boolean.TRUE.equals(rule.getFreeDelivery())) { tips.add("包邮"); } if (rule.getPoint() != null && rule.getPoint() > 0) { tips.add(StrUtil.format("送 {} 积分", rule.getPoint())); } if (CollUtil.isNotEmpty(rule.getGiveCouponTemplateCounts())) { tips.add(StrUtil.format("送 {} 张优惠券", getSumValue(rule.getGiveCouponTemplateCounts().values(), count -> count, Integer::sum))); } return description + StrUtil.join("、", tips); } }