当前位置: 主页 > 我评百科

多租户实现方案(多租户记账APP接口设计方案)

  • 我评百科
  • 2022-09-23
  • 佚名

记账有助于自己:1、消费限制、2、智能账单、3、消费计划4、重点消费。

不少人对于自己的消费没有节制,以致于即使不在自己消费能力之内也去过度消费,从而导致了生活压力的不断增加,严重影响了正常的生活方式。

因此市场上的记账类APP应用如雨后春笋般出现。那么如果要自己开发一款记账类APP的话,需要如何进行数据库存储方案及接口的设计呢?

接下来作者将带着你实操多租户记账类APP数据接口的设计方案

一、数据库表设计(四个库表)

订单表

CREATE TABLE `ngs_bill` ( `BILL_ID` varchar(64) NOT NULL DEFAULT 'UUID()' COMMENT '订单ID', `BILL_COST` decimal(32,2) DEFAULT NULL COMMENT '花费金额', `BILL_CONTENT` varchar(32) DEFAULT NULL COMMENT '备注', `USER_ID` varchar(32) DEFAULT NULL COMMENT '用户ID', `BILL_TYPE` varchar(32) DEFAULT NULL COMMENT '类型(1:收入,2:支出)', `BUS_TYPE` varchar(32) DEFAULT NULL COMMENT '用途类型,数据字典BUS_TYPE', `PAY_TYPE` varchar(32) DEFAULT NULL COMMENT '支付方式,数据字典PAY_TYPE', `TENANT_ID` varchar(64) DEFAULT NULL COMMENT '所属住户', `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', `CREATED_TIME` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', `IS_DELETE` varchar(10) DEFAULT '0' COMMENT '是否删除,1:删除', PRIMARY KEY (`BILL_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表 '

字典表

CREATE TABLE `ngs_dict` ( `DICT_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典主键', `DICT_NAME` varchar(64) DEFAULT NULL COMMENT '字典名称', `DICT_TYPE` varchar(32) DEFAULT NULL COMMENT '字典编码', `DICT_STATUS` varchar(32) DEFAULT '0' COMMENT '状态(0正常 1停用)', `TENANT_ID` varchar(64) DEFAULT NULL COMMENT '所属租户', `SORT_ID` int(11) DEFAULT NULL COMMENT '排序', `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', `CREATED_TIME` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`DICT_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='数据字典

字典子项表

CREATE TABLE `ngs_dict_data` ( `DICT_DATA_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '字典子项主键', `DICT_DATA_LABEL` varchar(32) DEFAULT NULL COMMENT '字典标签', `DICT_DATA_VALUE` varchar(32) DEFAULT NULL COMMENT '字典键值', `DICT_TYPE` varchar(255) DEFAULT NULL COMMENT '字典类型', `DICT_DATA_STATUS` varchar(32) DEFAULT '0' COMMENT '状态(0正常 ,1停用)', `SORT_ID` int(11) DEFAULT NULL COMMENT '排序', `TENANT_ID` varchar(64) DEFAULT NULL COMMENT '所属租户', `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', `CREATED_TIME` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', `DICT_DATA_IMG` varchar(255) DEFAULT NULL COMMENT '字典子项图片', `IN_OR_OUT` varchar(10) DEFAULT NULL COMMENT '默认全部,收入:IN,支出:out', PRIMARY KEY (`DICT_DATA_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='数据字典子项 '

用户表

CREATE TABLE `ngs_user` ( `USER_ID` varchar(128) NOT NULL DEFAULT 'UUID()' COMMENT '用户ID', `USER_NAME` varchar(128) DEFAULT NULL COMMENT '名称', `LOGIN_ID` varchar(128) DEFAULT NULL COMMENT '登录账号', `PASS_WORD` varchar(128) DEFAULT NULL COMMENT '密码', `USER_EMAIL` varchar(32) DEFAULT NULL COMMENT '用户邮箱', `MOBILE_PHONE` varchar(32) DEFAULT NULL COMMENT '用户电话', `USER_SEX` varchar(32) DEFAULT NULL COMMENT '用户性别(男,女)', `BIRTHDAY` date DEFAULT NULL COMMENT '用户生日', `USER_STATUS` varchar(32) DEFAULT '1' COMMENT '用户状态(1:启用,2:停用)', `TENANT_ID` varchar(64) DEFAULT NULL COMMENT '所属租户', `USER_PHOTO` varchar(1024) DEFAULT NULL COMMENT '用户头像', `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人', `CREATED_TIME` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人', `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表 '
二、初始化数据

#一、数据库表 #1、用户表 #NGS_USER INSERT INTO NGS_USER(USER_ID,USER_NAME,LOGIN_ID,PASS_WORD,USER_EMAIL,MOBILE_PHONE,USER_SEX,BIRTHDAY,TENANT_ID,USER_PHOTO) VALUES('dijia','迪迦','dijia','dijia','dijia@qq.com','1376087997','男','1992-10-10','e32734cdbad84e3c8d9aca99e39eb836','dijia.jpg'); #2、字典表 #NGS_DICT INSERT INTO `ngs_dict`(DICT_NAME,DICT_TYPE,TENANT_ID,SORT_ID) VALUES('记账类型','BILL_TYPE','e32734cdbad84e3c8d9aca99e39eb836',1); INSERT INTO `ngs_dict`(DICT_NAME,DICT_TYPE,TENANT_ID,SORT_ID) VALUES('用途类型','BUS_TYPE','e32734cdbad84e3c8d9aca99e39eb836',2); INSERT INTO `ngs_dict`(DICT_NAME,DICT_TYPE,TENANT_ID,SORT_ID) VALUES('支付方式','PAY_TYPE','e32734cdbad84e3c8d9aca99e39eb836',3); #NGS_DICT_DATA INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('收入','IN','BILL_TYPE',1,'e32734cdbad84e3c8d9aca99e39eb836','IN.png'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('支出','OUT','BILL_TYPE',2,'e32734cdbad84e3c8d9aca99e39eb836','OUT.png'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('微信','WX','PAY_TYPE',1,'e32734cdbad84e3c8d9aca99e39eb836','wx.png'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('支付宝','ZFB','PAY_TYPE',2,'e32734cdbad84e3c8d9aca99e39eb836','zfb.png'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('银行卡','YHK','PAY_TYPE',1,'e32734cdbad84e3c8d9aca99e39eb836','YHK.png'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG,IN_OR_OUT) VALUES('吃饭','CF','BUS_TYPE',1,'e32734cdbad84e3c8d9aca99e39eb836','wx.png','OUT'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG,IN_OR_OUT) VALUES('兼职','JZ','BUS_TYPE',2,'e32734cdbad84e3c8d9aca99e39eb836','zfb.png','IN'); INSERT INTO `ngs_dict_data`(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES('其他','QT','BUS_TYPE',1,'e32734cdbad84e3c8d9aca99e39eb836','YHK.png'); #3、账单表 NGS_BILL INSERT INTO NGS_BILL(BILL_COST,BILL_CONTENT,USER_ID,BILL_TYPE,BUS_TYPE,PAY_TYPE,TENANT_ID) VALUES(100,'吃饭请客','dijia','支出','吃饭','微信','e32734cdbad84e3c8d9aca99e39eb836');三、接口设计(18个接口)

接口明细

一、低代码平台接口开发规则 如果是=判断,则需要用对应的:字段=#param#,前端传入参数需要拼接单引号 如果是in方式,则需要用:字段 in($param$),前端入参时,需要在每个参数的两边拼接上单引号。 对于能确定的参数是必传的,则需要把该参数两边的大括号“}”去掉 #select * from dual l where {l.type =#type#} and status in($data1$) #二、接口 #1、用户(3个) #注册接口 INSERT INTO NGS_USER(USER_ID,USER_NAME,LOGIN_ID,PASS_WORD,USER_EMAIL,MOBILE_PHONE,USER_SEX,BIRTHDAY,TENANT_ID,USER_PHOTO) VALUES( #USER_ID#,#USER_NAME#,#LOGIN_ID#,#PASS_WORD#,#USER_EMAIL#,#MOBILE_PHONE#,#USER_SEX#,#BIRTHDAY#,#TENANT_ID#,#USER_PHOTO#) #登录接口/获取用户信息接口 SELECT * FROM NGS_USER R WHERE R.USER_ID=#USER_ID# AND R.PASS_WORD=#PASS_WORD# #修改用户信息接口 UPDATE NGS_USER SET USER_NAME=#USER_NAME#,USER_EMAIL=#USER_EMAIL#,USER_SEX=#USER_SEX#,BIRTHDAY=#BIRTHDAY#,USER_PHOTO=#USER_PHOTO# WHERE TENANT_ID=#TENANT_ID# AND USER_ID=#USER_ID# #2、数据字典(6个) #新增数据字典接口 INSERT INTO ngs_dict(DICT_NAME,DICT_TYPE,TENANT_ID,SORT_ID) VALUES(#DICT_NAME#,#DICT_TYPE#,#TENANT_ID#,#SORT_ID#) #修改数据字典接口 UPDATE ngs_dict SET DICT_NAME=#DICT_NAME# ,SORT_ID=#SORT_ID# WHERE DICT_ID=#DICT_ID# #查询数据字典接口 SELECT * FROM ngs_dict D WHERE D.TENANT_ID =#TENANT_ID# #新增数据字典子项接口 INSERT INTO ngs_dict_data(DICT_DATA_LABEL,DICT_DATA_VALUE,DICT_TYPE,SORT_ID,TENANT_ID,DICT_DATA_IMG) VALUES( #DICT_DATA_LABEL#,#DICT_DATA_VALUE#,#DICT_TYPE#,#SORT_ID#,#TENANT_ID#,#DICT_DATA_IMG#) #修改数据字典子项接口 UPDATE ngs_dict_data SET DICT_DATA_LABEL=#DICT_DATA_LABEL# , DICT_DATA_VALUE=#DICT_DATA_VALUE#,SORT_ID=#SORT_ID#,DICT_DATA_IMG=#DICT_DATA_IMG# WHERE TENANT_ID=#TENANT_ID# AND DICT_DATA_ID=#DICT_DATA_ID# #查询数据字典子项列表接口 SELECT * FROM ngs_dict_data D WHERE D.TENANT_ID=#TENANT_ID# AND D.DICT_TYPE=#DICT_TYPE# #3、支付方式数据字典(4个) #查询支付方式接口 SELECT * FROM ngs_dict_data WHERE TENANT_ID=#TENANT_ID# AND DICT_TYPE='PAY_TYPE' #查询支出用途接口 SELECT * FROM ngs_dict_data WHERE TENANT_ID=#TENANT_ID# AND DICT_TYPE='BILL_TYPE' AND (IN_OR_OUT IS NULL OR IN_OR_OUT='OUT') #查询收入用途接口 SELECT * FROM ngs_dict_data WHERE TENANT_ID=#TENANT_ID# AND DICT_TYPE='BILL_TYPE' AND (IN_OR_OUT IS NULL OR IN_OR_OUT='IN') #查询用途接口 SELECT * FROM ngs_dict_data WHERE TENANT_ID=#TENANT_ID# AND DICT_TYPE='BUS_TYPE' #4、账单(4个) #新增账单接口 INSERT INTO NGS_BILL(BILL_COST,BILL_CONTENT,USER_ID,BILL_TYPE,BUS_TYPE,PAY_TYPE,TENANT_ID) VALUES(#BILL_COST#,#BILL_CONTENT#,#USER_ID#,#BILL_TYPE#,#BUS_TYPE#,#PAY_TYPE#,#TENANT_ID#) #修改账单接口 UPDATE NGS_BILL SET BILL_COST=#BILL_COST#,BILL_CONTENT=#BILL_CONTENT#,USER_ID=#USER_ID#BILL_TYPE=#BILL_TYPE#,BUS_TYPE=#BUS_TYPE#,PAY_TYPE=#PAY_TYPE# WHERE TENANT_ID=#TENANT_ID# AND BILL_ID=#BILL_ID# #查询账单接口 SELECT * FROM NGS_BILL WHERE TENANT_ID=#TENANT_ID# { AND BILL_ID=#BILL_ID# } #删除账单接口 DELETE FROM NGS_BILL WHERE TENANT_ID=#TENANT_ID# AND BILL_ID=#BILL_ID#

下一篇文章将以视频实操的方式给大家介绍一下如何在不写代码,只通过写SQL来快速开发一套多租户记账工具的数据接口服务。

  • 关注微信

猜你喜欢

微信公众号