Parcourir la source

前后台整合一起

huangyan il y a 9 mois
Parent
commit
3f33d7bd57
48 fichiers modifiés avec 115 ajouts et 26 suppressions
  1. 11 0
      controllers/admin/index.go
  2. 44 0
      controllers/login.go
  3. 11 8
      main.go
  4. 11 12
      middleware/loginmiddleware.go
  5. 7 1
      routers/router.go
  6. 1 0
      static/assets/Detail.122a6aee.js
  7. 0 0
      static/assets/Detail.77a6e94a.js
  8. 0 0
      static/assets/Detail.7abb336c.js
  9. 0 0
      static/assets/Detail.af77e60b.js
  10. 1 0
      static/assets/Detail.bdfa4bc5.js
  11. 1 0
      static/assets/EditorWithBinding.854903b5.js
  12. 1 0
      static/assets/Home.d21008d8.css
  13. 0 0
      static/assets/Home.f67b03e3.js
  14. 0 0
      static/assets/Index.2b9ea993.js
  15. 1 0
      static/assets/Login.8f5814ce.css
  16. 0 0
      static/assets/Login.e2b59235.js
  17. 1 0
      static/assets/Welcome.541f81ed.js
  18. 1 0
      static/assets/Welcome.59f01c9c.css
  19. 0 0
      static/assets/add.22a47e16.js
  20. 1 0
      static/assets/add.35104764.js
  21. 0 0
      static/assets/add.8cedcfea.js
  22. 0 0
      static/assets/add.cf443bfe.js
  23. 0 0
      static/assets/add.e7d98864.js
  24. BIN
      static/assets/avator.fb58564b.jpg
  25. BIN
      static/assets/bg.a2d5161d.jpg
  26. 0 0
      static/assets/contact.d6707701.js
  27. 1 0
      static/assets/contents.cab10407.js
  28. 0 0
      static/assets/contents.db166458.js
  29. 0 0
      static/assets/data.69c2b92a.js
  30. 1 0
      static/assets/dataModel.fcd8c768.js
  31. BIN
      static/assets/favicon.630e860c.ico
  32. 0 0
      static/assets/http.100f9ea4.js
  33. 0 0
      static/assets/index.4fd8b9b3.js
  34. 0 0
      static/assets/index.501cf061.css
  35. BIN
      static/assets/index.805c2bae.gif
  36. 0 0
      static/assets/index.e56c5496.css
  37. 0 0
      static/assets/index.esm.5affbf30.js
  38. 1 0
      static/assets/news.18acc69b.js
  39. 0 0
      static/assets/news.d7c51474.js
  40. 0 0
      static/assets/product.85bc9fd1.js
  41. 1 0
      static/assets/product.c105b89b.js
  42. 1 0
      static/assets/resource.2c825bc3.js
  43. 1 0
      static/assets/serve.cb3d20b6.js
  44. 0 0
      static/assets/serves.92c90fb8.js
  45. 1 0
      static/assets/user.5734a81b.js
  46. 0 4
      utils/create_token.go
  47. 15 0
      views/admin/index.html
  48. 1 1
      views/contact.html

+ 11 - 0
controllers/admin/index.go

@@ -0,0 +1,11 @@
+package admin
+
+import beego "github.com/beego/beego/v2/server/web"
+
+type IndexController struct {
+	beego.Controller
+}
+
+func (i *IndexController) Get() {
+	i.TplName = "admin/index.html"
+}

+ 44 - 0
controllers/login.go

