mirror of
https://github.com/jiangrui1994/CloudSaver.git
synced 2026-01-11 23:58:46 +08:00
feat:增加项目鸣谢页
This commit is contained in:
18
backend/src/controllers/sponsors.ts
Normal file
18
backend/src/controllers/sponsors.ts
Normal 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();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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"),
|
||||
};
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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));
|
||||
|
||||
25
backend/src/services/SponsorsService.ts
Normal file
25
backend/src/services/SponsorsService.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
54
backend/src/sponsors/sponsors.json
Normal file
54
backend/src/sponsors/sponsors.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -8,7 +8,7 @@ interface ProxyConfig {
|
||||
|
||||
export function createAxiosInstance(
|
||||
baseURL: string,
|
||||
headers: AxiosRequestHeaders,
|
||||
headers?: AxiosRequestHeaders,
|
||||
useProxy: boolean = false,
|
||||
proxyConfig?: ProxyConfig
|
||||
): AxiosInstance {
|
||||
|
||||
Reference in New Issue
Block a user