SpringBoot+Vue的一个招聘网站如何实现用户对一个招聘信息进行收藏和关注?底层的逻辑是什么?具体实现代码是什么?
实现用户对一个招聘信息进行收藏和关注,可以通过以下的底层逻辑来实现:
1.创建一个招聘信息表,包含招聘信息的基本信息,如公司名称、职位名称、工作地点、薪资等。
2.创建一个用户表,包含用户的基本信息,如用户名、密码、邮箱等。
3.创建一个收藏表,用于存储用户收藏的招聘信息。收藏表中需要包含用户ID和招聘信息ID。
4.创建一个关注表,用于存储用户关注的公司信息。关注表中需要包含用户ID和公司ID。
5.在前端页面中,为每个招聘信息和公司信息添加收藏和关注按钮。
6.当用户点击收藏按钮时,前端将用户ID和招聘信息ID发送到后端,后端将这些信息存储到收藏表中。
7.当用户点击关注按钮时,前端将用户ID和公司ID发送到后端,后端将这些信息存储到关注表中。
8.在我的收藏和我的关注页面中,前端从收藏表和关注表中查询对应的信息,并展示给用户。
具体实现代码如下:
1.创建招聘信息表
CREATE TABLE job_info (
id INT(11) NOT NULL AUTO_INCREMENT,
company_name VARCHAR(255) NOT NULL,
job_name VARCHAR(255) NOT NULL,
location VARCHAR(255) NOT NULL,
salary VARCHAR(255) NOT NULL,
job_description TEXT NOT NULL,
PRIMARY KEY (id)
);
2.创建用户表
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
3.创建收藏表
CREATE TABLE favorite (
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) NOT NULL,
job_id INT(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (job_id) REFERENCES job_info(id)
);
4.创建关注表
CREATE TABLE follow (
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) NOT NULL,
company_name VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES user(id)
);
5.前端页面中的收藏和关注按钮
<template>
<div>
<button @click="favorite(job.id)">收藏</button>
<button @click="follow(job.company_name)">关注</button>
</div>
</template>
<script>
export default {
methods: {
favorite(id) {
// 发送请求给后端,将用户ID和招聘信息ID存储到收藏表中
},
follow(companyName) {
// 发送请求给后端,将用户ID和公司名存储到关注表中
}
}
}
</script>
6.后端收藏和关注接口实现
// 添加收藏
@PostMapping("/favorite")
public ResponseBody addFavorite(@RequestBody Map<String, Integer> map) {
int userId = map.get("userId");
int jobId = map.get("jobId");
favoriteService.addFavorite(userId, jobId);
return ResponseBody.success("添加收藏成功");
}
// 添加关注
@PostMapping("/follow")
public ResponseBody addFollow(@RequestBody Map<String, Object> map) {
int userId = (int) map.get("userId");
String companyName = (String) map.get("companyName");
followService.addFollow(userId, companyName);
return ResponseBody.success("添加关注成功");
}
7.后端服务实现
@Service
public class FavoriteService {
@Autowired
private FavoriteRepository favoriteRepository;
// 添加收藏
public void addFavorite(int userId, int jobId) {
Favorite favorite = new Favorite();
favorite.setUserId(userId);
favorite.setJobId(jobId);
favoriteRepository.save(favorite);
}
// 查询用户收藏的招聘信息
public List<JobInfo> getFavoriteJob(int userId) {
List<Favorite> favorites = favoriteRepository.findByUserId(userId);
List<JobInfo> jobInfos = new ArrayList<>();
for (Favorite favorite : favorites) {
jobInfos.add(favorite.getJobInfo());
}
return jobInfos;
}
}
@Service
public class FollowService {
@Autowired
private FollowRepository followRepository;
// 添加关注
public void addFollow(int userId, String companyName) {
Follow follow = new Follow();
follow.setUserId(userId);
follow.setCompanyName(companyName);
followRepository.save(follow);
}
// 查询用户关注的公司
public List<Company> getFollowCompany(int userId) {
List<Follow> follows = followRepository.findByUserId(userId);
List<Company> companies = new ArrayList<>();
for (Follow follow : follows) {
companies.add(new Company(follow.getCompanyName()));
}
return companies;
}
}
这样,用户就可以方便地收藏和关注自己感兴趣的招聘信息和公司了
原文地址: https://www.cveoy.top/t/topic/e3gp 著作权归作者所有。请勿转载和采集!