91ÊÓƵרÇø

ÈÕ±¾²Ñ³Õ³åÒ»Ìý²Ñ³Õ³åÈÕ±¾×ÖÄ»°æ³å¸ßÇå²Ñ³ÕÊÓƵ³åÔÚÏ߲ѳÕÒôÀÖ³å²Ñ³Õ...

Õë¶ÔÏÖ³¡ËÑÑ°Ö¤¾ÝºÍ¶ÔÝþÓî·ÉµÄÎÊѯ£¬¾¯·½¶ÔÏÖÓÐÏßË÷Õ¹¿ªÁËÈ«Ãæµ÷²é¡£

2024Äê12ÔÂ29ÈÕ£¬¶ø·´¹ÛµÚһλµÄÌØ˹À­Model Y£¬ºÍµÚ¶þ¡¢Èý¡¢ËÄλµÄÒ»ÖÚ±ÈÑǵÏSUVÔò³ÉΪÁËÐÂʱ´úµÄ±¬¿î³µÐÍ¡£¶ø¿äÕŵÄÏúÁ¿³ýÁË´øÀ´Á˸üÅÓ´óµÄÓû§ÈºÌåÒÔÍ⣬ͬʱҲ´øÀ´Á˸ü¸ßµÄ³ö´íÂÊ£¬ÀýÈçÌØ˹À­É²³µÊ¼þÒÔ¼°×°Å乤ÒÕ¡¢±ÈÑǵϵIJ¿·ÖÓÃÁϲ»×ãµÈÎÊÌâ¡£

ÈÕ±¾²Ñ³Õ³åÒ»Ìý²Ñ³Õ³åÈÕ±¾×ÖÄ»°æ³å¸ßÇå²Ñ³ÕÊÓƵ³åÔÚÏ߲ѳÕÒôÀÖ³å²Ñ³Õ...

×îÐÂÊý¾ÝÏÔʾ½ØÖÁ7ÔÂ4ÈÕ¹«Ä¼»ù½ð½ñÄêÒÔÀ´·Öºì´ÎÊý³¬3000´ÎºÏ¼Æ·Öºì½ð¶î½üǧÒÚÔª

Ö®ºó£¬ÀîС贺͹ëÃÛÂíËÕ¶àÕâ¼þʶ¼·¢±íÁË»ØÓ¦£¬Æڼ䶼±íʾÊÇÈ¥×öÍ··¢ÁË£¬Ì«ÍíÁËËùÒÔºÍһȺÅóÓÑÈ¥PG OneµÄס´¦¿çÄêµÈ¡£*ST¸»¼ª£º¿Õ¿Õ´´Í¶µÈÄâºÏ¼Æ¼õ³Ö²»³¬5.13%¹É·Ý

jiyu.NetCorekaifapinglunxitong(zhuan)2023-12-18 08:18¡¤SOFTSHOWbokeqiantaiyijihouduanshejidedaimazhuyaozaiyixiawenjian£ºStarBlog.Web/Services/CommentService.csStarBlog.Web/Apis/Comments/CommentController.csStarBlog.Web/Views/Blog/Widgets/Comment.cshtmlStarBlog.Web/wwwroot/js/comment.jsguanlihoutaidedaimazaiyixiawenjian£ºsrc/views/Comment/Comments.vueshixianxiaoguo#zaikaishizhiqian£¬xianlaikankanshixiandexiaoguoba¡£bokeqiantai#taolunqudezhebufenUIshiyong Vue laiqudong£¬weiliaokaifaxiaolvhuanyinruliao ElementUI dezujian£¬kanqilaifenggegenbokeyuanbende Bootstrap butaiyiyang£¬buguohuantinghexiede¡£wuxudenglujikefabiaohuohuifupinglun£¬danxuyaoshuruyouxiangdizhibingjieshouyoujianyanzhengma¡£weiliaogoujianwenminghexiedewangluohuanjing£¬fabiaopinglunzhihouhuiyouxiaoguanjiazidongshenhe£¬shenhetongguocaihuizhanshi¡£ruguoxiaoguanjiazidongshenhemeiyoutongguo£¬huijinrurengongshenheliucheng¡£guanlihoutai#guanlihoutaikeyishezhipinglundeshenhetongguohuojujue¡£moxingsheji#gongnengjieshaoqianmiandushuoliao£¬buzaizhuishu£¬zhijiecongdaimakaishijiangqi¡£zhegegongnengxinzengliaolianggeshitilei£¬fenbieshi Comment he AnonymousUserpinglunshitileidedaimaruxia£¬keyikandaochuliao AnonymousUser deyinyong£¬wohuanyuliuliaoyige User shuxing£¬muqianbokeqiantaishimeiyouzuodenglugongnengde£¬yuliuzhegeshuxingkeyifangbianyihoudedengluyonghujinxingpinglun¡£public class Comment : ModelBase { [Column(IsIdentity = false, IsPrimary = true)] public string Id { get; set; } public string? ParentId { get; set; } public Comment? Parent { get; set; } public List? Comments { get; set; } public string PostId { get; set; } public Post Post { get; set; } public string? UserId { get; set; } public User? User { get; set; } public string? AnonymousUserId { get; set; } public AnonymousUser? AnonymousUser { get; set; } public string? UserAgent { get; set; } public string Content { get; set; } public bool Visible { get; set; } ///

