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;
|
import com.panzhihua.common.model.vos.LoginUserInfoVO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.sanshuo.ExpertRangeVO;
|
import com.panzhihua.common.model.vos.sanshuo.ExpertShowVO;
|
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
|
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;
|
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 org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import static java.util.Objects.nonNull;
|
|
@Service
|
public class ComSanShuoExpertServiceImpl extends ServiceImpl<ComSanshuoExpertDao, ComSanshuoExpert> implements ComSanShuoExpertService {
|
|
@Resource
|
private ComSanshuoExpertDao comSanshuoExpertDao;
|
@Resource
|
private UserService userService;
|
@Resource
|
private ComSanshuoIndustryCenterDao comSanshuoIndustryCenterDao;
|
@Resource
|
private ComStreetDAO comStreetDAO;
|
@Resource
|
private ComActDAO comActDAO;
|
@Resource
|
private ComEventMapper comEventMapper;
|
|
|
/**
|
* 添加专家
|
* @param comSanshuoExpertDTO
|
* @return 处理结果
|
* */
|
@Override
|
public R addExpert(ComSanshuoExpertDTO comSanshuoExpertDTO) {
|
//是否重名
|
ComSanshuoExpert checkExpert=comSanshuoExpertDao.selectExpertByNameOrPhoneOrAccount(comSanshuoExpertDTO);
|
if (nonNull(checkExpert)){
|
return R.fail("账号信息有重复");
|
}
|
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-1]);
|
}
|
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()));
|
}
|
expert.setStatus(1);
|
expert.setDelFlag(1);
|
int insert = comSanshuoExpertDao.insert(expert);
|
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());
|
return userService.sanShuoAddUser(user);
|
}
|
return R.fail("添加失败");
|
}
|
|
/**
|
* 后台获取专家列表
|
* @param page
|
* @param keyWord
|
* @param size
|
* @param loginUserInfo 登陆账号信息
|
* @return 处理结果
|
* */
|
@Override
|
public R expertPage(String keyWord, Integer page, Integer size, LoginUserInfoVO loginUserInfo) {
|
//range:1.三说会堂下属,2业务中心下属,3街道下属,4社区下属
|
//id:社区或街道或业务中心id
|
//账号级别
|
Long id=null;
|
Integer range=null;
|
if (nonNull(loginUserInfo)){
|
if (nonNull(loginUserInfo.getUserType()) || nonNull(loginUserInfo.getType())){
|
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();
|
}
|
}
|
}
|
if (loginUserInfo.getAccount().equals("admin") || loginUserInfo.getAccount().equals("xiqu")){
|
id=null;
|
range=null;
|
}
|
return R.ok(comSanshuoExpertDao.expertPage(new Page(page,size),keyWord,range,id));
|
}
|
|
/**
|
* 专家风采
|
* */
|
@Override
|
public R expertShow() {
|
List<ExpertShowVO> expertShowVOS = comSanshuoExpertDao.expertShow();
|
for (ExpertShowVO expertShowVO : expertShowVOS) {
|
if (nonNull(expertShowVO.getLevel())){
|
if (1==expertShowVO.getLevel()) {
|
expertShowVO.setName("区三说会堂调解专家");
|
}else if (2==expertShowVO.getLevel()){
|
expertShowVO.setName("行业分中心调解专家");
|
List<ExpertShowVO> expertShowVOS1 = comSanshuoExpertDao.selectExpertIndustry();
|
expertShowVO.setChildList(expertShowVOS1);
|
}else if (3==expertShowVO.getLevel()){
|
expertShowVO.setName("镇/街道调解站调解专家");
|
List<ExpertShowVO> expertShowVOS1 = comSanshuoExpertDao.selectExpertStreet();
|
expertShowVO.setChildList(expertShowVOS1);
|
}else {
|
expertShowVO.setName("村/社区调解站调解专家");
|
List<ExpertShowVO> expertShowVOS1 = comSanshuoExpertDao.selectExpertCommunity();
|
expertShowVO.setChildList(expertShowVOS1);
|
}
|
}
|
}
|
return R.ok(expertShowVOS);
|
}
|
|
|
/**
|
* 专家级别与单位范围
|
* */
|
@Override
|
public R expertRange(LoginUserInfoVO loginUserInfo) {
|
if (nonNull(loginUserInfo)){
|
if (loginUserInfo.getAccount().equals("zhengfawei") || loginUserInfo.getAccount().equals("admin")){
|
List<ExpertRangeVO> list=new ArrayList<>();
|
for (int i = 1; i < 5; i++) {
|
ExpertRangeVO vo=new ExpertRangeVO();
|
vo.setLevel(i);
|
if (i==2){
|
//设置行业分中心为childList
|
vo.setChildList(comSanshuoIndustryCenterDao.indstryList());
|
vo.setName("行业分中心");
|
}else if (i==3){
|
vo.setChildList(comSanshuoIndustryCenterDao.streetList());
|
vo.setName("街道调解站");
|
}else if (i==4){
|
vo.setChildList(comSanshuoIndustryCenterDao.communityList());
|
vo.setName("社区调解站");
|
}else if(i==1){
|
vo.setName("三说会堂");
|
}
|
list.add(vo);
|
}
|
return R.ok(list);
|
}else if (loginUserInfo.getType().equals(11)){
|
//三说会堂后台
|
List<ExpertRangeVO> list=new ArrayList<>();
|
ExpertRangeVO vo=new ExpertRangeVO();
|
vo.setLevel(1);
|
vo.setName("区三说会堂");
|
list.add(vo);
|
return R.ok(list);
|
}else if (loginUserInfo.getType().equals(12)){
|
//行业分中心后台
|
List<ExpertRangeVO> list=new ArrayList<>();
|
ExpertRangeVO vo=new ExpertRangeVO();
|
vo.setLevel(2);
|
vo.setName("行业分中心");
|
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);
|
}
|
}
|
}
|
return R.fail();
|
}
|
|
|
/**
|
* 小程序获取专家列表
|
* */
|
@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);
|
}
|
|
|
}
|