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; + } + } +}