feat:增加项目鸣谢页

This commit is contained in:
jiangrui
2025-03-13 16:26:41 +08:00
parent c1927a0ea9
commit 16a2b586fd
16 changed files with 1085 additions and 13 deletions

View File

@@ -0,0 +1,18 @@
import { Request, Response } from "express";
import { injectable, inject } from "inversify";
import { TYPES } from "../core/types";
import { SponsorsService } from "../services/SponsorsService";
import { BaseController } from "./BaseController";
@injectable()
export class SponsorsController extends BaseController {
constructor(@inject(TYPES.SponsorsService) private sponsorsService: SponsorsService) {
super();
}
async get(req: Request, res: Response): Promise<void> {
await this.handleRequest(req, res, async () => {
return await this.sponsorsService.getSponsors();
});
}
}

View File

@@ -7,6 +7,7 @@ export const TYPES = {
ImageService: Symbol.for("ImageService"),
SettingService: Symbol.for("SettingService"),
UserService: Symbol.for("UserService"),
SponsorsService: Symbol.for("SponsorsService"),
Cloud115Controller: Symbol.for("Cloud115Controller"),
QuarkController: Symbol.for("QuarkController"),
@@ -15,4 +16,5 @@ export const TYPES = {
ImageController: Symbol.for("ImageController"),
SettingController: Symbol.for("SettingController"),
UserController: Symbol.for("UserController"),
SponsorsController: Symbol.for("SponsorsController"),
};

View File

@@ -10,7 +10,7 @@ import { DoubanService } from "./services/DoubanService";
import { UserService } from "./services/UserService";
import { ImageService } from "./services/ImageService";
import { SettingService } from "./services/SettingService";
import { SponsorsService } from "./services/SponsorsService";
// Controllers
import { Cloud115Controller } from "./controllers/cloud115";
import { QuarkController } from "./controllers/quark";
@@ -19,7 +19,7 @@ import { DoubanController } from "./controllers/douban";
import { ImageController } from "./controllers/teleImages";
import { SettingController } from "./controllers/setting";
import { UserController } from "./controllers/user";
import { SponsorsController } from "./controllers/sponsors";
const container = new Container();
// Services
@@ -31,7 +31,7 @@ container.bind<ImageService>(TYPES.ImageService).to(ImageService).inSingletonSco
container.bind<SettingService>(TYPES.SettingService).to(SettingService).inSingletonScope();
container.bind<DoubanService>(TYPES.DoubanService).to(DoubanService).inSingletonScope();
container.bind<UserService>(TYPES.UserService).to(UserService).inSingletonScope();
container.bind<SponsorsService>(TYPES.SponsorsService).to(SponsorsService).inSingletonScope();
// Controllers
container.bind<Cloud115Controller>(TYPES.Cloud115Controller).to(Cloud115Controller);
container.bind<QuarkController>(TYPES.QuarkController).to(QuarkController);
@@ -40,5 +40,6 @@ container.bind<DoubanController>(TYPES.DoubanController).to(DoubanController);
container.bind<ImageController>(TYPES.ImageController).to(ImageController);
container.bind<SettingController>(TYPES.SettingController).to(SettingController);
container.bind<UserController>(TYPES.UserController).to(UserController);
container.bind<SponsorsController>(TYPES.SponsorsController).to(SponsorsController);
export { container };

View File

@@ -8,6 +8,7 @@ import { DoubanController } from "../controllers/douban";
import { ImageController } from "../controllers/teleImages";
import { SettingController } from "../controllers/setting";
import { UserController } from "../controllers/user";
import { SponsorsController } from "../controllers/sponsors";
const router = Router();
@@ -19,6 +20,7 @@ const doubanController = container.get<DoubanController>(TYPES.DoubanController)
const imageController = container.get<ImageController>(TYPES.ImageController);
const settingController = container.get<SettingController>(TYPES.SettingController);
const userController = container.get<UserController>(TYPES.UserController);
const sponsorsController = container.get<SponsorsController>(TYPES.SponsorsController);
// 用户相关路由
router.post("/user/login", (req, res) => userController.login(req, res));
@@ -34,6 +36,9 @@ router.post("/setting/save", (req, res) => settingController.save(req, res));
// 资源搜索
router.get("/search", (req, res) => resourceController.search(req, res));
// 获取赞助者列表
router.get("/sponsors", (req, res) => sponsorsController.get(req, res));
// 115网盘相关
router.get("/cloud115/share-info", (req, res) => cloud115Controller.getShareInfo(req, res));
router.get("/cloud115/folders", (req, res) => cloud115Controller.getFolderList(req, res));

View File

@@ -0,0 +1,25 @@
import { injectable } from "inversify";
import { createAxiosInstance } from "../utils/axiosInstance";
import { AxiosInstance } from "axios";
import sponsors from "../sponsors/sponsors.json";
@injectable()
export class SponsorsService {
private axiosInstance: AxiosInstance;
constructor() {
this.axiosInstance = createAxiosInstance("http://oss.jiangmuxin.cn/cloudsaver/");
}
async getSponsors() {
try {
const response = await this.axiosInstance.get("sponsors.json");
return {
data: response.data.sponsors,
};
} catch (error) {
return {
data: sponsors.sponsors,
};
}
}
}

View File

@@ -0,0 +1,54 @@
{
"sponsors": [
{
"name": "立本狗头",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks1.jpg",
"message": "怒搓楼上狗头! "
},
{
"name": "帝国鼻屎",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks2.jpg",
"message": "芜湖起飞! "
},
{
"name": "雷霆222",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks3.jpg",
"message": "把我弄帅点 "
},
{
"name": "黑田奈奈子",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks4.jpg",
"message": "流年笑掷 未来可期 ",
"link": "https://github.com/htnanako"
},
{
"name": "原野🐇",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks5.jpg"
},
{
"name": "我摆烂!",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks6.jpg",
"message": "人生苦短,及时行乐,卷什么卷,随缘摆烂 "
},
{
"name": "田培",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks7.jpg"
},
{
"name": "River",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks8.jpg"
},
{
"name": "午夜学徒",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks9.jpg"
},
{
"name": "阿潘",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks10.jpg"
},
{
"name": "闹闹黑",
"avatar": "http://oss.jiangmuxin.cn/cloudsaver/sponsors/thanks11.jpg"
}
]
}

View File

@@ -8,7 +8,7 @@ interface ProxyConfig {
export function createAxiosInstance(
baseURL: string,
headers: AxiosRequestHeaders,
headers?: AxiosRequestHeaders,
useProxy: boolean = false,
proxyConfig?: ProxyConfig
): AxiosInstance {