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


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






目录
相关文章
|
2月前
|
缓存 监控 API
淘宝 API 接口使用的技术要点与注意事项
在数字化商业环境中,淘宝API为开发者提供了强大的工具,用于与淘宝平台交互,获取商品信息及处理交易等。本文总结了正确使用API的关键技术要点:注册认证、理解接口文档、遵守调用限制、确保参数准确性、保护数据安全、处理异常、性能优化、版本兼容、合规性及日志监控,帮助开发者实现高效、安全的程序开发。
|
1月前
|
缓存 监控 API
淘宝API接口注意事项及要点
淘宝API接口的使用需注意以下要点:首先注册并认证开发者账号,获取API密钥;深入理解接口文档,确保参数合法准确;遵守调用频率限制,必要时申请提额;确保数据安全与隐私保护;合理处理错误与异常;优化缓存与性能;关注版本更新与兼容性;遵守合规性与法律要求;建立日志记录与监控机制。
|
4月前
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
4月前
|
移动开发
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
|
6月前
基于jeecgboot的支持flowable的排它网关之后的会签功能(二)
基于jeecgboot的支持flowable的排它网关之后的会签功能(二)
61 1
|
设计模式 SQL 数据库
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
82 0
|
6月前
|
前端开发
基于jeecgboot的支持flowable的排它网关之后的会签功能(一)
基于jeecgboot的支持flowable的排它网关之后的会签功能(一)
91 0
|
JSON JavaScript 搜索推荐
商品详情接口设计:使用API调用获取淘宝商品数据的完整方案
在如今的电商时代,获取商品的详细信息是实现商业化应用的基础。本文将详细介绍如何通过API调用来获取淘宝商品数据,并提供一个完整的商品详情接口设计方案,包括代码示例。开发人员可以根据此方案快速实现商品详情功能,提升用户体验。
|
存储 监控 安全
转账通缩功能开发实例源码规则解析
转账通缩功能开发实例源码规则解析
|
算法 NoSQL API
微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
微信支付-业务流程图+时序图梳理微信支付链路+封装对接微信API工具类
517 0