merge upstream

This commit is contained in:
2025-11-20 16:25:33 +08:00
9 changed files with 86 additions and 3 deletions

View File

@ -4,6 +4,10 @@ import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.fuyuanshen.app.domain.bo.AppDeviceBindRecordBo;
import com.fuyuanshen.app.domain.bo.AppDeviceShareBo;
import com.fuyuanshen.app.domain.vo.AppDeviceBindRecordVo;
import com.fuyuanshen.app.domain.vo.AppDeviceShareVo;
import com.fuyuanshen.app.domain.vo.AppRoleVo;
import com.fuyuanshen.app.domain.vo.AppUserVo;
import com.fuyuanshen.common.core.constant.Constants;
@ -33,6 +37,7 @@ import org.springframework.stereotype.Service;
import java.time.Duration;
import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
/**
* 登录校验方法
@ -52,6 +57,8 @@ public class AppLoginService {
private final ISysTenantService tenantService;
private final IAppUserService appUserService;
private final IAppDeviceShareService appDeviceShareService;
private final IAppDeviceBindRecordService appDeviceBindRecordService;
/**
@ -188,10 +195,32 @@ public class AppLoginService {
public void cancelAccount() {
try {
AppLoginUser loginUser = AppLoginHelper.getLoginUser();
// AppLoginUser loginUser = new AppLoginUser();
// loginUser.setUserId(1988398584423133187L);
// loginUser.setUsername("19022528079");
if (ObjectUtil.isNull(loginUser)) {
return;
}
appUserService.deleteWithValidByIds(Collections.singletonList(loginUser.getUserId()),true);
AppDeviceBindRecordBo appDeviceBindRecordBo = new AppDeviceBindRecordBo();
appDeviceBindRecordBo.setBindingUserId(loginUser.getUserId());
List<AppDeviceBindRecordVo> appDeviceBindRecordVos = appDeviceBindRecordService.queryList(appDeviceBindRecordBo);
if(ObjectUtil.length(appDeviceBindRecordVos)>0){
// 根据设备id批量删除
List<Long> deviceIds = appDeviceBindRecordVos.stream().map(AppDeviceBindRecordVo::getDeviceId).toList();
appDeviceShareService.deleteByDeviceIds(deviceIds);
List<Long> ids = appDeviceBindRecordVos.stream()
.map(AppDeviceBindRecordVo::getId)
.collect(Collectors.toList());
appDeviceBindRecordService.deleteWithValidByIds(ids, true);
log.info("删除绑定关系表数据ids={}",ids);
}
if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
// 超级管理员 登出清除动态租户
TenantHelper.clearDynamic();

View File

@ -9,6 +9,8 @@ import com.fuyuanshen.app.domain.vo.AppDeviceShareVo;
import com.fuyuanshen.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 设备分享Mapper接口
*
@ -27,4 +29,6 @@ public interface AppDeviceShareMapper extends BaseMapperPlus<AppDeviceShare, App
* @return 设备分享
*/
Page<AppDeviceShareVo> selectWebDeviceShareList(@Param("bo") AppDeviceShareBo bo, Page<AppDeviceShareVo> page);
void deleteByDeviceIds(@Param("deviceIds") List<Long> deviceIds);
}

View File

@ -67,4 +67,6 @@ public interface IAppDeviceShareService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<AppDeviceShareVo> otherDeviceShareList(AppDeviceShareBo bo, PageQuery pageQuery);
void deleteByDeviceIds(List<Long> deviceIds);
}

View File

@ -166,4 +166,9 @@ public class AppDeviceShareServiceImpl implements IAppDeviceShareService {
});
return TableDataInfo.build(result);
}
@Override
public void deleteByDeviceIds(List<Long> deviceIds) {
baseMapper.deleteByDeviceIds(deviceIds);
}
}

View File

@ -3,6 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuyuanshen.app.mapper.AppDeviceShareMapper">
<delete id="deleteByDeviceIds">
delete from app_device_share where device_id in
<foreach item="item" collection="deviceIds" separator="," open="(" close=")">
#{item}
</foreach>
</delete>
<select id="otherDeviceShareList" resultType="com.fuyuanshen.app.domain.vo.AppDeviceShareVo">
select d.device_name,

View File

@ -137,4 +137,13 @@ public interface DeviceMapper extends BaseMapper<Device> {
List<DeviceUsageFrequencyVo> getDeviceUsageFrequency(@Param("days") int days);
List<OnlineStatusVo> queryOnlineStatusList();
/**
* 根据设备类型ID查询设备数量
*
* @param deviceTypeId 设备类型ID
* @return 设备数量
*/
int countByDeviceTypeId(@Param("deviceTypeId") Long deviceTypeId);
}

View File

@ -192,10 +192,21 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
throw new BadRequestException("设备IMEI已存在");
}
DeviceTypeGrants typeGrants = new DeviceTypeGrants();
if (deviceForm.getDeviceType() != null) {
DeviceTypeQueryCriteria queryCriteria = new DeviceTypeQueryCriteria();
queryCriteria.setDeviceTypeId(deviceForm.getDeviceType());
typeGrants = deviceTypeGrantsMapper.selectById(queryCriteria.getDeviceTypeId());
if (typeGrants == null) {
throw new Exception("设备类型不存在!!!");
}
}
// 检查设备类型是否存在,如果不存在则创建
DeviceType deviceType = null;
if (deviceForm.getDeviceType() != null) {
deviceType = deviceTypeMapper.selectById(deviceForm.getDeviceType());
deviceType = deviceTypeMapper.selectById(typeGrants.getDeviceTypeId());
} else if (deviceForm.getTypeName() != null) {
deviceType = deviceTypeMapper.selectOne(new QueryWrapper<DeviceType>().eq("type_name", deviceForm.getTypeName()));
}

View File

@ -224,6 +224,16 @@ public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceT
throw new RuntimeException("设备类型不存在");
}
if (!deviceType.getTypeName().equals(resources.getTypeName())) {
int count = deviceMapper.countByDeviceTypeId(deviceType.getId());
if (count > 0) {
throw new RuntimeException("该设备类型下已有绑定设备,无法修改设备类型名称!!!");
}
}
// List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>()
// .eq("device_type", deviceTypeGrants.getDeviceTypeId()));
// if (CollectionUtil.isNotEmpty(devices)) {

View File

@ -497,4 +497,11 @@
FROM device a left join device_type b on a.device_type = b.id where b.communication_mode in (0, 2) and a.online_status in (1,2)
</select>
<!-- 根据设备类型ID查询设备数量 -->
<select id="countByDeviceTypeId" resultType="int">
SELECT COUNT(*)
FROM device
WHERE device_type = #{deviceTypeId}
</select>
</mapper>