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