package com.ruoyi.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.MapUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.domain.*; import com.ruoyi.mapper.ZfShareMapper; import com.ruoyi.service.ZInfoUserService; import com.ruoyi.service.ZfDoctorService; import com.ruoyi.service.ZfDoctorShareService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; import static com.alibaba.druid.sql.PagerUtils.limit; @Slf4j @Service public class ZfDoctorShareServiceImpl extends ServiceImpl implements ZfDoctorShareService { @Resource private ZfDoctorService zfDoctorService; @Resource private ZInfoUserService zInfoUserService; private LambdaQueryWrapper uniqueCondition(ZfShare zfShare) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getShareId())), ZfShare::getShareId, zfShare.getShareId()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getShareContent())), ZfShare::getShareContent, zfShare.getShareContent()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getSysMenuId())), ZfShare::getSysMenuId, zfShare.getSysMenuId()); return lqw; } @Override public List getAuthority() { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,userId); return list(lqw); } @Resource ZfDoctorShareService zfDoctorShareService; public void addData(ZfShare za) { LambdaQueryWrapper lqw = uniqueCondition(za); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿分享重复数据"); } else { zfDoctorShareService.save(za); } } @Override public AjaxResult saveZa(ShareMore zfDoctor) { // boolean bl = zAuthorityService.saveOrUpdate(zAuthority); Long [] shareIds = zfDoctor.getShareIds(); Long [] shareContents = zfDoctor.getShareContents(); for (Long shareId : shareIds) { for (Long shareContent : shareContents) { ZfShare za = new ZfShare(); za.setUserId(getUserId()); za.setShareContent(shareContent); za.setShareId(shareId); za.setSysMenuId(2019L); addData(za); } } // Long [] // if(bl) return AjaxResult.success("分享成功!"); // else // return AjaxResult.error("权限新增失败!"); } /** * 根据UserId和分享人shareId查看已经授权给那些人那些数据 */ @Override public AjaxResult listByFidAid(ShareMore zfDoctor,Integer pageNo ,Integer pageSize) { //找到对应的赋予数据的用户以及数据内容 Long [] shareIds = zfDoctor.getShareIds(); List beanRecord3 = new ArrayList<>(); for (Long shareId : shareIds) { { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,shareId) .eq(ZfShare::getSysMenuId,zfDoctor.getSysMenuId()) .eq(ZfShare::getUserId, getUserId()); List beanRecords = list(lqw); for (ZfShare beanRecord : beanRecords ) { beanRecord3.add(zfDoctorService.getById(beanRecord.getShareContent())); } } } List record = beanRecord3.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (beanRecord3.size() -1) / pageSize +1; Page zfDoctorPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(zfDoctorPage, record,beanRecord3.size()); return AjaxResult.success(data); } @Override public AjaxResult deleteZa(ShareMore zfDoctor) { Long [] shareIds = zfDoctor.getShareIds(); Long [] shareContents = zfDoctor.getShareContents(); for(Long shareId : shareIds) for(Long shareContent: shareContents) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,shareId) .eq(ZfShare::getShareContent, shareContent) .eq(ZfShare::getSysMenuId, zfDoctor.getSysMenuId()) .eq(ZfShare::getUserId, getUserId()); zfDoctorShareService.remove(lqw); // addData(za); } return AjaxResult.success("数据收回成功!"); } /** * 用户自己查看别人分享的数据和分享人 */ @Override public AjaxResult listByUserId() { //找到对应的赋予数据的用户以及数据内容 HashMap> bs = new HashMap<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,getUserId()); lqw.eq(ZfShare::getSysMenuId,2019L); List beanRecords = list(lqw); List b1 = new ArrayList<>(); for (ZfShare beanRecord : beanRecords ) { b1.add(zfDoctorService.getById(beanRecord.getShareContent())); bs.put(beanRecord.getUserId(),b1); } log.info("从数据库中查到的为:{}", bs); return AjaxResult.success(bs); } /** * 用户自己查看别人分享的数据==用户自己查看别人分享的数据和分享人 */ @Override public AjaxResult listUserId(Integer pageNo ,Integer pageSize) { //找到对应的赋予数据的用户以及数据内容 List bs = new ArrayList<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,getUserId()); lqw.eq(ZfShare::getSysMenuId,2019L); List beanRecords = list(lqw); for (ZfShare beanRecord : beanRecords ) { ZfDoctor bs2 = zfDoctorService.getById(beanRecord.getShareContent()); bs2.setShareId(beanRecord.getUserId()); bs.add(bs2); } log.info("从数据库中查到的为:{}", bs); List record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (bs.size() -1) / pageSize +1; Page zfDoctorPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(zfDoctorPage, record,bs.size()); return AjaxResult.success(data); } public Long getUserId(){ ZInfoUser myself = zInfoUserService.getMyself(); return myself.getUserId(); } @Override public Long getShareId(ZfDownload zfDownload){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId, zfDownload.getDownloadId()) .eq(ZfShare::getShareContent, zfDownload.getDownloadContent()) .eq(ZfShare::getSysMenuId, zfDownload.getSysMenuId()); List beanRecords = list(lqw); if (beanRecords.size() != 0){ return beanRecords.get(0).getUserId(); } else { return null; } } }