# wf **Repository Path**: ozj127/wf ## Basic Information - **Project Name**: wf - **Description**: 基于boot,webservice,quartz,mail的天气预报,数据库持久化实现。 - **Primary Language**: Java - **License**: AFL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-01 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 部署运行 ## 关于wf 首先呢,这个是我学习boot时候的一个想法,就是给自己做一个任务管理器,想来想去就做了这个天气预报的。 里面用到了: > - spring boot (必须的) > - quartz (动态任务的实现,实现了持久化) > - spring security (动态权限管理) > - fastjson (返回对象自动解析为json数据或者接收json数据为javabean) > - druid alibaba (数据库连接池) > - javamail (邮件发送) > - webservice (中华万年历的天气接口,获取天气数据) > - Mybatis (主要是管理我自己写的两个表的) > - mysql (mysql数据库以及相应的依赖) > - Actuator (用于获取程序信息) ## 关于Actuator [可以直接查看我的这篇博客](http://www.ozjxh.com/post/1583160755),日后我也会把这个项目的相关内容整理发到上面。 ## 关于数据库 在sql目录下找到相应的sql文件,新建数据库运行部署即可,另,本项目新建了两个表用于管理 用户以及用户的任务,名为user,task;新建了四个表role,menu,role_user,menu_role 用于管理用户的权限,修改application.properties以及quartz.properties文件里对应的数据库配置。 > 例子:我的是mysql的数据库,所以在sql目录下找到tables_mysql.sql,user.sql,task.sql > 运行部署即可。或者你可以直接运行quartz.sql。关于role,menu,role_user,menu_role > 四个sql文件请自行到quartz.sql里找一找呀。 ## 关于动态权限 _其实是没啥权限可言的哈,就是为了试验一下Security的,不要在意这些细节。_ 以本项目的url为例,共三类即/users/**,/weather/**,/task/**,简单起见,我在menu里 存了对应的三个URL,在role表里我设置了三个role,即ROLE_USER,ROLE_ADMIN,ROLE_DB, 为了表示清楚,再来三个user:root,admin,user。 定义:ROLE_USER < ROLE_ADMIN < ROLE_DB , ROLE_USER 对应/users/**,ROLE_ADMIN 继承ROLE_USER以及扩展了/weather/**,ROLE_ROOT拥有全部权限。 那么怎么在数据库里设置他们的权限呢?请看quart.sql。 ## 关于邮箱配置 在application.properties文件里有着发送邮件的配置,将其改为你自己的即可。 QQ邮箱步骤如下: > 打开你的邮箱首页,进入设置,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 > 这里我们用到的是SMTP服务,所以我们点击开启该服务,按步骤往下走,你会得到一个授权码 > ,这个授权码就是你的密码了(spring.mail.password)。这个码是可以再次生成的,忘了也不要紧。 ## 关于天气接口 这个讲道理是随便一个都可以的,只有你能把数据解析出来都可以。这里我们用的是中华万年历的天气接口 > - 通过城市名字获得天气数据 :http://wthrcdn.etouch.cn/weather_mini?city=长沙 > - 通过城市id获得天气数据:http://wthrcdn.etouch.cn/weather_mini?citykey=101280601 > - 城市的id值 https://www.cnblogs.com/emo-Studio/p/6840534.html ## 关于如何运行 可能你以及注意到了,这里我们并没有前端,也就是说我们是没有界面的。那我为了这个小项目写一个webservice 好像有点小困难,所以我在这里用的是postman来进行操作的。 [postman collection url](:https://www.getpostman.com/collections/58c74ed33381051f1c2e) 打开你的postman导入链接,这里我们加入了Security,所以请确保你的postman支持cookie, 不过不用担心,一般是支持的而且不用你设置。接下来: > - 利用注册接口进行注册,这里我们会发送一个url到你的邮箱,用来检验你的邮箱是否可用,将该url用postman访问即可 > - 邮箱检验通过会返回一个token,把它存到你的环境变量里去,这个token就是我们用来辨认身份的 > - 修改密码,按要求发送相应数据即可 > - 添加任务,在task目录下找到添加任务请求,填写相应数据,成功会返回相应数据 > - 暂停,删除,恢复任务都是由一个请求(管理任务)控制的,输入不同type的值即可,如pause,remove,resume > - 修改任务的cron,请输入正确的cron -_- > - 如果你忘记了你任务的相关信息,可以通过查看所有任务的请求得到你所有的任务 > - 通过城市id或者城市名称可以直接得到天气信息