/// shifouxuyaoshenhe /// public bool IsNeedAudit { get; set; } = false; /// /// yuanyin /// °ù³Ü²µ³Ü´Ç²â²¹²Ô³ú³ó±ð²Ô²µ²ú³Ü³Ù´Ç²Ô²µ²µ³Ü´Ç»å±ð³ó³Ü²¹£¬°ì±ð²Ô±ð²Ô²µ³ó³Ü¾±´Ú³Ü²õ³ó²¹²Ô²µ²â³Ü²¹²Ô²â¾±²Ô /// public string? Reason { get; set; }}nimingyonghushitilei£¬jianjiandandande£¬xuyaofangketianxiedejiusangeziduan£¬IPdizhizidongjilu¡£public class AnonymousUser : ModelBase { public string Id { get; set; } public string Name { get; set; } public string Email { get; set; } public string? Url { get; set; } public string? Ip { get; set; }}qianduanjiekoufengzhuang#qianduanshiyong axios fangbianjiekoudiaoyong£¬dangranshiyong ES5 yuanshengde fetch hanshuyekeyi£¬buguohuiduoyixiedaima£¬lanshidiyishengchanli¡£shiyong Promise laibaozhuangfanhuizhi£¬bianyushiyong ES5 de async/await yufa£¬huodegenC#leisideyibukaifatiyan¡£yinweipianfuguanxi£¬benwenwufaliejusuoyoujiekoufengzhuangdaima£¬zhijulianggedianxinglizi¡£yixiashihuoqunimingyonghudejiekou£¬zuowei GET fangfadelizi¡£getAnonymousUser(email, otp) { return new Promise((resolve, reject) => { axios.get(`/Api/Comment/GetAnonymousUser?email=${email}&otp=${otp}`) .then(res => resolve(res.data)) .catch(res => resolve(res.response.data)) })}yixiashitijiaopinglundejiekou£¬zuowei POST fangfadelizi¡£submitComment(data) { return new Promise((resolve, reject) => { axios.post(`/Api/Comment`, {...data}) .then(res => resolve(res.data)) .catch(res => resolve(res.response.data)) })}OK£¬zheshiliazuijiandandelizi£¬meiyoujinxingrenheshujuchuli¡£shengchengyoujianyanzhengma#tongchangshiyonghaxibiaoleideshujujiegoulaicunchuzhezhongshuju£¬benxiangmuzhong£¬woshiyong .NetCore zidaide MemoryCache laicunchuyanzhengma£¬chucizhiwai£¬zhijieshiyong Dictionary huozhe Redis dushikexuanxiang¡£xuyaozaifasongyoujiandeshihoujiangyouxiangdizhiyuduiyingdeyanzhengmacunruhuancun£¬ranhouzaiyanzhengdeshihouquchu£¬yanzhengtongguohoushanchuzheyitiaojilu¡£shouxianzai Program.cs zhongzhucefuwubuilder.Services.AddMemoryCache();jianchayouxiangdizhishifouyouxiao#zai CommentService.cs zhong£¬fengzhuangyigefangfa£¬shiyongzhengzebiaodashijianchayouxiangdizhi¡£/// /// jianchayouxiangdizhishifouyouxiao/// public static bool IsValidEmail(string email) { if (string.IsNullOrEmpty(email) || email.Length < 7) { return false; } var match = Regex.Match(email, @"[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+"); var isMatch = match.Success; return isMatch;}fasongyouxiangyanzhengma#weiliaofangbianfasongyoujian£¬wofengzhuangliao EmailService£¬qizhongdefasongyanzhengmadedaimaruxia¡£shengchengsiweishudeyanzhengmazhijieshiyong Random shengchengyigezai 1000-9999 zhijiandesuijishujike¡£guanyufayoujian£¬zaiyouqinglianjiedenapianwenzhangliyoujieshao£º jiyu.NetCorekaifabokexiangmu StarBlog - (28) kaifayouqinglianjiexiangguanjiekou/// /// fasongyouxiangyanzhengma/// shengchengsuijiyanzhengma/// ³ú³ó¾±²õ³ó±ð²Ô²µ³¦³ó±ð²Ô²µ²â²¹²Ô³ú³ó±ð²Ô²µ³¾²¹£¬²ú³Ü´Ú²¹²â´Ç³ÜÂá¾±²¹²Ô/// public async Task SendOtpMail(string email, bool mock = false) { var otp = Random.Shared.NextInt64(1000, 9999).ToString(); var sb = new StringBuilder(); sb.AppendLine($"

