图书租借系统V0.0.2
【摘要】 从这篇文章的名字不难看出,我是真的没有东西可写了,想看的多,能写的不多,上周的图书租借也因为临时群里讨论才想到的,但讨论到netty一对一聊天实现聊天框倒是有了新的东西可以看。 在用户登录服务端时,获取用户ip与id绑定,放入channelgroup,每次循环遍历这个ip对应的channel,否则返回false,在用户状态取到是否在线,离线之后的消息/留言还不知道怎么处理。1.上传图书...
从这篇文章的名字不难看出,我是真的没有东西可写了
,想看的多,能写的不多,上周的图书租借也因为临时群里讨论才想到的,但讨论到netty一对一聊天实现聊天框倒是有了新的东西可以看。
在用户登录服务端时,获取用户ip与id绑定,放入channelgroup,每次循环遍历这个ip对应的channel,否则返回false,在用户状态取到是否在线,离线之后的消息/留言还不知道怎么处理。
1.上传图书审核通过后展示在页面
2.图片存储位置:暂时用服务器存储即可
3.审核后还要通知上传人信息,站内信形式通知
4.页面有我要租书 我要出租
5.上传判断书名重复
6.上传后保存信息到book表,审核读取此表信息,筛选审核通过的展示
后台审核功能
7.审核上传图书 改变上传状态为已通过后可显示在前端
/*
Navicat Premium Data Transfer
Source Server : localhost
Source Server Type : MySQL
Source Server Version : 50617
Source Host : localhost:3306
Source Schema : borrowbook
Target Server Type : MySQL
Target Server Version : 50617
File Encoding : 65001
Date: 19/12/2019 11:13:31
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(11) NOT NULL COMMENT '主键',
`userId` int(11) DEFAULT NULL COMMENT '关联拥有人',
`bookname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '书名',
`status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '状态0:闲置 1:已借出3:预约',
`backTime` datetime(0) DEFAULT NULL COMMENT '归还时间',
`cover_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '图书封面',
`verifystatus` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '审核状态,审核通过展示',
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
`language` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '书籍所属语言 java,python,大数据等',
`price` decimal(10, 2) DEFAULT NULL COMMENT '租用价格/天',
`borrowtime` datetime(0) DEFAULT NULL COMMENT '借出时间',
`upload_time` datetime(0) DEFAULT NULL COMMENT '上传时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL COMMENT '主键',
`uuid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '关联id',
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名字',
`nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '昵称',
`sex` int(2) DEFAULT NULL COMMENT '性别 0:女 1:男',
`concat_phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系电话',
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地址',
`status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '是否在线',
`user_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户ip',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
SET FOREIGN_KEY_CHECKS = 1;
用户请求登录后获取用户的ip
public String getUserIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
try {
if (ip == null || ip.length() == 0
|| "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0
|| "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0
|| "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
if (ip.equals("127.0.0.1") || ip.equals("0:0:0:0:0:0:0:1")) {
// 根据网卡取本机配置的IP
InetAddress inet = InetAddress.getLocalHost();
ip = inet.getHostAddress();
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ip != null && ip.length() > 15) { // "***.***.***.***".length()
// = 15
if (ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
}
}
if (ip != null && ip.length() > 15) { // "***.***.***.***".length()
// = 15
if (ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
System.out.println("ip" + ip);
} catch (Exception e) {
e.printStackTrace();
}
return ip;
}
用户上传的数据保存到template表中
@RequestMapping("/upload")
public Result userLogin(User user){
String loginname = user.getLoginname();
try {
Assert.isNull(loginname, MessageCode.LOGIN_NAME_NOT_NULL);
} catch (Exception e) {
e.printStackTrace();
return Result.fail();
}
userService.addUserTemplate(user);
return Result.success();
}
现在除了页面,逻辑其实就是聊天功能要稍微复杂一些,暂时考虑的点就这么多,目前没写到页面实现,至于离线消息的存储也需要考虑,一个小系统描述起来简单,实际写起来还是需要点时间的,尽快能完成吧!下周的年终总结已经提前写好了,等待下周发出来吧。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)