7.轮播图的增删改查

focus.schema => focus.service => interface

一、轮播图的增删改查

1.增加

1.controller

		@Get('add')
    @Render('admin/focus/add')
    add() {
        return {};
    }

    @Post('doAdd')
    @UseInterceptors(FileInterceptor('focus_img'))
    async doAdd(@Body() body, @UploadedFile() file, @Response() res) {
        let saveDir = this.toolsService.uploadFile(file);
        // 将图片地址放入body体中
        Object.assign(body, { focus_img: saveDir });
        await this.focusService.add(body)
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }

2.页面

<form action="/<%=config.adminPath%>/focus/doAdd" method="post" enctype="multipart/form-data">
    <ul>
        <li>  分  类: 
            <select name="type" id="type">
                <option value="1">网站</option>
                <option value="2">APP</option>
                <option value="3">小程序</option>
            </select>
        </li>
        <li>  名  称: <input type="text" name="title"/></li>
        <li>  跳转地址: <input type="text" name="link"/></li>
        <li>  轮 播 图: <input type="file" name="focus_img"/></li>
        <li>  排  序: <input type="text" name="sort" value="1000"/></li>
        <li>  状  态: 
            <input type="radio" name="status" checked value="1" id="a"/><label for="a">显示</label>    
            <input type="radio" name="status" value="0" id="b"/><label for="b">隐藏</label>  
        </li>
        <li>
            <button type="submit" class="btn btn-primary">提交</button>
        </li>
    </ul>
</form>

2.查询展示

1.controller

		@Get()
    @Render('admin/focus/index')
    async index() {
        let result = await this.focusService.find();
        return { focusList: result };
    }

2.页面

<table class="table table-bordered">
    <thead>
        <tr class="th">
            <th>名称</th>
            <th>分类</th>
            <th>图片</th>
            <th>跳转地址</th>
            <th>状态</th>
            <th class="text-center">操作</th>
        </tr>
    </thead>
    <tbody>
        <%for(var i=0;i< focusList.length; i++){%>
            <tr>
                <td><%=focusList[i].title%></td>
                <td><%=focusList[i].type%></td>
                <td>
                    <img src="/<%=focusList[i].focus_img%>" alt="" width="80">
                </td>
                <td><%=focusList[i].link%></td>
                <td><%=focusList[i].status%></td>
                <td class="text-center">
                    <a href="/<%=config.adminPath%>/focus/edit?_id=<%=focusList[i]._id%>">修改</a>
                    <a class="delete" href="/<%=config.adminPath%>/focus/delete?_id=<%=focusList[i]._id%>">删除</a>
                </td>
            </tr>
        <%}%>
    </tbody>
</table>

3.修改

1.controller

		@Get('edit')
    @Render('admin/focus/edit')
    async edit(@Query() query) {
        let result = await this.focusService.find({ _id: query._id });
        return { focus: result[0] }
    }

    @Post('doEdit')
    @UseInterceptors(FileInterceptor('focus_img'))
    async doEdit(@Body() body, @UploadedFile() file, @Response() res) {
        let _id = body._id
        if(file) {
            let saveDir = this.toolsService.uploadFile(file);
            Object.assign(body, { focus_img: saveDir });
            await this.focusService.update({_id:_id}, body);
        }else {
            await this.focusService.update({_id:_id}, body);
        }
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }

2.页面

<form action="/<%=config.adminPath%>/focus/doEdit" method="post" enctype="multipart/form-data">
    <ul>
        <input type="hidden" name="_id" value="<%=focus._id%>"
        <li>  分  类: 
            <select name="type" id="type">
                <option value="1" <%if(focus.type==1){%> selected <%}%> >网站</option>
                <option value="2" <%if(focus.type==2){%> selected <%}%> >APP</option>
                <option value="3" <%if(focus.type==3){%> selected <%}%> >小程序</option>
            </select>
        </li>
        <li>  名  称: <input type="text" name="title" value="<%=focus.title%>"/></li>
        <li>  跳转地址: <input type="text" name="link" value="<%=focus.link%>"/></li>
        <li>  轮 播 图: <input type="file" name="focus_img" value="<%=focus.focus_img%>"/></li>
        <br>
        <img src="/<%=focus.focus_img%>" alt="" width="80">
        <li>  排  序: <input type="text" name="sort" value="<%=focus.sort%>"/></li>
        <li>  状  态: 
            <input type="radio" name="status" <%if(focus.status==1){%> checked <%}%> value="1" id="a"/><label for="a">显示</label>    
            <input type="radio" name="status" <%if(focus.status==0){%> checked <%}%> value="0" id="b"/><label for="b">隐藏</label>  
        </li>
        <li>
            <button type="submit" class="btn btn-primary">提交</button>
        </li>
    </ul>
</form>

4.删除

1.controller

    @Get('delete')
    async delete(@Query() query, @Response() res) {
        await this.focusService.delete({_id: query._id});
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }

2.页面

<a class="delete" href="/<%=config.adminPath%>/focus/delete?_id=<%=focusList[i]._id%>">删除</a>

