角色表新增业务code字段, 用于区分数据来源

账号管理列表返回接口新增数据来源信息
角色管理列表返回接口洗澡能数据来源信息
This commit is contained in:
andy 2025-04-19 10:25:42 +08:00
parent 9b5b0bdb41
commit 54141790ce
12 changed files with 108 additions and 25 deletions

View File

@ -1,15 +1,13 @@
package com.evotech.hd.common.core.entity.resource.auth; package com.evotech.hd.common.core.entity.resource.auth;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.evotech.hd.common.core.entity.BaseEntity; import com.evotech.hd.common.core.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author zrb * @author zrb
@ -40,4 +38,10 @@ public class AuthRole extends BaseEntity implements Serializable {
@Schema(description = "是否内置角色,内置角色不允许修改") @Schema(description = "是否内置角色,内置角色不允许修改")
private Integer readonly; private Integer readonly;
@Schema(description = "业务code, 如果是开发者创建, 则为空")
private String businessCode;
@TableField(exist = false)
private String businessName;
} }

View File

@ -40,6 +40,8 @@ public class AuthUser extends BaseEntity implements Serializable {
@Schema(description = "业务code, 即公司类型,为公司统一社会信息代码, 运营商类型为运营商统一社会信用代码", hidden = true) @Schema(description = "业务code, 即公司类型,为公司统一社会信息代码, 运营商类型为运营商统一社会信用代码", hidden = true)
private String businessCode; private String businessCode;
@TableField(exist = false)
private String businessName;
@Schema(description = "关联方代码") @Schema(description = "关联方代码")
private String typeRelateCode; private String typeRelateCode;

View File

@ -67,5 +67,9 @@ public class CompanyController {
return companyService.loginOne(code); return companyService.loginOne(code);
} }
@GetMapping("/resource/list")
public BaseResponse<List<Company>> resourceList() {
return companyService.resourceList();
}
} }

View File

@ -12,14 +12,13 @@ import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.Date; import java.util.Date;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@Component //@Component
@Order(value = 20) @Order(value = 20)
@Slf4j @Slf4j
public class MqttConnectInit implements ApplicationRunner { public class MqttConnectInit implements ApplicationRunner {

View File

@ -21,4 +21,6 @@ public interface CompanyService {
public Result<Map<String, String>> companyByCode(String ccode); public Result<Map<String, String>> companyByCode(String ccode);
public BaseResponse<Company> loginOne(String code); public BaseResponse<Company> loginOne(String code);
public BaseResponse<List<Company>> resourceList();
} }

View File

@ -84,4 +84,9 @@ public class CompanyServiceImpl implements CompanyService {
return new BaseResponse<Company>().success(companyDao.selectOne(new LambdaQueryWrapper<Company>().eq(Company::getCcode, code))); return new BaseResponse<Company>().success(companyDao.selectOne(new LambdaQueryWrapper<Company>().eq(Company::getCcode, code)));
} }
@Override
public BaseResponse<List<Company>> resourceList() {
return new BaseResponse<List<Company>>().success(companyDao.selectList(new LambdaQueryWrapper<Company>().select(Company::getCcode, Company::getCname)));
}
} }

View File