³ó³Ü²¹²Ô²â¾±²Ô²µ´Ú²¹²Ô²µ·É±ð²Ô³§³Ù²¹°ùµþ±ô´Ç²µ£¡²â²¹²Ô³ú³ó±ð²Ô²µ³¾²¹£ºµ÷´Ç³Ù±è°¨

"); sb.AppendLine($"

°ù³Ü²µ³Ü´Ç²Ô¾±²Ô³¾±ð¾±²â´Ç³ÜÂá¾±²Ô³æ¾±²Ô²µ°ù±ð²Ô³ó±ð³¦²¹´Ç³ú³Ü´Ç£¬±ç¾±²Ô²µ³ó³Ü±ô³Ü±ð³¦¾±²â´Ç³ÜÂá¾±²¹²Ô¡£

"); if (!mock) { await SendEmailAsync( "[StarBlog]youxiangyanzhengma", sb.ToString(), email, email ); } return otp;}jianchashifouyouyanzhengmadehuancun£¬meiyoudehuashengchengyigebingfasongyoujian£¬ranhoucunruhuancun£¬zheliwoshezhiliaoguoqishijianshi5fenzhong¡£public async Task<(bool, string?)> GenerateOtp(string email, bool mock = false) { var cacheKey = $"comment-otp-{email}"; var hasCache = _memoryCache.TryGetValue(cacheKey, out var existingValue); if (hasCache) return (false, existingValue); var otp = await _emailService.SendOtpMail(email, mock); _memoryCache.Set(cacheKey, otp, new MemoryCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5) }); return (true, otp);}jiekou#zuihouzai Controller lishixianzhegejiekou¡£zhelizhikaolvliaosanzhongqingkuangyouxiangdizhicuowufasongyoujianchenggongshangyigeyanzhengmazaiyouxiaoqi£¬bufasongyoujianqishihuanyouyizhongqingkuangshifasongyoujianshibai£¬buguowomeiyouxiezaizhegejiekouli£¬ruguofasongshibaihuipaochucuowu£¬ranhoubeiquanjudecuowuchuliqilanjiedaobingfanhui500xinxi¡£/// /// huoquyoujianyanzhengma/// [HttpGet("[action]")]public async Task GetEmailOtp(string email) { if (!CommentService.IsValidEmail(email)) { return ApiResponse.BadRequest("tigongdeyouxiangdizhiwuxiao"); } var (result, _) = await _commentService.GenerateOtp(email); return result ? ApiResponse.Ok("fasongyoujianyanzhengmachenggong£¬wufenzhongneiyouxiao") : ApiResponse.BadRequest("shangyigeyanzhengmahuanzaiyouxiaoqinei£¬qingwuzhongfuqingqiuyanzhengma");}jianchayanzhengmayuhuoqunimingyonghu#qianmianzai¡¸moxingsheji¡¹bufenliyoushuodao£¬weidengluheyidengluyonghudukeyifabiaopinglun£¨dangranmuqianhuanmeiyoutigongqitayonghudengludegongneng£©£¬benwenzhishejiliaoweidengluyonghu£¨jinimingyonghu£©depinglunfabiaoliucheng¡£zaiyonghufasongyoujianyanzhengma£¬bingqieyanzhengmaxiaoyantongguozhihou£¬keyitongguojiekouhuoqudaoyouxiangdizhiduiyingdenimingyonghuxinxi£¬zheyangbuhuirangfangkexuyaoduocizhongfushuru£¬tongshiyekeyizaixiayicipingluntijiaoshixiugaizhexiexinxi¡£heduiyanzhengma#wozai CommentService.cs zhongfengzhuangliaoyixiafangfayongyuheduiyanzhengma£¬bingqiezengjialiao clear canshu£¬keyikongzhiyanzhengtongguohoushifouqingchuzhegeyanzhengma¡£/// /// yanzhengyicixingmima/// /// yanzhengtongguohoushifouqingchupublic bool VerifyOtp(string email, string otp, bool clear = true) { var cacheKey = $"comment-otp-{email}"; _memoryCache.TryGetValue(cacheKey, out var value); if (otp != value) return false; if (clear) _memoryCache.Remove(cacheKey); return true;}houduanjiekou#jiekoudaimaruxia¡£zhelibashengchengxinyanzhengmadedaimazhushidiaoliao£¬yuanbenwoshejideshihuoqunimingyonghuxinxihefapinglunduxuyaoyanzhengma£¬suoyinimingyonghuxinxihuoquzhihouxuyaozhongxinshengchengyigeyanzhengma£¨danbufayoujian£©geiqianduan£¬ranhouqianduangengxinyixiazancundeyanzhengma¡£danshiwofaxianzheyangyoudianguodushejiliao£¬erqiezhezhongzuofahuigeifangkedailaiyidingdekunrao£¨tijiaodeyanzhengmaheyoujianshoudaodebushitongyige£©£¬yushibazheyigegongnengjianhualiaoyixia£¬danluojihuanbaoliuzhuo¡£/// /// genjuyouxiangheyanzhengma£¬huoqunimingyonghuxinxi/// [HttpGet("[action]")]public async Task GetAnonymousUser(string email, string otp) { if (!CommentService.IsValidEmail(email)) return ApiResponse.BadRequest("tigongdeyouxiangdizhiwuxiao"); var verified = _commentService.VerifyOtp(email, otp, clear: false); if (!verified) return ApiResponse.BadRequest("yanzhengmawuxiao"); var anonymous = await _commentService.GetAnonymousUser(email); // zanshibushiyongshengchengxinyanzhengmadegongneng£¬bimianyonghutiyangelie // var (_, newOtp) = await _commentService.GenerateOtp(email, true); return ApiResponse.Ok(new { AnonymousUser = anonymous, NewOtp = otp });}qianduanluoji#dangfangkezaitaolunqujiemiantianxieliaoyanzhengmazhihou£¬huichufa change shijian£¬zhixingyixia JavaScript daima¡££¨pianfuguanxizuoliaojianhua£©dangyonghushurudeyanzhengmachangdufuheyaoqiuzhihou£¬huiqingqiuhouduanjiekouxiaoyanzhegeyanzhengmashifouzhengque£¬yanzhengmazhengquedehuahouduanhuitongshifanhuizhegeyouxiangdizhiduiyingdenimingyonghuxinxi¡£zhihouyuanbensuozhuodejigeshurukuangyenengjiaohuliao£¬huozheyekeyidianji¡¸huifu¡¹anniuduiqitarendepinglunjinxinghuifu¡£async handleEmailOtpChange(value) { console.log('handleEmailOtpChange', value) if (this.form.email?.length === 0 || value.length < 4) return // shezhi UI jiazaizhuangtai this.[duiyingdeUIzujian] = true // xiaoyanOTP & huoqunimingyonghu let res = await this.getAnonymousUser(this.form.email, value) if (res.successful) { if (res.data.anonymousUser) { this.form.userName = res.data.anonymousUser.name this.form.url = res.data.anonymousUser.url } this.form.emailOtp = res.data.newOtp // suozhuyouxiangheyanzhengma£¬buyongbianjiliao this.[duiyingdeUIzujian] = true // kaiqibianjiyonghuming¡¢wangzhi¡¢neirong¡¢huifu this.[duiyingdeUIzujian] = false } else { this.$message.error(res.message) } this.userNameLoading = false this.urlLoading = false}tijiaopinglun#zhebufenshibijiaofuzade£¬yibubulaijieshaobiaodanyanzheng#liyong ElementUI tigongdebiaodanyanzhenggongneng£¬suiranshibijiaolaodezujiankuliao£¬danzhekuaidegongnenghuanshibucuode¡£shouxiandingyibiaodanguize¡£formRules: { userName: [ {required: true, message: 'qingshuruyonghumingcheng', trigger: 'blur'}, {min: 2, max: 20, message: 'changduzai 2 dao 20 gezifu', trigger: 'blur'} ], email: [ {required: true, message: 'qingshuruyouxiang', trigger: 'blur'}, {type: 'email', message: 'youxianggeshibuzhengque'} ], emailOtp: [ {required: true, message: 'qingshuruyouxiangyanzhengma', trigger: 'change'}, {len: 4, message: 'changdu 4 gezifu', trigger: 'change'} ], url: [ {type: 'url', message: `qingshuruzhengquedeurl`, trigger: 'blur'}, ], content: [ {required: true, message: 'qingshurupinglunneirong', trigger: 'blur'}, {min: 1, max: 300, message: 'changdu zai 1 dao 300 gezifu', trigger: 'blur'}, {whitespace: true, message: 'pinglunneirongzhicunzaikongge', trigger: 'blur'}, ]}ranhoujiangzhexiedinghaodeguizebangdingdao form zujianshangzaitijiaodeshihoudiaoyongyixiadaimajinxingbiaodanyanzheng¡£yanzhengchenggongkeyizaiqihuidiaolizhixingjiekoudiaoyongdengcaozuo¡£this.$refs.form.validate(async (valid) => { if (valid) {}}fasongqingqiu#biaodanyanzhengtongguozhihoudiaoyongqianmianfengzhuanghaodejiekoutijiaopinglun¡£ruguopinglunfabiaoshibai£¬zexianshicuowuxinxi¡£ruguopinglunfabiaochenggong£¬xianshixinxizhihou£¬qingkongzhenggebiaodan£¬danbaoliuyoujiandizhi£¬bianyufangketijiaoxiayigepinglun¡£zuihouwulunchenggongyufou£¬duhuishuaxinpinglunliebiao¡£async handleSubmit() { this.$refs.form.validate(async (valid) => { if (valid) { this.submitLoading = true let res = await this.submitComment(this.form) if (res.successful) { this.$message.success(res.message) let email = `${this.form.email}` this.handleReset() this.form.email = email } else this.$message.error(res.message) this.submitLoading = false await this.getComments() } })}jiekousheji#qianduandeshuowanliao£¬laidaoliaohouduanbufen£¬yixiadaimazuoliaozhexieshi£ºheduiyanzhengmahuoqunimingyonghushengchengxinpinglunxiaoguanjiazidongshenhe£¨mingancijiance£©baocunpinglunbingfanhuijieguo[HttpPost]public async Task> Add(CommentCreationDto dto) { if (!_commentService.VerifyOtp(dto.Email, dto.EmailOtp)) { return ApiResponse.BadRequest("yanzhengmawuxiao"); } var anonymousUser = await _commentService.GetOrCreateAnonymousUser( dto.UserName, dto.Email, dto.Url, HttpContext.GetRemoteIPAddress()?.ToString().Split(":")?.Last() ); var comment = new Comment { ParentId = dto.ParentId, PostId = dto.PostId, AnonymousUserId = anonymousUser.Id, UserAgent = Request.Headers.UserAgent, Content = dto.Content }; string msg; if (_filter.CheckBadWord(dto.Content)) { comment.IsNeedAudit = true; comment.Visible = false; msg = "xiaoguanjiafaxianninkenengshiyongliaobuliangyongyu£¬gaipinglunjiangzaishenhetongguohouzhanshi~"; } else { comment.Visible = true; msg = "pinglunyouxiaoguanjiashenhetongguo£¬ganxienincanyutaolun~"; } comment = await _commentService.Add(comment); return new ApiResponse(comment) { Message = msg };}xiaoguanjiashenhe#shuoshipinglunshenhe£¬shijishangjiushimingancijiance£¬benxiangmushiyong DFA£¨quedingxingyouxianzhuangtaizidongji£©laishixianjiance¡£benlaizhebufendukeyidanduxieyipianwenzhangjieshaoliao£¬buguokaolvdaoduxiedaozheliao£¬yejiandanjieshaoyixiahaoliao¡£DFAjiquedingxingyouxianzhuangtaizidongji£¬yongyushixianzhuangtaizhijiandezidongzhuanyi¡£ yuDFAduiyingdehuanyouyigeNFAfeiquedingyouxianzhuangtaizidongji£¬erzhetongchengweiyouxianzidongzhuangtaijiFSM¡£tamendezhuyaoqubiezaiyu congyigezhuangtaizhuanyideshihoushifounengweiyiquedingxiayigezhuangtai¡£NFAzaizhuanyideshihouwangwangbushizhuanyidaomouyigequedingzhuangtai£¬ershimougezhuangtaijihe£¬qizhongderenyizhuangtaidukezuoweixiayigezhuangtai£¬erDFAzeshiquedingde¡£DFAdezucheng#yigefeikongyouxianzhuangtaijihe Qyigeshurujihe Ezhuangtaizhuanyihanshu fchushizhuangtai q0 weiQdeyigeyuansuzhongzhizhuangtaijihe Z weiQdezijiyigeDFAkeyixiecheng M=(Q, E, f, q0, Z)ruheshiyongDFAshixianminganciguolvsuanfa#xianjiasheyouNND, CNM, MLGBsangeminganci£¬ze£ºQ = {N, NN, NND, C, CN, CNM, M, ML, MLG, MLGB}yisuoyoumingancidezuchengzuoweizhuangtaijihe£¬zhuangtaijizhixuzaizhexiezhuangtaizhijianzhuanyijikeE = {B, C, D, G, L, N, M}£¬ yisuoyouzuchengmingancidedangezifuzuoweishurujihe£¬zhuangtaijizhixushibiegouchengmingancidezifu¡£qo = null chushizhuangtaiweikong£¬weikongdechutaikeyizhuanyidaorenyizhuangtaiZ = {NND, CNM, MLGB} shibiedaorenyiyigeminganci£¬ zhuangtaizhuanyijiukeyizhongzhiliao¡£namef jiukeyishiyige duruyigezifuhouchaxunshifouweiQzhongdezhuangtaijinerzhuanyidehanshu£¬zezhuanyiguochengweif(null, N) = N, f(N, N) = NN, f(NN, D) = NNDf(null, C) = C, f(C, N) = CN, f(CN, M) = CNMf(null, M) = M , f(M, L) = ML, f(ML, G) = MLG, f(MLG, B) = MLGBshiyongfangshi#jutideshixiandaimabijiaochang£¬wojiubutieliao£¬benwendepianfuyijingyanzhongchaochangliao¡­zongzhiwobazhebufendaimafengzhuanghaoliao£¬zai CodeLab.Share zhege nuget baoli£¬zhijiediaoyongjiuwanshiliao¡£suoyikeyikandaowozai StarBlog xiangmulixieliaoyige TempFilterServiceyinweifengzhuanghaode StopWordsToolkit youhenduogongneng£¬bujinkeyijianceminganci£¬huankeyizidongtihuanchengxinghaoshade£¬dangshizaizuozhegegongnengdeshihouhuanxiangzhuoyaobuyaojiadianqiqiguaiguaidegongneng£¬suoyijiaobazhege service jialiaoge temp deqianzhui¡£public class TempFilterService { private readonly StopWordsToolkit _toolkit; public TempFilterService() { var words = JsonSerializer.Deserialize>(File.ReadAllText("words.json")); _toolkit = new StopWordsToolkit(words!.Select(a => a.Value)); } public bool CheckBadWord(string word) { return _toolkit.CheckBadWord(word); }}zhelichushihuadeshihouxuyao words.json zhegemingancikuwenjian£¬weiliaowangluohuanjingdewenminghexie£¬benxiangmudekaiyuandaimalibunengtigong£¬xuyaodetongxuekeyizixingsouji¡£geshishizheyangde[ { "Id": 1, "Value": "xiaokeai", "Tag": "baoli" }, { "Id": 2, "Value": "hexie", "Tag": "guanggao" }]rengongshenhe#dangpinglunbeixiaoguanjiapandingyoumingancideshihou£¬jiuhuibiaoji IsNeedAudit=true jinrurengongshenheliucheng¡£jiushi Accept he Reject zheliafangfa¡£public async Task Accept(Comment comment, string? reason = null) { comment.Visible = true; comment.IsNeedAudit = false; comment.Reason = reason; await _commentRepo.UpdateAsync(comment); return comment;}duiyingdejiekou[Authorize][HttpPost("{id}/[action]")]public async Task> Accept([FromRoute] string id, [FromBody] CommentAcceptDto dto) { var item = await _commentService.GetById(id); if (item == null) return ApiResponse.NotFound(); return new ApiResponse(await _commentService.Accept(item, dto.Reason));}guanlihoutai#jiexialaihuiyouzhuanmendeyigexiliejieshaojiyu Vue deguanlihoutaikaifa£¬suoyibenwenbuhuihuataiduopianfujieshao£¬zhijiandanjiluyidian¡£yuanbenwoshiyongliao Dialog lairangyonghushurutongguohuojujuemougepinglunshenhedeyuanyin£¬houmianfaxian ElementUI tigongliao prompt gongneng£¬keyidanchuyigejiandandeshurukuang¡£suoyijujuemougepinglundedaimaruxiahandleReject(item) { this.$prompt('qingshuruyuanyin', 'shenhepinglun - buchongyuanyin', { confirmButtonText: 'queding', cancelButtonText: 'quxiao', }).then(({value}) => { this.$api.comment.reject(item.id, value) .then(res => { this.$message.success('caozuochenggong£¡') }) .catch(res => { console.error(res) this.$message.warning(`caozuoshibai£¡${res.message}`) }) .finally(() => this.loadData()) }).catch(() => { })}2024-07-13 15:01¡¤shangguanxinwen

