puhanshu
2021-09-13 68a3e4c053d15961ede69fe7698f63fe827624c3
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActMicroWishServiceImpl.java
@@ -1,13 +1,6 @@
package com.panzhihua.service_community.service.impl;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -15,17 +8,31 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenMicroListDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActMicroWishFeedbackVO;
import com.panzhihua.common.model.vos.community.ComActMicroWishOperationRecordVO;
import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
import com.panzhihua.common.model.vos.community.TodoEventsVO;
import com.panzhihua.common.model.vos.community.screen.work.MicroListVO;
import com.panzhihua.common.utlis.SensitiveUtil;
import com.panzhihua.service_community.dao.ComActMicroWishDAO;
import com.panzhihua.service_community.dao.ComActMicroWishFeedbackMapper;
import com.panzhihua.service_community.dao.ComActMicroWishOperationRecordMapper;
import com.panzhihua.service_community.dao.ComActMicroWishUserDAO;
import com.panzhihua.service_community.model.dos.ComActMicroWishDO;
import com.panzhihua.service_community.model.dos.ComActMicroWishFeedbackDO;
import com.panzhihua.service_community.model.dos.ComActMicroWishOperationRecordDO;
import com.panzhihua.service_community.model.dos.ComActMicroWishUserDO;
import com.panzhihua.service_community.service.ComActMicroWishOperationRecordService;
import com.panzhihua.service_community.service.ComActMicroWishService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -35,18 +42,21 @@
 **/
@Service
@Slf4j
public class ComActMicroWishServiceImpl extends ServiceImpl<ComActMicroWishDAO, ComActMicroWishDO>
    implements ComActMicroWishService {
public class ComActMicroWishServiceImpl extends ServiceImpl<ComActMicroWishDAO, ComActMicroWishDO> implements ComActMicroWishService {
    @Resource
    private ComActMicroWishDAO comActMicroWishDAO;
    @Resource
    private ComActMicroWishUserDAO comActMicroWishUserDAO;
    @Resource
    private ComActMicroWishFeedbackMapper comActMicroWishFeedbackMapper;
    @Resource
    private ComActMicroWishOperationRecordMapper comActMicroWishOperationRecordMapper;
    @Resource
    private ComActMicroWishOperationRecordService wishOperationRecordService;
    /**
     * 分页查询微心愿
     *
     * @param comActMicroWishVO
     *            查询参数
     * @param comActMicroWishVO 查询参数
     * @return 心愿列表
     */
    @Override
@@ -70,8 +80,7 @@
            records.forEach(comActMicroWishVO1 -> {
                if (userId != null) {
                    Long id = comActMicroWishVO1.getId();
                    ComActMicroWishUserDO comActMicroWishUserDO = comActMicroWishUserDAO.selectOne(
                        new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getMicroWishId, id)
                    ComActMicroWishUserDO comActMicroWishUserDO = comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getMicroWishId, id)
                            .eq(ComActMicroWishUserDO::getUserId, userId));
                    if (ObjectUtils.isEmpty(comActMicroWishUserDO)) {
                        comActMicroWishVO1.setHaveGiveThumbsUp(0);
@@ -79,8 +88,32 @@
                        comActMicroWishVO1.setHaveGiveThumbsUp(1);
                    }
                }
                comActMicroWishVO1
                    .setSponsorPhone(SensitiveUtil.desensitizedPhoneNumber(comActMicroWishVO1.getSponsorPhone()));
                comActMicroWishVO1.setSponsorPhone(SensitiveUtil.desensitizedPhoneNumber(comActMicroWishVO1.getSponsorPhone()));
            });
            iPage.setRecords(records);
        }
        return R.ok(iPage);
    }
    @Override
    public R pageMicroWishApplets(ComActMicroWishVO comActMicroWishVO) {
        Long userId = comActMicroWishVO.getResponsibleId();
        IPage<ComActMicroWishVO> iPage = comActMicroWishDAO.pageMicroWishApplets(new Page(comActMicroWishVO.getPageNum()
                ,comActMicroWishVO.getPageSize()), comActMicroWishVO);
        List<ComActMicroWishVO> records = iPage.getRecords();
        if (!ObjectUtils.isEmpty(records)) {
            records.forEach(comActMicroWishVO1 -> {
                if(userId != null){
                    Long id = comActMicroWishVO1.getId();
                    ComActMicroWishUserDO comActMicroWishUserDO = comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getMicroWishId, id)
                            .eq(ComActMicroWishUserDO::getUserId, userId));
                    if (ObjectUtils.isEmpty(comActMicroWishUserDO)) {
                        comActMicroWishVO1.setHaveGiveThumbsUp(0);
                    } else {
                        comActMicroWishVO1.setHaveGiveThumbsUp(1);
                    }
                }
                comActMicroWishVO1.setSponsorPhone(SensitiveUtil.desensitizedPhoneNumber(comActMicroWishVO1.getSponsorPhone()));
            });
            iPage.setRecords(records);
        }
