/selfmanager

个人管理网站

Primary LanguageTSQLMIT LicenseMIT

[TOC]

v1.0

演示地址

演示地址

由来

大学的时候,自己有写日记,稍微记一下账单,但是苦于没有好工具可用。有找过类似日事清等一些软件,但这些软件

  • 只能/擅长做某件事(日事清一般用来做行程安排),要几个软件都用才能满足自己各个方法的需求。
  • 数据由他们保存,这是最重要的一点。
    • 一方面是保密问题,像日记这些东西虽然不是什么很机密的,还是存在自己本地的放心。
    • 另一方面导出不是很方便,有的软件提供导出,但可能只能导出成他们专用的格式,这样很不方便转移平台。

所以我基本上很少使用这些工具,总的来说原因就是这些工具并没有给我带来方便。

最开始的时候使用的txt文本来记录,这样的缺点也很明显:

  • 数据需要手动对齐数据。
  • 数据量不能太多不好管理,那个时候基本上一个月一个txt,就像 2018-06-日记2018-06-账单 2018-07-日记 2018-07-账单 个样子,结果后面数量太多。
  • 数据不好获取,其实整理这些日记是为了以后看,账单可能要做一下统计。整在txt中想要查看指定日记和统计不方便。

中间有段时间把日记,账单,行程安排等全部在同一个excel的不同sheet中做,在excel中做有很多好处,解决了txt的缺点:

  • 单元格自带对齐功能。

  • 就一个文件,备份也只需备份这个文件。不管全量还是增量都方便了很多。

  • 使用excel的自带的统计功能也能做一些简单的统计。

但到后面也觉得不方便:

  • 比如行程安排,我在excel中很难一眼看出哪些任务做了没做。如果用不同的背景色标注,一眼过去花花绿绿也难受,某天有什么任务没有完成,还要拉到对应的一天去看,比较麻烦。
  • 后期加入其他一些东西,差不多6,7个sheet,管理起来也比较麻烦了。
  • ......

所以大学期间就想做一个这样的系统,用来管理自己的一些东西。最近乘着有空,就根据自己的需求做了一个简单版本的。虽然这个项目并不是什么优秀的项目,但一方面是如果有人和我一样正在寻找一种解决方案,希望这个项目可以帮到你(虽然这个项目是按着我自己的需求做的,不过日记账单这些应该是通用的,同时如果需要你可以任意修改代码)。另一方面我是一个开源爱好者,在享受到其它开源项目的便利时,我也希望参与其中。

我自己也将持续使用这个项目作为个人管理,如果想到什么好主意也会持续添加到项目中。

介绍

该项目使用到了以下技术/工具

  • ssm框架,spring + springmvc + mybatis
  • maven构建
  • mysql数据库
  • layui界面

日记管理

日记列表:中规中矩的列表界面,可按日期范围进行搜索

注:该项目直接使用layui后台模板,不过做了一些修改:把顶端导航栏缩小,只留下左边和导航栏一样的宽度,给主面板留下足够的空间。

日记列表

添加日记:根据我自己的需求,有日期,天气,写日记地点,心情,日记内容这五项需要输入。

添加日记

账单管理

账单列表:提供根据账单的日期,账单的标签(每个账单只能有一个标签,标签在配置页面中增删改)进行查询日期。

账单列表

添加账单:日期,金额,支付类型(现付/未现付 有些可能使用支付宝的花呗或者京东白条进行支付的),标签(一个账单只能选择一个标签)

添加账单

任务模块

在构建任务模块的时候考虑的比较多。

然后根据我自己的需求,主要分为长期任务,周任务和天任务。

长期任务

长期任务很简单,就任务内容,状态,开始时间和结束时间。主要写一些需要长时间完成的任务,或者留到日后再进行的任务。

长期任务

周任务

周任务大部分是参考长期任务的,该周完成正在进行中的长期任务的部分。