@@ -0,0 +1,44 @@
+package controllers
+
+import (
+	"cc-officialweb/models"
+	"cc-officialweb/service"
+	"encoding/json"
+	beego "github.com/beego/beego/v2/server/web"
+	"github.com/go-playground/validator/v10"
+)
+
+type LoginController struct {
+	beego.Controller
+}
+
+// Login 登录接口
+func (l *LoginController) Login() {
+	var user models.User
+	// 获取POST参数
+	err := json.Unmarshal(l.Ctx.Input.RequestBody, &user)
+	if err != nil {
+		l.Data["json"] = &JSON{Code: 103, Msg: "json格式错误"}
+		l.ServeJSON()
+		return
+	}
+	// 进行验证和登录检查
+	validate := validator.New()
+	unva := validate.Var(user.Username, "required")
+	pwdva := validate.Var(user.Password, "required")
+	if unva != nil || pwdva != nil {
+		l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码不能为空"}
+		l.ServeJSON()
+		return
+	} else {
+		token := service.Login(user)
+		if token != "" {
+			l.Data["json"] = &JSON{Code: 200, Msg: "登录成功", Data: token}
+			l.ServeJSON()
+		} else {
+			l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码错误"}
+			l.ServeJSON()
+			return
+		}
+	}
+}

+ 11 - 8
main.go

@@ -1,20 +1,23 @@
 package main
 
 import (
+	"cc-officialweb/middleware"
 	_ "cc-officialweb/routers"
 	beego "github.com/beego/beego/v2/server/web"
-	"github.com/beego/beego/v2/server/web/filter/cors"
 )
 
 func main() {
+	//beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
+	//	AllowAllOrigins:  true,
+	//	AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
+	//	AllowHeaders:     []string{"Origin", "Content-Type", "Authorization", "X-Requested-With"},
+	//	ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin"},
+	//	AllowCredentials: true,
+	//}))
+	beego.InsertFilter("/api/*", beego.BeforeRouter, middleware.AuthMiddleware)
 	beego.SetStaticPath("/image", "./static/upload")
 	beego.SetStaticPath("/file", "./static/file")
-	beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
-		AllowAllOrigins:  true,
-		AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
-		AllowHeaders:     []string{"Origin", "Content-Type", "Authorization", "X-Requested-With"},
-		ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin"},
-		AllowCredentials: true,
-	}))
+	beego.SetStaticPath("/assets", "./static/assets")
+
 	beego.Run()
 }

+ 11 - 12
middleware/loginmiddleware.go

@@ -1,20 +1,19 @@
 package middleware
 
 import (
+	"cc-officialweb/utils"
+	"github.com/beego/beego/v2/core/logs"
 	"github.com/beego/beego/v2/server/web/context"
 )
 