@@ -90,10 +123,8 @@
    /**
     * 心愿详情
     *
     * @param id
     *            查询主键
     * @param userId
     *            登录用户id
     * @param id 查询主键
     * @param userId 登录用户id
     * @return 心愿内容
     */
    @Override
@@ -110,27 +141,40 @@
            return R.fail("心愿不存在");
        }
        if (userId != null) {
            ComActMicroWishUserDO comActMicroWishUserDO =
                comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda()
                    .eq(ComActMicroWishUserDO::getUserId, userId).eq(ComActMicroWishUserDO::getMicroWishId, id));
            ComActMicroWishUserDO comActMicroWishUserDO = comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getUserId, userId).eq(ComActMicroWishUserDO::getMicroWishId, id));
            if (ObjectUtils.isEmpty(comActMicroWishUserDO)) {
                comActMicroWishVO.setHaveGiveThumbsUp(0);
            } else {
                comActMicroWishVO.setHaveGiveThumbsUp(1);
            }
        }
        //查询反馈列表
        List<ComActMicroWishFeedbackVO> feedList=comActMicroWishFeedbackMapper.selectByWishId(id);
        if(!feedList.isEmpty()){
            comActMicroWishVO.setFeedbackVOList(feedList);
        }
        //查询操作记录
        List<ComActMicroWishOperationRecordVO> operationList=comActMicroWishOperationRecordMapper.getByWishId(id);
        if(!operationList.isEmpty()){
            comActMicroWishVO.setOperationRecordVOList(operationList);
        }
        comActMicroWishVO.setSponsorPhone(SensitiveUtil.desensitizedPhoneNumber(comActMicroWishVO.getSponsorPhone()));
        //查询同类型id数组
        List<Long> idList=comActMicroWishOperationRecordMapper.selectId(comActMicroWishVO);
        if(!idList.isEmpty()){
            comActMicroWishVO.setIdList(idList);
        }
        return R.ok(comActMicroWishVO);
    }
    /**
     * 审核、分配、反馈心愿
     *
     * @param comActMicroWishVO
     *            具体操作
     * @param comActMicroWishVO 具体操作
     * @return 操作结果
     */
    @Override
    @Transactional
    public R putlMicroWish(ComActMicroWishVO comActMicroWishVO) {
        Long id = comActMicroWishVO.getId();
        int type = comActMicroWishVO.getType().intValue();
@@ -140,47 +184,115 @@
        String feedbackPhotoPathList = comActMicroWishVO.getFeedbackPhotoPathList();
        ComActMicroWishDO comActMicroWishDO = new ComActMicroWishDO();
        comActMicroWishDO.setId(id);
        Boolean isUpdate = false;
        Date date = new Date();
        ComActMicroWishOperationRecordDO comActMicroWishOperationRecordDO=new ComActMicroWishOperationRecordDO();
        comActMicroWishOperationRecordDO.setCreateTime(date);
        comActMicroWishOperationRecordDO.setUserId(comActMicroWishVO.getUserId());
        comActMicroWishOperationRecordDO.setWishId(comActMicroWishVO.getId());
        ComActMicroWishDO microWishDO = this.baseMapper.selectById(id);
        if(microWishDO == null){
            return R.fail("未查询到该微心愿记录");
        }
        // 1 审核通过 2驳回 3分配人员 4发起活动 5反馈
        switch (type) {
            case 1:
                isUpdate = true;
                if(!microWishDO.getStatus().equals(ComActMicroWishDO.status.dsh)){
                    return R.fail("该微心愿已审核,不可重复审核");
                }
                comActMicroWishDO.setExamineAt(date);
                comActMicroWishDO.setStatus(2);// 待分配
                comActMicroWishDO.setAimNum(comActMicroWishVO.getAimNum());
                comActMicroWishDO.setStatus(7);//集心中
                comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.sh);
                comActMicroWishOperationRecordDO.setContent("审核通过");
                comActMicroWishOperationRecordDO.setRemark("微心愿审核通过");
                comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                break;
            case 2:
                isUpdate = true;
                if(!microWishDO.getStatus().equals(ComActMicroWishDO.status.dsh)){
                    return R.fail("该微心愿已审核,不可重复审核");
                }
                comActMicroWishDO.setExamineAt(date);
                comActMicroWishDO.setRejectReason(rejectReason);
                comActMicroWishDO.setStatus(4);// 驳回
                comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.bh);
                comActMicroWishOperationRecordDO.setContent(rejectReason);
                comActMicroWishOperationRecordDO.setRemark("微心愿审核未通过");
                comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                break;
            case 3:
                isUpdate = true;
                comActMicroWishDO.setDistributionAt(date);
                comActMicroWishDO.setResponsibleId(responsibleId);
                comActMicroWishDO.setStatus(3);// 进行中
                comActMicroWishDO.setForm(1);
                //添加操作记录
                comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.fp);
                comActMicroWishOperationRecordDO.setContent("分配心愿");
                comActMicroWishOperationRecordDO.setRemark("分配心愿");
                comActMicroWishOperationRecordDO.setUserId(responsibleId);
                comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                break;
            case 4:
                isUpdate = true;
                comActMicroWishDO.setDistributionAt(date);
                comActMicroWishDO.setResponsibleId(responsibleId);
                comActMicroWishDO.setStatus(3);// 待确认
                comActMicroWishDO.setForm(2);
                //添加操作记录
                comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.fp);
                comActMicroWishOperationRecordDO.setContent("分配心愿");
                comActMicroWishOperationRecordDO.setRemark("分配心愿");
                comActMicroWishOperationRecordDO.setUserId(responsibleId);
                comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                break;
            case 5:
                if (comActMicroWishVO.getFeedback().length() > 200) {
                    return R.fail("反馈字数不得超过200字");
                }
                comActMicroWishDO.setFeedbackAt(date);
                comActMicroWishDO.setStatus(5);// 待确认
                comActMicroWishDO.setFeedback(feedback);
                //新增反馈记录
                ComActMicroWishFeedbackDO comActMicroWishFeedbackDO=new ComActMicroWishFeedbackDO();
                comActMicroWishFeedbackDO.setCreateTime(date);
                comActMicroWishFeedbackDO.setContent(feedback);
                comActMicroWishFeedbackDO.setImgUrl(feedbackPhotoPathList);
                comActMicroWishFeedbackDO.setMicroId(comActMicroWishVO.getId());
                comActMicroWishFeedbackDO.setUserId(comActMicroWishVO.getUserId());
                if(comActMicroWishVO.getStatus() != null && comActMicroWishVO.getStatus().equals(ComActMicroWishDO.status.dqr)){
                    isUpdate = true;
                    comActMicroWishDO.setStatus(ComActMicroWishDO.status.dqr);
                    comActMicroWishDO.setFinishAt(date);
                comActMicroWishDO.setFinish(feedback);
                comActMicroWishDO.setFinishPhotoPathList(feedbackPhotoPathList);
                comActMicroWishDO.setFinishAt(date);
                comActMicroWishDO.setFeedbackPhotoPathList(feedbackPhotoPathList);
                break;
                    //添加操作记录
                    comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.fk);
                    comActMicroWishOperationRecordDO.setContent(feedback);
                    comActMicroWishOperationRecordDO.setRemark("心愿已完成");
                    comActMicroWishOperationRecordDO.setImgUrl(feedbackPhotoPathList);
                    comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                }else{
                    //添加操作记录
                    comActMicroWishOperationRecordDO.setType(ComActMicroWishOperationRecordDO.type.fk);
                    comActMicroWishOperationRecordDO.setContent(feedback);
                    comActMicroWishOperationRecordDO.setRemark("社区反馈");
                    comActMicroWishOperationRecordDO.setImgUrl(feedbackPhotoPathList);
                    comActMicroWishOperationRecordMapper.insert(comActMicroWishOperationRecordDO);
                }
