"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[7662],{7662:function(fe,U,p){p.d(U,{Aj:function(){return ce},B1:function(){return oe},CP:function(){return Q},Dd:function(){return he},Fx:function(){return J},Ir:function(){return K},Ix:function(){return Z},Ji:function(){return re},NR:function(){return me},RB:function(){return se},Sq:function(){return ee},UI:function(){return F},VO:function(){return te},_4:function(){return ie},ao:function(){return x},df:function(){return Y},fP:function(){return ue},fR:function(){return X},k$:function(){return ne},m8:function(){return pe},mK:function(){return le},mN:function(){return N},mb:function(){return z},og:function(){return ae},qp:function(){return V},si:function(){return H}});var W=p(15009),a=p.n(W),I=p(99289),s=p.n(I),i=p(76772);function F(r){return l.apply(this,arguments)}function l(){return l=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("getPostList",t),e.abrupt("return",(0,i.request)("/api/post-center/list",{method:"GET",params:t}));case 2:case"end":return e.stop()}},r)})),l.apply(this,arguments)}function H(r){return m.apply(this,arguments)}function m(){return m=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("getPostDetail",t),e.abrupt("return",(0,i.request)("/api/post-center/".concat(t),{method:"GET"}));case 2:case"end":return e.stop()}},r)})),m.apply(this,arguments)}function K(r){return h.apply(this,arguments)}function h(){return h=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("addComment",t),e.abrupt("return",(0,i.request)("/api/post-center/comment",{method:"POST",data:t}));case 2:case"end":return e.stop()}},r)})),h.apply(this,arguments)}function N(r,t){return f.apply(this,arguments)}function f(){return f=s()(a()().mark(function r(t,n){return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return console.log("toggleFavorite",t,n),u.abrupt("return",(0,i.request)("/api/post-center/favorite/".concat(t),{method:"POST",params:{favorite:n}}));case 2:case"end":return u.stop()}},r)})),f.apply(this,arguments)}function ge(){return g.apply(this,arguments)}function g(){return g=_asyncToGenerator(_regeneratorRuntime().mark(function r(){return _regeneratorRuntime().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",request("/api/post-center/tags/hot",{method:"GET"}));case 1:case"end":return n.stop()}},r)})),g.apply(this,arguments)}function _e(r){return _.apply(this,arguments)}function _(){return _=_asyncToGenerator(_regeneratorRuntime().mark(function r(t){return _regeneratorRuntime().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("getPostsByTag",t),e.abrupt("return",request("/api/post-center/bytag/".concat(t),{method:"GET"}));case 2:case"end":return e.stop()}},r)})),_.apply(this,arguments)}function J(r){return d.apply(this,arguments)}function d(){return d=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/publish",{method:"POST",data:t}));case 1:case"end":return e.stop()}},r)})),d.apply(this,arguments)}function V(r){return w.apply(this,arguments)}function w(){return w=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/my-posts",{method:"GET",params:t}));case 1:case"end":return e.stop()}},r)})),w.apply(this,arguments)}function z(r){return y.apply(this,arguments)}function y(){return y=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/my-favorites",{method:"GET",params:t}));case 1:case"end":return e.stop()}},r)})),y.apply(this,arguments)}function Q(r){return P.apply(this,arguments)}function P(){return P=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/update",{method:"PUT",data:t}));case 1:case"end":return e.stop()}},r)})),P.apply(this,arguments)}function X(r){return b.apply(this,arguments)}function b(){return b=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/delete/".concat(t),{method:"DELETE"}));case 1:case"end":return e.stop()}},r)})),b.apply(this,arguments)}function Y(){return T.apply(this,arguments)}function T(){return T=s()(a()().mark(function r(){return a()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,i.request)("/api/post-center/tags/available",{method:"GET"}));case 1:case"end":return n.stop()}},r)})),T.apply(this,arguments)}function Z(r){return v.apply(this,arguments)}function v(){return v=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/upload",{method:"POST",data:t}));case 1:case"end":return e.stop()}},r)})),v.apply(this,arguments)}function x(r){return k.apply(this,arguments)}function k(){return k=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/upload",{method:"DELETE",params:{filename:t}}));case 1:case"end":return e.stop()}},r)})),k.apply(this,arguments)}function ee(){return E.apply(this,arguments)}function E(){return E=s()(a()().mark(function r(){return a()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,i.request)("/api/post-center/promotion-plans",{method:"GET"}));case 1:case"end":return n.stop()}},r)})),E.apply(this,arguments)}function re(r){return $.apply(this,arguments)}function $(){return $=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/payment",{method:"POST",data:t}));case 1:case"end":return e.stop()}},r)})),$.apply(this,arguments)}function te(r,t){return q.apply(this,arguments)}function q(){return q=s()(a()().mark(function r(t,n){return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return console.log("toggleLike",t,n),u.abrupt("return",(0,i.request)("/api/post-center/like/".concat(t),{method:"POST",params:{like:n}}));case 2:case"end":return u.stop()}},r)})),q.apply(this,arguments)}function ne(){return D.apply(this,arguments)}function D(){return D=s()(a()().mark(function r(){return a()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,i.request)("/api/post-center/promotion",{method:"GET"}));case 1:case"end":return n.stop()}},r)})),D.apply(this,arguments)}function ae(r,t){return O.apply(this,arguments)}function O(){return O=s()(a()().mark(function r(t,n){return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return console.log("toggleCommentLike",t,n),u.abrupt("return",(0,i.request)("/api/post-center/comment/like/".concat(t),{method:"POST",params:{like:n}}));case 2:case"end":return u.stop()}},r)})),O.apply(this,arguments)}function ue(r){return R.apply(this,arguments)}function R(){return R=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post/review/list",{method:"GET",params:t}));case 1:case"end":return e.stop()}},r)})),R.apply(this,arguments)}function se(r,t,n){return L.apply(this,arguments)}function L(){return L=s()(a()().mark(function r(t,n,e){return a()().wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.abrupt("return",(0,i.request)("/api/post/review/".concat(t),{method:"PUT",data:{action:n,reason:e}}));case 1:case"end":return o.stop()}},r)})),L.apply(this,arguments)}function ie(r,t){return G.apply(this,arguments)}function G(){return G=s()(a()().mark(function r(t,n){return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return u.abrupt("return",(0,i.request)("/api/post/takedown/".concat(t),{method:"PUT",data:{reason:n}}));case 1:case"end":return u.stop()}},r)})),G.apply(this,arguments)}function pe(r){return C.apply(this,arguments)}function C(){return C=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/promotion-status/".concat(t),{method:"GET"}));case 1:case"end":return e.stop()}},r)})),C.apply(this,arguments)}function oe(r){return M.apply(this,arguments)}function M(){return M=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/payment/confirm/".concat(t),{method:"POST"}));case 1:case"end":return e.stop()}},r)})),M.apply(this,arguments)}function ce(r){return S.apply(this,arguments)}function S(){return S=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post-center/payment/cancel/".concat(t),{method:"POST"}));case 1:case"end":return e.stop()}},r)})),S.apply(this,arguments)}function le(r,t){return A.apply(this,arguments)}function A(){return A=s()(a()().mark(function r(t,n){return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return u.abrupt("return",(0,i.request)("/api/post-center/report/".concat(t),{method:"POST",data:{reason:n}}));case 1:case"end":return u.stop()}},r)})),A.apply(this,arguments)}function me(r){return j.apply(this,arguments)}function j(){return j=s()(a()().mark(function r(t){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/post/report/list",{method:"GET",params:t}));case 1:case"end":return e.stop()}},r)})),j.apply(this,arguments)}function he(r,t,n,e){return B.apply(this,arguments)}function B(){return B=s()(a()().mark(function r(t,n,e,u){return a()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,i.request)("/api/post/report/handle/".concat(t),{method:"PUT",data:{action:n,postId:e,reason:u}}));case 1:case"end":return c.stop()}},r)})),B.apply(this,arguments)}}}]);
