eggjs 怎么实现新增账单接口?

简介: eggjs 怎么实现新增账单接口?

通过前面的建表,我们可以找到对应的字段如下图:

455e533dd06348449cd7a48192db6693.png



实现账单新增接口


1、在控制层新建bill.js


764444bd272749649fe38dd5f24e0c30.png

'use strict';
const Controller = require('egg').Controller;
class BillController extends Controller {
  async add() {
    const { ctx, app } = this;
    // 1、获取请求中携带的参数
    const { amount, type_id, type_name, date, pay_type, remark = '' } = ctx.request.body;
    // 2、判空处理
    if (!amount || !type_id || !type_name || !date || !pay_type) {
      ctx.body = {
        status: 400,
        desc: '参数错误',
        data: null
      }
      return;
    }
    try {
      // 3、拿到 token 获取用户信息
      const token = ctx.request.header.authorization;
      const decode = await app.jwt.verify(token, app.config.jwt.secret);
      if (!decode) return;
      // user_id 默认添加到每个账单项,用于滤出
      let user_id = decode.id
      const result = await ctx.service.bill.add({
        amount,
        type_id,
        type_name,
        date,
        pay_type,
        remark,
        user_id
      });
      ctx.body = {
        status: 200,
        desc: '请求成功',
        data: null
      }
    } catch (error) {
      ctx.body = {
        status: 500,
        desc: '系统错误',
        data: null
      }
    }
  }
}
module.exports = BillController;



2、在服务层添加bill.js

1960b4c43cb343d6a29b1fb350ce0cb2.png

'use strict';
const Service = require('egg').Service;
class BillService extends Service {
  async add(params) {
    const { app } = this;
    try {
      // 往 bill 表中,插入一条账单数据
      const result = await app.mysql.insert('bill', params);
      return result;
    } catch (error) {
      console.log(error);
      return null;
    }
  }
}
module.exports = BillService;


3、添加路由

// 添加账单
router.post('/api/bill/add', verify_token, controller.bill.add);

21398efd2aaf4764adc62e5b68a4a119.png


测试新增账单接口

上面我们已经写好了新增的逻辑,接下来我们用 apifox 测试一下:


1、先在 apifox 新建接口

点击新建接口之后,填写好相关信息

a3b0725924fd4f60a40aa30cb36f81ee.png


2、添加参数测试

我们先登录拿到token


67ff7aa3c64947fa86147ed1c4f2c14f.png

然后填写需要的参数,记得把请求改成post,不然会报错

db223c930bf0470e9d20090d7c38ed55.png



3、检查数据库是否有新增

44fa95168f394ff2a63d30a9ae5952ae.png


发现有数据,测试成功,并且用户也对应上了。






目录
相关文章
|
SQL 前端开发 JavaScript
eggjs 怎么实现获取账单列表接口并且实现列表数据分页查询功能?
eggjs 怎么实现获取账单列表接口并且实现列表数据分页查询功能?
208 0
eggjs 怎么实现获取账单列表接口并且实现列表数据分页查询功能?
|
6月前
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
6月前
|
移动开发
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
|
8月前
|
Go
区域代理分红商城系统开发指南教程/步骤功能/方案逻辑/源码项目
The development of regional proxy dividend distribution mall system involves multiple aspects such as proxy dividend function and electronic mall system development. The following is an overview of the steps for developing a regional agent dividend distribution mall system
游戏对接广告看视频系统开发详细规则/方案逻辑/步骤逻辑/规则玩法/源码程序
Advertising location and display method: According to the characteristics of the game interface and scene, choose the appropriate advertising location and display method to ensure that the advertisement naturally integrates into the game and does not affect the player's game experience.
|
8月前
|
设计模式 小程序 安全
【社区每周】商家分账接入指南更新;基础库新增抽象节点功能及上周问题反馈(2月第二期)
【社区每周】商家分账接入指南更新;基础库新增抽象节点功能及上周问题反馈(2月第二期)
198 11
|
存储 JSON API
淘宝订单接口对接实战(续):高级功能与实战案例
在上一篇文章中,我们详细介绍了如何对接淘宝订单接口的基础知识,包括API申请、环境准备以及基础的API调用。本文将在此基础上,进一步探讨淘宝订单接口的高级功能,并通过实战案例,演示如何在实际业务场景中应用这些功能,全文约5000字。
|
前端开发
TienChin 活动管理-修改活动接口
TienChin 活动管理-修改活动接口
63 0
|
存储 监控 安全
转账通缩功能开发实例源码规则解析
转账通缩功能开发实例源码规则解析
|
算法 NoSQL API
微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
567 0