Äê(±·¾±²¹²Ô)½ö(´³¾±²Ô)19Ëê(³§³Ü¾±)µÄ(¶Ù±ð)л(³Ý¾±±ð)æÃ(´Ü³Ü´Ç)æÃ(´Ü³Ü´Ç)£¬¾Í(´³¾±³Ü)ÒÑ(³Û¾±)¾­(´³¾±²Ô²µ)³ä(°ä³ó´Ç²Ô²µ)·Ö(¹ó±ð²Ô)Õ¹(´Ü³ó²¹²Ô)ÏÖ(³Ý¾±²¹²Ô)×Ô(´Ü¾±)¼º(´³¾±)µÄ(¶Ù±ð)÷È(´Ü³Ü´Ç)Á¦(³¢¾±)¡£

²õ³Ü´Ç²â¾±£¬³¾±ð¾±³¦¾±»å²¹Âá¾±²¹±ô¾±²¹²Ô·É²¹²Ô£¬³ó±ð²Ô»å³Ü´Ç°ù±ð²Ô»å³Ü³ú´Ç³Ü±ô¾±²¹´Ç£¬±ô²¹´Ç±ô¾±³Ü³ó³Ü¾±°ù²¹²Ô²µ·É´Ç±ô¾±³Ü³æ¾±²¹£¬³Ù²¹³ú²¹¾±»å²¹²Ô»å³Ü³ú³ó¾±»å²¹´Ç·É´Ç¡£³¦³ó±ð³ú³ó²¹²Ô³ú²¹¾±³¦³ó±ð²Ô²µÂá¾±²¹´Ç£¬²õ³Ü´Ç³ú¾±³ú³Ü´Ç³ú³Ü´Ç»å¾±±ô²¹¾±»å²¹´Ç³¦³ó±ð³ú³ó²¹²Ô£¬²â¾±»å²¹³Ù¾±²Ô²µ£¬³¦²¹¾±³ú³ó¾±³ú¾±Âá¾±±ô²¹¾±»å±ð³Ù²¹¾±³ú²¹´Ç±ô¾±²¹´Ç£¬±ç³Ü³Ù³Ü²õ³ó²¹²Ô»å±ð³¦³ó±ð»å±ð³æ¾±²¹·É³Ü³¦²¹¾±°ì²¹¾±¡£²õ³Ü´Ç³ú¾±³¾²¹¾±±ô¾±²¹´Ç³¦³ó±ð±è¾±²¹´Ç£¬Âá¾±³Ü³ú²¹¾±³¦³ó±ð³ú³ó²¹²Ô³ú³Ü´Ç²â´Ç³Ü»å±ð²õ³ó³Ü±ô¾±²Ô±ô¾±³æ¾±²¹²Ô²µ³Ü²¹²Ô²µ¡£³¦³ó±ð³ú³ó²¹²Ô»å±ð²Ô²¹²Ô²ú¾±²¹²Ô£¬²õ³ó¾±²â¾±²µ±ð³¦²¹¾±²â³Ü²¹²Ô³ú¾±£¬³ó³Ü²¹²Ô³Ù¾±²Ô²µ»å²¹»å±ð¡£²õ³Ü´Ç³ú¾±Âá¾±³Ü³ú³ó±ð²â²¹²Ô²µ²ú²¹¾±·É³Ü±ô¾±²¹´Ç±ô²¹¾±»å¾±³ú´Ç³Ü³ú³ó³Ü´Ç£¬·É³Ü²â¾±³ú³ó´Ç²Ô²µ±è¾±±ðÂá¾±²¹²Ô²â¾±²Ô²µ³ú³ó³Ü»å²¹¾±³ú³ó³Ü´Ç²â¾±±ç³Ü²Ô°ù±ð²Ô³æ¾±²¹²Ô²µ³¦³ó±ð³ú³ó²¹²Ô³ú³ó±ð²ú¾±²¹²Ô³ú´Ç³Ü±ô²¹¾±¡£²õ³Ü´Ç³ú¾±³æ¾±²Ô±ô¾±²â¾±Âá¾±²Ô²µ£¬±ô¾±Âá¾±³ú³Ü²¹²Ô»å²¹´Ç³¦²¹¾±²â³Ü²¹²Ô±ô¾±£¬»å³Ü´Ç»å²¹´Ç»å´Ç³ÜÂá¾±²¹´ÇÂá¾±²¹Âá¾±²¹²Ô¡£³Ù´Ç³Ü²µ³Ü´Ç³¾¾±³ú²¹³ú²¹»å±ð»å´Ç³ÜÂá¾±²¹´Ç²â±ð³ú¾±£¬³Ù²¹°ì²¹²ÔÂá¾±²¹²Ô²â¾±²Ô²µ³ú³ó³Ü³Ù²¹³¾±ð²Ô²â³Ü±ð³ú´Ç³Ü²â³Ü±ðÂá¾±²Ô±ô¾±²¹´Ç£¬²â¾±²µ±ð²µ±ð±ç¾±²õ³ó¾±³æ¾±´Ç²Ô²µ³æ¾±´Ç²Ô²µ»å¾±Âá¾±²Ô±ô¾±²¹´Ç³ó´Ç³Ü³¦³ó±ð²õ³ó¾±£¬²µ³Ü´Ç±ô¾±²¹´Ç²â¾±³ó³Ü¾±±ð°ù²â´Ç³Ü³¾²¹³¾²¹³ú³Ü´Ç³ú³Ü´Ç»å¾±³¦³ó³Ü±ô²¹¾±±ô¾±²¹´Ç£¬³ú²¹¾±³ú³ó´Ç²Ô²µ»å³Ü´Ç»å±ð°ù±ð²Ô²õ³ó±ð²Ô²µ³ú³ó´Ç²Ô²µ£¬²õ³Ü´Ç³ú¾±³Ù¾±²Ô²µ²â¾±²Ô²µ³ú³ó³Ü»å³Ü¾±³ú³ó±ð³æ¾±±ð°ù±ð²Ô²Ô¾±²¹²Ô³ú³Ü´Ç²õ³ó³Ü´Ç£º¡°³ú³ó±ð³æ¾±²¹´Ç³ú¾±°ì±ð²Ô»å¾±²Ô²µ»å±ð³¦´Ç²Ô²µ³ú³ó±ð±ô¾±³ú´Ç³Ü£¬³ú²¹²Ô³¾±ð²ÔÂá¾±³Ü³ú²¹¾±³ú³ó±ð±ð°ù³¾²¹´Ç³ú³ó³Ü´Ç£¬³Ù²¹²â¾±±ô³Ü³Ù´Ç³Ü³ú²¹²Ô³¾±ð²ÔÂá¾±³Ü¡­¡­¡±²â¾±²Ô²µ³ú³ó³Ü²ú³Ü²õ³ó³Ü´Ç±ô¾±²¹´Ç£¬²õ³Ü´Ç³ú¾±Âá¾±²¹²Ô³Ù²¹³ú³Ü´Ç±ô¾±²¹´Ç²â¾±²µ±ð³æ¾±²¹²Ô²µ±ç¾±²¹²Ô³ú³ó³Ü²¹»å±ð²õ³ó´Ç³Ü²õ³ó¾±¡£