但是因为周任务可能不仅仅包括长期任务,可能还有其他一些本周需要做的但不处于长期任务之列,所以我这里没有将长期任务直接列入周任务,而需要手动添加周任务。

周任务列表

添加周任务,此处是根据PDCA来的,虽然只是四个简单的文本域。

  • plan:我是本周周日写下周的plan。PS:Plan中,不要泛泛而写,目标要很明确(以前我刚开始使用PDCA就犯过这个毛病,被老师批评过)。不写完成某功能,要写产出是什么。比如:不写“完成某项目的功能的划分”,要写“产出该项目的功能结构思维导图”(产出的是思维导图)。 “学习netty框架,到达入门会用”,到底什么程度才算是入门会用?或者写成“学习netty框架,完成一个使用netty提供文件下载小项目“,你会觉得更有成就感?类似的,很清楚最终你完成了该任务,会有什么成果出来即可。
  • do:然后在下周的过程中如果完成了某个任务,就在do中写下完成的日期及完成任务的编号/名称。
  • check:最后下周周日写check,看看自己本周任务完成的情况。分析未完成某项任务的原因,是自己没尽力?还是确实不可阻止的外力导致无法完成?还是自己对任务用时估计错误?进行反思总结,这样可以培养自己对任务进度的估算能力,也有助于认清自己的能力,渐渐的以后安排任务会得心应手。
  • action: 安排下周的action,本周未完成的可以顺延下周,以及安排下周的新任务。

添加周任务

天任务

在介绍天任务之前需要看一下任务管理和任务安排两个模块。

任务管理

任务管理列表页面,根据任务优先级倒序排列。我根据自己的需求,创建任务时按照如下优先级创建任务

  • 紧急任务,优先级10
  • 天任务,优先级为9
  • 周任务,优先级8
  • 月任务,优先级7
  • 年任务,优先级6
  • 临时任务,优先级1

任务管理

任务安排

任务安排,在任务管理的添加的任务,都能够在这里进行安排。安排某任务可以选择一个日期范围。

通常,我会在

  • 今年年末安排下一年的年任务。

  • 本月月末安排下一月的月任务。

  • 本周末安排下周的周任务和天任务。

任务安排

天任务

在天任务列表,使用右侧日期选择器查看某一天的任务。任务有是否完成按钮(完成后勾选)和状态按钮(放弃/未能完成该任务后时去掉勾选)。

所以整个任务模块的思路:长期任务(进行中的长期任务)-->周任务(进行中的长期任务的部分+本周需要完成的其他任务)-->天任务(周任务+固定的周任务+固定的天任务)

这样,只需要每周末安排,然后接下来的一周每天看当天任务即可。

天任务

下面这些模块是为了个人定制的,所以可能不太适合。

图书模块

看书难免有一些读后感,比如读胡适文集,就特别有一些感想吧。之前有在excel中记录读了哪些书以及一些读后感。所以这次也在这个系统中加了一个图书管理模块。

添加图书界面,书名,作者,标签(和账单标签一样在配置页面中增删改),读后感。

添加图书

图书列表

图书列表

大事件管理

添加大事件:日期,类型(固定了三个类型:关于我,认识的人,社会上),事件,感想

添加事件

大事件列表:这个是为了记录一些特别的时间点,也有部分原因是由于发现layui有timeline的功能,所以才打算加入这个模块。

大事件列表

未来的信

0.0 每个时期的心理都不同,写一写,未来看一看,回味一下。

未来的信列表

认识的人管理

其实这几个模块都是根据我自己的excel中的记录变化而来。因为脑子是不可靠的,没办法记住每个人的一些细节,所以我会在这里进行一些记录。

  • 关于人物小传,我常常问长辈一些过去的事,比如我爸妈是怎么认识的,我小时候做过一些什么傻事之类的。所以我会给某些人添加他的小传,记录一些我经历的,听到的事情吧。这些事情不适合写在日记中,所以才有了这个人物小传吧。
  • 关于密语,有的时候会突然想起某个人,同学啊,某个人认识的,我就会到这里写上一些话。

