张天森
2022-11-10 d99a56e37cf9109b46ee68d34a06594ef5615ed3
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSanShuoExpertServiceImpl.java
@@ -4,12 +4,15 @@
import cn.hutool.core.util.NumberUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.extra.pinyin.PinyinUtil;
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.sanshuo.ComSanshuoExpertDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sanshuo.ComSanshuoExpertVO;
import com.panzhihua.common.model.vos.sanshuo.ExpertRangeVO;
import com.panzhihua.common.model.vos.sanshuo.ExpertShowVO;
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
@@ -21,12 +24,14 @@
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.entity.ComSanshuoIndustryCenter;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComStreetDO;
import com.panzhihua.service_community.service.ComActService;
import com.panzhihua.service_community.service.ComSanShuoExpertService;
import com.panzhihua.service_community.service.ComStreetService;
import com.panzhihua.service_community.util.MyAESUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +45,7 @@
import static java.util.Objects.nonNull;
@Service
@Slf4j
public class ComSanShuoExpertServiceImpl  extends ServiceImpl<ComSanshuoExpertDao, ComSanshuoExpert> implements ComSanShuoExpertService {
    @Resource
@@ -81,13 +87,15 @@
            expert.setCreateTime(new Date());
            if (expert.getLevel()==2){
                expert.setIndustryCenterId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comSanshuoIndustryCenterDao.selectById(expert.getUnitId()).getName()+"调解站");
                expert.setUnit(comSanshuoIndustryCenterDao.selectById(expert.getUnitId()).getName());
            }else if(expert.getLevel()==3){
                expert.setStreetId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comStreetDAO.selectById(expert.getUnitId()).getName()+"调解站");
            }else if(expert.getLevel()==4){
                expert.setCommunityId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comActDAO.selectById(expert.getUnitId()).getName()+"调解站");
                expert.setUnit(comActDAO.selectById(expert.getUnitId()).getName()+"调解室");
            }else{
                expert.setUnit("区三说会堂");
            }
            expert.setStatus(1);
            expert.setDelFlag(1);
@@ -99,6 +107,10 @@
                    e.printStackTrace();
                }
                //生成后台账号
                //如果是普达社区专家则不生成后台账号
                if (nonNull(expert.getCommunityId()) && !expert.getCommunityId().equals(10172)){
                   return R.ok();
                }
                AdministratorsUserVO user=new AdministratorsUserVO();
                user.setUserId(Snowflake.getId());
                user.setAccount(comSanshuoExpertDTO.getAccount());
