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<ComFmsServiceDAO, ComFmsService>
|
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<ComFmsServiceRecord> serviceRecords = comFmsServiceRecordDAO.selectList(new LambdaQueryWrapper<ComFmsServiceRecord>()
|
.eq(ComFmsServiceRecord::getServiceId, serviceId)
|
.orderByDesc(ComFmsServiceRecord::getCreatedAt));
|
if (!serviceRecords.isEmpty()) {
|
List<ComFmsServiceRecordVO> 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<ComFmsServiceRecord>().eq(ComFmsServiceRecord::getServiceId, serviceId));
|
comFmsServiceEvaluationsDAO.delete(new LambdaQueryWrapper<ComFmsServiceEvaluations>().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<ComFmsServiceImportExcelVO> 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<ComFmsServiceRecord> serviceRecords = comFmsServiceRecordDAO.selectList(new LambdaQueryWrapper<ComFmsServiceRecord>()
|
.eq(ComFmsServiceRecord::getServiceId, serviceId)
|
.orderByDesc(ComFmsServiceRecord::getCreatedAt));
|
if (!serviceRecords.isEmpty()) {
|
List<ComFmsServiceRecordVO> 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<ComFmsServiceEvaluations>()
|
.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<ComFmsServiceVO> serviceVOIPage = this.baseMapper.pageMyFmsService(page, adminDTO);
|
List<ComFmsServiceVO> 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<ComFmsTeamMember>()
|
.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<ComFmsTeamMember>()
|
.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<ComFmsService> fmsServiceList = this.baseMapper.selectList(new QueryWrapper<ComFmsService>().lambda()
|
.eq(ComFmsService::getServiceStatus, ComFmsService.ServiceStatus.dpj)
|
.le(ComFmsService::getServiceAt, DateUtils.addDay(new Date(), -3)));
|
if (!fmsServiceList.isEmpty()) {
|
List<ComFmsServiceEvaluations> 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();
|
}
|
}
|