From e9bcd29e367225934409eed4e7216ff4d77fd546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Thu, 1 Dec 2022 13:38:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E8=AE=BA=E5=BB=BA=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebFirst/database/sqlite.db | Bin 651264 -> 651264 bytes .../Community/CommentController.cs | 58 +++++++++++ .../yi-sqlsugar-dev.db | Bin 262144 -> 270336 bytes .../Yi.Framework.Interface/IAgreeService.cs | 2 +- .../IServiceTemplate/ICommentService.cs | 9 ++ .../ModelsTemplate/AgreeEntity.cs | 6 +- .../ModelsTemplate/CommentEntity.cs | 92 ++++++++++++++++++ .../Yi.Framework.Service/AgreeService.cs | 14 +-- .../ServiceTemplate/CommentService.cs | 14 +++ 9 files changed, 184 insertions(+), 11 deletions(-) create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Community/CommentController.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICommentService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CommentEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CommentService.cs diff --git a/WebFirst/database/sqlite.db b/WebFirst/database/sqlite.db index bf89162082cbc0cac57157d642fa0da6f3aa3e33..eec321e30a1205207d76f2edd68679d631ab6412 100644 GIT binary patch delta 691 zcmZp8px*F6eS)-LDFXw;d?1E_r4x0G8A~@Ni0LziO)l4$W&GMaRlj|zKI8VO`b_x( z%t9PJ)7c%El$khsHaiL=aM-7WaWgPVOUpYO8*^~5IOpf)rskDEsTb>8UaZ^oV&MuS z10y3{LnB=SLj^-4D^p`D6JtFK12a=&%gGa8sZamp!K5w%lQp)mGBwaMH!-j@GoO6$ zsd{^eCle4e12GE_vjQ<25VHd@$Mz6U&b8Cnx%?PR*!-BLb3EX*(cuW-Qs>~{JjFSg zGlSELQ;Fj%$5D>S92x94*cY-FvRkopa{ghv&9;%Pp3M*Fg?p^rdhMm$46?Eu92}a{ z7YZ^7Pp`km$>s!cd}c~ceqMT*etQWwgQ6l(iK;Lo1JrwdrMU>!)3p;II-X74keOE! zrrusWUEnpR8cUdVd(rfSyPR4qVS4Qa(+^%_)MW`XY0sa&aT=pBOPFqZ-gHG_CLNGi z?sUg55V4%;ipLl=rf(2tV(|%cZBOK8Ff;^Ot}n{S;8;|WnVggAUj((=GX+!R*|hfO zs~0@$n1<|$P|^1I>5YO+BKn~k?b%Qt%LBdRm|m2c3iJ$&e%`e6#nyRHf9SVoP3OMN zDd`C@>Sh4W{{MGx-GOgwa7CCLcUnE`swU>PnYyQpR(dv z$98ByYPDxf|ND|tlO;^FJss>C#<1yDFF6mea`|br7fx?bWKw4dQ)y3_em8zx1q delta 203 zcmZp8px*F6eS)-LG6Ms{d?1E_`4e@F8Iw0Ai0LziPA=D%Wqj5=Rlj|zKI8VO`b_x( z%z_-Brn5URDQ|WZIKeUflLwQ!h@q~LrGlY_m9dGHiJ_i>k%76X`Q*YE>g^$(OhC*G z#4JF}3dC$c%nrmH+e17#*G^*x+N#QF#W0=Y0jCWgmmilp=P%AvoRc{-IIVydyx^E_ o^^)@dvsQcJ^dB!cHCaMc+7qVVjbKt{4HapR=iVOligO(+0Ao=*dH?_b diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Community/CommentController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Community/CommentController.cs new file mode 100644 index 00000000..872c6c74 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Community/CommentController.cs @@ -0,0 +1,58 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class CommentController : BaseSimpleCrudController + { + private ICommentService _iCommentService; + public CommentController(ILogger logger, ICommentService iCommentService) : base(logger, iCommentService) + { + _iCommentService = iCommentService; + } + + /// + /// 获取全部一级评论 + /// + /// + public override async Task GetList() + { + var data = await _repository.GetListAsync(u=>u.UserId==null); + return Result.Success().SetData(data); + } + + /// + /// 获取一级评论详情 + /// + /// + /// + public override Task GetById([FromRoute] long id) + { + return base.GetById(id); + } + + /// + /// 回复文章或回复评论 + /// + /// + [HttpPost] + public async Task Comment() + { + + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db index 6e7b7aa8be9f703fc907a6ccfdf395017798822e..158e772cce0870cec185b8287294801b5c364fdc 100644 GIT binary patch delta 427 zcmZo@5NJ3cFhN?7lYxQ335a1pexi;sD<^}VPC#QyYYJm)3e(mU=DFu(Ij%8qvwmXW zzs$?XbAvmP+ko>6=VA869IIJBarSH$6u83b(5z?3E-o$2*k)Xkn3R+1oS&PUnpXm) z9G!z)9Yb6dLL8lZTosg{qDmUPTuPoPN(wpodFj&)#TccgJKSWJnx1ounS%u+HcgOG zM$**4KvTgl)W=6bK?kVbF})}?)vq*HNnvs$ht%}6o6LIC8w447KrH^rGW<@{=iOxH z4pY!kNboO8Ni6~@O;E_pD*^I@QgaiFvJ(`_5{r^E5{onpfhGfmp{_wv7?4;5bh~Ft z0@!7mO|1It;^N|r&6(35++cnr2h`(ORFavTlj>gt)eKjwX)s;SoJnT-$s5ePES$R; zwoSivgLxC1t`VEKqxAHP`iv6NP%ZI>PzERhI6yI=uQ&N2ugr8KYbN3CUv4t18*VC8rBpGZ}6Fa+8@y4FEMxB$faG diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IAgreeService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IAgreeService.cs index 5c8c99b2..585a7d66 100644 --- a/Yi.Framework.Net6/Yi.Framework.Interface/IAgreeService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IAgreeService.cs @@ -6,6 +6,6 @@ namespace Yi.Framework.Interface { public partial interface IAgreeService : IBaseService { - Task OperateAsync(long articleId, long userId); + Task OperateAsync(long articleOrCommentId, long userId); } } diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICommentService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICommentService.cs new file mode 100644 index 00000000..5005fd1a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICommentService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ICommentService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/AgreeEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/AgreeEntity.cs index b66856e6..03654c49 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/AgreeEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/AgreeEntity.cs @@ -24,10 +24,10 @@ namespace Yi.Framework.Model.Models [SugarColumn(ColumnName="UserId" )] public long? UserId { get; set; } /// - /// 文章id + /// 文章或评论id /// - [SugarColumn(ColumnName="ArticleId" )] - public long? ArticleId { get; set; } + [SugarColumn(ColumnName="ArticleOrCommentId" )] + public long? ArticleOrCommentId { get; set; } /// /// 创建者 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CommentEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CommentEntity.cs new file mode 100644 index 00000000..bcd20404 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CommentEntity.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 评论表 + /// + [SugarTable("Comment")] + public partial class CommentEntity:IBaseModelEntity + { + public CommentEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// 文章id + /// + [SugarColumn(ColumnName="ArticleId" )] + public long? ArticleId { get; set; } + /// + /// 被回复用户id + /// + [SugarColumn(ColumnName="UserId" )] + public long? UserId { get; set; } + /// + /// 评论内容 + /// + [SugarColumn(ColumnName="Content" )] + public string Content { get; set; } + /// + /// 点赞数 + /// + [SugarColumn(ColumnName="AgreeNum" )] + public int? AgreeNum { get; set; } + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string Remark { get; set; } + /// + /// 子评论数 + /// + [SugarColumn(ColumnName="CommentNum" )] + public int? CommentNum { get; set; } + /// + /// 父级评论id + /// + [SugarColumn(ColumnName="ParentId" )] + public long? ParentId { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/AgreeService.cs b/Yi.Framework.Net6/Yi.Framework.Service/AgreeService.cs index ba61029d..3a469afb 100644 --- a/Yi.Framework.Net6/Yi.Framework.Service/AgreeService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Service/AgreeService.cs @@ -12,17 +12,17 @@ namespace Yi.Framework.Service /// 点赞操作 /// /// - public async Task OperateAsync(long articleId, long userId) + public async Task OperateAsync(long articleOrCommentId, long userId) { var _articleRepositoty = _repository.ChangeRepository>(); - var article = await _articleRepositoty.GetByIdAsync(articleId); - if (await _repository.IsAnyAsync(u => u.UserId == userId && u.ArticleId == articleId)) + var article = await _articleRepositoty.GetByIdAsync(articleOrCommentId); + if (await _repository.IsAnyAsync(u => u.UserId == userId && u.ArticleOrCommentId == articleOrCommentId)) { //已点赞,取消点赞 await _repository.UseTranAsync(async () => { - await _repository.DeleteAsync(u => u.UserId == userId && u.ArticleId == articleId); - await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum - 1 }); + await _repository.DeleteAsync(u => u.UserId == userId && u.ArticleOrCommentId == articleOrCommentId); + await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleOrCommentId, AgreeNum = article.AgreeNum - 1 }); }); return false; @@ -32,8 +32,8 @@ namespace Yi.Framework.Service //未点赞,添加点赞记录 await _repository.UseTranAsync(async () => { - await _repository.InsertReturnSnowflakeIdAsync(new AgreeEntity { UserId = userId, ArticleId = articleId }); - await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleId, AgreeNum = article.AgreeNum + 1 }); + await _repository.InsertReturnSnowflakeIdAsync(new AgreeEntity { UserId = userId, ArticleOrCommentId = articleOrCommentId }); + await _articleRepositoty.UpdateIgnoreNullAsync(new ArticleEntity { Id = articleOrCommentId, AgreeNum = article.AgreeNum + 1 }); }); return true; } diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CommentService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CommentService.cs new file mode 100644 index 00000000..1be5cbc9 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CommentService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class CommentService : BaseService, ICommentService + { + public CommentService(IRepository repository) : base(repository) + { + } + } +}