| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.NumberUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | 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.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.ComStreetService; |
| | | import com.panzhihua.service_community.util.MyAESUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | 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.isNull; |
| | | import static java.util.Objects.nonNull; |
| | | |
| | | @Service |
| | |
| | | private ComStreetDAO comStreetDAO; |
| | | @Resource |
| | | private ComActDAO comActDAO; |
| | | @Resource |
| | | private ComEventMapper comEventMapper; |
| | | |
| | | |
| | | /** |
| | |
| | | * @return 处理结果 |
| | | * */ |
| | | @Override |
| | | public R addExpert(ComSanshuoExpertDTO comSanshuoExpertDTO) { |
| | | ComSanshuoExpert expert=new ComSanshuoExpert(); |
| | | BeanUtil.copyProperties(comSanshuoExpertDTO,expert); |
| | | expert.setId(Snowflake.getId()); |
| | | expert.setCreateTime(new Date()); |
| | | if (expert.getLevel()==2){ |
| | | expert.setIndustryCenterId(Long.parseLong(expert.getUnit())); |
| | | }else if(expert.getLevel()==3){ |
| | | expert.setStreetId(Long.parseLong(expert.getUnit())); |
| | | }else if(expert.getLevel()==4){ |
| | | expert.setCommunityId(Long.parseLong(expert.getUnit())); |
| | | } |
| | | int insert = comSanshuoExpertDao.insert(expert); |
| | | if (insert>0){ |
| | | try { |
| | | comSanshuoExpertDTO.setPassword(MyAESUtil.Encrypt(comSanshuoExpertDTO.getPassword(),"Ryo7M3n8loC5Abcd")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R addOrUpdateExpert(ComSanshuoExpertDTO comSanshuoExpertDTO) { |
| | | if (isNull(comSanshuoExpertDTO.getId())){ |
| | | //是否重名 |
| | | List<ComSanshuoExpert> checkExpert=comSanshuoExpertDao.selectExpertByNameOrPhoneOrAccount(comSanshuoExpertDTO); |
| | | if (checkExpert.size() != 0){ |
| | | return R.fail("账号信息有重复"); |
| | | } |
| | | //生成后台账号 |
| | | 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); |
| | | ComSanshuoExpert expert=new ComSanshuoExpert(); |
| | | BeanUtil.copyProperties(comSanshuoExpertDTO,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); |
| | | 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()); |
| | | user.setPhone(comSanshuoExpertDTO.getPhone()); |
| | | return R.ok(userService.sanShuoAddUser(user)); |
| | | } |
| | | }else { |
| | | ComSanshuoExpert expert=new ComSanshuoExpert(); |
| | | BeanUtil.copyProperties(comSanshuoExpertDTO,expert); |
| | | if (nonNull(comSanshuoExpertDTO.getUnit())){ |
| | | String id = comSanshuoExpertDTO.getUnit(); |
| | | String[] split = id.split(","); |
| | | expert.setUnitId(split[split.length-1]); |
| | | } |
| | | expert.setUpdateTime(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()+"调解站"); |
| | | } |
| | | return R.ok(comSanshuoExpertDao.updateById(expert)); |
| | | } |
| | | return R.fail("添加失败"); |
| | | |
| | | return R.fail("操作失败"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 后台获取专家列表 |
| | |
| | | } |
| | | } |
| | | } |
| | | 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)); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.ok(); |
| | | return R.ok(expertShowVOS); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 专家级别与单位范围 |
| | |
| | | vo.setLevel(i); |
| | | if (i==2){ |
| | | //设置行业分中心为childList |
| | | vo.setId(2L); |
| | | vo.setChildList(comSanshuoIndustryCenterDao.indstryList()); |
| | | vo.setName("行业分中心"); |
| | | }else if (i==3){ |
| | | vo.setId(3L); |
| | | vo.setChildList(comSanshuoIndustryCenterDao.streetList()); |
| | | vo.setName("街道调解站"); |
| | | }else if (i==4){ |
| | | vo.setId(4L); |
| | | vo.setChildList(comSanshuoIndustryCenterDao.communityList()); |
| | | vo.setName("社区调解站"); |
| | | }else if(i==1){ |
| | | vo.setId(1L); |
| | | vo.setName("三说会堂"); |
| | | } |
| | | list.add(vo); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 小程序获取专家列表 |
| | | * */ |
| | | @Override |
| | | public R selectExpertList(Integer type,Long id,Long cid) { |
| | | List<ComSanshuoExpert> list=new ArrayList<>(); |
| | | if (type.equals(1)){ |
| | | //行业分中心下属专家 |
| | | list=comSanshuoExpertDao.selectList(new QueryWrapper<ComSanshuoExpert>().lambda(). |
| | | eq(ComSanshuoExpert::getStatus, 1). |
| | | eq(ComSanshuoExpert::getDelFlag,1 ). |
| | | eq(ComSanshuoExpert::getIndustryCenterId, id)); |
| | | }else { |
| | | if (nonNull(id)){ |
| | | list=comSanshuoExpertDao.selectList(new QueryWrapper<ComSanshuoExpert>().lambda(). |
| | | eq(ComSanshuoExpert::getStatus, 1). |
| | | eq(ComSanshuoExpert::getDelFlag,1 ). |
| | | eq(ComSanshuoExpert::getCommunityId, id)); |
| | | }else { |
| | | list=comSanshuoExpertDao.selectList(new QueryWrapper<ComSanshuoExpert>().lambda(). |
| | | eq(ComSanshuoExpert::getStatus, 1). |
| | | eq(ComSanshuoExpert::getDelFlag,1 ). |
| | | eq(ComSanshuoExpert::getCommunityId,cid )); |
| | | } |
| | | } |
| | | return R.ok(list); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 专家风采列表 |
| | | * */ |
| | | @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); |
| | | } |
| | | |
| | | |
| | | } |