记账有助于自己: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_USERINSERT 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_DICTINSERT 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_DATAINSERT 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_BILLINSERT 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 SETUSER_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来快速开发一套多租户记账工具的数据接口服务。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除