manailin
2022-09-25 cfea88ee29569c14a58f18f375d117edbc096625
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSanShuoExpertServiceImpl.java
@@ -1,7 +1,9 @@
package com.panzhihua.service_community.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.community.sanshuo.ComSanshuoExpertDTO;
@@ -13,7 +15,10 @@
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.api.ComSanShuoExpertApi;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.entity.ComEvent;
import com.panzhihua.service_community.entity.ComSanshuoEvent;
import com.panzhihua.service_community.entity.ComSanshuoExpert;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComStreetDO;
@@ -24,6 +29,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -43,6 +49,8 @@
    private ComStreetDAO comStreetDAO;
    @Resource
    private ComActDAO comActDAO;
    @Resource
    private ComEventMapper comEventMapper;
    /**
@@ -54,8 +62,21 @@
    public R addExpert(ComSanshuoExpertDTO comSanshuoExpertDTO) {
        ComSanshuoExpert expert=new ComSanshuoExpert();
        BeanUtil.copyProperties(comSanshuoExpertDTO,expert);
        //处理id
        if (nonNull(comSanshuoExpertDTO.getUnit())){
            String id = comSanshuoExpertDTO.getUnit();
            String[] split = id.split(",");
            comSanshuoExpertDTO.setUnitId(split[split.length]);
        }
        expert.setId(Snowflake.getId());
        expert.setCreateTime(new Date());
        if (expert.getLevel()==2){
            expert.setIndustryCenterId(Long.parseLong(comSanshuoExpertDTO.getUnitId()));
        }else if(expert.getLevel()==3){
            expert.setStreetId(Long.parseLong(comSanshuoExpertDTO.getUnitId()));
        }else if(expert.getLevel()==4){
            expert.setCommunityId(Long.parseLong(comSanshuoExpertDTO.getUnitId()));
        }
        int insert = comSanshuoExpertDao.insert(expert);
        if (insert>0){
            try {
@@ -93,12 +114,14 @@
        Integer range=null;
        if (nonNull(loginUserInfo)){
            if (nonNull(loginUserInfo.getUserType()) || nonNull(loginUserInfo.getType())){
                if (loginUserInfo.getUserType().equals(1)){
                    range=3;
                    id=loginUserInfo.getStreetId();
                }else if (loginUserInfo.getUserType().equals(2)){
                    range=4;
                    id=loginUserInfo.getCommunityId();
                if (nonNull(loginUserInfo.getUserType())){
                    if (loginUserInfo.getUserType().equals(1)){
                        range=3;
                        id=loginUserInfo.getStreetId();
                    }else if (loginUserInfo.getUserType().equals(2)){
                        range=4;
                        id=loginUserInfo.getCommunityId();
                    }
                }else if (loginUserInfo.getType().equals(11)){
                    range=2;
                    id=loginUserInfo.getCommunityId();
@@ -133,7 +156,7 @@
                }
            }
        }
        return R.ok();
        return R.ok(expertShowVOS);
    }
    /**
@@ -204,4 +227,70 @@
    }
    /**
     * 小程序获取专家列表
     * */
    @Override
    public R selectExpertList() {
        List<ComSanshuoExpert> comSanshuoExperts = comSanshuoExpertDao.selectList(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getStatus, 1).eq(ComSanshuoExpert::getDelFlag, 1));
        //设置成功率
        for (ComSanshuoExpert comSanshuoExpert : comSanshuoExperts) {
            //查询成功率
            Integer count = comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, comSanshuoExpert.getId()).eq(ComEvent::getEventProcessStatus, 6));
            Integer successCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, comSanshuoExpert.getId()).eq(ComEvent::getEventProcessStatus, 6).eq(ComEvent::getEventResult, 2));
            comSanshuoExpert.setCount(count);
            if (nonNull(count) && !count.equals(0)){
                comSanshuoExpert.setCount(count);
                if (nonNull(successCount) && !count.equals(successCount)){
                    //计算成功率
                    comSanshuoExpert.setRate(NumberUtil.div(successCount, count,2));
                }else {
                    comSanshuoExpert.setRate(new BigDecimal(0));
                }
            }else {
                comSanshuoExpert.setCount(0);
            }
        }
        return R.ok(comSanshuoExperts);
    }
    /**
     * 专家风采列表
     * */
    @Override
    public R expertShowList(Integer level, Long id) {
        QueryWrapper<ComSanshuoExpert> wrapper=new QueryWrapper<>();
        wrapper.eq("level",level );
        if (level.equals(2)){
            wrapper.eq("industry_center_id", id);
        }else if (level.equals(3)){
            wrapper.eq("street_id",id );
        }else if (level.equals(4)){
            wrapper.eq("community_id",id );
        }
        List<ComSanshuoExpert> comSanshuoExperts = comSanshuoExpertDao.selectList(wrapper);
        for (ComSanshuoExpert comSanshuoExpert : comSanshuoExperts) {
            //获取成功率
            //查询成功率
            Integer count = comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, comSanshuoExpert.getId()).eq(ComEvent::getEventProcessStatus, 6));
            Integer successCount = comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, comSanshuoExpert.getId()).eq(ComEvent::getEventProcessStatus, 6).eq(ComEvent::getEventResult, 2));
            comSanshuoExpert.setCount(count);
            if (nonNull(count) && !count.equals(0)){
                comSanshuoExpert.setCount(count);
                if (nonNull(successCount) && !count.equals(successCount)){
                    //计算成功率
                    comSanshuoExpert.setRate(NumberUtil.div(successCount, count,2));
                }else {
                    comSanshuoExpert.setRate(new BigDecimal(0));
                }
            }else {
                comSanshuoExpert.setCount(0);
            }
        }
        return R.ok(comSanshuoExperts);
    }
}