这篇文章只讲述RuleApi如何进行简单的二次开发,并且在阅读前,请先在心理不断的强调一点,那就是这些东西没有什么难度,大多数甚至变通程度不如小学数学题,很多时候总是把简单的事情想成很困难是不好的。所以,在这篇文章,我会简单的讲解RuleApi代码的目录结构,如何创建新接口,如何修改旧接口,如何创建新数据库字段,如何让数据库语句可以执行。
虽然说不需要懂太多,但是编程的基本思想要有,比如知道什么是接口,什么是参数,什么是数据库,如果这里不知道,那么这篇文章就没有看下去的意义了。
如果是二次开发进行商业售卖,请申明基于RuleApi。开源不易,如果你觉得好用的话,可以通过下方链接赞助。
提示
我已经在语雀补充了更加详细的文档,建议前往阅读:RuleProject社区应用帮助文档
注意
1.虽然RuleApi是通过Java语言的Springboot框架开发,但是不等于要学会java,甚至根本用不到什么java知识,全程都可以复制粘贴,简单修改。
2.我的代码是属于一边学一边做,可能有很大的优化空间,如果技术好点的情况下,可以自己发挥能力大改。
3.每次修改完都需要重启才生效,这里和php或者前端都是不一样的。
4.JAVA属于强类型语言,所以各种类型需要做好申明,类型有时候也需要转换,但是百度有一大堆教程。
前期准备:
请根据如下教程,跳过代码的部分,只看安装基本环境
部分,安装好JAVA环境,Redis还有一堆文章内提供的工具,包括IDEA。其它的代码啊,java教程啥的,就别看了,和他们无关。
Springboot半小时入门教程,代码加案例,新手摸坑大全
目录结构
如下图所示,通过IDEA导入项目,打开项目的src/main/java就可以看到代码目录了。最重要的文件夹是web,放入了所有接口和主要逻辑,其次就是common文件夹放的公共方法,然后就是mapper里面的xml形式的数据库语句,和static里面的接口网页和可视化配置中心。
IDEA基本操作
1.启动项项目:导入项目后,开启本地的各类环境,如Redis和Mysql之后,可点击如下图所示的方法启动项目。打开后可通过127.0.0.1:8081访问,如果要改端口,可以打开resources目录下的application.properties文件。
2.修改完后打包项目:在右边可以看到竖起来的Maven,点击后如下图所示,双击package即可开始打包,打包的jar文件会出现在/RuleApi/target目录,这时候只需要把这个jar文件修改名称,替换你服务器opt目录下的jar文件,就可以运行重启指令,开始你的二开版本了。
2.修复错误:如果你的项目出现问题,最常见的就是代码错误,或者多了标点符号,这个时候将无法打包,但是IDEA会准确的告诉你在哪个文件和哪一行以及具体位置,这时就需要你自己找到修复。
修改旧接口
如果你需要对已有的接口进行修改,那么可以首先看接口的路径,比如/typechoUsers/userInfo。因为所有的接口都在web目录,这个目录可以理解为控制器,所以只需要找对应名称的文件即可,比如我找到了TypechoUsersController,如下图所示。另外申明一点,我所有的代码实际上都演示了很多案例,可以自己复制粘贴来做修改
。
其中的一些重要的代码含义如下:
@RequestMapping(value = "/userInfo") //定义接口路径
@RequestParam(value = "key", required = false) String key //接收一个名为key的参数
TypechoUsers info = service.selectByKey(key); //通过key拿到这个用户的所有信息。
service相当于调用数据库的执行方法,比如selectByKey就代表主键查询,根据用户ID查询所有信息,具体可以打开mapper文件夹的所有XML文件,查看具体的注释,如下图所示。
而service可以调用所有模块的数据库语句,如用户模块,文章模块,评论模块,具体需要去看TypechoUsersController的头部代码,如下图所示:
@Autowired
TypechoUsersService service; //调用本模块(用户模块)数据库方法
@Autowired
private TypechoContentsService contentsService; //调用文章模块数据库方法
@Autowired
private TypechoCommentsService commentsService; //调用评论模块数据库方法
有了数据库的方法,然后还需要一些常用的方法来复制和使用,如下所示:
判断是否登录
需要在这个接口里,加入如下的参数接收
@RequestParam(value = "key", required = false) String key
然后就可以用如下代码判断登录状态
Integer uStatus = UStatus.getStatus(token,this.dataprefix,redisTemplate);
if(uStatus==0){
return Result.getResultJson(0,"用户未登录或Token验证失败",null);
}
获取当前登录用户信息
map拿出所有的信息,map里面就可以拿到各种字段信息。
Map map =redisHelp.getMapValue(this.dataprefix+"_"+"userInfo"+token,redisTemplate);
Integer uid = Integer.parseInt(map.get("uid").toString()); //拿到用户id
String group = map.get("group").toString(); //拿到用户权限组,和typecho一致。
存入Redis和取出Redis
这里可以参考我的列表接口和详情接口,里面提供了具体的存入,判断,取出案例,这里不做多概述。核心就是反正代码写错了电脑又不会爆炸,大不了还原重来。
调用全局方法
在TypechoUsersController的头部,还可以找到如下代码,这些都是定义的全局方法,他们都在common文件夹中。
RedisHelp redisHelp = new RedisHelp();
ResultAll Result = new ResultAll();
baseFull baseFull = new baseFull();
UserStatus UStatus = new UserStatus();
HttpClient HttpClient = new HttpClient();
PHPass phpass = new PHPass(8);
他们的用法可以搜索查看,比如redisHelp负责存取redis数据,Result负责返回接口数据,baseFull定义了一堆常用方法,UStatus判断用户登录状态,HttpClient负责接口端发送请求,phpass负责密码的加密和验证。直接搜索代码或者打开文件看注释就可以看到用法。
添加新接口
你可以选择在web下已有的文件中添加接口,比如在TypechoUsersController中,访问就是如下所示:
/typechoUsers/新接口路径
具体的代码参考如下:
@RequestMapping(value = "/newUrl")
@ResponseBody
public String newUrl() {
response.put("code" , 1);
response.put("data" , "这是数据");
response.put("msg" , "这是提示");
return response.toString();
}
如果你需要添加新的模块,那么可以直接在web文件夹下,以其它文件名称的格式创建新文件,内部的代码可以直接先复制,就像install和pay开头的那两个文件一样。先定义一级路径访问,再开始创建二级路径方法。
进阶教程
这里将演示一些实际的进阶案例。
添加一个数据库字段
如果要添加一个数据库字段,那么主要有三个文件要改,一是web下的InstallController,在安装方法newInstall里,就可以看到更新和安装的所有数据库语句,因为你需要增加一个可以修改值的字段,那么就肯定需要让安装和更新也支持这个新字段。如下案例所示(更多可以直接参考InstallController内写法)
//查询文章表是否存在likes字段
i = jdbcTemplate.queryForObject("select count(*) from information_schema.columns where table_name = '"+prefix+"_contents' and column_name = 'likes';", Integer.class);
if (i == 0){
jdbcTemplate.execute("alter table "+prefix+"_contents ADD likes integer(10) DEFAULT 0;");
text+="内容模块,字段likes添加完成。";
}else{
text+="内容模块,字段likes已经存在,无需添加。";
}
然后修改类文件,比如我是给文章表增加了字段,那就是需要entity下的文章类TypechoContents里增加一个对应的字段。
/**
* likes
*/
private Integer likes;
然后就可以修改数据库XMl了,这里是最简单的,直接按照原有的格式修改,只需要注意一些分割的逗号就好了,如下图所示。
到这里,新字段就创建完了,对于如何使用,代码那些增加,删除,修改,查列表的都有具体的演示。这里的要点就是,不要管代码多不多,而是要看是不是有啥很明显的规律,实际上我自己也记不住,都是看之前的代码参考着写。
添加一个新数据表
这里我就不写代码了,代码越多越让人觉得难,其实这个直接复制粘贴就好了,通过已有的代码开始改就行。我的做法是通过如下教程的代码生成器,选择指定的数据表,生成代码,再拖进项目。
Springboot半小时入门教程,代码加案例,新手摸坑大全
补充
java里判断是否相等不是==,而是如下的代码范例,这里要注意:
if(isInvite.equals(1)){
isInvite这个字段等于1
}
if(!isInvite.equals(1)){
isInvite这个字段不等于1
}
springboot的架构核心就是全部都封装为类,比如定义了类之后,创建类字段,然后存或者取(set是存,get是取,这里IDEA自动生成代码不需要自己记忆和手写)。
TypechoUserapi isApi = new TypechoUserapi();
isApi.setOpenId("字段值");
isApi.setAppLoginType("字段值");
最后
看完觉得代码很多记不住?我自己都记不住,都是复制粘贴,和IDEA编辑器自动弹出补全,根本就不要求记住,只需要了解一个思路和原理。
实在不行可以加群一起探讨。QQ群692117682
写的很有道理
好厉害呀
支持