@ -1,20 +1,25 @@
package com.evotech.hd.resource.service.impl; package com.evotech.hd.resource.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.Dto.BaseResponse;
import com.evotech.hd.common.core.dao.resource.ProxyOperaterDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthUserDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthUserStationDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserStationDao;
import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.Result;
import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.cloud.BatteryStation;
import com.evotech.hd.common.core.entity.cloud.Company;
import com.evotech.hd.common.core.entity.resource.ProxyOperater;
import com.evotech.hd.common.core.entity.resource.auth.AuthUser; import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole;
import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation; import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation;
import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.core.enums.CodeMsg;
import com.evotech.hd.common.core.utils.SnowflakeUtil; import com.evotech.hd.common.core.utils.SnowflakeUtil;
import com.evotech.hd.common.permission.util.RedisPermissionUtils;
import com.evotech.hd.resource.entity.request.ListUserRequest; import com.evotech.hd.resource.entity.request.ListUserRequest;
import com.evotech.hd.resource.service.AuthUserService; import com.evotech.hd.resource.service.AuthUserService;
import com.evotech.hd.resource.service.rpc.CloudService; import com.evotech.hd.resource.service.rpc.CloudService;
@ -28,6 +33,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -40,6 +46,8 @@ public class AuthUserServiceImpl implements AuthUserService {
@Resource @Resource
private AuthUserStationDao authUserStationDao; private AuthUserStationDao authUserStationDao;
@Resource @Resource
private ProxyOperaterDao proxyOperaterDao;
@Resource
private CloudService cloudService; private CloudService cloudService;
@ -68,7 +76,16 @@ public class AuthUserServiceImpl implements AuthUserService {
Date d = new Date(); Date d = new Date();
u.setCtime(d); u.setCtime(d);
u.setStatus(1); u.setStatus(1);
u.setPasswordExpireTime(DateUtil.offsetMonth(d, 12)); u.setPasswordExpireTime(DateUtil.offsetMonth(d, 12))
;
AuthUser user = RedisPermissionUtils.getUser();
if(BeanUtil.isNotEmpty(user)){
//如果不是开发者, 将当前登录用户所属的公司给角色
if(!Integer.valueOf(1).equals(user.getType())){
user.setBusinessCode(user.getBusinessCode());
}
}
int n = userDao.insert(u); int n = userDao.insert(u);
if (n == 1) { if (n == 1) {
return new Result<Integer>().success(n); return new Result<Integer>().success(n);
@ -112,6 +129,21 @@ public class AuthUserServiceImpl implements AuthUserService {
if (page.getRecords().isEmpty()) { if (page.getRecords().isEmpty()) {
return new Result<List<AuthUser>>().error(CodeMsg.DATABASE_RESULT_NULL); return new Result<List<AuthUser>>().error(CodeMsg.DATABASE_RESULT_NULL);
} }
Map<String, String> businessNames = proxyOperaterDao.selectList(new LambdaQueryWrapper<ProxyOperater>().select(ProxyOperater::getPocode, ProxyOperater::getPoname)).stream().collect(Collectors.toMap(ProxyOperater::getPocode, ProxyOperater::getPoname, (k1, k2)->k1));
BaseResponse<List<Company>> companyResult = cloudService.resourceCompanyList();
if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){
businessNames.putAll(companyResult.getData().stream().collect(Collectors.toMap(Company::getCcode, Company::getCname, (k1,k2)->k1)));
}
page.getRecords().stream().forEach(user ->{
if(StringUtils.hasText(user.getBusinessCode())){
user.setBusinessName(businessNames.get(user.getBusinessCode()));
}else{
user.setBusinessName("系统管理员");
}
});
return new Result<List<AuthUser>>().success(page); return new Result<List<AuthUser>>().success(page);
} }

View File

@ -1,22 +1,30 @@
package com.evotech.hd.resource.service.impl; package com.evotech.hd.resource.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.evotech.hd.common.core.Dto.BaseResponse;
import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.constant.HDConstant;
import com.evotech.hd.common.core.dao.resource.ProxyOperaterDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthRoleDao; import com.evotech.hd.common.core.dao.resource.auth.AuthRoleDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthRoleResourceDao; import com.evotech.hd.common.core.dao.resource.auth.AuthRoleResourceDao;
import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao; import com.evotech.hd.common.core.dao.resource.auth.AuthUserRoleDao;
import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.Result;
import com.evotech.hd.common.core.entity.cloud.Company;
import com.evotech.hd.common.core.entity.resource.ProxyOperater;
import com.evotech.hd.common.core.entity.resource.auth.AuthRole; import com.evotech.hd.common.core.entity.resource.auth.AuthRole;
import com.evotech.hd.common.core.entity.resource.auth.AuthRoleResource; import com.evotech.hd.common.core.entity.resource.auth.AuthRoleResource;
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole; import com.evotech.hd.common.core.entity.resource.auth.AuthUserRole;
import com.evotech.hd.common.core.entity.resource.dict.Dict; import com.evotech.hd.common.core.entity.resource.dict.Dict;
import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.core.enums.CodeMsg;
import com.evotech.hd.common.permission.util.RedisPermissionUtils;
import com.evotech.hd.resource.entity.request.DelAddRoleSourceRequest; import com.evotech.hd.resource.entity.request.DelAddRoleSourceRequest;
import com.evotech.hd.resource.service.DictService; import com.evotech.hd.resource.service.DictService;
import com.evotech.hd.resource.service.RoleService; import com.evotech.hd.resource.service.RoleService;
import com.evotech.hd.resource.service.rpc.CloudService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult; import org.apache.ibatis.executor.BatchResult;
@ -39,10 +47,21 @@ public class RoleServiceImpl implements RoleService {
private AuthUserRoleDao authUserRoleDao; private AuthUserRoleDao authUserRoleDao;
@Resource @Resource
private DictService dictService; private DictService dictService;
@Resource
private ProxyOperaterDao proxyOperaterDao;
@Resource
private CloudService cloudService;
@Override @Override
public Result<Integer> add(AuthRole r) { public Result<Integer> add(AuthRole r) {
r.setCtime(new Date()); r.setCtime(new Date());
AuthUser user = RedisPermissionUtils.getUser();
if(BeanUtil.isNotEmpty(user)){
//如果不是开发者, 将当前登录用户所属的公司给角色
if(!Integer.valueOf(1).equals(user.getType())){
r.setBusinessCode(user.getBusinessCode());
}
}
int n = authRoleDao.insert(r); int n = authRoleDao.insert(r);
if (n == 1) { if (n == 1) {
try { try {
@ -118,6 +137,19 @@ public class RoleServiceImpl implements RoleService {
if (roleList.isEmpty()) { if (roleList.isEmpty()) {
return new Result<List<AuthRole>>().error(CodeMsg.DATABASE_RESULT_NULL); return new Result<List<AuthRole>>().error(CodeMsg.DATABASE_RESULT_NULL);
} }
Map<String, String> businessNames = proxyOperaterDao.selectList(new LambdaQueryWrapper<ProxyOperater>().select(ProxyOperater::getPocode, ProxyOperater::getPoname)).stream().collect(Collectors.toMap(ProxyOperater::getPocode, ProxyOperater::getPoname, (k1,k2)->k1));
BaseResponse<List<Company>> companyResult = cloudService.resourceCompanyList();
if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){
businessNames.putAll(companyResult.getData().stream().collect(Collectors.toMap(Company::getCcode, Company::getCname, (k1,k2)->k1)));
}
roleList.stream().forEach(role ->{
if(StringUtils.hasText(role.getBusinessCode())){
role.setBusinessName(businessNames.get(role.getBusinessCode()));
}else{
role.setBusinessName("系统管理员");
}
});
return new Result<List<AuthRole>>().success(roleList); return new Result<List<AuthRole>>().success(roleList);
} }

View File

@ -2,6 +2,7 @@ package com.evotech.hd.resource.service.rpc;
import com.evotech.hd.common.core.Dto.BaseResponse; import com.evotech.hd.common.core.Dto.BaseResponse;
import com.evotech.hd.common.core.entity.cloud.BatteryStation; import com.evotech.hd.common.core.entity.cloud.BatteryStation;
import com.evotech.hd.common.core.entity.cloud.Company;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -16,4 +17,6 @@ public interface CloudService {
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public BaseResponse<List<BatteryStation>> resourceList(String pkIds); public BaseResponse<List<BatteryStation>> resourceList(String pkIds);
@GetMapping(value = "/company/resource/list", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public BaseResponse<List<Company>> resourceCompanyList();
} }

View File

@ -11,6 +11,7 @@
<result column="status" property="status" /> <result column="status" property="status" />
<result column="type" property="type" /> <result column="type" property="type" />
<result column="readonly" property="readonly" /> <result column="readonly" property="readonly" />
<result column="business_code" property="businessCode" />
<result column="creater" property="creater" /> <result column="creater" property="creater" />
<result column="ctime" property="ctime" /> <result column="ctime" property="ctime" />
<result column="updater" property="updater" /> <result column="updater" property="updater" />

View File

@ -1,29 +1,27 @@
package com.evotech.hd.wechat.service.impl; package com.evotech.hd.wechat.service.impl;
import java.util.List;
import java.util.Optional;
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.constant.HDConstant;
import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.Result;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest;
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
import com.evotech.hd.wechat.service.OrderService; import com.evotech.hd.wechat.service.OrderService;
import com.evotech.hd.wechat.service.rpc.CloudService; import com.evotech.hd.wechat.service.rpc.CloudService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestParam; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Optional;
@Service @Service
@Slf4j
public class OrderServiceImpl implements OrderService { public class OrderServiceImpl implements OrderService {
@Resource @Resource
@ -68,6 +66,7 @@ public class OrderServiceImpl implements OrderService {
public Result<String> walletPay(String orderNo, String wuid, String uname) { public Result<String> walletPay(String orderNo, String wuid, String uname) {
if (!wuid.equals(request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY))) { if (!wuid.equals(request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY))) {
log.error("当前参数的wuid:{}=== 请求中的wuid:{}", wuid, request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY));
return new Result<String>().error("账号错误"); return new Result<String>().error("账号错误");
} }
return cloudService.walletPay(orderNo, wuid, uname); return cloudService.walletPay(orderNo, wuid, uname);

View File

@ -1,10 +1,6 @@
package com.evotech.hd.wechat.service.impl; package com.evotech.hd.wechat.service.impl;
import java.nio.file.WatchService; import cn.hutool.core.util.DesensitizedUtil;
import java.util.List;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.constant.HDConstant;
import com.evotech.hd.common.core.dao.wechat.WechatUserDao; import com.evotech.hd.common.core.dao.wechat.WechatUserDao;
@ -17,13 +13,16 @@ import com.evotech.hd.common.core.entity.wechat.WechatUser;
import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.core.enums.CodeMsg;
import com.evotech.hd.wechat.service.WechatUserService; import com.evotech.hd.wechat.service.WechatUserService;
import com.evotech.hd.wechat.service.rpc.CloudService; import com.evotech.hd.wechat.service.rpc.CloudService;
import cn.hutool.core.util.DesensitizedUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Service @Service
@Slf4j
public class WechatUserServiceImpl implements WechatUserService { public class WechatUserServiceImpl implements WechatUserService {
@Resource @Resource
@ -88,6 +87,7 @@ public class WechatUserServiceImpl implements WechatUserService {
@Override @Override
public Result<List<WalletAccount>> listWallet(String wuid, HttpServletRequest request) { public Result<List<WalletAccount>> listWallet(String wuid, HttpServletRequest request) {
if (wuid == null || !wuid.equals(request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY))) { if (wuid == null || !wuid.equals(request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY))) {
log.error("当前参数的wuid:{}=== 请求中的wuid:{}", wuid, request.getHeader(HDConstant.WECHAT_SERVER_AUTHORIZATION_KEY));
return new Result<List<WalletAccount>>().error("账号错误"); return new Result<List<WalletAccount>>().error("账号错误");
} }