目 录CONTENT

文章目录

RuleApi二次开发入门教程,从修改到打包

老K博客
2023-09-14 / 0 评论 / 0 点赞 / 197 阅读 / 2,702 字 / 正在检测是否收录...
广告 广告

这篇文章只讲述RuleApi如何进行简单的二次开发,并且在阅读前,请先在心理不断的强调一点,那就是这些东西没有什么难度,大多数甚至变通程度不如小学数学题,很多时候总是把简单的事情想成很困难是不好的。所以,在这篇文章,我会简单的讲解RuleApi代码的目录结构,如何创建新接口,如何修改旧接口,如何创建新数据库字段,如何让数据库语句可以执行。

虽然说不需要懂太多,但是编程的基本思想要有,比如知道什么是接口,什么是参数,什么是数据库,如果这里不知道,那么这篇文章就没有看下去的意义了。

注意

1.虽然RuleApi是通过Java语言的Springboot框架开发,但是不等于要学会java,甚至根本用不到什么java知识,全程都可以复制粘贴,简单修改。

2.我的代码是属于一边学一边做,可能有很大的优化空间,如果技术好点的情况下,可以自己发挥能力大改。

3.每次修改完都需要重启才生效,这里和php或者前端都是不一样的。

4.JAVA属于强类型语言,所以各种类型需要做好申明,类型有时候也需要转换,但是百度有一大堆教程。

前期准备:

安装基本环境

1.直接前往官方下载最新的企业版,地址是:点击进入,下载好之后可以自己去淘宝买激活账号(10块钱左右),或者从网上找破解补丁(不建议,但是确实能用)。

2.配置java环境,可以直接去官方下载,按照网上的教程安装(java高版本兼容低版本,但是综合考虑的话可以下载一些稳定版)。或者用我提供的超快速组合包,我不在文章里说怎么用,反正下载解压了你肯定可以傻瓜式配置完环境。弄完了打开cmd,输入java -version确认结果是这样就行。

链接:https://pan.baidu.com/s/1NoWfdOAUkB7i1YQUrxJ5XA 
提取码:0k3z 

3.安装mysql数据库,如果要专业的话,可以去网上下载mysql安装包,配套mysql管理工具Navicat。如果超省事的话(推荐),去这里下载一个phpstudy,启动之后只开启mysql服务(用户名和密码都是root),前后网速快可能就两分钟,下载地址:点击下载

4.mysql的管理工具就用phpstudy自带的就行,打开之后看见localhost那个就是链接本地数据库的。

目录结构

如下图所示,通过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了,这里是最简单的,直接按照原有的格式修改,只需要注意一些分割的逗号就好了,如下图所示。

添加一个新数据表

这里我就不写代码了,代码越多越让人觉得难,其实这个直接复制粘贴就好了,通过已有的代码开始改就行。我的做法是通过如下教程的代码生成器,选择指定的数据表,生成代码,再拖进项目。

补充

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("字段值");
0
广告 广告

评论区