package com.panzhihua.service_community.service.impl; import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import com.panzhihua.service_community.dao.ComFmsTeamMemberDAO; import com.panzhihua.service_community.entity.ComFmsTeamMember; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.community.fms.AddFmsServiceAdminDTO; import com.panzhihua.common.model.dtos.community.fms.ApplyFmsServiceDTO; import com.panzhihua.common.model.dtos.community.fms.ApprovalFmsServiceAdminDTO; import com.panzhihua.common.model.dtos.community.fms.FeedbackFmsServiceDTO; import com.panzhihua.common.model.dtos.community.fms.PageFmsServiceAdminDTO; import com.panzhihua.common.model.dtos.community.fms.PageFmsServiceAppletsDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.fms.ComFmsServiceEvaluateVO; import com.panzhihua.common.model.vos.community.fms.ComFmsServiceImportExcelVO; import com.panzhihua.common.model.vos.community.fms.ComFmsServiceRecordVO; import com.panzhihua.common.model.vos.community.fms.ComFmsServiceVO; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.service_community.dao.ComFmsServiceDAO; import com.panzhihua.service_community.dao.ComFmsServiceEvaluationsDAO; import com.panzhihua.service_community.dao.ComFmsServiceRecordDAO; import com.panzhihua.service_community.entity.ComFmsService; import com.panzhihua.service_community.entity.ComFmsServiceEvaluations; import com.panzhihua.service_community.entity.ComFmsServiceRecord; import com.panzhihua.service_community.service.ComFmsServiceService; /** * 五微服务-微服务(ComFmsService)表服务实现类 * * @author makejava * @since 2022-02-11 13:35:53 */ @Service("comFmsServiceService") public class ComFmsServiceServiceImpl extends ServiceImpl implements ComFmsServiceService { @Resource private ComFmsServiceRecordDAO comFmsServiceRecordDAO; @Resource private ComFmsServiceEvaluationsDAO comFmsServiceEvaluationsDAO; @Resource private ComFmsTeamMemberDAO comFmsTeamMemberDAO; /** * 后台新增微服务 * @param adminDTO * @return */ @Override public R addFmsServiceAdmin(AddFmsServiceAdminDTO adminDTO) { ComFmsService comFmsService = new ComFmsService(); BeanUtils.copyProperties(adminDTO, comFmsService); comFmsService.setServiceStatus(ComFmsService.ServiceStatus.ywc); comFmsService.setApprovalAt(new Date()); int num = this.baseMapper.insert(comFmsService); if (num > 0) { //服务记录 ComFmsServiceRecord comFmsServiceRecord = new ComFmsServiceRecord(); comFmsServiceRecord.setServiceId(comFmsService.getId()); comFmsServiceRecord.setContent(adminDTO.getServiceProcess()); comFmsServiceRecord.setImage(adminDTO.getProcessImage()); comFmsServiceRecord.setStage(ComFmsServiceRecord.Stage.WCFW); comFmsServiceRecord.setCreatedBy(adminDTO.getCreatedBy()); comFmsServiceRecordDAO.insert(comFmsServiceRecord); //默认好评 ComFmsServiceEvaluations evaluation = new ComFmsServiceEvaluations(); evaluation.setServiceId(comFmsService.getId()); evaluation.setStarLevel(5); evaluation.setEvaluateContent("系统默认好评!"); evaluation.setUserId(comFmsService.getUserId()); comFmsServiceEvaluationsDAO.insert(evaluation); return R.ok(); } return R.fail("操作失败,请重新尝试"); } /** * 后台分页查询微服务 * @param adminDTO * @return */ @Override public R pageFmsServiceAdmin(PageFmsServiceAdminDTO adminDTO) { Page page = new Page<>(); page.setSize(adminDTO.getPageSize()); page.setCurrent(adminDTO.getPageNum()); return R.ok(this.baseMapper.pageFmsServiceAdmin(page, adminDTO)); } /** * 后台核实微服务 * @param adminDTO * @return */ @Override public R approvalFmsService(ApprovalFmsServiceAdminDTO adminDTO) { ComFmsService comFmsService = this.baseMapper.selectById(adminDTO.getServiceId()); if (isNull(comFmsService)) { return R.fail("资源不存在"); } comFmsService.setServiceStatus(adminDTO.getIsPass() ? ComFmsService.ServiceStatus.jxz : ComFmsService.ServiceStatus.wtg); comFmsService.setApprovalContent(adminDTO.getContent()); comFmsService.setApprovalAt(new Date()); if (adminDTO.getIsPass()) { comFmsService.setMemberId(adminDTO.getMemberId()); } comFmsService.setUpdatedBy(adminDTO.getUpdatedBy()); int num = this.baseMapper.updateById(comFmsService); if (num > 0) { ComFmsServiceRecord comFmsServiceRecord = new ComFmsServiceRecord(); comFmsServiceRecord.setServiceId(comFmsService.getId()); comFmsServiceRecord.setContent(adminDTO.getContent()); comFmsServiceRecord.setStage(adminDTO.getIsPass() ? ComFmsServiceRecord.Stage.SHTG : ComFmsServiceRecord.Stage.HSBTG); comFmsServiceRecord.setCreatedBy(adminDTO.getUpdatedBy()); comFmsServiceRecordDAO.insert(comFmsServiceRecord); return R.ok(); } return R.fail("操作失败,请重新尝试"); } /** * 后台查看微服务详情 * @param serviceId * @return */ @Override public R detailFmsServiceAdmin(Long serviceId) { ComFmsServiceVO serviceVO = this.baseMapper.detailFmsServiceAdmin(serviceId); if (isNull(serviceVO)) { return R.fail("资源不存在"); } List serviceRecords = comFmsServiceRecordDAO.selectList(new LambdaQueryWrapper() .eq(ComFmsServiceRecord::getServiceId, serviceId) .orderByDesc(ComFmsServiceRecord::getCreatedAt)); if (!serviceRecords.isEmpty()) { List recordVOList = new ArrayList<>(); serviceRecords.forEach(e -> { ComFmsServiceRecordVO recordVO = new ComFmsServiceRecordVO(); BeanUtils.copyProperties(e, recordVO); recordVOList.add(recordVO); }); serviceVO.setServiceRecords(recordVOList); } return R.ok(serviceVO); } /** * 后台删除微服务 * @param serviceId * @return */ @Override @Transactional(rollbackFor = Exception.class) public R deleteFmsServiceAdmin(Long serviceId) { int num = this.baseMapper.deleteById(serviceId); if (num > 0) { comFmsServiceRecordDAO.delete(new LambdaQueryWrapper().eq(ComFmsServiceRecord::getServiceId, serviceId)); comFmsServiceEvaluationsDAO.delete(new LambdaQueryWrapper().eq(ComFmsServiceEvaluations::getServiceId, serviceId)); return R.ok(); } return R.fail("操作失败,请重新尝试"); } /** * 微服务顶部统计 * @param communityId * @return */ @Override public R statisticsFmsService(Long communityId) { return R.ok(this.baseMapper.statisticsFmsService(communityId)); } /** * 后台导入微服务数据 * @param voList * @param communityId * @param userId * @return */ @Override public R listSaveFmsServiceExcelVO(List voList, Long communityId, Long userId) { voList.forEach(e -> { ComFmsService comFmsService = new ComFmsService(); BeanUtils.copyProperties(e, comFmsService); comFmsService.setCommunityId(communityId); comFmsService.setCreatedBy(userId); comFmsService.setUpdatedBy(userId); comFmsService.setServiceStatus(ComFmsService.ServiceStatus.ywc); int num = this.baseMapper.insert(comFmsService); if (num > 0) { ComFmsServiceRecord comFmsServiceRecord = new ComFmsServiceRecord(); comFmsServiceRecord.setServiceId(comFmsService.getId()); comFmsServiceRecord.setContent(e.getServiceProcess()); comFmsServiceRecord.setStage(ComFmsServiceRecord.Stage.WCFW); comFmsServiceRecord.setCreatedBy(userId); comFmsServiceRecordDAO.insert(comFmsServiceRecord); //默认好评 ComFmsServiceEvaluations evaluation = new ComFmsServiceEvaluations(); evaluation.setServiceId(comFmsService.getId()); evaluation.setStarLevel(5); evaluation.setEvaluateContent("系统默认好评!"); evaluation.setUserId(comFmsService.getUserId()); comFmsServiceEvaluationsDAO.insert(evaluation); } }); return R.ok(); } /** * 小程序分页查询微服务 * @param adminDTO * @return */ @Override public R pageFmsServiceApplets(PageFmsServiceAppletsDTO adminDTO) { Page page = new Page<>(); page.setSize(adminDTO.getPageSize()); page.setCurrent(adminDTO.getPageNum()); return R.ok(this.baseMapper.pageFmsServiceAdminApplets(page, adminDTO)); } /** * 小程序查看微服务详情 * @param serviceId * @param userId * @return */ @Override public R detailFmsServiceApplets(Long serviceId, Long userId) { ComFmsServiceVO serviceDetail = this.baseMapper.detailFmsServiceApplets(serviceId); if (nonNull(serviceDetail)) { List serviceRecords = comFmsServiceRecordDAO.selectList(new LambdaQueryWrapper() .eq(ComFmsServiceRecord::getServiceId, serviceId) .orderByDesc(ComFmsServiceRecord::getCreatedAt)); if (!serviceRecords.isEmpty()) { List recordVOList = new ArrayList<>(); serviceRecords.forEach(e -> { ComFmsServiceRecordVO recordVO = new ComFmsServiceRecordVO(); BeanUtils.copyProperties(e, recordVO); recordVOList.add(recordVO); }); serviceDetail.setServiceRecords(recordVOList); } ComFmsServiceEvaluations evaluation = comFmsServiceEvaluationsDAO.selectOne(new LambdaQueryWrapper() .eq(ComFmsServiceEvaluations::getServiceId, serviceId)); if (nonNull(evaluation)) { ComFmsServiceEvaluateVO evaluateVO = new ComFmsServiceEvaluateVO(); BeanUtils.copyProperties(evaluation, evaluateVO); serviceDetail.setEvaluateVO(evaluateVO); } serviceDetail.setIsMyself(nonNull(userId) && userId.equals(serviceDetail.getUserId())); if (serviceDetail.getServiceStatus().equals(ComFmsService.ServiceStatus.dpj)) { Date autoEvaluateAt = DateUtils.addDay(serviceDetail.getCreatedAt(), 3); Date nowDate = new Date(); serviceDetail.setAutoEvaluateAt(autoEvaluateAt.getTime() - nowDate.getTime()); } } return R.ok(serviceDetail); } /** * 微服务申请 * @param adminDTO * @return */ @Override @Transactional(rollbackFor = Exception.class) public R applyFmsService(ApplyFmsServiceDTO adminDTO) { LoginUserInfoVO userInfo = adminDTO.getUserInfo(); ComFmsService comFmsService = new ComFmsService(); BeanUtils.copyProperties(adminDTO, comFmsService); comFmsService.setCommunityId(userInfo.getCommunityId()); comFmsService.setCreatedBy(userInfo.getUserId()); comFmsService.setUpdatedBy(userInfo.getUserId()); comFmsService.setUserId(userInfo.getUserId()); comFmsService.setUserName(userInfo.getNickName()); comFmsService.setPhone(userInfo.getPhone()); int num = this.baseMapper.addBracelet(comFmsService); if (num > 0) { ComFmsServiceRecord comFmsServiceRecord = new ComFmsServiceRecord(); comFmsServiceRecord.setServiceId(Long.valueOf(baseMapper.getLastId())); comFmsServiceRecord.setContent(adminDTO.getServiceContent()); comFmsServiceRecord.setImage(adminDTO.getServiceImage()); comFmsServiceRecord.setStage(ComFmsServiceRecord.Stage.TJFWSQ); comFmsServiceRecord.setCreatedBy(userInfo.getUserId()); comFmsServiceRecordDAO.insertOneBatch(comFmsServiceRecord); return R.ok(); } return R.fail("操作失败,请重新尝试"); } /** * 分页查询我的微服务 * @param adminDTO * @return */ @Override public R pageMyFmsService(PageFmsServiceAppletsDTO adminDTO) { Page page = new Page<>(); page.setSize(adminDTO.getPageSize()); page.setCurrent(adminDTO.getPageNum()); IPage serviceVOIPage = this.baseMapper.pageMyFmsService(page, adminDTO); List serviceVOList = serviceVOIPage.getRecords(); if (!serviceVOList.isEmpty()) { serviceVOList.forEach(e -> { if (e.getServiceStatus().equals(ComFmsService.ServiceStatus.dpj)) { Date autoEvaluateAt = DateUtils.addDay(e.getCreatedAt(), 3); Date nowDate = new Date(); e.setAutoEvaluateAt(autoEvaluateAt.getTime() - nowDate.getTime()); } }); } return R.ok(serviceVOList); } /** * 微团队成员分页查询服务处理 * @param adminDTO * @return */ @Override public R pageDealFmsService(PageFmsServiceAppletsDTO adminDTO) { Page page = new Page<>(); page.setSize(adminDTO.getPageSize()); page.setCurrent(adminDTO.getPageNum()); LoginUserInfoVO userInfo = adminDTO.getUserInfo(); ComFmsTeamMember comFmsTeamMember = comFmsTeamMemberDAO.selectOne(new LambdaQueryWrapper() .eq(ComFmsTeamMember::getPhone, userInfo.getPhone()) .eq(ComFmsTeamMember::getCommunityId, userInfo.getCommunityId())); if (nonNull(comFmsTeamMember)) { adminDTO.setMemberId(comFmsTeamMember.getId()); } return R.ok(this.baseMapper.pageDealFmsService(page, adminDTO)); } /** * 微团队成员服务反馈 * @param adminDTO * @return */ @Override @Transactional(rollbackFor = Exception.class) public R feedbackFmsService(FeedbackFmsServiceDTO adminDTO) { ComFmsService comFmsService = this.baseMapper.selectById(adminDTO.getServiceId()); if (isNull(comFmsService)) { return R.fail("资源不存在"); } if (isNull(comFmsService.getMemberId())) { return R.fail("还未分配服务人员"); } LoginUserInfoVO userInfo = adminDTO.getUserInfo(); ComFmsTeamMember comFmsTeamMember = comFmsTeamMemberDAO.selectOne(new LambdaQueryWrapper() .eq(ComFmsTeamMember::getPhone, userInfo.getPhone()) .eq(ComFmsTeamMember::getCommunityId, userInfo.getCommunityId())); if (isNull(comFmsTeamMember) || !comFmsService.getMemberId().equals(comFmsTeamMember.getId())) { return R.fail("不是指定的分配服务人员"); } Boolean isEnd = adminDTO.getIsEnd(); ComFmsServiceRecord comFmsServiceRecord = new ComFmsServiceRecord(); comFmsServiceRecord.setServiceId(comFmsService.getId()); comFmsServiceRecord.setContent(adminDTO.getFeedbackContent()); comFmsServiceRecord.setImage(adminDTO.getImage()); comFmsServiceRecord.setStage(isEnd ? ComFmsServiceRecord.Stage.WCFW : ComFmsServiceRecord.Stage.FWFK); comFmsServiceRecord.setCreatedBy(adminDTO.getUserId()); int num = comFmsServiceRecordDAO.insert(comFmsServiceRecord); if (num > 0) { if (isEnd) { comFmsService.setServiceStatus(ComFmsService.ServiceStatus.dpj); comFmsService.setServiceAt(new Date()); this.baseMapper.updateById(comFmsService); } return R.ok(); } return R.fail("操作失败,请重新尝试"); } /** * 定时任务针对服务结束后3天还未评价的用户默认好评 * @return */ @Override public R defaultPraise() { List fmsServiceList = this.baseMapper.selectList(new QueryWrapper().lambda() .eq(ComFmsService::getServiceStatus, ComFmsService.ServiceStatus.dpj) .le(ComFmsService::getServiceAt, DateUtils.addDay(new Date(), -3))); if (!fmsServiceList.isEmpty()) { List evaluations = new ArrayList<>(); fmsServiceList.forEach(e -> { ComFmsServiceEvaluations evaluation = new ComFmsServiceEvaluations(); evaluation.setServiceId(e.getId()); evaluation.setStarLevel(5); evaluation.setEvaluateContent("系统默认好评!"); evaluation.setUserId(e.getUserId()); evaluations.add(evaluation); }); int num = comFmsServiceEvaluationsDAO.insertBatch(evaluations); if (num > 0) { fmsServiceList.forEach(e -> e.setServiceStatus(ComFmsService.ServiceStatus.ywc)); this.updateBatchById(fmsServiceList); } } return R.ok(); } }