From 4aec3151a7cc700e0fd20fc77346b0a3c6907a59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Thu, 6 Nov 2025 20:28:18 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=E5=BE=AE=E4=BF=A1=E7=AB=AF?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=A7=9F=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加默认展示字段 --- .../vo/ProductionPlanResp2VO.java | 2 +- .../vo/ProductionPlanRespVO.java | 4 ++ .../PersonnelManagementServiceImpl.java | 2 +- .../admin/auth/vo/TenantTokenRespVO.java | 2 + .../dal/mysql/user/AdminUserMapper.java | 6 ++ .../service/auth/AdminAuthServiceImpl.java | 64 ++++++++++++++----- .../system/service/tenant/TenantService.java | 2 + .../service/tenant/TenantServiceImpl.java | 17 +++++ .../system/service/user/AdminUserService.java | 2 + .../service/user/AdminUserServiceImpl.java | 5 ++ 10 files changed, 88 insertions(+), 18 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanResp2VO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanResp2VO.java index d8e7d348..5298cce1 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanResp2VO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanResp2VO.java @@ -108,7 +108,7 @@ public class ProductionPlanResp2VO { @Schema(description = "基地负责人") private String baseManager; - @Schema(description = "地块使用剩余网箱数") + @Schema(description = "地块使用网箱数") private Integer predictedGridNumber; @Schema(description = "养殖网箱信息") private ProductionPlanGridRespVO planGridInfo; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanRespVO.java index 1db384cb..a6f9a0d2 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/vo/ProductionPlanRespVO.java @@ -88,6 +88,10 @@ public class ProductionPlanRespVO { private Double remainingArea; @Schema(description = "占地面积(百分比)") private Double usagePercentage; + @Schema(description = "地块总网箱数") + private Integer plotGridNumber; + @Schema(description = "地块使用剩余网箱数") + private Integer predictedGridNumber; @Schema(description = "备注") private String remark; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java index 7ae53c6e..ee1189d8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java @@ -95,8 +95,8 @@ public class PersonnelManagementServiceImpl implements PersonnelManagementServic PersonnelManagementDO updateObj = BeanUtils.toBean(updateReqVO, PersonnelManagementDO.class); SystemUserDO userDO = userMapper.selectByPhone(managementDO.getPhone()); if (updateReqVO.getPhone() != null) userDO.setUsername(updateReqVO.getPhone()); - if (updateReqVO.getName() != null) userDO.setNickname(updateReqVO.getName()); if (updateReqVO.getPhone() != null) userDO.setMobile(updateReqVO.getPhone()); + if (updateReqVO.getName() != null) userDO.setNickname(updateReqVO.getName()); if (updateReqVO.getPicture() != null) userDO.setAvatar(updateReqVO.getPicture()); // 处理图片集合转换 handleImageConversion(updateObj, updateReqVO); diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java index e9b2e103..099fa09e 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/TenantTokenRespVO.java @@ -25,5 +25,7 @@ public class TenantTokenRespVO { private String accessToken; @Schema(description = "刷新令牌") private String refreshToken; + @Schema(description = "默认展示租户 (1:当前; 0: 非当前)") + private Integer defaultStatus; } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index c0c9be8e..74f08f2b 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -5,7 +5,10 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.Collection; import java.util.List; @@ -48,4 +51,7 @@ public interface AdminUserMapper extends BaseMapperX { return selectList(AdminUserDO::getDeptId, deptIds); } + @InterceptorIgnore(tenantLine = "true") + @Select("SELECT * FROM system_users WHERE deleted = 0 AND mobile = #{mobile}") + List selectListByMobile(@Param("mobile") String mobile); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java index 3d837858..7dc8a05b 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java @@ -47,15 +47,14 @@ import jakarta.validation.Validator; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Base64; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; @@ -507,30 +506,63 @@ public class AdminAuthServiceImpl implements AdminAuthService { try { OAuth2AccessTokenDO currentOAuth = oauth2TokenService.getAccessToken(accessToken); - currentOAuth.getTenantId(); - TenantDO tenant = tenantService.getTenant(currentOAuth.getTenantId()); + Long tenantId = currentOAuth.getTenantId(); + TenantDO tenant = tenantService.getTenant(tenantId); - TenantTokenRespVO currentTenantObj = new TenantTokenRespVO(); - currentTenantObj.setTenantId(currentOAuth.getTenantId().toString()); - currentTenantObj.setTenantName(tenant.getName()); - currentTenantObj.setAccessToken(currentOAuth.getAccessToken()); - currentTenantObj.setRefreshToken(currentOAuth.getRefreshToken()); - currentTenantObj.setType("1"); - res.add(currentTenantObj); + res.add(this.getCurrentTenant(currentOAuth,tenant.getName())); + res.addAll(this.getTenantList(phoneNumber,tenantId)); + res.addAll(this.getRemoteTenant(phoneNumber)); } catch (Exception e) { e.printStackTrace(); } + return res; + } + /** + * 获取当前登录租户列表 + * @return + */ + private List getTenantList(String phoneNumber,Long tenantId) { + List tList = tenantService.getTenantListByMobile(phoneNumber); + tList = tList.stream() + .filter(tenant -> ObjectUtils.notEqual(tenantId, tenant.getTenantId())) + .collect(Collectors.toList()); + + return tList.stream().map(e -> + new TenantTokenRespVO(String.valueOf(e.getTenantId()), e.getTenantName(), "1", "", "", 0) + ).toList(); + } + + /** + * 获取当前登录信息 + * @return + */ + private TenantTokenRespVO getCurrentTenant(OAuth2AccessTokenDO currentOAuth,String tenantName) { + TenantTokenRespVO currentTenantObj = new TenantTokenRespVO(); + currentTenantObj.setTenantId(currentOAuth.getTenantId().toString()); + currentTenantObj.setTenantName(tenantName); + currentTenantObj.setAccessToken(currentOAuth.getAccessToken()); + currentTenantObj.setRefreshToken(currentOAuth.getRefreshToken()); + currentTenantObj.setType("1"); + currentTenantObj.setDefaultStatus(0); + return currentTenantObj; + } + + /** + * 获取wms系统登录信息 + * @param phoneNumber + * @return + */ + private List getRemoteTenant(String phoneNumber) { try { TenantResp tenantResp = httpClientUtil.postRequest(wmsHosts, url_1, new TenantReq(phoneNumber)); if (tenantResp.getCode() == 200) { - res.addAll(tenantResp.getData()); + return tenantResp.getData(); } } catch (Exception e) { e.printStackTrace(); } - - return res; + return Collections.EMPTY_LIST; } @Override diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java index 92e64603..ba474710 100755 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java @@ -145,4 +145,6 @@ public interface TenantService { void validTenant(Long id); List loginForTenantList(LoginForTenantReqVO reqVO); + + List getTenantListByMobile(String mobileNumber); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java index 056a433a..ff213aeb 100755 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java @@ -118,6 +118,23 @@ public class TenantServiceImpl implements TenantService { } + @Override + public List getTenantListByMobile(String mobileNumber) { + List pList = tenantPackageService.getTenantPackageListByStatus(0); + Map pMap = pList.stream().collect(Collectors.toMap(TenantPackageDO::getId, TenantPackageDO::getName, (v1, v2) -> v1)); + + List uList = userService.getUserByMobileToList2(mobileNumber); + List ids = uList.stream().map(AdminUserDO::getTenantId).toList(); + + List tList = tenantMapper.selectList(TenantDO::getId,ids); + return tList.stream().map(t -> + new TenantRespVO( + t.getId(), + t.getName(), + t.getPackageId(), + pMap.getOrDefault(t.getPackageId(), ""))).toList(); + } + @Override @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换 @DataPermission(enable = false) // 参见 https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/1154 说明 diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 339d14a0..499019f2 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -120,6 +120,8 @@ public interface AdminUserService { */ AdminUserDO getUserByMobile(String mobile); List getUserByMobileToList(String mobile); + List getUserByMobileToList2(String mobileNumber); + /** * 获得用户分页列表 diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 1062df6f..a2229434 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -337,6 +337,11 @@ public class AdminUserServiceImpl implements AdminUserService { return userMapper.selectList(AdminUserDO::getMobile,mobile); } + @Override + public List getUserByMobileToList2(String mobileNumber) { + return userMapper.selectListByMobile(mobileNumber); + } + @Override public PageResult getUserPage(UserPageReqVO reqVO) { // 如果有角色编号,查询角色对应的用户编号