二、完整版

1.完整版的module

import { Module } from '@nestjs/common';
// 控制器
import { MainController } from './main/main.controller';
import { LoginController } from './login/login.controller';
import { ManagerController } from './manager/manager.controller';
import { RoleController } from './role/role.controller';
import { AccessController } from './access/access.controller';
import { FocusController } from './focus/focus.controller';

// 配置schema
import { MongooseModule } from '@nestjs/mongoose';
import { AdminSchema } from '../../schema/admin.schema';
import { RoleSchema } from '../../schema/role.schema';
import { AccessScheme } from '../../schema/access.schema';
import { RoleAccessSchema } from '../../schema/role_access.schema';
import { FocusSchema } from '../../schema/focus.schema';

// 引入服务
import { ToolsService } from '../../service/tools/tools.service';
import { AdminService } from '../../service/admin/admin.service'
import { RoleService } from '../../service/role/role.service';
import { AccessService } from '../../service/access/access.service';
import { RoleAccessService } from '../../service/role-access/role-access.service';
import { FocusService } from '../../service/focus/focus.service';

@Module({
    imports: [
        MongooseModule.forFeature([
            { name: "Admin", schema: AdminSchema, collection: 'admin' },
            { name: "Role", schema: RoleSchema, collection: 'role' },
            { name: "Access", schema: AccessScheme, collection: 'access' },
            { name: "RoleAccess", schema: RoleAccessSchema, collection: 'role_access' }, //角色权限schema
            { name: "Focus", schema: FocusSchema, collection: 'focus' }, 
        ])
    ],
    controllers: [MainController, LoginController, ManagerController, RoleController, AccessController, FocusController],
    providers: [ToolsService, AdminService, RoleService, AccessService, RoleAccessService, FocusService],
    exports: [AdminService, RoleService, AccessService, RoleAccessService]
})
export class AdminModule { }

2. 完整版的schema

import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
const d = new Date();

export const FocusSchema = new mongoose.Schema({
    title: { type: String },
    type: { type: Number },
    focus_img: { type: String },
    link: { type: String },
    sort: { type: Number },
    status: { type: Number, default: 1 },
    add_time: { 
        type: Number,
        default: d.getTime() 
    },
})

3.完整版的service

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { FocusInterface } from '../../interface/focus.interface'
@Injectable()
export class FocusService {
    constructor(@InjectModel('Focus') private focusModel) { }
    async find(json: FocusInterface = {}) {
        let result = await this.focusModel.find(json);
        return result;
    }

    async add(json: FocusInterface) {
        let role = new this.focusModel(json);
        let result = await role.save();
        return result;
    }

    async update(json1: FocusInterface, json2: FocusInterface) {
        let result = await this.focusModel.updateOne(json1, json2);
        return result;
    }

    async delete(json: FocusInterface) {
        let result = await this.focusModel.deleteOne(json);
        return result;
    } 

    getModel() {
        return this.focusModel
    }
}

4.完整版的interface

export interface FocusInterface {
    _id?: String;
    title?: String;
    type?: Number;
    focus_img?: String;
    link?: String;
    sort?: Number;
    status?: Number;
    add_time?: Number;   
}

5.完整版的controller

import { Controller, Get, Render, Post, Body, UseInterceptors, UploadedFile, Response, Query } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { Config } from '../../../config/config';
import { ToolsService } from '../../../service/tools/tools.service';
import { FocusService } from '../../../service/focus/focus.service';

@Controller(`${Config.adminPath}/focus`)
export class FocusController {
    constructor(
        private toolsService: ToolsService,
        private focusService: FocusService
    ) { }

    @Get()
    @Render('admin/focus/index')
    async index() {
        let result = await this.focusService.find();
        return { focusList: result };
    }

    @Get('add')
    @Render('admin/focus/add')
    add() {
        return {};
    }

    @Post('doAdd')
    @UseInterceptors(FileInterceptor('focus_img'))
    async doAdd(@Body() body, @UploadedFile() file, @Response() res) {
        let saveDir = this.toolsService.uploadFile(file);
        // 将图片地址放入body体中
        Object.assign(body, { focus_img: saveDir });
        await this.focusService.add(body)
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }

    @Get('edit')
    @Render('admin/focus/edit')
    async edit(@Query() query) {
        let result = await this.focusService.find({ _id: query._id });
        return { focus: result[0] }
    }

    @Post('doEdit')
    @UseInterceptors(FileInterceptor('focus_img'))
    async doEdit(@Body() body, @UploadedFile() file, @Response() res) {
        let _id = body._id
        if(file) {
            let saveDir = this.toolsService.uploadFile(file);
            Object.assign(body, { focus_img: saveDir });
            await this.focusService.update({_id:_id}, body);
        }else {
            await this.focusService.update({_id:_id}, body);
        }
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }

    @Get('delete')
    async delete(@Query() query, @Response() res) {
        await this.focusService.delete({_id: query._id});
        this.toolsService.success(res, `/${Config.adminPath}/focus`)
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值