-func MyMiddleware(ctx *context.Context, next func()) {
-	// 在此处处理请求头,例如检查或修改请求头
-	// 示例:添加一个自定义请求头
-	ctx.ResponseWriter.Header().Set("X-My-Custom-Header", "Custom Value")
-
-	// 调用next()来执行后续的处理逻辑,通常是控制器逻辑
-	next()
-
-	// 在此处处理响应头,例如根据响应情况修改响应头
-	// 示例:根据请求结果修改响应头
-	if ctx.ResponseWriter.Status == 200 {
-		ctx.ResponseWriter.Header().Set("X-Success", "true")
+func AuthMiddleware(ctx *context.Context) {
+	authHeader := ctx.Request.Header.Get("Authorization")
+	token, err := utils.ParseToken(authHeader)
+	if err != nil {
+		logs.Error(err)
+		ctx.Output.SetStatus(401)
+		ctx.Output.Body([]byte(err.Error()))
+		return
 	}
+	logs.Info("Token:", token)
 }

+ 7 - 1
routers/router.go

@@ -2,6 +2,7 @@ package routers
 
 import (
 	"cc-officialweb/controllers"
+	"cc-officialweb/controllers/admin"
 	beego "github.com/beego/beego/v2/server/web"
 )
 
@@ -21,6 +22,9 @@ func init() {
 	beego.Router("/product/:id/accessories", &controllers.DetailController{})
 	beego.Router("/portfolio", &controllers.MainController{})
 	beego.Router("/contact", &controllers.ContactController{})
+	//后台
+	beego.Router("/admin", &admin.IndexController{})
+	beego.Router("/admin:any", &admin.IndexController{})
 	//新闻管理
 	beego.Router("/news", &controllers.NewController{})
 	beego.Router("/news/:id", &controllers.NewController{}, "get:NewDetail")
@@ -36,6 +40,8 @@ func init() {
 	beego.Router("/api/resource", &controllers.UploadImageController{}, "delete:DeleteResourceById")
 	beego.Router("/api/resource", &controllers.UploadImageController{}, "post:GetResource")
 	beego.Router("/api/resource", &controllers.UploadImageController{}, "get:GetResourceById")
+	//登录
+	beego.Router("/logon", &controllers.LoginController{}, "post:Login")
 	//文件资源管理
 	beego.Router("/api/file", &controllers.UploadFileController{})
 	//产品管理
@@ -70,7 +76,7 @@ func init() {
 	beego.Router("/api/datastype", &controllers.DataModelController{}, "get:GetDatasByType")
 	beego.Router("/api/getdatatype", &controllers.DataModelController{}, "get:GetDataType")
 	//联系我们
-	beego.Router("/api/contact", &controllers.ContactController{}, "post:AddContact")
+	beego.Router("/addcontact", &controllers.ContactController{}, "post:AddContact")
 	beego.Router("/api/contact", &controllers.ContactController{}, "delete:DeleteContactById")
 	beego.Router("/api/contactall", &controllers.ContactController{}, "post:GetAllContact")
 }

+ 1 - 0
static/assets/Detail.122a6aee.js

@@ -0,0 +1 @@
+import{x as p,u as b,r as g,j as x,b as o,o as h,c as v,d as t,w as e,e as u,k as y,f as s,t as i}from"./index.4fd8b9b3.js";import{u as k}from"./user.5734a81b.js";import"./http.100f9ea4.js";const B={class:"card-header"},D=u("span",null,"\u7528\u6237\u8BE6\u60C5",-1),q={__name:"Detail",setup(w){const n=p(),_=b(),a=g({id:""});return x(async()=>{if(n.query.id){const r=await k.getUserDetail({id:n.query.id});Object.assign(a,r.data.data)}}),(r,l)=>{const d=o("el-button"),c=o("el-form-item"),m=o("el-form"),f=o("el-card");return h(),v("div",null,[t(f,{class:"box-card"},{header:e(()=>[u("div",B,[D,t(d,{size:"mini",style:{float:"right"},onClick:l[0]||(l[0]=C=>y(_).go(-1))},{default:e(()=>[s("\u8FD4\u56DE")]),_:1})])]),default:e(()=>[t(m,null,{default:e(()=>[t(c,{label:"\u59D3\u540D:"},{default:e(()=>[s(i(a.name),1)]),_:1}),t(c,{label:"\u5E74\u9F84:"},{default:e(()=>[s(i(a.age),1)]),_:1})]),_:1})]),_:1})])}}};export{q as default};

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Detail.77a6e94a.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Detail.7abb336c.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Detail.af77e60b.js


+ 1 - 0
static/assets/Detail.bdfa4bc5.js

@@ -0,0 +1 @@
+import{x as D,u as w,r as x,a as C,j as R,b as n,o as k,c as v,d as t,w as o,e as _,k as q,f as p,E as m}from"./index.4fd8b9b3.js";import{c as d}from"./contents.cab10407.js";import{_ as B}from"./EditorWithBinding.854903b5.js";import"./http.100f9ea4.js";import"./index.esm.5affbf30.js";import"./resource.2c825bc3.js";const j={class:"card-header"},E=_("span",null,"\u8BE6\u60C5",-1),I={__name:"Detail",setup(M){const i=D(),f=w(),e=x({title:"",detail:"",synopsis:"",types:""});C("");const y=async()=>{const s=await d.updateRecruit({id:parseInt(i.query.id),title:e.title,synopsis:e.synopsis,detail:e.detail,types:e.types});s.data.Code===200?(m.success("\u4FEE\u6539\u6210\u529F"),await V()):m.error(s.data.Msg)},V=async()=>{const s=await d.getRecruitDetail({id:i.query.id});Object.assign(e,s.data.Data)};return R(async()=>{if(i.query.id){const s=await d.getRecruitDetail({id:i.query.id});Object.assign(e,s.data.Data)}}),(s,a)=>{const u=n("el-button"),c=n("el-input"),r=n("el-form-item"),g=n("el-form"),b=n("el-card");return k(),v("div",null,[t(b,{class:"box-card"},{header:o(()=>[_("div",j,[E,t(u,{size:"mini",style:{float:"right"},onClick:a[0]||(a[0]=l=>q(f).go(-1))},{default:o(()=>[p("\u8FD4\u56DE")]),_:1}),t(u,{size:"mini",style:{float:"right"},type:"primary",onClick:y},{default:o(()=>[p("\u4FEE\u6539")]),_:1})])]),default:o(()=>[t(g,null,{default:o(()=>[t(r,{label:"\u6807\u9898:"},{default:o(()=>[t(c,{modelValue:e.title,"onUpdate:modelValue":a[1]||(a[1]=l=>e.title=l),placeholder:"\u8BF7\u8F93\u5165\u6807\u9898"},null,8,["modelValue"])]),_:1}),t(r,{label:"\u7B80\u4ECB:"},{default:o(()=>[t(c,{modelValue:e.synopsis,"onUpdate:modelValue":a[2]||(a[2]=l=>e.synopsis=l),placeholder:"\u8BF7\u8F93\u5165\u7B80\u4ECB"},null,8,["modelValue"])]),_:1}),t(r,{label:"\u8BE6\u60C5:"},{default:o(()=>[t(B,{modelValue:e.detail,"onUpdate:modelValue":a[3]||(a[3]=l=>e.detail=l)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})])}}};export{I as default};

+ 1 - 0
static/assets/EditorWithBinding.854903b5.js

@@ -0,0 +1 @@
+import{T as C,E as h}from"./index.esm.5affbf30.js";import{r as V}from"./resource.2c825bc3.js";import{y as _,a as u,z as x,A as y,o as E,c as N,d as i,k as d}from"./index.4fd8b9b3.js";const U={style:{border:"1px solid #ccc",width:"100%",margin:"10px auto"}},D={__name:"EditorWithBinding",props:["modelValue"],emits:["update:modelValue","content-change"],setup(c,{emit:m}){const r=c,a=_(),p={},n=u({placeholder:"\u8BF7\u8F93\u5165\u5185\u5BB9...",MENU_CONF:{}}),s=u(r.modelValue),f=()=>{m("update:modelValue",a.value.getHtml()),console.log(a.value.getHtml())};x(()=>r.modelValue,e=>{s.value=e},{immediate:!0}),n.value.MENU_CONF.uploadImage={async customUpload(e,o){let t=new FormData;t.append("types","serve"),t.append("file",e);const l=await V.uploadResource(t);o(l.data.Data,"img")}},n.value.MENU_CONF.uploadVideo={async customUpload(e,o){}};const g=e=>{a.value=e,e.on("change",f)},v=(e,o,t)=>{const l=o.clipboardData.getData("text/plain");l&&(e.insertText(l),o.preventDefault(),t(!1))};return y(()=>{const e=a.value;e!=null&&e.destroy()}),(e,o)=>(E(),N("div",U,[i(d(C),{style:{"border-bottom":"1px solid #ccc"},editor:d(a),defaultConfig:p,mode:"default"},null,8,["editor"]),i(d(h),{style:{height:"500px","overflow-y":"hidden"},modelValue:s.value,"onUpdate:modelValue":o[0]||(o[0]=t=>s.value=t),defaultConfig:n.value,mode:"default",onOnCreated:g,onCustomPaste:v},null,8,["modelValue","defaultConfig"])]))}};export{D as _};

+ 1 - 0
static/assets/Home.d21008d8.css

@@ -0,0 +1 @@
+.home-container[data-v-2333d2f8]{position:absolute;height:100%;top:0px;left:0px;width:100%;background:#f2f3f5}.el-header[data-v-2333d2f8]{background:#2661ef;padding:0 10px;overflow:hidden}.system-name[data-v-2333d2f8]{color:#fff;font-size:18px}.el-aside[data-v-2333d2f8]{background:white;width:auto!important}.el-footer[data-v-2333d2f8]{color:#ccc;text-align:center;line-height:60px}.el-footer[data-v-2333d2f8]:hover{color:#2661ef}.toggle-button[data-v-2333d2f8]{background-color:#d9e0e7;font-size:18px;line-height:24px;color:#fff;text-align:center;letter-spacing:.2em;cursor:pointer;color:#000}.el-menu-vertical-demo[data-v-2333d2f8]:not(.el-menu--collapse){width:200px;min-height:400px}.el-menu-item.is-active[data-v-2333d2f8]{color:#fff!important;font-size:15px;font-weight:700;background-color:#2661ef!important;border-radius:2px;height:50px;line-height:50px;box-sizing:border-box;margin:2px 5px 0 2px}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Home.f67b03e3.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Index.2b9ea993.js


+ 1 - 0
static/assets/Login.8f5814ce.css

@@ -0,0 +1 @@
+.el-container[data-v-007a34f2]{height:800px}.el-header[data-v-007a34f2]{height:10%}.el-main[data-v-007a34f2]{height:80%;background-image:url(/assets/bg.a2d5161d.jpg);background-repeat:no-repeat;background-size:100% 120%;background-position-y:bottom}.login_card[data-v-007a34f2]{margin:100px 200px;width:20%;min-width:300px;height:200px;border-radius:10px}.el-footer[data-v-007a34f2]{height:10%;text-align:center}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/Login.e2b59235.js


+ 1 - 0
static/assets/Welcome.541f81ed.js

@@ -0,0 +1 @@
+import{_ as e,o as c,c as _}from"./index.4fd8b9b3.js";const o={},s={class:"main"};function t(n,a){return c(),_("div",s)}const d=e(o,[["render",t],["__scopeId","data-v-bc0bc102"]]);export{d as default};

+ 1 - 0
static/assets/Welcome.59f01c9c.css

@@ -0,0 +1 @@
+.main[data-v-bc0bc102]{text-align:center;padding:5px;background:white;height:100%;background-image:url(/assets/index.805c2bae.gif);background-repeat:no-repeat;background-size:100% 100%;background-position-y:bottom}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/add.22a47e16.js


+ 1 - 0
static/assets/add.35104764.js

@@ -0,0 +1 @@
+import{x as h,u as z,r as m,j as D,b as n,o as u,c as p,d as t,w as o,e as y,f as c,k as E,F as M,G as N,E as _,l as T}from"./index.4fd8b9b3.js";import{d as f}from"./dataModel.fcd8c768.js";import"./http.100f9ea4.js";const U={class:"card-header"},j=y("span",null,"\u8BE6\u60C5",-1),O={__name:"add",setup(F){h();const V=z(),e=m({id:0,title:"",types:"",nums:""}),r=m([]),b=async()=>{const s=await f.addData({id:0,title:e.title,types:e.types,nums:e.nums});s.data.Code===200?(_.success("\u6DFB\u52A0\u6210\u529F"),e.types="",e.nums="",e.title=""):_.error(s.data.Msg)};return D(async()=>{const s=await f.getDataType();Object.assign(r,s.data.Data)}),(s,a)=>{const i=n("el-button"),g=n("el-input"),d=n("el-form-item"),k=n("el-option"),v=n("el-select"),x=n("el-input-number"),C=n("el-form"),w=n("el-card");return u(),p("div",null,[t(w,{class:"box-card"},{header:o(()=>[y("div",U,[j,t(i,{size:"mini",style:{float:"right"},type:"primary",onClick:b},{default:o(()=>[c("\u63D0\u4EA4")]),_:1}),t(i,{size:"mini",style:{float:"right"},type:"info",onClick:a[0]||(a[0]=l=>E(V).go(-1))},{default:o(()=>[c("\u8FD4\u56DE")]),_:1})])]),default:o(()=>[t(C,null,{default:o(()=>[t(d,{label:"\u6807\u9898:"},{default:o(()=>[t(g,{modelValue:e.title,"onUpdate:modelValue":a[1]||(a[1]=l=>e.title=l),placeholder:"\u8BF7\u8F93\u5165\u6807\u9898"},null,8,["modelValue"])]),_:1}),t(d,null,{default:o(()=>[t(v,{modelValue:e.types,"onUpdate:modelValue":a[2]||(a[2]=l=>e.types=l),placeholder:"\u8BF7\u9009\u62E9\u7C7B\u578B",size:"large",style:{width:"240px"}},{default:o(()=>[(u(!0),p(M,null,N(r,(l,B)=>(u(),T(k,{key:B,label:l,value:l},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"\u6570\u91CF:"},{default:o(()=>[t(x,{modelValue:e.nums,"onUpdate:modelValue":a[3]||(a[3]=l=>e.nums=l),placeholder:"\u8BF7\u8F93\u5165\u7B80\u4ECB"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})])}}};export{O as default};

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/add.8cedcfea.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/add.cf443bfe.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/add.e7d98864.js


BIN
static/assets/avator.fb58564b.jpg


BIN
static/assets/bg.a2d5161d.jpg


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/contact.d6707701.js


+ 1 - 0
static/assets/contents.cab10407.js

@@ -0,0 +1 @@
+import{h as r}from"./http.100f9ea4.js";const e=t=>r.post("/api/allrecruit",t),c=t=>r.get("/api/recruit",t),i=t=>r.post("/api/recruit",t),u=t=>r.put("/api/recruit",t),n=t=>r.del("/api/recruit",t),p={getAllrecruit:e,deleteRecruit:n,updateRecruit:u,addRecruit:i,getRecruitDetail:c};export{p as c};

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/contents.db166458.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/data.69c2b92a.js


+ 1 - 0
static/assets/dataModel.fcd8c768.js

@@ -0,0 +1 @@
+import{h as a}from"./http.100f9ea4.js";const e=t=>a.post("/api/datasall",t),p=t=>a.post("/api/datas",t),s=()=>a.get("/api/getdatatype"),r=t=>a.put("/api/datas",t),d=t=>a.del("/api/data",t),o={getAllData:e,addData:p,updateData:r,deleteData:d,getDataType:s};export{o as d};

BIN
static/assets/favicon.630e860c.ico


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/http.100f9ea4.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/index.4fd8b9b3.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/index.501cf061.css


BIN
static/assets/index.805c2bae.gif


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/index.e56c5496.css


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/index.esm.5affbf30.js


+ 1 - 0
static/assets/news.18acc69b.js

@@ -0,0 +1 @@
+import{h as t}from"./http.100f9ea4.js";const n=e=>t.post("/api/news",e),s=e=>t.get("/api/news",e),p=e=>t.post("/api/addnews",e),r=e=>t.put("/api/news",e),w=e=>t.del("/api/news",e),a=e=>t.get("/api/newstype",e),i={getAllNew:n,getNewDetail:s,addNew:p,updateNew:r,deleteNew:w,getnewstype:a};export{i as n};

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/news.d7c51474.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/product.85bc9fd1.js


+ 1 - 0
static/assets/product.c105b89b.js

@@ -0,0 +1 @@
+import{h as r}from"./http.100f9ea4.js";const o=t=>r.post("/api/productAll",t),p=t=>r.get("/api/product",t),u=t=>r.post("/api/product",t),c=t=>r.put("/api/product",t),e=t=>r.post("/api/file",t),d=t=>r.del("/api/product",t),s={getProductList:o,getProductDetail:p,addProduct:u,updateProduct:c,deleteProduct:d,uploadFile:e};export{s as p};

+ 1 - 0
static/assets/resource.2c825bc3.js

@@ -0,0 +1 @@
+import{h as r}from"./http.100f9ea4.js";const t=e=>r.post("/api/resource",e),o=e=>r.get("/api/resource",e),s=e=>r.post("/api/upload",e),u=e=>r.put("/api/updateResource",e),c=e=>r.del("/api/resource",e),p=e=>r.post("/api/upload",e),n={getResourceList:t,getResourceDetail:o,addResource:s,updateResource:u,deleteResource:c,uploadResource:p};export{n as r};

+ 1 - 0
static/assets/serve.cb3d20b6.js

@@ -0,0 +1 @@
+import{h as t}from"./http.100f9ea4.js";const r=e=>t.post("/api/allservice",e),i=e=>t.get("/api/service",e),c=e=>t.post("/api/service",e),s=e=>t.put("/api/service",e),p=e=>t.del("/api/service",e),n=e=>t.get("/api/getservice",e),a={deleteService:p,updateService:s,addService:c,getServiceDetail:i,getAllService:r,GetServiceType:n};export{a as s};

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
static/assets/serves.92c90fb8.js


+ 1 - 0
static/assets/user.5734a81b.js

@@ -0,0 +1 @@
+import{h as t}from"./http.100f9ea4.js";const s=e=>t.post("/logon",e),r=e=>t.get("/user/list",e),o=e=>t.post("/user/save",e),n=e=>t.del("/user/delete",e),u=e=>t.get("/user/detail",e),i={login:s,getUserList:r,saveUser:o,delUser:n,getUserDetail:u};export{i as u};

+ 0 - 4
utils/create_token.go

@@ -35,13 +35,11 @@ func CreateToken(userId uint, userName string) (string, error) {
 func ParseToken(tokenStr string) (*MyClaims, error) {
 	// 使用全局配置中的密钥对token进行解析。
 	var mySecret = []byte(Serect)
-
 	// 尝试解析并验证JWT令牌。
 	claims := new(MyClaims)
 	token, err := jwt.ParseWithClaims(tokenStr, claims, func(token *jwt.Token) (interface{}, error) {
 		return mySecret, nil
 	})
-
 	if err != nil {
 		if errors.Is(err, jwt.ErrSignatureInvalid) || errors.Is(err, jwt.ErrInvalidKey) {
 			return nil, errors.New("无效的签名或密钥")
@@ -50,12 +48,10 @@ func ParseToken(tokenStr string) (*MyClaims, error) {
 		}
 		return nil, err
 	}
-
 	// 验证令牌是否有效。
 	if !token.Valid {
 		return nil, errors.New("无效的令牌")
 	}
-
 	// 如果令牌有效,则返回解析出的声明信息。
 	return claims, nil
 }

+ 15 - 0
views/admin/index.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/static/assets/favicon.630e860c.ico" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>知否在线课堂</title>
+    <script type="module" crossorigin src="/static/assets/index.4fd8b9b3.js"></script>
+    <link rel="stylesheet" href="/static/assets/index.e56c5496.css">
+  </head>
+  <body>
+    <div id="app"></div>
+    
+  </body>
+</html>

+ 1 - 1
views/contact.html

@@ -206,7 +206,7 @@ Footer
           }
           // 模拟异步提交
           $.ajax({
-              url: "/api/contact",  // 你的API地址
+              url: "addcontact",  // 你的API地址
               type: "POST",
                 data: {
                 name: name,

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff