package com.sicau.recruit.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sicau.commonUtils.utils.ESUtil;
import com.sicau.commonUtils.utils.JwtUtil;
import com.sicau.commonUtils.utils.PageUtil;
import com.sicau.commonUtils.vo.PageVO;
import com.sicau.commonUtils.vo.RecruitmentInnerDetailVO;
import com.sicau.commonUtils.vo.UserInnerVO;
import com.sicau.recruit.client.UserClient;
import com.sicau.recruit.entity.enums.recruitment.PostStatusEnum;
import com.sicau.recruit.entity.enums.recruitment.RecruitStatusEnum;
import com.sicau.recruit.entity.params.recruitment.RecruitmentFrontPageParams;
import com.sicau.recruit.entity.params.recruitment.RecruitmentPageParams;
import com.sicau.recruit.entity.params.recruitment.RecruitmentPostParams;
import com.sicau.recruit.entity.params.recruitment.RecruitmentUpdateParams;
import com.sicau.recruit.entity.po.RecruitmentContent;
import com.sicau.recruit.entity.po.TeachingSupport;
import com.sicau.recruit.entity.vo.recrutitment.RecruitmentDocumentVO;
import com.sicau.recruit.entity.vo.recrutitment.RecruitmentFrontDetailVO;
import com.sicau.recruit.entity.vo.recrutitment.RecruitmentFrontPageVO;
import com.sicau.recruit.entity.vo.recrutitment.RecruitmentPageVO;
import com.sicau.recruit.mapper.RecruitmentContentMapper;
import com.sicau.recruit.mapper.TeachingSupportMapper;
import com.sicau.recruit.service.TeachingSupportService;
import com.sicau.serviceBase.CodeEnum;
import com.sicau.serviceBase.exceptionHandler.GlobalRunTimeException;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.MatchPhraseQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* <p>
* 服务实现类
* </p>
*
* @author jay
* @since 2022-02-26
*/
@Service
public class TeachingSupportServiceImpl extends ServiceImpl<TeachingSupportMapper, TeachingSupport> implements TeachingSupportService {
@Resource
private TeachingSupportMapper teachingSupportMapper;
@Resource
private RecruitmentContentMapper recruitmentContentMapper;
@Autowired
private UserClient userClient;
@Autowired
private RestHighLevelClient restHighLevelClient;
@Override
public void postSupport(RecruitmentPostParams recruitmentPostParams, HttpServletRequest request) {
TeachingSupport teachingSupport = new TeachingSupport();
BeanUtils.copyProperties(recruitmentPostParams,teachingSupport);
teachingSupport.setPostStatus(PostStatusEnum.REVIEWING.type);
teachingSupport.setCreator(JwtUtil.getMemberIdByJwtToken(request));
RecruitmentContent recruitmentContent = new RecruitmentContent();
BeanUtils.copyProperties(recruitmentPostParams,recruitmentContent);
long id = IdWorker.getId();
QueryWrapper<TeachingSupport> queryWrapper = new QueryWrapper<TeachingSupport>()
.eq("teaching_support_title", recruitmentPostParams.getTeachingSupportTitle());
teachingSupport.setId(id);
recruitmentContent.setId(id);
if (0 != teachingSupportMapper.selectCount(queryWrapper)){
throw new GlobalRunTimeException(CodeEnum.FAIL.getType(), "标题重复,请重新输入");
}
//将数据存储到ES中
try {
IndexRequest indexRequest = new IndexRequest("teaching_support");
RecruitmentDocumentVO recruitmentDocumentVO = new RecruitmentDocumentVO();
BeanUtils.copyProperties(recruitmentPostParams,recruitmentDocumentVO);
recruitmentDocumentVO.setId(String.valueOf(id));
recruitmentDocumentVO.setCreateTime(new Date());
indexRequest.timeout(TimeValue.timeValueMillis(1000));
indexRequest.id(String.valueOf(id));
indexRequest.source(JSON.toJSONString(recruitmentDocumentVO), XContentType.JSON);
restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
restHighLevelClient.close();
} catch (IOException e) {
e.printStackTrace();
}
if (0 == teachingSupportMapper.insert(teachingSupport)){
throw new GlobalRunTimeException(CodeEnum.FAIL.getType(),"添加招募信息失败");
}
recruitmentContentMapper.insert(recruitmentContent);
}
@Override
public void deleteSupportAndContentById(Long id) {
try {
DeleteRequest request = new DeleteRequest("teaching_support", id.toString());
request.timeout("1s");
restHighLevelClient.delete(request, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
int result1 = teachingSupportMapper.deleteById(id);
int result2 = recruitmentContentMapper.deleteById(id);
if (result1 == 0 || result2 == 0)
{
throw new GlobalRunTimeException(CodeEnum.FAIL.getType(),"删除异常,请重试");
}
}
@Override
public void updateSupportById(RecruitmentUpdateParams recruitmentUpdateParams) {
TeachingSupport teachingSupport = new TeachingSupport();
BeanUtils.copyProperties(recruitmentUpdateParams,teachingSupport);
RecruitmentContent recruitmentContent = new RecruitmentContent();
BeanUtils.copyProperties(recruitmentUpdateParams,recruitmentContent);
int result1 = teachingSupportMapper.updateById(teachingSupport);
int result2 = recruitmentContentMapper.updateById(recruitmentContent);
try {
UpdateRequest request = new UpdateRequest("teaching_support", recruitmentUpdateParams.getId().toString());
RecruitmentDocumentVO recruitmentDocumentVO = new RecruitmentDocumentVO();
BeanUtils.copyProperties(recruitmentUpdateParams,recruitmentDocumentVO);
recruitmentDocumentVO.setId(recruitmentUpdateParams.getId().toString());
recruitmentDocumentVO.setCreateTime(new Date());
request.doc(JSON.toJSONString(recruitmentDocumentVO),XContentType.JSON);
restHighLevelClient.update(request, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
if (result1 == 0 || result2 == 0)
{
throw new GlobalRunTimeException(CodeEnum.FAIL.ge
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该项目是一款以Java语言为核心的爱心助学志愿服务平台设计源码,包含484个文件,涵盖208个Java源文件、207个类文件、53个XML配置文件、16个YML配置文件。该平台旨在提供便捷的助学服务,支持志愿服务活动的有效开展。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java语言的爱心助学志愿服务平台设计源码 (485个子文件)
TeachingSupportServiceImpl.class 25KB
DonationServiceImpl.class 19KB
UserServiceImpl.class 18KB
DonorServiceImpl.class 17KB
VolunteerServiceImpl.class 16KB
RecruitmentDetailVO.class 14KB
RecruitmentInnerDetailVO.class 14KB
RecruitmentUpdateParams.class 12KB
RecruitmentPostParams.class 12KB
RecruitmentFrontDetailVO.class 11KB
TeachingSupport.class 11KB
RoleServiceImpl.class 10KB
SignFormPageVO.class 9KB
UserController.class 9KB
RecruitmentContent.class 9KB
Donation.class 9KB
Volunteer.class 9KB
RecruitmentPageVO.class 9KB
Travel.class 8KB
User.class 8KB
ScheduledTasks.class 8KB
DonationVO.class 8KB
CultureServiceImpl.class 8KB
RoleController.class 8KB
VolunteerVerifyParam.class 7KB
DonationInnerVO.class 7KB
PermissionServiceImpl.class 7KB
VolunteerSignParam.class 7KB
ProgressVO.class 7KB
OssServiceImpl.class 7KB
TeachingSupportController.class 6KB
DonationController.class 6KB
Culture.class 6KB
FeedbackServiceImpl.class 6KB
DonationUpdateParams.class 6KB
RecruitmentPageParams.class 6KB
DonorDonation.class 6KB
Permission.class 6KB
ESUtil.class 6KB
TravelServiceImpl.class 6KB
DonateGoods.class 6KB
DonationPostParams.class 6KB
Permission.class 6KB
TravelUpdateParams.class 5KB
RecruitmentFrontPageVO.class 5KB
SignFormPageParam.class 5KB
VolunteerTeaching.class 5KB
VolunteerController.class 5KB
DonationFrontVO.class 5KB
Oss.class 5KB
Feedback.class 5KB
ResultVO.class 5KB
TravelPostParams.class 5KB
CultureVO.class 5KB
mybatis_plus_generator.class 5KB
UserInnerVO.class 5KB
UserVO.class 5KB
Role.class 5KB
Donor.class 5KB
UserVolunteer.class 5KB
RolePermission.class 5KB
TravelPageParams.class 5KB
DonorUpdateFormParams.class 5KB
CultureTypeServiceImpl.class 5KB
ScheduledTasks.class 5KB
UserDonor.class 5KB
UserRole.class 5KB
DonorController.class 5KB
PermissionController.class 4KB
FeedbackController.class 4KB
TravelController.class 4KB
UserRegisterParam.class 4KB
CultureType.class 4KB
DonorSignFormParams.class 4KB
CultureController.class 4KB
RecruitmentDocumentVO.class 4KB
DonationPageParams.class 4KB
OssController.class 4KB
CultureUpdateParams.class 4KB
DonorExportVO.class 4KB
AuthenticationFilter.class 4KB
ResetPsdParam.class 4KB
PermissionUpdateParam.class 4KB
VolunteerTeachingServiceImpl.class 4KB
JwtUtil.class 3KB
DonorVO.class 3KB
PageVO.class 3KB
CultureTypeController.class 3KB
CulturePostParams.class 3KB
RedisConfig.class 3KB
PermissionPageParam.class 3KB
PermissionPostParam.class 3KB
UpdatePsdParam.class 3KB
RecruitFrontController.class 3KB
CultureTypePageParams.class 3KB
DonorPageParams.class 3KB
RoleUpdateParam.class 3KB
UserUpdateParam.class 3KB
FeedbackUpdateParam.class 3KB
TeachingSupportService.class 3KB
共 485 条
- 1
- 2
- 3
- 4
- 5
资源评论
csbysj2020
- 粉丝: 1978
- 资源: 375
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于TypeScript和Vue的日历展示与日程条创建设计源码
- 基于Java和Apache开源组件的KarelDB设计源码
- 基于Vue和JavaScript的干部信息查询系统设计源码
- 基于HTML/CSS/JavaScript的多人在线知识交流平台博客项目设计源码
- 基于JavaScript和微信小程序的WeHalo简约风博客设计源码
- 基于Java开发的学生宿舍管理系统设计源码
- 基于Go语言的微服务框架设计源码,支持gRPC、gin、http、cron、mq-consumer、etcd注册与负载均衡
- 基于Java语言的Android天气应用Weather10_12设计源码
- 基于C#实现的地铁换乘查询工具设计源码
- 基于C++算法实践的AC-project设计源码分享
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功