认识的人列表

喜欢的话

总有一些喜欢的话,所以特地弄了一个页面来记录。

喜欢的话列表

配置

下图中,

  • 类型表示该记录属于哪一个类型,当前类型就是一下四种
    • url,每个页面中使用到的url,基本上无需变动。
    • menu,菜单管理,根据需要可以变动
    • bookTag,图书标签
    • billTag,账单标签
  • 分组ID:分组所在ID
  • 属性ID:属性对应id
  • 属性值:属性对应值

配置列表

url

这个一般不需要变动,除非你自己添加了功能,则需要在其中进行配置。

分组ID用于指示该url属于哪个分组

  • 分组ID=bigThing就是大事件,这个名字当然是自己取得,不过页面中获得大事件相关URL是通过 type=url&groupId=bigThing这两个条件来获取的

属性ID用于指示url的用途,比如

  • 属性ID=goAdd就是前往添加页面
  • 属性ID=add就是添加对应记录

这个我都有统一命名。

配置列表

menu

  • 菜单的type为menu。

  • 分组ID:相同分组ID将会出现在同一个菜单栏下。根据分组ID正序排列。

  • 分组名称:会成为父菜单栏的名称,比如当前左侧的导航栏的父菜单栏根据配置有:日常,个人,配置三项

  • 属性ID:根据属性ID正序排列。

  • 属性名称:当前的属性名会变成对应子菜单的名称,比如当前左侧导航栏中日常菜单项下有:日记管理,账单管理等。

  • 属性值:对应页面的url

配置列表

配置列表

bookTag图书标签

图书标签根据自己的需要进行新建,注意类型一定要为bookTag即可。

配置列表

分组ID相同的会被视为同一组,在图书列表界面同一组的会排在一起,如下图

图书列表

billTag账单标签

也和bookTag差不多

配置列表

另外注意的

只有日记和人物小传的字段使用了text,可以输入较多文字。

其他一些文本字段使用的是varchar,文字数量是有限制的。

如果觉得哪个字段长度不够用,可以进行相应的扩大。(注意要事先备份好数据)

安装

目录结构:

  • mysql_script : mysql脚本
  • source :源码
  • war : war包

有两种方式,一种是部署源码,一种是直接使用war包。

部署源码

环境要求

  • JDK1.6及以上
  • tomcat6及以上
  • eclipse/myeclipse
  • mysql数据库
  • maven

步骤:

  • 在Mysql中运行mysql_script/selfmanager.sql脚本,其中有建库命令,建表命令,以及配置表的初始化数据。

  • 解压source文件夹中的selfmananger.rar文件。

  • 将解压后的项目导入加入到你的IDE中,比如eclipse/myeclipse

  • 修改src/main/resources/config/database/mysql.properties中的下面几项为你自己的配置。

    • JDBC.URL
    • JDBC.User
    • JDBC.Password
  • 启动tomcat服务器访问 http://localhost:8080/selfmanager 即可

部署war包

  • 在Mysql中运行mysql_script/selfmanager.sql脚本,其中有建库命令,建表命令,以及配置表的初始化数据。

  • 复制war/selfmanager.war你的tomcat目录/webapps/目录下

  • 进入selfmanager.war中,修改src/main/resources/config/database/mysql.properties中的下面几项为你自己的配置。

    • JDBC.URL
    • JDBC.User
    • JDBC.Password
  • 启动tomcat服务器访问 http://localhost:8080/selfmanager 即可

关于备份建议

备份很重要,备份太勤快又累,懒于备份又要时时刻刻当心数据的丢失。

现在我是一周一备份,丢失一周的数据对我来说是可承受的。之前也次误操作删除了一月的数据,那心情简直沮丧到极点,尤其是日记数据的丢失。

后期可能考虑加入

  • 图表展示:账单,任务完成情况等后期可能加入图表展示。
  • 报表数据导出/导入。
  • 移动版:借用Bootstrap的移动优先概念,大部分人可能会比较习惯使用手机而不是电脑吧。