@@ -106,7 +118,9 @@
                user.setName(comSanshuoExpertDTO.getName());
                user.setType(11);
                user.setImageUrl(comSanshuoExpertDTO.getAvatar());
                return R.ok(userService.sanShuoAddUser(user));
                user.setPhone(comSanshuoExpertDTO.getPhone());
                userService.sanShuoAddUser(user);
                return R.ok();
            }
        }else {
            ComSanshuoExpert expert=new ComSanshuoExpert();
@@ -133,6 +147,7 @@
        return R.fail("操作失败");
    }
    /**
     * 后台获取专家列表
     * @param page
@@ -142,7 +157,7 @@
     * @return 处理结果
     * */
    @Override
    public R expertPage(String keyWord, Integer page, Integer size, LoginUserInfoVO loginUserInfo) {
    public R expertPage(String keyWord, Integer page, Integer size, LoginUserInfoVO loginUserInfo,Integer level) {
        //range:1.三说会堂下属,2业务中心下属,3街道下属,4社区下属
        //id:社区或街道或业务中心id
        //账号级别
@@ -161,14 +176,39 @@
                }else if (loginUserInfo.getType().equals(11)){
                    range=2;
                    id=loginUserInfo.getCommunityId();
                }else if (loginUserInfo.getType().equals(7)){
                    //街道后台
                    range=3;
                    id=loginUserInfo.getStreetId();
                }else if (loginUserInfo.getType().equals(12)){
                    range=2;
                    id=comSanshuoIndustryCenterDao.selectOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount,loginUserInfo.getAccount() )).getId();
                }else if (loginUserInfo.getType().equals(3)){
                    //社区后台账号
                    range=4;
                    id=loginUserInfo.getCommunityId();
                }
            }
        }
        if (loginUserInfo.getAccount().equals("admin") || loginUserInfo.getAccount().equals("xiqu")){
        if (loginUserInfo.getAccount().equals("admin")){
            //三说会堂查看所有专家
            id=null;
            range=null;
            range=1;
        }
        return R.ok(comSanshuoExpertDao.expertPage(new Page(page,size),keyWord,range,id));
        log.info("");
        IPage<ComSanshuoExpertVO> comSanshuoExpertVOIPage = comSanshuoExpertDao.expertPage(new Page(page, size), keyWord, range, id, level,loginUserInfo.getAppId());
        for (ComSanshuoExpertVO record : comSanshuoExpertVOIPage.getRecords()) {
            //获取调解次数和成功率
            record.setCount(comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, record.getId())));
            record.setSuccessCount(comEventMapper.selectCount(new QueryWrapper<ComEvent>().lambda().eq(ComEvent::getSpecialistId, record.getId()).eq(ComEvent::getEventResult,2 )));
            if (nonNull(record.getCount()) && nonNull(record.getSuccessCount())){
                if (!record.getCount().equals(0) && !record.getSuccessCount().equals(0)){
                    record.setRate(NumberUtil.div(record.getSuccessCount(), record.getCount(),2));
                }
            }
        }
        return R.ok(comSanshuoExpertVOIPage);
    }
    /**
@@ -181,6 +221,7 @@
            if (nonNull(expertShowVO.getLevel())){
                if (1==expertShowVO.getLevel()) {
                    expertShowVO.setName("区三说会堂调解专家");
                    expertShowVO.setCount(comSanshuoExpertDao.selectExpertVoList());
                }else if (2==expertShowVO.getLevel()){
                    expertShowVO.setName("行业分中心调解专家");
                    List<ExpertShowVO> expertShowVOS1 = comSanshuoExpertDao.selectExpertIndustry();
@@ -198,6 +239,7 @@
        }
        return R.ok(expertShowVOS);
    }
    /**
     * 专家级别与单位范围
@@ -244,37 +286,33 @@
                ExpertRangeVO vo=new ExpertRangeVO();
                vo.setLevel(2);
                vo.setName("行业分中心");
                vo.setId(comSanshuoIndustryCenterDao.selectOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount, loginUserInfo.getAccount())).getId());
                list.add(vo);
                return R.ok(list);
            }else if (loginUserInfo.getType().equals(3)) {
                //社区账号
                ComActDO comStreetDO = comActDAO.selectById(loginUserInfo.getCommunityId());
                List<ExpertRangeVO> list = new ArrayList<>();
                ExpertRangeVO vo = new ExpertRangeVO();
                vo.setLevel(4);
                vo.setName(comStreetDO.getName() + "调解站");
                vo.setId(loginUserInfo.getCommunityId());
                list.add(vo);
                return R.ok(list);
            }else if (nonNull(loginUserInfo.getUserType())){
                if (loginUserInfo.getUserType().equals(1)){
                    //街道账号
                    ComStreetDO comStreetDO = comStreetDAO.selectById(loginUserInfo.getStreetId());
                    List<ExpertRangeVO> list=new ArrayList<>();
                    ExpertRangeVO vo=new ExpertRangeVO();
                    vo.setLevel(3);
                    vo.setName(comStreetDO.getName()+"调解站");
                    vo.setId(loginUserInfo.getStreetId());
                    list.add(vo);
                    return R.ok(list);
                }
                if (loginUserInfo.getUserType().equals(2)){
                    //街道账号
                    ComActDO comActDO = comActDAO.selectById(loginUserInfo.getCommunityId());
                    List<ExpertRangeVO> list=new ArrayList<>();
                    ExpertRangeVO vo=new ExpertRangeVO();
                    vo.setLevel(4);
                    vo.setName(comActDO.getName()+"调解站");
                    vo.setId(loginUserInfo.getStreetId());
                    list.add(vo);
                    return R.ok(list);
                }
            } else if (loginUserInfo.getType().equals(7)){
                //街道账号
                ComStreetDO comActDO = comStreetDAO.selectById(loginUserInfo.getStreetId());
                List<ExpertRangeVO> list=new ArrayList<>();
                ExpertRangeVO vo=new ExpertRangeVO();
                vo.setLevel(4);
                vo.setName(comActDO.getName()+"调解站");
                vo.setId(loginUserInfo.getStreetId());
                list.add(vo);
                return R.ok(list);
            }
        }
        return R.fail();
    }
    /**
     * 小程序获取专家列表
@@ -326,20 +364,87 @@
            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));
            if (nonNull(successCount) && nonNull(count)){
                if (!successCount.equals(0) && !count.equals(0)){
                        //计算成功率
                        comSanshuoExpert.setRate(NumberUtil.div(successCount, count,2));
                }
            }else {
                comSanshuoExpert.setCount(0);
                comSanshuoExpert.setRate(new BigDecimal(0));
            }
        }
        return R.ok(comSanshuoExperts);
    }
    @Override
    public void insertExpert(ComSanshuoExpert expert) {
//            if (nonNull(comSanshuoExpertDTO.getUnit())){
//                String id = comSanshuoExpertDTO.getUnit();
//                String[] split = id.split(",");
//                expert.setUnitId(split[split.length-1]);
//            }
            expert.setId(Snowflake.getId());
            expert.setCreateTime(new Date());
            if (expert.getLevel()==2){
                expert.setIndustryCenterId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comSanshuoIndustryCenterDao.selectById(expert.getUnitId()).getName()+"调解站");
            }else if(expert.getLevel()==3){
                expert.setStreetId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comStreetDAO.selectById(expert.getUnitId()).getName()+"调解站");
            }else if(expert.getLevel()==4){
                expert.setCommunityId(Long.parseLong(expert.getUnitId()));
                expert.setUnit(comActDAO.selectById(expert.getUnitId()).getName()+"调解站");
            }
            expert.setStatus(1);
            expert.setDelFlag(1);
            expert.setCreateBy("admin");
            expert.setCreateTime(new Date());
            expert.setAdded(0);
            expert.setPassword("Huacheng@123");
            expert.setAccount(PinyinUtil.getPinyin(expert.getName(),""));
            int insert = comSanshuoExpertDao.insert(expert);
            if (insert>0){
                log.info(expert.getName()+"添加完成");
            }
//            if (insert>0){
//                try {
//                    comSanshuoExpertDTO.setPassword(comSanshuoExpertDTO.getPassword());
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//                //生成后台账号
//                AdministratorsUserVO user=new AdministratorsUserVO();
//                user.setUserId(Snowflake.getId());
//                user.setAccount(comSanshuoExpertDTO.getAccount());
//                user.setPassword(comSanshuoExpertDTO.getPassword());
//                user.setName(comSanshuoExpertDTO.getName());
//                user.setType(11);
//                user.setImageUrl(comSanshuoExpertDTO.getAvatar());
//                user.setPhone(comSanshuoExpertDTO.getPhone());
//                userService.sanShuoAddUser(user);
//            }
    }
    @Override
    public R backstageList(Integer level,LoginUserInfoVO loginUserInfoVO,Integer page,Integer size) {
        if (nonNull(level)){
            if (level.equals(1)){
                //三说会堂权限,查看所有
                return R.ok(comSanshuoExpertDao.expertList(new Page(page,size),level,null ,loginUserInfoVO.getAppId()));
            }else if (level.equals(2)){
                //行业分中心
                ComSanshuoIndustryCenter center = comSanshuoIndustryCenterDao.selectOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount, loginUserInfoVO.getAccount()));
                return R.ok(comSanshuoExpertDao.expertList(new Page(page,size),level,center.getId(),loginUserInfoVO.getAppId()));
            }else if (level.equals(3)){
                //街道
                return R.ok(comSanshuoExpertDao.expertList(new Page(page,size),level,loginUserInfoVO.getStreetId(),loginUserInfoVO.getAppId()));
            }else if(level.equals(4)){
                return R.ok(comSanshuoExpertDao.expertList(new Page(page,size),level,loginUserInfoVO.getCommunityId(),loginUserInfoVO.getAppId()));
            }
        }
        return null;
    }
}