5 changed files with 115 additions and 104 deletions
@ -1,44 +1,45 @@ |
|||
import UserService from "services/UserService.js" |
|||
import { formatResponse } from "utils/helper.js" |
|||
import Router from "utils/router.js" |
|||
|
|||
const userService = new UserService() |
|||
class AuthController { |
|||
constructor() { |
|||
this.userService = new UserService() |
|||
} |
|||
|
|||
export const hello = async (ctx) => { |
|||
ctx.body = formatResponse(true, "Hello World") |
|||
} |
|||
async hello(ctx) { |
|||
ctx.body = formatResponse(true, "Hello World") |
|||
} |
|||
|
|||
export const getUser = async (ctx) => { |
|||
const user = await userService.getUserById(ctx.params.id) |
|||
ctx.body = formatResponse(true, user) |
|||
} |
|||
async getUser(ctx) { |
|||
const user = await this.userService.getUserById(ctx.params.id) |
|||
ctx.body = formatResponse(true, user) |
|||
} |
|||
|
|||
export const register = async (ctx) => { |
|||
try { |
|||
async register(ctx) { |
|||
const { username, email, password } = ctx.request.body |
|||
const user = await userService.register({ username, email, password }) |
|||
const user = await this.userService.register({ username, email, password }) |
|||
ctx.body = formatResponse(true, user) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message) |
|||
} |
|||
} |
|||
|
|||
export const login = async (ctx) => { |
|||
try { |
|||
async login(ctx) { |
|||
const { username, email, password } = ctx.request.body |
|||
const result = await userService.login({ username, email, password }) |
|||
const result = await this.userService.login({ username, email, password }) |
|||
ctx.body = formatResponse(true, result) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message) |
|||
} |
|||
} |
|||
|
|||
// 路由注册示例
|
|||
import Router from "utils/router.js" |
|||
export function createRoutes() { |
|||
const router = new Router({ prefix: "/api" }) |
|||
router.get("/hello", hello, { auth: false }) |
|||
router.get("/user/:id", getUser) |
|||
router.post("/register", register) |
|||
router.post("/login", login) |
|||
return router |
|||
/** |
|||
* 路由注册 |
|||
*/ |
|||
static createRoutes() { |
|||
const controller = new AuthController() |
|||
const router = new Router({ prefix: "/api" }) |
|||
router.get("/hello", controller.hello.bind(controller), { auth: false }) |
|||
router.get("/user/:id", controller.getUser.bind(controller)) |
|||
router.post("/register", controller.register.bind(controller)) |
|||
router.post("/login", controller.login.bind(controller)) |
|||
return router |
|||
} |
|||
} |
|||
|
|||
export default AuthController |
|||
|
@ -1,56 +1,46 @@ |
|||
// Job Controller 示例:如何调用 service 层动态控制和查询定时任务
|
|||
import JobService from "services/JobService.js" |
|||
import { formatResponse } from "utils/helper.js" |
|||
import Router from "utils/router.js" |
|||
|
|||
const jobService = new JobService() |
|||
class JobController { |
|||
constructor() { |
|||
this.jobService = new JobService() |
|||
} |
|||
|
|||
export const list = async (ctx) => { |
|||
try { |
|||
const data = jobService.listJobs() |
|||
async list(ctx) { |
|||
const data = this.jobService.listJobs() |
|||
ctx.body = formatResponse(true, data) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message || "获取任务列表失败") |
|||
} |
|||
} |
|||
|
|||
export const start = async (ctx) => { |
|||
const { id } = ctx.params |
|||
try { |
|||
jobService.startJob(id) |
|||
async start(ctx) { |
|||
const { id } = ctx.params |
|||
this.jobService.startJob(id) |
|||
ctx.body = formatResponse(true, null, null, `${id} 任务已启动`) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message || "启动任务失败") |
|||
} |
|||
} |
|||
|
|||
export const stop = async (ctx) => { |
|||
const { id } = ctx.params |
|||
try { |
|||
jobService.stopJob(id) |
|||
async stop(ctx) { |
|||
const { id } = ctx.params |
|||
this.jobService.stopJob(id) |
|||
ctx.body = formatResponse(true, null, null, `${id} 任务已停止`) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message || "停止任务失败") |
|||
} |
|||
} |
|||
|
|||
export const updateCron = async (ctx) => { |
|||
const { id } = ctx.params |
|||
const { cronTime } = ctx.request.body |
|||
try { |
|||
jobService.updateJobCron(id, cronTime) |
|||
async updateCron(ctx) { |
|||
const { id } = ctx.params |
|||
const { cronTime } = ctx.request.body |
|||
this.jobService.updateJobCron(id, cronTime) |
|||
ctx.body = formatResponse(true, null, null, `${id} 任务频率已修改`) |
|||
} catch (err) { |
|||
ctx.body = formatResponse(false, null, err.message || "修改任务频率失败") |
|||
} |
|||
} |
|||
|
|||
// 路由注册示例
|
|||
import Router from "utils/router.js" |
|||
export function createRoutes() { |
|||
const router = new Router({ prefix: "/api/jobs" }) |
|||
router.get("/", list) |
|||
router.post("/start/:id", start) |
|||
router.post("/stop/:id", stop) |
|||
router.post("/update/:id", updateCron) |
|||
return router |
|||
static createRoutes() { |
|||
const controller = new JobController() |
|||
const router = new Router({ prefix: "/api/jobs" }) |
|||
router.get("/", controller.list.bind(controller)) |
|||
router.post("/start/:id", controller.start.bind(controller)) |
|||
router.post("/stop/:id", controller.stop.bind(controller)) |
|||
router.post("/update/:id", controller.updateCron.bind(controller)) |
|||
return router |
|||
} |
|||
} |
|||
|
|||
export default JobController |
|||
|
@ -1,16 +1,24 @@ |
|||
export const Index = async ctx => { |
|||
return await ctx.render("index", { name: "bluescurry" }) |
|||
} |
|||
import Router from "utils/router.js" |
|||
|
|||
export const Page = (name, data) => async ctx => { |
|||
return await ctx.render(name, data) |
|||
} |
|||
class HtmxController { |
|||
async index(ctx) { |
|||
return await ctx.render("index", { name: "bluescurry" }) |
|||
} |
|||
|
|||
import Router from "utils/router.js" |
|||
export function createRoutes() { |
|||
const router = new Router({ auth: "try" }) |
|||
router.post("/clicked", async ctx => { |
|||
return await ctx.render("htmx/fuck", { title: "HTMX Clicked" }) |
|||
}) |
|||
return router |
|||
page(name, data) { |
|||
return async ctx => { |
|||
return await ctx.render(name, data) |
|||
} |
|||
} |
|||
|
|||
static createRoutes() { |
|||
const controller = new HtmxController() |
|||
const router = new Router({ auth: "try" }) |
|||
router.post("/clicked", async ctx => { |
|||
return await ctx.render("htmx/fuck", { title: "HTMX Clicked" }) |
|||
}) |
|||
return router |
|||
} |
|||
} |
|||
|
|||
export default HtmxController |
|||
|
@ -1,14 +1,22 @@ |
|||
export const Index = async ctx => { |
|||
return await ctx.render("page/index/index", { title: "沧源一场" }) |
|||
} |
|||
import Router from "utils/router.js" |
|||
|
|||
export const Page = (name, data) => async ctx => { |
|||
return await ctx.render(name, data) |
|||
} |
|||
class PageController { |
|||
async index(ctx) { |
|||
return await ctx.render("page/index/index", { title: "沧源一场" }) |
|||
} |
|||
|
|||
import Router from "utils/router.js" |
|||
export function createRoutes() { |
|||
const router = new Router({ auth: "try" }) |
|||
router.get("/", Index) |
|||
return router |
|||
page(name, data) { |
|||
return async ctx => { |
|||
return await ctx.render(name, data) |
|||
} |
|||
} |
|||
|
|||
static createRoutes() { |
|||
const controller = new PageController() |
|||
const router = new Router({ auth: "try" }) |
|||
router.get("/", controller.index.bind(controller)) |
|||
return router |
|||
} |
|||
} |
|||
|
|||
export default PageController |
|||
|
@ -1,16 +1,20 @@ |
|||
import { formatResponse } from "utils/helper.js" |
|||
import Router from "utils/router.js" |
|||
|
|||
export const status = async (ctx) => { |
|||
ctx.body = "OK" |
|||
} |
|||
class StatusController { |
|||
async status(ctx) { |
|||
ctx.body = "OK" |
|||
} |
|||
|
|||
import Router from "utils/router.js" |
|||
export function createRoutes() { |
|||
const v1 = new Router({ prefix: "/api/v1" }) |
|||
v1.use((ctx, next) => { |
|||
ctx.set("X-API-Version", "v1") |
|||
return next() |
|||
}) |
|||
v1.get("/status", status) |
|||
return v1 |
|||
static createRoutes() { |
|||
const controller = new StatusController() |
|||
const v1 = new Router({ prefix: "/api/v1" }) |
|||
v1.use((ctx, next) => { |
|||
ctx.set("X-API-Version", "v1") |
|||
return next() |
|||
}) |
|||
v1.get("/status", controller.status.bind(controller)) |
|||
return v1 |
|||
} |
|||
} |
|||
|
|||
export default StatusController |
|||
|
Loading…
Reference in new issue