分享设备暂时提交

master
lld 2026-04-05 19:22:46 +08:00
parent 965e6d542c
commit 2141261641
6 changed files with 21 additions and 25 deletions

View File

@ -10,7 +10,6 @@ import com.agri.common.utils.poi.ExcelUtil;
import com.agri.system.domain.SysAgriInfo;
import com.agri.system.domain.SysUserAgri;
import com.agri.system.domain.vo.AgriInfoView;
import com.agri.system.domain.vo.AgriShareInfoVO;
import com.agri.system.service.ISysAgriInfoService;
import com.agri.system.service.ISysUserAgriService;
import org.apache.commons.lang3.StringUtils;
@ -20,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* Controller
@ -175,8 +175,8 @@ public class SysAgriInfoController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('assets:agri:list')")
@GetMapping("/selectShareInfo")
public AjaxResult selectShareInfo() {
AgriShareInfoVO result = sysAgriInfoService.selectShareInfoByUser();
public AjaxResult selectShareInfo(SysAgriInfo agriInfo) {
Map<String, Object> result = sysAgriInfoService.selectShareInfoByUser(agriInfo);
return success(result);
}
}

View File

@ -127,4 +127,8 @@ public class SysAgriInfo extends BaseEntity
@TableField(exist = false)
@JsonSerialize(using = ToStringSerializer.class)
private Long inviteBy;
/** 已分享次数(非数据库字段,仅用于查询返回) */
@TableField(exist = false)
private Integer sharedCount;
}

View File

@ -6,6 +6,7 @@ import com.agri.system.domain.vo.AgriInfoView;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* Mapper
@ -79,5 +80,5 @@ public interface SysAgriInfoMapper extends BaseMapper<SysAgriInfo> {
* @param sysAgriInfo
* @return
*/
List<com.agri.system.domain.vo.AgriShareInfoVO.DeviceShareInfo> selectShareList(SysAgriInfo sysAgriInfo);
List<SysAgriInfo> selectShareList(SysAgriInfo sysAgriInfo);
}

View File

@ -3,7 +3,6 @@ package com.agri.system.service;
import com.agri.system.domain.SysAgriInfo;
import com.agri.system.domain.vo.AgriAutoInfoVo;
import com.agri.system.domain.vo.AgriInfoView;
import com.agri.system.domain.vo.AgriShareInfoVO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@ -80,5 +79,5 @@ public interface ISysAgriInfoService extends IService<SysAgriInfo> {
* +
* @return
*/
AgriShareInfoVO selectShareInfoByUser();
Map<String, Object> selectShareInfoByUser(SysAgriInfo agriInfo);
}

View File

@ -8,13 +8,13 @@ import com.agri.system.domain.SysAgriInfo;
import com.agri.system.domain.SysUserAgri;
import com.agri.system.domain.vo.AgriAutoInfoVo;
import com.agri.system.domain.vo.AgriInfoView;
import com.agri.system.domain.vo.AgriShareInfoVO;
import com.agri.system.mapper.SysAgriInfoMapper;
import com.agri.system.service.ISysAgriInfoService;
import com.agri.system.service.ISysUserAgriService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -301,31 +301,24 @@ public class SysAgriInfoServiceImpl extends ServiceImpl<SysAgriInfoMapper, SysAg
* +
*/
@Override
public AgriShareInfoVO selectShareInfoByUser() {
public Map<String, Object> selectShareInfoByUser(SysAgriInfo agriInfo) {
Long userId = SecurityUtils.getUserId();
AgriShareInfoVO result = new AgriShareInfoVO();
// 一次查询获取所有设备(我是成员 或 我是邀请人)
SysAgriInfo query = new SysAgriInfo();
query.setUserId(userId);
query.setStatus(1);
List<AgriShareInfoVO.DeviceShareInfo> allDevices = baseMapper.selectShareList(query);
agriInfo.setUserId(userId);
List<SysAgriInfo> allDevices = baseMapper.selectShareList(agriInfo);
// 根据 inviteBy 字段拆分
// 我的分享invite_by = userId我是邀请人/owner
List<AgriShareInfoVO.DeviceShareInfo> mySharedDevices = allDevices.stream()
.filter(device -> userId.equals(device.getInviteBy()))
List<SysAgriInfo> mySharedDevices = allDevices.stream()
.filter(device -> userId.equals(device.getUserId()))
.collect(Collectors.toList());
// 分享给我的invite_by != userId 且 invite_by != null别人邀请我
List<AgriShareInfoVO.DeviceShareInfo> toMeDevices = allDevices.stream()
List<SysAgriInfo> toMeDevices = allDevices.stream()
.filter(device -> device.getInviteBy() != null
&& !userId.equals(device.getInviteBy()))
&& !device.getUserId().equals(device.getInviteBy()))
.collect(Collectors.toList());
result.setMySharedDevices(mySharedDevices);
result.setToMeDevices(toMeDevices);
return result;
return ImmutableMap.of("mySharedDevices", mySharedDevices, "toMeDevices", toMeDevices);
}
}

View File

@ -238,7 +238,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<!-- 查询设备分享列表(我的分享 + 分享给我的带shared_count -->
<select id="selectShareList" parameterType="SysAgriInfo" resultType="com.agri.system.domain.vo.AgriShareInfoVO$DeviceShareInfo">
<select id="selectShareList" parameterType="SysAgriInfo" resultMap="SysAgriInfoResult">
SELECT
agri.id,
agri.imei,
@ -254,9 +254,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT COUNT(*)
FROM sys_user_agri sua2
WHERE sua2.agri_id = agri.imei
AND sua2.invite_by = #{userId}
AND sua2.invite_by = #{inviteBy}
AND sua2.user_id != #{userId}
AND sua2.status = #{status}
) as shared_count
FROM sys_agri_info agri
LEFT JOIN sys_user_agri user_agri ON user_agri.agri_id = agri.imei