//                else {
//                    comActMicroWishDO.setStatus(3);
//                }
                comActMicroWishFeedbackMapper.insert(comActMicroWishFeedbackDO);
            default:
                break;
        }
        if(isUpdate){
        int update = comActMicroWishDAO.updateById(comActMicroWishDO);
        if (update > 0) {
                return R.ok();
            }
        }else{
            return R.ok();
        }
        return R.fail();
@@ -189,47 +301,51 @@
    /**
     * 点赞/取消点赞微心愿
     *
     * @param comActMicroWishVO
     *            操作参数
     * @param comActMicroWishVO 操作参数
     * @return 操作结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R comActMicroWishVO(ComActMicroWishVO comActMicroWishVO) {
        Integer haveGiveThumbsUp = comActMicroWishVO.getHaveGiveThumbsUp();
        Long userId = comActMicroWishVO.getSponsorId();
        Long microWishId = comActMicroWishVO.getId();
        ComActMicroWishUserDO comActMicroWishUserDO =
            comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda()
                .eq(ComActMicroWishUserDO::getMicroWishId, microWishId).eq(ComActMicroWishUserDO::getUserId, userId));
        //查询微心愿集心数并判断修改微心愿状态
        ComActMicroWishDO comActMicroWishDO=comActMicroWishDAO.selectById(microWishId);
        Integer count=comActMicroWishUserDAO.selectCount(new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getMicroWishId, microWishId));
        if(comActMicroWishDO!=null&&comActMicroWishDO.getAimNum()!=null&&count<comActMicroWishDO.getAimNum()){
            if(comActMicroWishDO.getStatus()==ComActMicroWishDO.status.jx){
                ComActMicroWishUserDO comActMicroWishUserDO = comActMicroWishUserDAO.selectOne(new QueryWrapper<ComActMicroWishUserDO>().lambda().eq(ComActMicroWishUserDO::getMicroWishId, microWishId).eq(ComActMicroWishUserDO::getUserId, userId));
        boolean empty = ObjectUtils.isEmpty(comActMicroWishUserDO);
        int num = 0;
        if (haveGiveThumbsUp.intValue() == 1) {
            if (empty) {
                ComActMicroWishUserDO comActMicroWishUserDO1 = new ComActMicroWishUserDO();
                comActMicroWishUserDO1.setMicroWishId(microWishId);
                comActMicroWishUserDO1.setUserId(userId);
                num = comActMicroWishUserDAO.insert(comActMicroWishUserDO1);
            } else {
                return R.ok();
            }
        } else {
            if (empty) {
                return R.ok();
            } else {
                num = comActMicroWishUserDAO.deleteById(comActMicroWishUserDO.getId());
            }
                    return R.fail("无法重新点心");
        }
        if (num > 0) {
                    if(count>=comActMicroWishDO.getAimNum()-1){
                        comActMicroWishDO.setStatus(ComActMicroWishDO.status.dfp);
                        comActMicroWishDO.setFeedbackAt(DateUtil.date());
                        comActMicroWishDAO.updateById(comActMicroWishDO);
                        //完成集心添加操作记录
                        wishOperationRecordService.addOperationRecord("完成集心",comActMicroWishDO.getSponsorId()
                                ,comActMicroWishDO.getId(),ComActMicroWishOperationRecordDO.type.jx,"用户完成集心",null);
                    }
            return R.ok();
        }
        return R.fail();
            }
        }
        return R.fail("该微心愿不可点心");
    }
    /**
     * 用户确认心愿
     *
     * @param comActMicroWishVO
     *            用户评价
     * @param comActMicroWishVO 用户评价
     * @return 确认结果
     */
    @Override