10ÔÂ(³Û³Ü±ð)12ÈÕ(¸é¾±)£¬¹ú(³Ò³Ü´Ç)ÄÚ(±·±ð¾±)̼(°Õ²¹²Ô)Ëá(³§³Ü²¹²Ô)ï®(´Ü³Ü´Ç)ÆÚ(²Ï¾±)»õ(±á³Ü´Ç)¸÷(³Ò±ð)ÆÚ(²Ï¾±)ÏÞ(³Ý¾±²¹²Ô)ºÏ(±á±ð)Ô¼(³Û³Ü±ð)ÅÌ(±Ê²¹²Ô)ÖÐ(´Ü³ó´Ç²Ô²µ)Ò»(³Û¾±)¶È(¶Ù³Ü)º±(±á²¹²Ô)¼û(´³¾±²¹²Ô)È«(²Ï³Ü²¹²Ô)Ïß(³Ý¾±²¹²Ô)ÕÇ(´Ü³ó²¹²Ô²µ)Í£(°Õ¾±²Ô²µ)£¬Òý(³Û¾±²Ô)Æð(²Ï¾±)ÊÐ(³§³ó¾±)³¡(°ä³ó²¹²Ô²µ)¹ã(³Ò³Ü²¹²Ô²µ)·º(¹ó²¹²Ô)¹Ø(³Ò³Ü²¹²Ô)×¢(´Ü³ó³Ü)¡£´Ë(°ä¾±)Ç°(²Ï¾±²¹²Ô)£¬¹ú(³Ò³Ü´Ç)ÄÚ(±·±ð¾±)̼(°Õ²¹²Ô)Ëá(³§³Ü²¹²Ô)ï®(´Ü³Ü´Ç)¼Û(´³¾±²¹)¸ñ(³Ò±ð)Ôø(´Ü±ð²Ô²µ)¾­(´³¾±²Ô²µ)Àú(³¢¾±)Ò»(³Û¾±)ÂÖ(³¢³Ü²Ô)Á¬(³¢¾±²¹²Ô)Ðø(³Ý³Ü)±©(µþ²¹´Ç)µø(¶Ù¾±±ð)¡£

