package com.panzhihua.service_community.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import cn.hutool.core.util.IdcardUtil;
|
import com.panzhihua.common.model.vos.community.volunteer.ComMngVolunteerErrorExcelVO;
|
import com.panzhihua.common.model.vos.community.volunteer.ComMngVolunteerExcelVO;
|
import com.panzhihua.common.service.user.UserService;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.dao.ComMngVolunteerOrgTeamMapper;
|
import com.panzhihua.service_community.dao.ComMngVolunteerSkillMapper;
|
import com.panzhihua.service_community.model.dos.ComMngVolunteerOrgTeam;
|
import com.panzhihua.service_community.model.dos.ComMngVolunteerSkill;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngAppletsVO;
|
import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO;
|
import com.panzhihua.common.model.vos.community.TodoEventsVO;
|
import com.panzhihua.common.model.vos.user.UserPhoneVO;
|
import com.panzhihua.common.utlis.SensitiveUtil;
|
import com.panzhihua.service_community.dao.ComMngVolunteerMngDAO;
|
import com.panzhihua.service_community.model.dos.ComMngVolunteerMngDO;
|
import com.panzhihua.service_community.service.ComMngVolunteerMngService;
|
|
import static java.util.Objects.nonNull;
|
|
/**
|
* @program: springcloud_k8s_panzhihuazhihuishequ
|
* @description: 志愿者
|
* @author: huang.hongfa weixin hhf9596 qq 959656820
|
* @create: 2020-12-17 09:23
|
**/
|
@Service
|
public class ComMngVolunteerMngServiceImpl implements ComMngVolunteerMngService {
|
@Resource
|
private ComMngVolunteerMngDAO comMngVolunteerMngDAO;
|
@Resource
|
private ComMngVolunteerOrgTeamMapper comMngVolunteerOrgTeamMapper;
|
@Resource
|
private ComMngVolunteerSkillMapper comMngVolunteerSkillMapper;
|
@Resource
|
private UserService userService;
|
|
/**
|
* 增加志愿者
|
*
|
* @param comMngVolunteerMngVO
|
* 志愿者信息
|
* @return 增加结果
|
*/
|
@Override
|
public R addVolunteer(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
String phone = comMngVolunteerMngVO.getPhone();
|
String idCard = comMngVolunteerMngVO.getIdCard();
|
Integer integer = comMngVolunteerMngDAO.selectCount(new QueryWrapper<ComMngVolunteerMngDO>().lambda()
|
.and(wrapper -> wrapper.eq(ComMngVolunteerMngDO::getPhone, phone).or().eq(ComMngVolunteerMngDO::getIdCard, idCard))
|
.in(ComMngVolunteerMngDO::getState, Arrays.asList(1, 2)));
|
if (null != integer && integer.intValue() > 0) {
|
return R.fail("请勿重复申请");
|
}
|
ComMngVolunteerMngDO comMngVolunteerMngDO = new ComMngVolunteerMngDO();
|
BeanUtils.copyProperties(comMngVolunteerMngVO, comMngVolunteerMngDO);
|
int insert = comMngVolunteerMngDAO.insert(comMngVolunteerMngDO);
|
if (insert > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 删除志愿者
|
*
|
* @param comMngVolunteerMngVO
|
* 手机号
|
* @return 删除结果
|
*/
|
@Override
|
public R deleteVolunteer(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = comMngVolunteerMngDAO.selectById(comMngVolunteerMngVO.getId());
|
int delete = comMngVolunteerMngDAO.delete(new QueryWrapper<ComMngVolunteerMngDO>().lambda()
|
.eq(ComMngVolunteerMngDO::getId, comMngVolunteerMngDO.getId()));
|
if (delete > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 编辑志愿者
|
*
|
* @param comMngVolunteerMngVO
|
* 编辑内容
|
* @return 编辑结果
|
*/
|
@Override
|
public R putVolunteer(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = new ComMngVolunteerMngDO();
|
BeanUtils.copyProperties(comMngVolunteerMngVO, comMngVolunteerMngDO);
|
int update = comMngVolunteerMngDAO.updateById(comMngVolunteerMngDO);
|
if (update > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 分页展示志愿者
|
*
|
* @param comMngVolunteerMngVO
|
* 查询参数
|
* @return 分页集合返回
|
*/
|
@Override
|
public R pageVolunteer(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
Page page = new Page<>();
|
Long pageNum = comMngVolunteerMngVO.getPageNum();
|
Long pageSize = comMngVolunteerMngVO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1l;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10l;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComMngVolunteerMngVO> iPage = comMngVolunteerMngDAO.pageVolunteer(page, comMngVolunteerMngVO);
|
iPage.getRecords().forEach(record -> {
|
if(StringUtils.isNotEmpty(record.getIdCard())){
|
record.setAge(IdcardUtil.getAgeByIdCard(record.getIdCard()));
|
}
|
});
|
return R.ok(iPage);
|
}
|
|
/**
|
* 分页展示志愿者审核
|
*
|
* @param comMngVolunteerMngVO
|
* 查询参数
|
* @return 查询结果
|
*/
|
@Override
|
public R pageVolunteerExamine(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
Page page = new Page<>();
|
Long pageNum = comMngVolunteerMngVO.getPageNum();
|
Long pageSize = comMngVolunteerMngVO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1l;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10l;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
IPage<ComMngVolunteerMngVO> iPage = comMngVolunteerMngDAO.pageVolunteerExamine(page, comMngVolunteerMngVO);
|
return R.ok(iPage);
|
}
|
|
/**
|
* 志愿者审核详情
|
*
|
* @param id
|
* 主键
|
* @return 详情
|
*/
|
@Override
|
public R detailVolunteerExamine(Long id) {
|
ComMngVolunteerMngVO comMngVolunteerMngVO = comMngVolunteerMngDAO.detailVolunteerExamine(id);
|
// String phone = comMngVolunteerMngVO.getPhone();
|
// comMngVolunteerMngVO.setUserId(comMngVolunteerMngDAO.selectUserIdByPhone(phone));
|
return R.ok(comMngVolunteerMngVO);
|
}
|
|
/**
|
* 志愿者审核
|
*
|
* @param comMngVolunteerMngVO
|
* 审核操作
|
* @return 审核结果
|
*/
|
@Override
|
public R putVolunteerExamine(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = new ComMngVolunteerMngDO();
|
BeanUtils.copyProperties(comMngVolunteerMngVO, comMngVolunteerMngDO);
|
int update = comMngVolunteerMngDAO.updateById(comMngVolunteerMngDO);
|
if (update > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 删除志愿者审核
|
*
|
* @param comMngVolunteerMngVO
|
* 主键
|
* @return 删除结果
|
*/
|
@Override
|
public R deleteVolunteerExamine(ComMngVolunteerMngVO comMngVolunteerMngVO) {
|
int delete = comMngVolunteerMngDAO.deleteById(comMngVolunteerMngVO.getId());
|
if (delete > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 用户修改手机号对应的志愿者手机号也要修改
|
*
|
* @param userPhoneVO
|
* 新旧手机号
|
* @return 修改结果
|
*/
|
@Override
|
public R putVolunteerPhone(UserPhoneVO userPhoneVO) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = new ComMngVolunteerMngDO();
|
comMngVolunteerMngDO.setPhone(userPhoneVO.getNewPhone());
|
int update = comMngVolunteerMngDAO.update(comMngVolunteerMngDO, new UpdateWrapper<ComMngVolunteerMngDO>()
|
.lambda().eq(ComMngVolunteerMngDO::getPhone, userPhoneVO.getOldPhone()));
|
if (update > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 志愿者详情
|
*
|
* @param id
|
* 主键
|
* @return 志愿者
|
*/
|
@Override
|
public R detailVolunteer(Long id) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = comMngVolunteerMngDAO.selectById(id);
|
if (ObjectUtils.isEmpty(comMngVolunteerMngDO)) {
|
return R.fail("志愿者不存在");
|
}
|
ComMngVolunteerMngAppletsVO comMngVolunteerMngAppletsVO = new ComMngVolunteerMngAppletsVO();
|
BeanUtils.copyProperties(comMngVolunteerMngDO, comMngVolunteerMngAppletsVO);
|
return R.ok(comMngVolunteerMngAppletsVO);
|
}
|
|
/**
|
* 社区后台数据看板
|
*
|
* @param communityId
|
* 社区id
|
* @param userId
|
* 用户id
|
* @return 人脸采集和志愿者审核集合
|
*/
|
@Override
|
public List<TodoEventsVO> selectNeedToDo(Long communityId, Long userId) {
|
List<TodoEventsVO> todoEventsVOS = comMngVolunteerMngDAO.selectNeedToDo(communityId);
|
return todoEventsVOS;
|
}
|
|
@Override
|
public R getVolunteerById(Long id) {
|
ComMngVolunteerMngDO comMngVolunteerMngDO = comMngVolunteerMngDAO.selectById(id);
|
ComMngVolunteerMngAppletsVO vo = new ComMngVolunteerMngAppletsVO();
|
BeanUtils.copyProperties(comMngVolunteerMngDO, vo);
|
return R.ok(vo);
|
}
|
|
/**
|
* 志愿者导入
|
*
|
* @param list 志愿者数据列表
|
* @param communityId 社区id
|
* @param userId 用户id
|
* @return 导入结果
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R importVolunteerAdmin(List<ComMngVolunteerExcelVO> list, Long communityId, Long userId){
|
//错误集合
|
List<ComMngVolunteerErrorExcelVO> errorList = new ArrayList<>();
|
for (ComMngVolunteerExcelVO excel : list) {
|
//查询组织
|
ComMngVolunteerOrgTeam orgVo = comMngVolunteerOrgTeamMapper.selectOne(new QueryWrapper<ComMngVolunteerOrgTeam>().lambda()
|
.eq(ComMngVolunteerOrgTeam::getName,excel.getOrgName()).eq(ComMngVolunteerOrgTeam::getCommunityId,communityId)
|
.eq(ComMngVolunteerOrgTeam::getParentId,0));
|
// if(orgVo == null){
|
// ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
|
// BeanUtils.copyProperties(excel,errorExcelVO);
|
// errorExcelVO.setError("该志愿者组织不存在,请先通过后台添加该志愿者组织");
|
// errorList.add(errorExcelVO);
|
// continue;
|
// }
|
//查询队伍
|
ComMngVolunteerOrgTeam teamVo = comMngVolunteerOrgTeamMapper.selectOne(new QueryWrapper<ComMngVolunteerOrgTeam>().lambda()
|
.eq(ComMngVolunteerOrgTeam::getName,excel.getTeamName()).eq(ComMngVolunteerOrgTeam::getCommunityId,communityId)
|
.eq(ComMngVolunteerOrgTeam::getParentId, nonNull(orgVo) ? orgVo.getId() : null));
|
// if(teamVo == null){
|
// ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
|
// BeanUtils.copyProperties(excel,errorExcelVO);
|
// errorExcelVO.setError("该志愿者队伍不存在,请先通过后台添加该志愿者队伍");
|
// errorList.add(errorExcelVO);
|
// continue;
|
// }
|
//查询技能
|
ComMngVolunteerSkill skillVo = comMngVolunteerSkillMapper.selectOne(new QueryWrapper<ComMngVolunteerSkill>().lambda()
|
.eq(ComMngVolunteerSkill::getName,excel.getSkillName()).eq(ComMngVolunteerSkill::getCommunityId,communityId));
|
// if(skillVo == null){
|
// ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
|
// BeanUtils.copyProperties(excel,errorExcelVO);
|
// errorExcelVO.setError("该志愿者技能不存在,请先通过后台添加该志愿者技能");
|
// errorList.add(errorExcelVO);
|
// continue;
|
// }
|
Date nowDate = new Date();
|
ComMngVolunteerMngDO comMngVolunteerMngDO = comMngVolunteerMngDAO.selectOne(new QueryWrapper<ComMngVolunteerMngDO>().lambda()
|
.eq(ComMngVolunteerMngDO::getIdCard,excel.getIdCard()).in(ComMngVolunteerMngDO::getState,1,2));
|
if(comMngVolunteerMngDO != null){
|
if(comMngVolunteerMngDO.getState().equals(1)){
|
BeanUtils.copyProperties(excel,comMngVolunteerMngDO);
|
comMngVolunteerMngDO.setState(2);
|
comMngVolunteerMngDO.setOrgId(nonNull(orgVo) ? orgVo.getId() : null);
|
comMngVolunteerMngDO.setTeamId(nonNull(teamVo) ? teamVo.getId() : null);
|
comMngVolunteerMngDO.setSkillId(nonNull(skillVo) ? skillVo.getId() : null);
|
comMngVolunteerMngDAO.updateById(comMngVolunteerMngDO);
|
}else{
|
ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
|
BeanUtils.copyProperties(excel,errorExcelVO);
|
errorExcelVO.setError("该志愿者已存在,不可重复添加");
|
errorList.add(errorExcelVO);
|
}
|
}else{
|
comMngVolunteerMngDO = new ComMngVolunteerMngDO();
|
BeanUtils.copyProperties(excel,comMngVolunteerMngDO);
|
comMngVolunteerMngDO.setCommunityId(communityId);
|
comMngVolunteerMngDO.setState(2);
|
comMngVolunteerMngDO.setOrgId(nonNull(orgVo) ? orgVo.getId() : null);
|
comMngVolunteerMngDO.setTeamId(nonNull(teamVo) ? teamVo.getId() : null);
|
comMngVolunteerMngDO.setSkillId(nonNull(skillVo) ? skillVo.getId() : null);
|
comMngVolunteerMngDO.setCreateAt(nowDate);
|
//查询用户id,如果存在则需要绑定
|
Long volunteerUserId = comMngVolunteerMngDAO.selectUserIdByIdCard(excel.getIdCard());
|
if(volunteerUserId != null){
|
comMngVolunteerMngDO.setSubmitUserId(volunteerUserId);
|
}
|
comMngVolunteerMngDAO.insert(comMngVolunteerMngDO);
|
userService.putUserIsVolunteer(comMngVolunteerMngDO.getPhone(), 1);
|
}
|
}
|
if(errorList.size() > 0){
|
return R.fail(errorList);
|
}
|
return R.ok();
|
}
|
}
|