抽奖新增碎片类型

This commit is contained in:
tianfeng 2026-01-15 17:02:25 +08:00
parent ed796d3228
commit 1b5fc22d7f

View File

@ -7,10 +7,12 @@ import com.red.circle.common.business.enums.SendPropsOrigin;
import com.red.circle.other.app.service.activity.LotteryPrizeGrantService; import com.red.circle.other.app.service.activity.LotteryPrizeGrantService;
import com.red.circle.other.infra.database.rds.entity.activity.LotteryPrize; import com.red.circle.other.infra.database.rds.entity.activity.LotteryPrize;
import com.red.circle.other.inner.endpoint.material.props.BadgeBackpackClient; import com.red.circle.other.inner.endpoint.material.props.BadgeBackpackClient;
import com.red.circle.other.inner.endpoint.material.props.FragmentsBackpackClient;
import com.red.circle.other.inner.endpoint.material.props.PropsBackpackClient; import com.red.circle.other.inner.endpoint.material.props.PropsBackpackClient;
import com.red.circle.other.inner.endpoint.material.props.RoomThemeBackpackClient; import com.red.circle.other.inner.endpoint.material.props.RoomThemeBackpackClient;
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient; import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum; import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum;
import com.red.circle.other.inner.enums.material.PropsTypeEnum;
import com.red.circle.other.inner.enums.sys.SysBadgeConfigTypeEnum; import com.red.circle.other.inner.enums.sys.SysBadgeConfigTypeEnum;
import com.red.circle.other.inner.enums.sys.SysCurrencySendReasonEnum; import com.red.circle.other.inner.enums.sys.SysCurrencySendReasonEnum;
import com.red.circle.other.inner.model.cmd.material.GiveBadgeCmd; import com.red.circle.other.inner.model.cmd.material.GiveBadgeCmd;
@ -23,6 +25,7 @@ import com.red.circle.wallet.inner.endpoint.wallet.WalletGoldClient;
import com.red.circle.wallet.inner.model.cmd.DiamondReceiptCmd; import com.red.circle.wallet.inner.model.cmd.DiamondReceiptCmd;
import com.red.circle.wallet.inner.model.cmd.GoldReceiptCmd; import com.red.circle.wallet.inner.model.cmd.GoldReceiptCmd;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Set;
import com.red.circle.wallet.inner.model.enums.GoldOrigin; import com.red.circle.wallet.inner.model.enums.GoldOrigin;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -46,6 +49,7 @@ public class LotteryPrizeGrantServiceImpl implements LotteryPrizeGrantService {
private final BadgeBackpackClient badgeBackpackClient; private final BadgeBackpackClient badgeBackpackClient;
private final RoomThemeBackpackClient roomThemeBackpackClient; private final RoomThemeBackpackClient roomThemeBackpackClient;
private final UserProfileClient userProfileClient; private final UserProfileClient userProfileClient;
private final FragmentsBackpackClient fragmentsBackpackClient;
@Override @Override
public void grantPrize(Long userId, LotteryPrize prize, String recordNo) { public void grantPrize(Long userId, LotteryPrize prize, String recordNo) {
@ -79,6 +83,10 @@ public class LotteryPrizeGrantServiceImpl implements LotteryPrizeGrantService {
case "BADGE": case "BADGE":
grantBadge(userId, prize, recordNo); grantBadge(userId, prize, recordNo);
break; break;
case "FRAGMENTS":
grantFragments(userId, prize);
break;
case "THEME": case "THEME":
grantTheme(userId, prize, recordNo); grantTheme(userId, prize, recordNo);
@ -248,12 +256,26 @@ public class LotteryPrizeGrantServiceImpl implements LotteryPrizeGrantService {
.setDays(days) .setDays(days)
.setBadgeType(SysBadgeConfigTypeEnum.ACTIVITY) .setBadgeType(SysBadgeConfigTypeEnum.ACTIVITY)
); );
}
// 发送通知
// propsBackpackClient.givePropsNotify(userId, "BADGE", days, prize.getPropsId()); /**
* 发放徽章.
log.info("Badge granted, userId: {}, badgeId: {}, days: {}, expireType: {}, recordNo: {}", */
userId, prize.getPropsId(), days, expireType, recordNo); private void grantFragments(Long userId, LotteryPrize prize) {
if (prize.getPropsId() == null) {
return;
}
// 这里的天数是数量随便数量
int days = prize.getPrizeValue() != null ? prize.getPrizeValue().intValue() : 1;
// 新增碎片
fragmentsBackpackClient.incrFragments(
userId,
prize.getPropsId(),
days,
PropsTypeEnum.FRAGMENTS.name()
);
} }
/** /**