1、在controller文件夹下的cms文件新建cmsAdType.js
const { SuccessModel, ErrorModel } = require('../../model/resModel')
const cmsAdTypeModel = require('../../model/cmsAdTypeModel')
class CmsAdTypeController {
async page(ctx, next) {
const { page=1, size=10,name } = ctx.request.body
const where = {}
if(name){
where.name = name
}
try {
const data = await cmsAdTypeModel.page(page,size,where)
if(!data) return ctx.body = new ErrorModel('获取数据失败')
ctx.body = new SuccessModel('获取数据成功', data)
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async list(ctx, next) {
try {
const data = await cmsAdTypeModel.list()
// console.log('data',data)
if(!data) return ctx.body = new ErrorModel('获取数据失败')
ctx.body = new SuccessModel('获取数据成功', data)
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async add(ctx, next) {
const { name,width,height,order,status=1 } = ctx.request.body
try {
const time=new Date().getTime() / 1000
const res = await cmsAdTypeModel.create({
name,
width,
height,
order,
status,
create_time:time,
update_time:time
})
if(!res) return ctx.body = new ErrorModel('轮播图分类添加失败')
ctx.body = new SuccessModel('轮播图分类添加成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async update(ctx, next) {
const { id,name,width,height,order } = ctx.request.body;
try {
const exitRes = await cmsAdTypeModel.getInfo({id})
if(exitRes.length === 0) return ctx.body = new ErrorModel('该轮播图分类不存在')
const time =new Date().getTime() / 1000
const result = await cmsAdTypeModel.update(id,{
name,
width,
height,
order,
update_time:time
})
if(!result) return ctx.body = new ErrorModel('修改信息失败')
ctx.body = new SuccessModel('修改信息成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async delete(ctx, next) {
const { id } = ctx.request.body;
try {
const exitRes = await cmsAdTypeModel.getInfo({id})
if(!exitRes.length === 0) return res.json({code:400,data:'',msg:'轮播图分类不存在!'})
// const time =new Date().getTime() / 1000
const result = await cmsAdTypeModel.delete(id)
if(!result) return ctx.body = new ErrorModel('删除轮播图分类失败')
ctx.body = new SuccessModel('删除轮播图分类成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
}
module.exports = new CmsAdTypeController()
2、在controller文件夹下的cms文件新建cmsAd.js
const { SuccessModel, ErrorModel } = require('../../model/resModel')
const cmsAdModel = require('../../model/cmsAdModel')
class CmsAdController {
async page(ctx, next) {
const { page=1, size=10,name,ad_type_id } = ctx.request.body
const where = {}
if(name){
where.name = name
}
if(ad_type_id){
where.ad_type_id = ad_type_id
}
try {
const data = await cmsAdModel.page(page,size,where)
if(!data) return ctx.body = new ErrorModel('获取数据失败')
for (let item of data.list) {
const icos = []
if(item.img_src){
icos.push({
url:`${process.env.BASE_URL }/${item.img_src}`,
fileUrl: item.img_src
})
}
item.img = icos
}
ctx.body = new SuccessModel('获取数据成功', data)
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async list(ctx, next) {
try {
const data = await cmsAdModel.list()
// console.log('data',data)
if(!data) return ctx.body = new ErrorModel('获取数据失败')
ctx.body = new SuccessModel('获取数据成功', data)
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async add(ctx, next) {
const { ad_name,ad_desc,type=2,img_src,link,ad_type_id,ad_ename,order,status,img,file_id } = ctx.request.body
try {
const time=new Date().getTime() / 1000
const res = await cmsAdModel.create({
ad_name,
ad_desc,
type,
img_src,
link,
ad_type_id,
ad_ename,
order,
status,
file_id,
create_time:time,
update_time:time
})
console.log('res',res)
if(res.length == 0) return ctx.body = new ErrorModel('轮播图添加失败')
ctx.body = new SuccessModel('轮播图添加成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async update(ctx, next) {
const { id,ad_name,ad_desc,type=2,img_src,link,ad_type_id,ad_ename,order,status,img,file_id } = ctx.request.body;
try {
const exitRes = await cmsAdModel.getInfo({id})
console.log('exitRes',exitRes)
if(exitRes.length === 0) return ctx.body = new ErrorModel('该轮播图不存在')
const time =new Date().getTime() / 1000
const result = await cmsAdModel.update(id,{
ad_name,
ad_desc,
type,
img_src,
link,
ad_type_id,
ad_ename,
file_id,
order,
status,
update_time:time
})
if(!result) return ctx.body = new ErrorModel('修改轮播图失败')
ctx.body = new SuccessModel('修改轮播图成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
async delete(ctx, next) {
const { id } = ctx.request.body;
try {
const exitRes = await cmsAdModel.getInfo({id})
if(!exitRes.length === 0) return res.json({code:400,data:'',msg:'轮播图不存在!'})
// const time =new Date().getTime() / 1000
const result = await cmsAdModel.delete(id)
if(!result) return ctx.body = new ErrorModel('删除轮播图失败')
ctx.body = new SuccessModel('删除轮播图成功')
} catch (error) {
return ctx.body = new ErrorModel(error)
}
}
}
module.exports = new CmsAdController()
3、在model文件夹下新增cmsAdTypeModel.js
const db = require('../config/knex')
class CmsAdTypeModel {
async create(data){
return await db.create('cms_ad_type',data)
}
async getInfo(id){
return await db.find('cms_ad_type',id)
}
async update(id,data){
return await db.update('cms_ad_type',id,data)
}
async batchInsert(data){
return await db.batchInsert('cms_ad_type',data)
}
async delete(id){
return await db.remove('cms_ad_type',id)
}
async page(page=1,size=10, where={},orderBy='',fields='*'){
const offset = (page - 1) * size;
const order = orderBy ? order : ['id' ,'desc'];
const [countResult, rows] = await Promise.all([
db.knex('cms_ad_type').count('* as total')
.where((qb) => {
if (where.name) {
qb.where('name', 'like', `%${where.name}%`);
}
}),
db.knex('cms_ad_type')
.select(fields)
.where((qb) => {
if (where.name) {
qb.where('name', 'like', `%${where.name}%`);
}
})
.orderBy(order[0],order[1])
.offset(offset)
.limit(size)
]);
const count = countResult[0].total;
const pageData = {
page:Number(page),
size,
count,
list: rows
};
return pageData;
}
async list(where=[],fields='*'){
return await db.getList('cms_ad_type',where,fields)
}
}
module.exports = new CmsAdTypeModel()
4、在model文件夹下新增cmsAdModel.js
const db = require('../config/knex')
class cmsAdModel {
async create(data){
return await db.create('cms_ad',data)
}
async getInfo(id){
return await db.find('cms_ad',id)
}
async update(id,data){
return await db.update('cms_ad',id,data)
}
async batchInsert(data){
return await db.batchInsert('cms_ad',data)
}
async batchDelete(ids){
return await db.batchDelete('cms_ad',ids)
}
async delete(id){
return await db.remove('cms_ad',id)
}
async page(page=1,size=10, where={},orderBy='',fields='*'){
const offset = (page - 1) * size;
const order = orderBy ? order : ['cms_ad.id' ,'desc'];
const [countResult, rows] = await Promise.all([
db.knex('cms_ad').count('* as total')
.where((qb) => {
if (where.name) {
qb.where('name', 'like', `%${where.name}%`);
}
if (where.ad_type_id) {
qb.where('ad_type_id', '=', where.ad_type_id);
}
}),
db.knex('cms_ad')
// .join('file', 'cms_ad.file_id', 'file.id')
.select(fields)
.where((qb) => {
if (where.name) {
qb.where('cms_ad.name', 'like', `%${where.name}%`);
}
if (where.ad_type_id) {
qb.where('cms_ad.ad_type_id', '=', where.ad_type_id);
}
})
.orderBy(order[0],order[1])
.offset(offset)
.limit(size)
]);
const count = countResult[0].total;
const pageData = {
page:Number(page),
size,
count,
list: rows
};
return pageData;
}
async list(where=[],fields='*'){
console.log('where',where)
return await db.getList('cms_ad',where,fields)
}
}
module.exports = new cmsAdModel()
5、修改routes文件夹下的admin.js文件
const router = require('koa-router')()
const jwt = require('../../utils/verify')
const AdminController = require('../../controller/admin')
const AuthGroupController = require('../../controller/authGroup')
const AuthRuleController = require('../../controller/authRule')
const ConfigController = require('../../controller/config')
const ConfigTypeController = require('../../controller/configType')
const CmsModelsController = require('../../controller/cms/cmsModels')
const CmsFieldController = require('../../controller/cms/cmsField')
const CmsContentController = require('../../controller/cms/cmsContent')
const CmsContentSortController = require('../../controller/cms/cmsContentSort')
const CmsAdTypeController = require('../../controller/cms/cmsAdType')
const CmsAdController = require('../../controller/cms/cmsAd')
router.prefix('/api')
//用户注册
router.post('/system/user/add', AdminController.add)
router.post('/system/user/login', AdminController.login)
router.post('/system/user/update', AdminController.update)
router.post('/system/user/status', AdminController.updateStatus)
router.post('/system/user/list', AdminController.list)
router.post('/system/user/page', AdminController.page)
router.post('/system/user/delete', AdminController.delete)
router.post('/system/user/batchDelete', AdminController.batchDelete)
router.post('/system/user/existence', AdminController.existence)
router.post('/system/user/password', AdminController.password)
// 角色
router.post('/system/roles/page', AuthGroupController.page)
router.get('/system/roles/list', AuthGroupController.list)
router.post('/system/roles/add', AuthGroupController.add)
router.post('/system/roles/update', AuthGroupController.update)
router.post('/system/roles/del', AuthGroupController.delete)
router.post('/system/roles/menu', AuthGroupController.menu)
router.post('/system/roles/menu/update', AuthGroupController.menuUpdate)
// 菜单
router.get('/system/menu/user', AuthRuleController.user)
router.post('/system/menu/list', AuthRuleController.list)
router.post('/system/menu/add', AuthRuleController.add)
router.post('/system/menu/update', AuthRuleController.update)
router.post('/system/menu/del', AuthRuleController.delete)
// 系统配置
router.post('/system/config/page', ConfigController.page)
router.post('/system/config/list', ConfigController.list)
router.post('/system/config/add', ConfigController.add)
router.post('/system/config/update', ConfigController.update)
router.post('/system/config/del', ConfigController.delete)
router.post('/system/config/bulkUpdate', ConfigController.bulkUpdate)
// 系统配置类型
router.get('/system/config/type/list', ConfigTypeController.list)
router.post('/system/config/type/add', ConfigTypeController.add)
router.post('/system/config/type/update', ConfigTypeController.update)
router.post('/system/config/type/del', ConfigTypeController.delete)
router.post('/system/config/getSysInfo', ConfigController.getSysInfo)
// 模型
router.post('/cms/models/page', CmsModelsController.page)
router.post('/cms/models/list', CmsModelsController.list)
router.post('/cms/models/add', CmsModelsController.add)
router.post('/cms/models/update', CmsModelsController.update)
router.post('/cms/models/del', CmsModelsController.delete)
// 模型字段
router.post('/cms/field/page', CmsFieldController.page)
router.post('/cms/field/list', CmsFieldController.list)
router.post('/cms/field/add', CmsFieldController.add)
router.post('/cms/field/update', CmsFieldController.update)
router.post('/cms/field/del', CmsFieldController.delete)
// 分类
router.post('/cms/cate/page', CmsContentSortController.page)
router.get('/cms/cate/list', CmsContentSortController.list)
router.post('/cms/cate/add', CmsContentSortController.add)
router.post('/cms/cate/update', CmsContentSortController.update)
router.post('/cms/cate/del', CmsContentSortController.delete)
router.post('/cms/cate/status', CmsContentSortController.updateStatus)
router.get('/cate/class', CmsContentSortController.classlist)
router.post('/cate/cate', CmsContentSortController.catelist)
// 内容
router.post('/cms/content/page', CmsContentController.page)
router.post('/cms/content/list', CmsContentController.list)
router.post('/cms/content/add', CmsContentController.add)
router.post('/cms/content/update', CmsContentController.update)
router.post('/cms/content/del', CmsContentController.delete)
// 轮播图分类
router.post('/cms/ad/type/page', CmsAdTypeController.page)
router.post('/cms/ad/type/list', CmsAdTypeController.list)
router.post('/cms/ad/type/add', CmsAdTypeController.add)
router.post('/cms/ad/type/update', CmsAdTypeController.update)
router.post('/cms/ad/type/del', CmsAdTypeController.delete)
// 轮播图
router.post('/cms/ad/page', CmsAdController.page)
router.post('/cms/ad/list', CmsAdController.list)
router.post('/cms/ad/add', CmsAdController.add)
router.post('/cms/ad/update', CmsAdController.update)
router.post('/cms/ad/del', CmsAdController.delete)
module.exports = router
6、最后用apifox测试下接口