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().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().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 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 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() .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 selectNeedToDo(Long communityId, Long userId) { List 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 list, Long communityId, Long userId){ //错误集合 List errorList = new ArrayList<>(); for (ComMngVolunteerExcelVO excel : list) { //查询组织 ComMngVolunteerOrgTeam orgVo = comMngVolunteerOrgTeamMapper.selectOne(new QueryWrapper().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().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().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().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(); } }