@@ -239,8 +355,8 @@
            return R.fail("心愿不存在");
        }
        Integer status = comActMicroWishDO1.getStatus();
        if (status.intValue() != 5) {
            return R.fail("心愿状态不是待确认");
        if (!status.equals(ComActMicroWishDO.status.dqr)) {
            return R.fail("心愿状态不是待确认状态");
        }
        ComActMicroWishDO comActMicroWishDO = new ComActMicroWishDO();
        comActMicroWishDO.setId(comActMicroWishVO.getId());
@@ -250,6 +366,9 @@
        comActMicroWishDO.setEvaluate(comActMicroWishVO.getEvaluate());
        int update = comActMicroWishDAO.updateById(comActMicroWishDO);
        if (update > 0) {
            //用户确认心愿添加操作记录
            wishOperationRecordService.addOperationRecord(comActMicroWishVO.getEvaluate(),comActMicroWishDO1.getSponsorId()
                    ,comActMicroWishDO1.getId(),ComActMicroWishOperationRecordDO.type.wc,"用户已确认",null);
            return R.ok();
        }
        return R.fail();
@@ -258,10 +377,8 @@
    /**
     * 社区首页代办事件集合
     *
     * @param communityId
     *            社区id
     * @param userId
     *            登录用户
     * @param communityId 社区id
     * @param userId      登录用户
     * @return 代办事件集合
     */
    @Override
@@ -277,13 +394,20 @@
            return R.fail("id有误!");
        }
        comActMicroWishDAO.deleteById(id);
        comActMicroWishUserDAO
            .delete(new LambdaQueryWrapper<ComActMicroWishUserDO>().eq(ComActMicroWishUserDO::getMicroWishId, id));
        comActMicroWishUserDAO.delete(new LambdaQueryWrapper<ComActMicroWishUserDO>().eq(ComActMicroWishUserDO::getMicroWishId,id));
        return R.ok();
    }
    @Override
    public R timedTaskActMicroWishAll() {
        //微心愿自动确认前需要添加操作记录
        List<Long> wishIds = comActMicroWishDAO.getWishAutoConfirmIds();
        wishIds.forEach(wishId -> {
            //需要添加操作记录
            wishOperationRecordService.addOperationRecord("系统自动确认微心愿",null
                    ,wishId, ComActMicroWishOperationRecordDO.type.zd,"系统自动确认微心愿",null);
        });
        int num = comActMicroWishDAO.updateStatusAutoConfirm();
        log.info("定时任务--修改待自动确认微心愿状态数量【{}】", num);
        return R.ok();
@@ -291,8 +415,7 @@
    @Override
    public R getScreenMicroList(ScreenMicroListDTO microListDTO) {
        IPage<MicroListVO> microListVOIPage = comActMicroWishDAO
            .getScreenMicroList(new Page(microListDTO.getPageNum(), microListDTO.getPageSize()), microListDTO);
        IPage<MicroListVO> microListVOIPage = comActMicroWishDAO.getScreenMicroList(new Page(microListDTO.getPageNum(),microListDTO.getPageSize()),microListDTO);
        if (!microListVOIPage.getRecords().isEmpty()) {
            microListVOIPage.getRecords().forEach(microListVO -> {
                Integer count = comActMicroWishUserDAO.selectCount(new QueryWrapper<ComActMicroWishUserDO>().lambda()