致谢

感谢 layui ,使用既有的前端框架使得开发速度变快了很多。

感谢404页面的提供者

当然像maven,spring这些工具/框架就更不用说了。

联系我

如果发现bug或者有什么好的建议或意见(比如添加什么模块之类的),可以给我发邮件。

我的邮箱:linxingy@foxmail.com

License

MIT

1.1版本

Bug Fixed

  • BUG1-左侧菜单栏的显示问题:进入页面后,判断哪个左侧菜单栏应该展开有个bug。已修复。
  • BUG2-图书管理界面的一个bug:更改状态后会把该图书对应的标签删除。已修复。

新增修改

新增长期任务明细页面

之前长期任务没有任务明细,当时使用的是一个文本框填写长期任务,我一般写个简短任务内容。

每一周周末,先看看有哪些正在进行的长期任务,然后根据这些长期任务中制定下周计划Plan,然后具体在每一天中去完成。下一周周末的时候,进行周任务的Check,把完成的再反馈到长期任务中。

like this : 长期任务->下一周周任务(Plan)->天任务->下一周周末:周任务(Check)->长期任务

之前这样写在考虑长期任务的时候很方便,只需要大致列出要我能想的到,需要做的东西。但是经过几周的使用,我发现麻烦的地方在于,我每次要从长期任务中copy本周要做的到周任务,然后周任务中汇集了一周要做的,再把周任务中的任务安排到天任务中,最后周末的时候,我还得回顾本周哪些任务完成了,从天任务反方向回到长期任务。这个过程挺繁琐的,所以最后还是考虑来一个长期任务明细。

用法

在长期任务中有一个任务明细列表,在这里我们可以添加对应长期任务的任务明细

图

进入selfmanager这个长期任务,安排了一个日期为2018-07-25的任务。(注意这里安排日期很重要,如果一个任务还没有安排好时间,那就不要选择安排日期。)

图

在周任务页面,本周是2018-07-23到2018-07-29(下图2),进入该周的本周任务列表(下图3)

图

进入任务明细后,你可以看到,所有日期在2018-07-23到2018-07-29的长期任务明细,都会在这里展示,如下就有我们刚刚创建的2018-07-25的那个任务。

(PS:因为有时候有的周任务不属于长期任务的,可以通过右上角的添加进行添加不属于长期任务的周任务)

图

此时,我们到天任务界面,就能够看到那个任务。(我原本想把长期任务通过后台转成天任务,但是这样很麻烦,需要同步两个任务之间的状态等信息,所以就在天任务界面加入了当天长期任务需要完成的任务列表)

图

此时如果我完成了该任务,那么在天任务界面点击"完成"后,那么周任务列表、长期任务列表中该任务也是"完成"状态的,如下图。这样就不需要在周末回顾哪些任务是否已经完成了,一目了然。

图

图

天任务页面

  • 新增:在"天任务"列表界面新增"安排新任务"按钮(只是把添加任务和安排任务合并在一个页面)。下图1处

  • 修改:把任务安排移动到"天任务"界面,点击"安排已有任务"打开。(注意:要停用配置中菜单(menu)中的"任务安排"菜单项)。下图2处

  • 修改:"天任务"页面,数据表格列新增"优先级"一列。(涉及后台代码改动)。下图3处

图

部分页面新增上一项下一项

  • 新增:日记、账单等页面中修改/查看页面中新增上一项下一项。用于便捷查看本页(仅限本页)的数据。

图

停用url连接管理

  • 修改: url(链接管理)用来配置太麻烦了所以不再使用。菜单仍然是配置的

update config set state=1 where type='url'

其它

基本上所有页面js代码调整,页面HTML调整

Sql脚本

执行mysql_script下的selfmanagerV1.1.sql

注意

war包和source中的关于mysql连接的账号密码要改成你自己的。