赞
踩
1. 管理端: 带有职位的增删改查功能,评论功能是针对新闻模块的,类似新闻大数据的实现
2. 网站端: python / java 协同过滤推荐算法 / 下载职位数据表收费1元每条 / 账户充值 / 短信验证码修改密码 / 身份证识别 / 多条件搜索
3. 大屏端: SparkUtils 之大屏
* 职位的评论带情感分析,和新闻里用的技术一样,可在管理端评论管理中查看结果
核心算法代码分享如下:
- package com.university.demo.controller;
-
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.university.demo.dao.JobDao;
- import com.university.demo.dao.NewsDao;
- import com.university.demo.entity.*;
- import com.university.demo.entity.request.NewsRequest;
- import com.university.demo.entity.request.SearchRequest;
- import com.university.demo.entity.response.JobVo;
- import com.university.demo.entity.response.NewsVo;
- import com.university.demo.entity.system.ServerResponse;
- import com.university.demo.python.TransferPython.ToPython;
- import com.university.demo.service.*;
- import com.university.demo.service.impl.TokenService;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.mahout.cf.taste.recommender.RecommendedItem;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import org.xm.tendency.word.HownetWordTendency;
-
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * @author redcomet
- * @since 2022-06-24
- */
- @RestController
- @RequestMapping("/job")
- public class JobController {
-
- @Autowired
- private JobService jobService;
-
- @Autowired
- ToPython toPython;
-
- @Autowired
- private CommentService commentService;
-
- @Autowired
- private RateService rateService;
-
- @Autowired
- private JobDao jobDao;
-
- @Autowired
- private ThumbService thumbService;
-
- @Autowired
- private ConcernService concernService;
- @Autowired
- private StarService starService;
-
- @PostMapping("/modify")
- public ServerResponse modify(@RequestBody Job job) {
- return jobService.updateById(job) ? ServerResponse.ofSuccess("更新成功!") : ServerResponse.ofError("更新失败!");
- }
-
- @GetMapping("/delete/{id}")
- public ServerResponse delete(@PathVariable("id") Integer id) {
- return jobService.removeById(id) ? ServerResponse.ofSuccess("删除成功!") : ServerResponse.ofError("删除失败!");
- }
-
- @GetMapping("/{id}")
- public ServerResponse query(@PathVariable("id") Integer id) {
- return ServerResponse.ofSuccess(jobService.getById(id));
- }
-
- // 根据【点赞-thumb】来进行倒序排序
- @GetMapping("/news/{page}")
- public ServerResponse querys(@PathVariable("page") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- Page<Job> pages = new Page<>(page, limit);
- QueryWrapper<Job> wrapper = new QueryWrapper<Job>().orderByDesc("job_salary");
- IPage<Job> iPage = jobService.page(pages, wrapper);
- return ServerResponse.ofSuccess(iPage);
- }
-
-
- // 后端的接口
- @PostMapping("/search2")
- public ServerResponse search2(@RequestBody SearchRequest params,
- @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- QueryWrapper<Job> wrapper = new QueryWrapper<>();
- wrapper.orderByDesc("job_date");
- wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_name", params.getKeyword());
- // .eq(!StringUtils.isEmpty(params.getType()), "type", params.getType())
- // .eq("deleted", false);
- Page<Job> pages = new Page<>(page, limit);
- IPage<Job> iPage = jobService.page(pages, wrapper);
- if (page != null) {
- return ServerResponse.ofSuccess(iPage);
- }
- return ServerResponse.ofError("查询不到数据!");
- }
-
- @GetMapping({"/search/{keyword}", "/search/"})
- public ServerResponse search(@PathVariable(value = "keyword", required = false) String keyword, @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- QueryWrapper<Job> wrapper = new QueryWrapper<>();
- wrapper.orderByDesc("job_date");
- wrapper.like(!StringUtils.isEmpty(keyword), "job_name", keyword);
- Page<Job> pages = new Page<>(page, limit);
- IPage<Job> iPage = jobService.page(pages, wrapper);
- if (page != null) {
- return ServerResponse.ofSuccess(iPage);
- }
- return ServerResponse.ofError("查询不到数据!");
- }
-
- @PostMapping("/add")
- public ServerResponse add(@RequestBody Job job) {
- job.setId(jobDao.getMaxId());
- boolean b = jobService.save(job);
- if (b) {
- return ServerResponse.ofSuccess("添加成功", job);
- }
- return ServerResponse.ofError("添加失败!");
- }
-
- /* 给前端用的 */
-
- @GetMapping({"/fontsearch/{username}"})
- public ServerResponse fontsearch(@PathVariable(value = "username", required = false) String username, @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- QueryWrapper<Job> wrapper = new QueryWrapper<>();
- wrapper.orderByDesc("update_time");
- wrapper.like(!StringUtils.isEmpty(username), "job_name", username)
- .eq("deleted", false);
- Page<Job> pages = new Page<>(page, limit);
- IPage<Job> iPage = jobService.page(pages, wrapper);
- if (page != null) {
- return ServerResponse.ofSuccess(iPage);
- }
- return ServerResponse.ofError("查询不到数据!");
- }
-
- // 推荐1
- // Mahout 基于协同过滤的推荐接口 基于User的皮尔逊相关系数
- @PostMapping({"/recommend"})
- public ServerResponse recommends(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- List<JobVo> records = new ArrayList();
- List<RecommendedItem> items = rateService.getRecommendItemIds(query.getUserId(), 5);
- for (RecommendedItem item : items) {
- JobVo vo = new JobVo();
- Job job = jobService.getById(item.getItemID());
- BeanUtils.copyProperties(job, vo);
-
- QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
- wrapper2.eq("remark", job.getId());
- wrapper2.eq("deleted", false);
- List<Comment> comments = commentService.list(wrapper2);
- vo.setComments(comments);
- //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
- if(!StringUtils.isEmpty(username)) {
- // 是否点赞
- QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();
- wrapper3.eq("nid", job.getId()).eq("deleted", false)
- .eq("sid", username);
- int thumbs = thumbService.count(wrapper3);
- if (thumbs > 0)
- vo.setIthumb(true);
- else
- vo.setIthumb(false);
- // 是否关注
- QueryWrapper<Star> wrapper4 = new QueryWrapper<>();
- wrapper4.eq("nid", job.getId()).eq("deleted", false)
- .eq("sid", username).eq("type","news");
- int stars = starService.count(wrapper4);
- if (stars > 0)
- vo.setIstar(true);
- else
- vo.setIstar(false);
- }
- records.add(vo);
- }
-
- return ServerResponse.ofSuccess(records);
- }
-
- @GetMapping({"/getOne/{id}"})
- public ServerResponse getOne(@PathVariable("id") Integer id, @RequestParam String username) {
- JobVo vo = new JobVo();
- Job job = jobService.getById(id);
- BeanUtils.copyProperties(job, vo);
- QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
- wrapper2.eq("remark", job.getId());
- wrapper2.eq("deleted", false);
- List<Comment> comments = commentService.list(wrapper2);
- vo.setComments(comments);
- //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
- return ServerResponse.ofSuccess(vo);
- }
-
- // 推荐2
- @PostMapping({"/recommend2"})
- public ServerResponse recommends2(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- List<JobVo> records = new ArrayList();
-
- String content = toPython.itemrec(String.valueOf(query.getUserId()));
- //转为json数据
- JSONArray jo = JSONObject.parseArray(content);
- for(int i=0;i<jo.size();i++){
- JSONObject obj = jo.getJSONObject(i);
-
- JobVo vo = new JobVo();
- Job job = jobService.getById(obj.getInteger("iid"));
- BeanUtils.copyProperties(job, vo);
-
- QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
- wrapper2.eq("remark", job.getId());
- wrapper2.eq("deleted", false);
- List<Comment> comments = commentService.list(wrapper2);
- vo.setComments(comments);
- //如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者
- if(!StringUtils.isEmpty(username)) {
- // 是否点赞
- QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();
- wrapper3.eq("nid", job.getId()).eq("deleted", false)
- .eq("sid", username);
- int thumbs = thumbService.count(wrapper3);
- if (thumbs > 0)
- vo.setIthumb(true);
- else
- vo.setIthumb(false);
- // 是否关注
- QueryWrapper<Star> wrapper4 = new QueryWrapper<>();
- wrapper4.eq("nid", job.getId()).eq("deleted", false)
- .eq("sid", username).eq("type","news");
- int stars = starService.count(wrapper4);
- if (stars > 0)
- vo.setIstar(true);
- else
- vo.setIstar(false);
- }
- records.add(vo);
- }
-
- return ServerResponse.ofSuccess(records);
- }
-
- /**
- * 综合搜索
- * 2021年12月28日
- */
- @PostMapping({"/searchx"})
- public ServerResponse searchx(@RequestBody NewsRequest params, @RequestParam(defaultValue = "1") Integer page,
- @RequestParam(defaultValue = "10") Integer limit) {
- List<JobVo> response = new ArrayList<>();
- QueryWrapper<Job> wrapper = new QueryWrapper<>();
- wrapper.orderByDesc("job_date");
- if (params != null) {
- wrapper.like(!StringUtils.isEmpty(params.getTitle()), "job_name", params.getTitle());
- wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_company_type", params.getKeyword());
-
- wrapper.ge(!StringUtils.isEmpty(params.getBegin()), "job_date", params.getBegin());
- wrapper.le(!StringUtils.isEmpty(params.getEnd()), "job_date", params.getEnd());
- }
-
- // wrapper.eq("deleted", false);
- Page<Job> pages = new Page<>(page, limit);
- IPage<Job> iPage = jobService.page(pages, wrapper);
- List<Job> jobs = iPage.getRecords();
-
- HownetWordTendency hownet = new HownetWordTendency();
- jobs.forEach(job1 -> {
- JobVo v = new JobVo();
-
- String title = v.getJobName();
- double sim = hownet.getTendency(title);
- if(sim>0)
- v.setTend("正向");
- else if(sim<0)
- v.setTend("负向");
- else
- v.setTend("中性");
- // v.setId(news1.getId());
- BeanUtils.copyProperties(job1, v);
- QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();
- wrapper2.eq("remark", job1.getId());
- wrapper2.eq("deleted", false);
- List<Comment> comments = commentService.list(wrapper2);
- v.setComments(comments);
- response.add(v);
- });
-
- //前端需要返回分页参数
- IPage<JobVo> voPage = new Page<>();
- voPage.setRecords(response);
- voPage.setSize(iPage.getSize());
- voPage.setPages(iPage.getPages());
- voPage.setCurrent(iPage.getCurrent());
- voPage.setTotal(iPage.getTotal());
-
- if (page != null) {
- return ServerResponse.ofSuccess(voPage);
- }
- return ServerResponse.ofError("查询不到数据!");
- }
-
- }
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。