用springboot+mybatis plus +layui 写一个云提醒管理系统
很高兴为您提供帮助。下面是一个简单的云提醒管理系统的实现思路和代码示例:
- 系统需求
该系统需要提供以下功能:
- 用户登录和注册
- 用户可以添加、编辑、删除提醒事项
- 用户可以查看自己的提醒事项列表
- 用户可以设置提醒时间和提醒方式(邮件、短信、微信等)
- 系统需要按照设置的时间发送提醒信息
- 技术选型
为了快速开发该系统,我们选择使用以下技术:
- Spring Boot:用于快速构建应用程序
- MyBatis Plus:用于简化数据访问层的操作
- Layui:用于构建前端页面
- 数据库设计
我们需要设计两张表来存储用户和提醒事项:
- 用户表(user)
|字段|类型|描述| |---|---|---| |id|bigint(20)|主键| |username|varchar(50)|用户名| |password|varchar(50)|密码|
- 提醒事项表(reminder)
|字段|类型|描述| |---|---|---| |id|bigint(20)|主键| |user_id|bigint(20)|用户ID| |content|varchar(255)|提醒内容| |remind_time|datetime|提醒时间| |remind_method|varchar(50)|提醒方式|
- 代码实现
(1)创建Spring Boot项目
可以在官网下载Spring Boot的脚手架,也可以使用IDEA等工具创建。
(2)添加依赖
在pom.xml文件中添加以下依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- Layui -->
<dependency>
<groupId>com.layui</groupId>
<artifactId>layui</artifactId>
<version>2.5.7</version>
<scope>compile</scope>
</dependency>
</dependencies>
(3)配置数据源
在application.properties文件中添加以下配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/cloud_reminder?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
(4)创建实体类
我们需要创建两个实体类User和Reminder,分别对应数据库中的user和reminder表。
User.java:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String username;
private String password;
}
Reminder.java:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Reminder implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long userId;
private String content;
private LocalDateTime remindTime;
private String remindMethod;
}
(5)创建Mapper接口
我们需要创建两个Mapper接口UserMapper和ReminderMapper,分别对应数据库中的user和reminder表。
UserMapper.java:
public interface UserMapper extends BaseMapper<User> {
}
ReminderMapper.java:
public interface ReminderMapper extends BaseMapper<Reminder> {
List<Reminder> selectByUserId(Long userId);
}
(6)创建Service接口和实现类
我们需要创建两个Service接口UserService和ReminderService,分别对应用户和提醒事项的操作。然后在创建实现类UserServiceImpl和ReminderServiceImpl。
UserService.java:
public interface UserService {
User login(String username, String password);
void register(User user);
}
UserServiceImpl.java:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User login(String username, String password) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", username).eq("password", password);
return userMapper.selectOne(queryWrapper);
}
@Override
public void register(User user) {
userMapper.insert(user);
}
}
ReminderService.java:
public interface ReminderService {
void addReminder(Reminder reminder);
void updateReminder(Reminder reminder);
void deleteReminder(Long id);
List<Reminder> getReminderList(Long userId);
}
ReminderServiceImpl.java:
@Service
public class ReminderServiceImpl implements ReminderService {
@Autowired
private ReminderMapper reminderMapper;
@Override
public void addReminder(Reminder reminder) {
reminderMapper.insert(reminder);
}
@Override
public void updateReminder(Reminder reminder) {
reminderMapper.updateById(reminder);
}
@Override
public void deleteReminder(Long id) {
reminderMapper.deleteById(id);
}
@Override
public List<Reminder> getReminderList(Long userId) {
return reminderMapper.selectByUserId(userId);
}
}
(7)创建控制器
我们需要创建两个控制器UserController和ReminderController,分别对应用户和提醒事项的操作。
UserController.java:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public ResultVO login(@RequestBody User user) {
User loginUser = userService.login(user.getUsername(), user.getPassword());
if (loginUser != null) {
return ResultVO.success(loginUser);
} else {
return ResultVO.error("用户名或密码错误!");
}
}
@PostMapping("/register")
public ResultVO register(@RequestBody User user) {
userService.register(user);
return ResultVO.success();
}
}
ReminderController.java:
@RestController
@RequestMapping("/reminder")
public class ReminderController {
@Autowired
private ReminderService reminderService;
@PostMapping("/add")
public ResultVO addReminder(@RequestBody Reminder reminder) {
reminderService.addReminder(reminder);
return ResultVO.success();
}
@PostMapping("/update")
public ResultVO updateReminder(@RequestBody Reminder reminder) {
reminderService.updateReminder(reminder);
return ResultVO.success();
}
@PostMapping("/delete")
public ResultVO deleteReminder(@RequestParam Long id) {
reminderService.deleteReminder(id);
return ResultVO.success();
}
@GetMapping("/list")
public ResultVO getReminderList(@RequestParam Long userId) {
List<Reminder> reminderList = reminderService.getReminderList(userId);
return ResultVO.success(reminderList);
}
}
(8)创建前端页面
我们使用Layui框架构建前端页面,具体代码可以参考官方文档。
(9)定时任务
我们需要在系统中添加一个定时任务,每隔一段时间检查数据库中的提醒事项,并按照设置的时间发送提醒信息。
@Component
public class ReminderTask {
@Autowired
private ReminderMapper reminderMapper;
@Scheduled(cron = "0 0/1 * * * ?")
public void execute() {
LocalDateTime now = LocalDateTime.now();
QueryWrapper<Reminder> queryWrapper = new QueryWrapper<>();
queryWrapper.le("remind_time", now).ne("remind_method", "无");
List<Reminder> reminderList = reminderMapper.selectList(queryWrapper);
for (Reminder reminder : reminderList) {
// 发送提醒信息
}
}
}
- 总结
通过以上步骤,我们成功地实现了一个简单的云提醒管理系统。当然,这只是一个基础的框架,你可以根据实际需求添加更多的功能和优化。希望本文能够对你有所帮助,谢谢阅读!
原文地址: https://www.cveoy.top/t/topic/CRL 著作权归作者所有。请勿转载和采集!