From 96b4bb0ce6a02617e440c3bdcb6691de865eace3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com>
Date: Mon, 26 Feb 2024 22:15:28 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B7=B3=E8=BD=AC=E5=A4=A7=E8=BD=AC?=
=?UTF-8?q?=E7=9B=98=E6=A6=82=E7=8E=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/Integral/LuckyService.cs | 56 +++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Integral/LuckyService.cs
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Integral/LuckyService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Integral/LuckyService.cs
new file mode 100644
index 00000000..832e582f
--- /dev/null
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Integral/LuckyService.cs
@@ -0,0 +1,56 @@
+using System;
+using Microsoft.AspNetCore.Authorization;
+using Volo.Abp.Application.Services;
+using Volo.Abp.EventBus.Local;
+using Yi.Framework.Bbs.Domain.Shared.Etos;
+
+namespace Yi.Framework.Bbs.Application.Services.Integral
+{
+ public class LuckyService : ApplicationService
+ {
+ private ILocalEventBus _localEventBus;
+ public LuckyService(ILocalEventBus localEventBus) { _localEventBus = localEventBus; }
+
+ ///
+ /// 大转盘
+ ///
+ ///
+ [Authorize]
+ public async Task PostWheel()
+ {
+ int[] values=new int[10] { 0,10,30,50,80,100,150,200,300,666};
+ var index = GetWheelIndex();
+ var value = values[index]-50;
+
+ //修改钱钱,如果钱钱不足,直接会丢出去,那本次抽奖将无效
+ await _localEventBus.PublishAsync(new MoneyChangeEventArgs { UserId = CurrentUser.Id!.Value, Number = value }, false);
+
+ return index;
+ }
+
+ private int GetWheelIndex()
+ {
+ int[] probabilities = { 10, 20, 30, 20, 5, 5, 4, 3, 2, 1 };
+
+ int total = 0;
+ foreach (var prob in probabilities)
+ {
+ total += prob;
+ }
+
+ int randomNum = new Random().Next(1, total + 1);
+
+ int cumulativeProb = 0;
+ for (int i = 0; i < probabilities.Length; i++)
+ {
+ cumulativeProb += probabilities[i];
+ if (randomNum <= cumulativeProb)
+ {
+ return i;
+ }
+ }
+ var value = probabilities.Length - 1;
+ return value;
+ }
+ }
+}