From 7f681c37dfffa1ea53afaa3f728481e6ae7653a0 Mon Sep 17 00:00:00 2001 From: tanglong <842690096@qq.com> Date: Mon, 21 Jul 2025 16:09:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=98=E8=B4=B9=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WeChatApplet/Context/SmartSportsContext.cs | 1 + .../Controllers/ClientSideController.cs | 22 +++++++ .../Services/Impl/ClientSideService.cs | 48 ++++++++++++++- .../Services/Interface/IClientSideService.cs | 12 ++++ .../Y_CurricularPurchaseRecord.cs | 58 +++++++++++++++++++ .../Y_CurricularTaxonomy.cs | 8 +++ .../Dto/ClientSide/PaidCoursesListDto.cs | 20 +++++++ 7 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 WeChatApplet/SmartSportsEntitys/Y_CurricularPurchaseRecord.cs create mode 100644 YD_WeChatApplet.Commons/Dto/ClientSide/PaidCoursesListDto.cs diff --git a/WeChatApplet/Context/SmartSportsContext.cs b/WeChatApplet/Context/SmartSportsContext.cs index 3099086..b5d6460 100644 --- a/WeChatApplet/Context/SmartSportsContext.cs +++ b/WeChatApplet/Context/SmartSportsContext.cs @@ -45,6 +45,7 @@ namespace YD_WeChatApplet.Context public DbSet Curricular { get; set; } public DbSet StadiumVisiting { get; set; } public DbSet SchoolAccountApplication { get; set; } + public DbSet CurricularPurchaseRecord { get; set; } } } diff --git a/WeChatApplet/Controllers/ClientSideController.cs b/WeChatApplet/Controllers/ClientSideController.cs index 065c0e3..3780219 100644 --- a/WeChatApplet/Controllers/ClientSideController.cs +++ b/WeChatApplet/Controllers/ClientSideController.cs @@ -58,6 +58,28 @@ namespace YD_WeChatApplet.Api.Controllers return res; } + /// + /// 付费课程分类 + /// + /// + [HttpGet("PaidCoursesList")] + public async Task> PaidCoursesList() + { + var res = await _clientSideService.PaidCoursesList(); + return res; + } + + /// + /// 课程兑换 + /// + /// + [HttpPost("PaidCoursesBuy")] + public async Task PaidCoursesBuy(string redeemCode) + { + var res = await _clientSideService.PaidCoursesBuy(redeemCode); + return res; + } + /// /// 教学列表 /// diff --git a/WeChatApplet/Services/Impl/ClientSideService.cs b/WeChatApplet/Services/Impl/ClientSideService.cs index 4f38e22..f216df8 100644 --- a/WeChatApplet/Services/Impl/ClientSideService.cs +++ b/WeChatApplet/Services/Impl/ClientSideService.cs @@ -123,7 +123,7 @@ namespace YD_WeChatApplet.Api.Services.Impl /// public async Task> CurricularTaxonomyList() { - var res = await _sportsContext.CurricularTaxonomy.Select(x => new ComboBoxDto() + var res = await _sportsContext.CurricularTaxonomy.Where(x => x.CurricularType == 1).Select(x => new ComboBoxDto() { Id = x.Id, Name = x.TaxonomyName @@ -132,6 +132,52 @@ namespace YD_WeChatApplet.Api.Services.Impl return res; } + /// + /// 付费课程 + /// + /// + public async Task> PaidCoursesList() + { + var userId = UserLoginContext.Current.UserId; + + var paidCourses = await _sportsContext.CurricularPurchaseRecord.Where(x => x.UserId == userId).ToListAsync(); + + var res = await _sportsContext.CurricularTaxonomy.Where(x => x.CurricularType == 2).Select(x => new PaidCoursesListDto() + { + Id = x.Id, + Name = x.TaxonomyName, + IsPurchase = paidCourses.Any(x => x.TaxonomyId == x.Id) + }).ToListAsync(); + + return res; + } + + /// + /// 付费课程购买 + /// + /// + public async Task PaidCoursesBuy(string redeemCode) + { + var paidCoursesList = new List(); + + var paidCourses = await _sportsContext.CurricularTaxonomy.Where(x => x.CurricularType == 2).ToListAsync(); + + foreach (var paidCourse in paidCourses) + { + paidCoursesList.Add(new Y_CurricularPurchaseRecord() + { + TaxonomyId = paidCourse.Id, + UserId = UserLoginContext.Current.UserId, + RedeemCode = redeemCode, + Remarks = "", + CreateDate = DateTime.Now + }); + } + + await _sportsContext.AddRangeAsync(paidCoursesList); + return await _sportsContext.SaveChangesAsync() > 0; + } + /// /// 教学列表 /// diff --git a/WeChatApplet/Services/Interface/IClientSideService.cs b/WeChatApplet/Services/Interface/IClientSideService.cs index 5d9dccb..4ce4697 100644 --- a/WeChatApplet/Services/Interface/IClientSideService.cs +++ b/WeChatApplet/Services/Interface/IClientSideService.cs @@ -38,6 +38,18 @@ namespace YD_WeChatApplet.Services /// Task> CurricularTaxonomyList(); + /// + /// 付费课程分类 + /// + /// + Task> PaidCoursesList(); + + /// + /// 付费课程购买 + /// + /// + Task PaidCoursesBuy(string redeemCode); + /// /// 课程列表 /// diff --git a/WeChatApplet/SmartSportsEntitys/Y_CurricularPurchaseRecord.cs b/WeChatApplet/SmartSportsEntitys/Y_CurricularPurchaseRecord.cs new file mode 100644 index 0000000..d47e2ff --- /dev/null +++ b/WeChatApplet/SmartSportsEntitys/Y_CurricularPurchaseRecord.cs @@ -0,0 +1,58 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace YD_WeChatApplet.Api.SmartSportsEntitys +{ + [Table("Y_CurricularPurchaseRecord")] + public class Y_CurricularPurchaseRecord + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Display(Description = "主键Id")] + [Comment("Id")] + public int Id { get; set; } + + /// + ///用户Id + /// + [Display(Name = "用户Id")] + [Comment("用户Id")] + [Column(TypeName = "int)")] + public int UserId { get; set; } + + /// + ///分类Id + /// + [Display(Name = "分类Id")] + [Comment("分类Id")] + [Column(TypeName = "int)")] + public int TaxonomyId { get; set; } + + /// + ///兑换码 + /// + [Display(Name = "兑换码")] + [Comment("兑换码")] + [Column(TypeName = "nvarchar(1000)")] + public string RedeemCode { get; set; } + + /// + ///备注 + /// + [Display(Name = "备注")] + [Comment("备注")] + [Column(TypeName = "text")] + public string Remarks { get; set; } + + /// + ///创建时间 + /// + [Display(Name = "创建时间")] + [Comment("创建时间")] + [Column(TypeName = "datetime")] + public DateTime CreateDate { get; set; } + } +} diff --git a/WeChatApplet/SmartSportsEntitys/Y_CurricularTaxonomy.cs b/WeChatApplet/SmartSportsEntitys/Y_CurricularTaxonomy.cs index 803604e..ca1684b 100644 --- a/WeChatApplet/SmartSportsEntitys/Y_CurricularTaxonomy.cs +++ b/WeChatApplet/SmartSportsEntitys/Y_CurricularTaxonomy.cs @@ -23,5 +23,13 @@ namespace YD_WeChatApplet.Api.SmartSportsEntitys [Comment("分类名称")] [Column(TypeName = "nvarchar(100)")] public string TaxonomyName { get; set; } + + /// + ///课程类型 + /// + [Display(Name = "课程类型")] + [Comment("课程类型")] + [Column(TypeName = "int)")] + public int CurricularType { get; set; } } } diff --git a/YD_WeChatApplet.Commons/Dto/ClientSide/PaidCoursesListDto.cs b/YD_WeChatApplet.Commons/Dto/ClientSide/PaidCoursesListDto.cs new file mode 100644 index 0000000..8be1ebe --- /dev/null +++ b/YD_WeChatApplet.Commons/Dto/ClientSide/PaidCoursesListDto.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using YD_WeChatApplet.Commons.Dto.HomeWork; + +namespace YD_WeChatApplet.Commons.Dto.ClientSide +{ + /// + /// 付费课程列表 + /// + public class PaidCoursesListDto : ComboBoxDto + { + /// + /// 是否购买 + /// + public bool IsPurchase { get; set; } + } +}