Home

Awesome

合記

注:该项目为练手项目仅仅用做学习和非商业化目的,包含了前后端,UI方面参考了钱迹(无广告且记账速度非常快的一款记账软件),我本身也是钱迹的超级终身VIP,非常感谢钱迹的优秀开发者。

功能介绍

多人同时记账,账单区分权限,账单统计,账单导入,账单导出,账单同步

后端同步服务 https://github.com/RUANHAOANDROID/heji-server

UI

账本封面拍摄于2018hetian玉泉湖公园的木阶梯,基本功能完善后添加账本封面自定义功能。

<table> <tr> <td> <img src="./client/docs/img/home.png" alt="hello" style="zoom:67%;"/> </td> <td> <img src="./client/docs/img/booklist.png" alt="hello" alt="hello" style="zoom:67%;"/> </td> <td> <img src="./client/docs/img/save.png" alt="addBill" style="zoom:67%;"/> </td> </tr> <tr> <td><img src="./client/docs/img/total1.png" alt="hello" style="zoom:67%;"/></td> <td> <img src="./client/docs/img/total2.png" alt="hello" style="zoom:67%;"/></td> <td><img src="./client/docs/img/total3.png" alt="hello" style="zoom:67%;"/></td> </tr> <tr> <td><img src="./client/docs/img/timeview.png" alt="hello" style="zoom:67%;"/></td> <td> <img src="./client/docs/img/menu.png" alt="hello" style="zoom:67%;"/></td> <td><img src="./client/docs/img/setting.png" alt="hello" style="zoom:67%;"/></td> </tr> </table>

权限角色

不同角色具有不同的权限

账本

功能描述:

  1. 用户均可创建账本,账本通过口令分享给其他记账人.仅创建人具有删除账本权限且账本不再有账单.
  2. 账本创建人具备分配账本权限功能{浏览\增加\更改\删除}
  3. 账本具备{账本名称\账本所属类别}
  4. 账单有金额、时间、票据、记账人、经手人、类别等属性

账单

  1. 账单分为收入\支出

  2. 账单属性

    账单类别|金额|时间|票据图片|备注信息

  3. 账单查重功能

    通过账单时间\金额\票据MD5值判断是否存在重复记录

  4. 账单导入

    导入支持 支付宝、微信、ETC 、EXCEL、CVS、钱迹

  5. 账单导出

    导出支持 EXCEL、CVS、钱迹

  6. 多人记账用户仅能删除或修改自身账单

统计

  1. 支出人员支出占比
    • 起始资金占比

    • 月支出占比

    • 年支出占比

    根据时间分为月/年/有史以来

  2. 支出走势
    • 不同类别支出走势图
  3. 收支类型占比
    • 全年收支占比
    • 月收支占比
  4. 报表
    • 全年收支报表
    • 月收支报表
  5. 收支总览
    • 年收支总揽
    • 月收支总揽

Client Android

Android client 采用单Activity 多Fragment的MVI模式

技术栈

服务端

打算迁移到golang and proto3,为方便更多的低功耗设备或家庭服务器使用

服务端使用Java Springboot框架,数据库采用MongoDB

数据集设计

数据库使用MongoDB。一开始服务端数据库使用MySQL,随着业务变更MySQL调整起来非常不便,MongoDB能够快速适应业务的调整,存储票据图片(客户端有压缩)迁移和管理也非常方便。

用户(MUser)

列名类型说 明
_idObjectID自增ID
nameString用户名
passwordString密码
telString电话号码
authorityList<MAuthority>权限(关联权限集)

权限(MAuthority)

列名类型说 明
_idObjectID自增ID
authorityString权限
book_idString账本ID(关联账本集)

账本(MBook)

列名类型说 明
_idObjectID自增ID
book_nameString账本名称
createUserString创建人
coverbyte[]封面图片

账单(MBill)

列名类型说 明
_idObjectID自增ID
book_idString所属账本ID
moneyDouble货币
categoryString账单收支类型
typeInteger收入/支出
dealerString经手人
createUserString创建人
remarkString备注
imagesString[]图片集(关联账单图片)
timeString账单日期(用户选择的日期)
create_timelong创建时间
update_timelong更新时间

账单备份(MBillBackup)

同账单

账单票据图片(MBillImage)

列名类型说 明
_idObjectID自增ID
bill_idString所属账单ID
filenameString文件名
lengthLong文件长度
md5StringMD5
upload_timeLong上传时间
extString后缀名
isGridFSBoolean是否分片
dataBinary二进制图片

账单类型(MCategory)

列名类型说 明
_idObjectID自增ID
book_idString所属账本ID
typeInteger支出/收入
nameString标签名
levelInteger多级标签所属等级
indexInteger排序顺序

同步日志(MOperateLog)

列名类型说 明
_idObjectID自增ID
book_idString根据book划分日志
opeIDInteger操作对象的ID
opeClassString操作对象类别 (操作了账本或账单)
opeTypeInteger操作类型(删除或更新)
opeDateString操作时间(客户端操作时间)

客户端错误日志(MErrorLog)

列名类型说 明
_idObjectID自增ID
deviceModelString设备型号
telString电话号
contentsString日志内容

待补充...

技术栈

感谢 JetBrains 赞助的开源授权

<a href="https://www.jetbrains.com/" target="_blank"> <img src="https://user-images.githubusercontent.com/1787798/69898077-4f4e3d00-138f-11ea-81f9-96fb7c49da89.png" height="200"/></a>