koacms(十)轮播图分类增删改查逻辑,轮播图增删改查逻辑

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测试下接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值