¡°ÄÅ£¬¶ù×ÓÈÃÄã½Óµç»°£¬ËûÓл°ÎÊÄã¡£¡±ÎÄ£º½ðÀ×ÈÕ±¾²Ñ³Õ³åÒ»Ìý²Ñ³Õ³åÈÕ±¾×ÖÄ»°æ³å¸ßÇå²Ñ³ÕÊÓƵ³åÔÚÏ߲ѳÕÒôÀÖ³å²Ñ³Õ...

Ëû»¹Í¸Â¶ÏÖÔÚÒѾ­¿ªÊ¼Îª´óѧµÄѧ·Ñ·¢³îÁËÕ⸴¶ÁÁËÕâô¶àÄê¼Òµ×¶ùÒ²µÃÌÍ¿ÕÁË°É

·¢²¼ÓÚ£º¹ãµÂÊÐ
ÉùÃ÷£º¸ÃÎĹ۵ã½ö´ú±í×÷Õß±¾ÈË£¬ËѺüºÅϵÐÅÏ¢·¢²¼Æ½Ì¨£¬ËѺü½öÌṩÐÅÏ¢´æ´¢¿Õ¼ä·þÎñ¡£
Òâ¼û·´À¡ ºÏ×÷

Copyright ? 2023 Sohu All Rights Reserved

ËѺü¹«Ë¾ °æȨËùÓÐ