From 484de131314a90144cceac6ea721e345ad014f08 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 04 十二月 2025 09:20:56 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/LifePaymentApi
---
LifePayment/LifePayment.Application/LifePay/LifePayAnnouncementService.cs | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 151 insertions(+), 0 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayAnnouncementService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayAnnouncementService.cs
new file mode 100644
index 0000000..968f89e
--- /dev/null
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayAnnouncementService.cs
@@ -0,0 +1,151 @@
+锘縰sing AutoMapper.QueryableExtensions;
+using LifePayment.Application.Contracts;
+using LifePayment.Application.Contracts.LifePay;
+using LifePayment.Domain;
+using LifePayment.Domain.LifePay;
+using LifePayment.Domain.Models;
+using LifePayment.Domain.Shared;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.ObjectMapping;
+using ZeroD.Util;
+using ZeroD.Util.Fadd;
+
+namespace LifePayment.Application.LifePay;
+
+
+public class LifePayAnnouncementService : ApplicationService, ILifePayAnnouncementService
+{
+ private readonly IRepository<LifePayAnnouncement, Guid> _lifePayAnnouncementRepository;
+
+ public LifePayAnnouncementService(IRepository<LifePayAnnouncement, Guid> lifePayAnnouncementRepository)
+ {
+ _lifePayAnnouncementRepository = lifePayAnnouncementRepository;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏憡鍒嗛〉
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<PageOutput<CreateEditLifePayAnnouncementOutput>> GetLifePayAnnouncementPage(GetLifePayAnnouncementPageInput input)
+ {
+ var currentTime = DateTime.Now;
+ var query = _lifePayAnnouncementRepository
+ .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
+ .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
+ .WhereIf(input.StartTime.HasValue, x => x.StartTime >= input.StartTime)
+ .WhereIf(input.EndTime.HasValue, x => x.EndTime <= input.EndTime)
+ .WhereIf(input.Status.HasValue, x => input.Status.Value == AnnouncementStatusEnum.Wait
+ ? currentTime < x.StartTime
+ : input.Status.Value == AnnouncementStatusEnum.Showing
+ ? currentTime >= x.StartTime && currentTime <= x.EndTime
+ : input.Status.Value == AnnouncementStatusEnum.Stop
+ ? currentTime > x.EndTime
+ : false)
+ .Select(x =>
+ new CreateEditLifePayAnnouncementOutput()
+ {
+ Id = x.Id,
+ AnnouncementType = x.AnnouncementType,
+ StartTime = x.StartTime,
+ EndTime = x.EndTime,
+ AnnouncementContent = x.AnnouncementContent,
+ CreationTime = x.CreationTime,
+ Status = GetLifePayAnnouncementStatus(x.StartTime, x.EndTime)
+ });
+
+ var result = await query.GetPageResult(input.PageModel);
+
+ return result;
+ }
+
+ /// <summary>
+ /// 鏂板缂栬緫鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<int> CreateOrEditLifePayAnnouncement(CreateEditLifePayAnnouncementInput input)
+ {
+ CheckExtensions.IfTrueThrowUserFriendlyException(input.EndTime <= input.StartTime, "鎴鏃ユ湡涓嶈兘浣庝簬鐢熸晥鏃ユ湡");
+
+ bool isExist = await _lifePayAnnouncementRepository.AnyAsync(r => (!input.Id.HasValue||r.Id != input.Id.Value)&&input.AnnouncementType==r.AnnouncementType&&!(input.EndTime < r.StartTime || input.StartTime > r.EndTime));
+ CheckExtensions.IfTrueThrowUserFriendlyException(isExist, "鍚屼竴鏃堕棿娈靛彧鑳藉瓨鍦ㄤ竴鏉″叕鍛�");
+
+
+ if (input.Id.HasValue)
+ {
+
+ var dto = await _lifePayAnnouncementRepository.FirstOrDefaultAsync(r => r.Id == input.Id.Value);
+ CheckExtensions.IfTrueThrowUserFriendlyException(dto == null, "鏈幏鍙栧埌鍏憡鏁版嵁");
+
+ dto.AnnouncementType = input.AnnouncementType;
+ dto.StartTime = input.StartTime;
+ dto.EndTime = input.EndTime;
+ dto.AnnouncementContent = input.AnnouncementContent;
+ }
+ else
+ {
+ input.Id = Guid.NewGuid();
+ var entity = ObjectMapper.Map<CreateEditLifePayAnnouncementInput, LifePayAnnouncement>(input);
+ await _lifePayAnnouncementRepository.InsertAsync(entity);
+ }
+
+ return Constant.SUCCESS;
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍏憡
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<int> DeleteLifePayAnnouncement(Guid id)
+ {
+ await _lifePayAnnouncementRepository.DeleteAsync(s => s.Id == id);
+
+ return Constant.SUCCESS;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠灞曠ず涓殑鍏憡
+ /// </summary>
+ /// <returns></returns>
+ public async Task<CreateEditLifePayAnnouncementOutput> GetShowingLifePayAnnouncement(GetShowingLifePayAnnouncementInput input)
+ {
+ DateTime now = DateTime.Now;
+ var announcement = await _lifePayAnnouncementRepository
+ .WhereIf(input.AnnouncementType.HasValue,x=>x.AnnouncementType==input.AnnouncementType)
+ .Where(x => now >= x.StartTime && now <= x.EndTime).OrderBy(r => r.StartTime).FirstOrDefaultAsync();
+ if (announcement == null)
+ {
+ return null;
+ }
+
+ var model = ObjectMapper.Map<LifePayAnnouncement, CreateEditLifePayAnnouncementOutput>(announcement);
+ model.Status = GetLifePayAnnouncementStatus(announcement.StartTime, announcement.EndTime);
+ return model;
+ }
+
+ private static AnnouncementStatusEnum GetLifePayAnnouncementStatus(DateTime startTime, DateTime endTime)
+ {
+ DateTime now = DateTime.Now;
+ if (now < startTime)
+ {
+ return AnnouncementStatusEnum.Wait;
+ }
+ else if (now >= startTime && now <= endTime)
+ {
+ return AnnouncementStatusEnum.Showing;
+ }
+ else
+ {
+ return AnnouncementStatusEnum.Stop;
+ }
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1