权限调整
This commit is contained in:
parent
a523fd90b7
commit
eb7d7c6bff
@ -1,5 +1,12 @@
|
||||
package com.evotech.hd.authorization.service;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.BaseResponse;
|
||||
import com.evotech.hd.common.core.entity.LoginCacheInfo;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.resource.LogLogin;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -7,12 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.evotech.hd.common.core.entity.LoginCacheInfo;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.resource.LogLogin;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient(value = "resource-server")
|
||||
public interface ResourceService {
|
||||
@ -33,4 +35,8 @@ public interface ResourceService {
|
||||
@GetMapping(value = "/resource/logininfo/get",
|
||||
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
|
||||
public Result<LoginCacheInfo> loginInfo(@RequestParam("uid") String uid);
|
||||
|
||||
@GetMapping(value = "/resource/user/station",consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE})
|
||||
public BaseResponse<List<AuthUserStation>> loadBatteryStation(@RequestParam("uid") String uid);
|
||||
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ import com.evotech.hd.common.core.entity.resource.LogLogin;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthPermission;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthRole;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
import com.evotech.hd.common.redis.utils.RedisUtil;
|
||||
import com.evotech.hd.common.web.util.IpUtil;
|
||||
@ -175,44 +176,63 @@ public class LoginServiceImpl implements LoginService {
|
||||
|
||||
//开始缓存权限信息
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_AUTH_USER_UID+":"+user.getPkId(), user.getUid());
|
||||
if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){
|
||||
BaseResponse<List<BatteryStation>> result = cloudService.loadBatteryStation(user.getBusinessCode());
|
||||
if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){
|
||||
List<BatteryStation> list = result.getData();
|
||||
String pkIds = "-1";
|
||||
String codes = "-1";
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
//如果是运营方的类型账号
|
||||
String pkIds = "-1", codes="-1";
|
||||
if(Integer.valueOf(2).equals(user.getType())){
|
||||
if(rcodeList.contains(HDConstant.OPERATOR_ROLE_CODE)){
|
||||
BaseResponse<List<BatteryStation>> result = cloudService.loadBatteryStation(user.getBusinessCode());
|
||||
if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){
|
||||
List<BatteryStation> list = result.getData();
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
pkIds = list.stream().map(BatteryStation::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
codes = list.stream().map(BatteryStation::getCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
}else{
|
||||
//不是运营商管理角色
|
||||
// 检查当前角色的站点信息
|
||||
BaseResponse<List<AuthUserStation>> result = resourceService.loadBatteryStation(user.getUid());
|
||||
if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){
|
||||
List<AuthUserStation> list = result.getData();
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
pkIds = list.stream().map(AuthUserStation::getStationId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
codes = list.stream().map(AuthUserStation::getStationCode).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_PROXY_CODE+":"+user.getPkId(), user.getBusinessCode());
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes);
|
||||
}
|
||||
}
|
||||
if(rcodeList.contains(HDConstant.COMPANY_ROLE_CODE)){
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_PROXY_CODE+":"+user.getPkId(), user.getBusinessCode());
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_ID+":"+user.getPkId(), pkIds);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_STATION_CODE+":"+user.getPkId(), codes);
|
||||
|
||||
//客户角色
|
||||
String companyId="-1", companyCode="-1", carIds="-1", carPlateNums="-1";
|
||||
if(Integer.valueOf(3).equals(user.getType())){
|
||||
BaseResponse<Company> companyResult = cloudService.loadCompany(user.getBusinessCode());
|
||||
String companyId="-1", companyCode="-1", carIds="-1", carPlateNums="-1";
|
||||
if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){
|
||||
Company company = companyResult.getData();
|
||||
if(!ObjectUtils.isEmpty(company)){
|
||||
companyId = String.valueOf(company.getPkId());
|
||||
companyCode = company.getCcode();
|
||||
BaseResponse<List<VehicleInfo>> vehicleInfoResult = cloudService.loadVehicleInfo(company.getCcode());
|
||||
if(CodeMsg.SUCCESS.getCode().equals(vehicleInfoResult.getCode())){
|
||||
List<VehicleInfo> list = vehicleInfoResult.getData();
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
carIds = list.stream().map(VehicleInfo::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
carPlateNums = list.stream().map(VehicleInfo::getPlateNum).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
if(rcodeList.contains(HDConstant.COMPANY_ROLE_CODE)){
|
||||
if(CodeMsg.SUCCESS.getCode().equals(companyResult.getCode())){
|
||||
Company company = companyResult.getData();
|
||||
if(!ObjectUtils.isEmpty(company)){
|
||||
companyId = String.valueOf(company.getPkId());
|
||||
companyCode = company.getCcode();
|
||||
BaseResponse<List<VehicleInfo>> vehicleInfoResult = cloudService.loadVehicleInfo(company.getCcode());
|
||||
if(CodeMsg.SUCCESS.getCode().equals(vehicleInfoResult.getCode())){
|
||||
List<VehicleInfo> list = vehicleInfoResult.getData();
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
carIds = list.stream().map(VehicleInfo::getPkId).map(String::valueOf).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
carPlateNums = list.stream().map(VehicleInfo::getPlateNum).filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+user.getPkId(), companyId);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+user.getPkId(), companyCode);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+user.getPkId(), carIds);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+user.getPkId(), carPlateNums);
|
||||
}
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_ID+":"+user.getPkId(), companyId);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_COMPANY_CODE+":"+user.getPkId(), companyCode);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_ID+":"+user.getPkId(), carIds);
|
||||
redisUtil.set(HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.PermissionConstant.PERMISSION_CAR_CODE+":"+user.getPkId(), carPlateNums);
|
||||
|
||||
|
||||
return uv;
|
||||
}
|
||||
|
||||
|
||||
@ -28,6 +28,11 @@ public interface HDConstant {
|
||||
*/
|
||||
String COMPANY_ROLE_CODE = "COMPANY";
|
||||
|
||||
/**
|
||||
* 没有权限
|
||||
*/
|
||||
String PERMISSION_NOT_CODE = "notPermission";
|
||||
|
||||
|
||||
/**
|
||||
* 认证请求头key
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package com.evotech.hd.common.core.dao.cloud;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.cloud.HomeDataOrderSwapCollate;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2025-03-07
|
||||
*/
|
||||
@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
public interface HomeDataOrderSwapCollateDao extends BaseMapper<HomeDataOrderSwapCollate> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.evotech.hd.common.core.dao.resource.auth;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUserStation;
|
||||
|
||||
/**
|
||||
* @desc: 用户和充电站的关联
|
||||
* @ClassName:AuthUserStationDao
|
||||
* @date: 2025年04月17日 13:49
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface AuthUserStationDao extends BaseMapper<AuthUserStation> {
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package com.evotech.hd.common.core.entity.resource.auth;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 账户和站的关系, 一般是运营端使用
|
||||
* @ClassName:AuthUserStation
|
||||
* @date: 2025年04月17日 16:14
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("yt_auth_user_station")
|
||||
@Schema(name = "账号角色关系")
|
||||
public class AuthUserStation implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "pk_id", type = IdType.AUTO)
|
||||
private Integer pkId;
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
@NotBlank
|
||||
private String uid;
|
||||
|
||||
@Schema(description = "充电站编码")
|
||||
@NotBlank
|
||||
private String stationCode;
|
||||
|
||||
@Schema(description = "充电站Id")
|
||||
@NotBlank
|
||||
private Integer stationId;
|
||||
|
||||
@Schema(description = "创建人")
|
||||
private String creater;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date ctime;
|
||||
|
||||
@Schema(description = "修改时间", hidden = true)
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date uptime;
|
||||
}
|
||||
@ -1,9 +1,12 @@
|
||||
package com.evotech.hd.common.permission.handler;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import com.alibaba.nacos.common.utils.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.resource.auth.AuthUser;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
import com.evotech.hd.common.core.permission.DataScopes;
|
||||
import com.evotech.hd.common.permission.util.RedisPermissionUtils;
|
||||
@ -43,14 +46,18 @@ public class DataScopeHandler implements MultiDataPermissionHandler {
|
||||
@Override
|
||||
public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) {
|
||||
try {
|
||||
if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisPermissionUtils.getRoleType())){
|
||||
String roleCode = RedisPermissionUtils.getRoleCode();
|
||||
if(table != null && CollectionUtils.isNotEmpty(table.getNameParts()) && !"1".equals(RedisPermissionUtils.getRoleType()) && BeanUtil.isNotEmpty(RedisPermissionUtils.getUser())){
|
||||
String roleCode = getUserRoleType();
|
||||
Class<?> mapperClazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")));
|
||||
//优先检查是不是单角色权限
|
||||
DataScope dataScope = mapperClazz.getAnnotation(DataScope.class);
|
||||
if (ObjectUtils.isNotEmpty(dataScope) && dataScope.enabled()) {
|
||||
if(dataScope.permissionObject().equals(roleCode)){
|
||||
return buildDataScopeByAnnotation(dataScope);
|
||||
}else
|
||||
//如果说等于没有权限
|
||||
if(HDConstant.PERMISSION_NOT_CODE.equals(roleCode)){
|
||||
return buildNotDataScopeByAnnotation(dataScope);
|
||||
}
|
||||
}
|
||||
//如果不是, 检查多角色权限
|
||||
@ -60,7 +67,11 @@ public class DataScopeHandler implements MultiDataPermissionHandler {
|
||||
if(dataScopes.enabled()){
|
||||
if(dataScopes.permissionObject().equals(roleCode)){
|
||||
return buildDataScopeByAnnotation(dataScopes);
|
||||
}
|
||||
}else
|
||||
//如果说等于没有权限
|
||||
if(HDConstant.PERMISSION_NOT_CODE.equals(roleCode)){
|
||||
return buildNotDataScopeByAnnotation(dataScope);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -72,6 +83,23 @@ public class DataScopeHandler implements MultiDataPermissionHandler {
|
||||
}
|
||||
|
||||
|
||||
private String getUserRoleType(){
|
||||
AuthUser user = RedisPermissionUtils.getUser();
|
||||
if(BeanUtil.isNotEmpty(user) && user .getType() != null){
|
||||
switch (user.getType()){
|
||||
case 1:
|
||||
return "";
|
||||
case 2:
|
||||
return HDConstant.OPERATOR_ROLE_CODE;
|
||||
case 3:
|
||||
return HDConstant.COMPANY_ROLE_CODE;
|
||||
default:
|
||||
return HDConstant.PERMISSION_NOT_CODE;
|
||||
}
|
||||
}
|
||||
|
||||
return HDConstant.PERMISSION_NOT_CODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* DataScope注解方式,拼装数据权限
|
||||
@ -84,9 +112,20 @@ public class DataScopeHandler implements MultiDataPermissionHandler {
|
||||
return expression == null ? null : new Parenthesis(expression);
|
||||
}
|
||||
|
||||
/**
|
||||
* DataScope注解方式,拼装数据权限
|
||||
*
|
||||
* @param dataScope
|
||||
* @return
|
||||
*/
|
||||
private Expression buildNotDataScopeByAnnotation(DataScope dataScope) {
|
||||
Expression expression = buildDataScopeExpression(dataScope, "-1");
|
||||
return expression == null ? null : new Parenthesis(expression);
|
||||
}
|
||||
|
||||
|
||||
private Expression buildDataScopeExpression(DataScope dataScope, String value) {
|
||||
if(!"null".equals(value)){
|
||||
if(StringUtils.isNotEmpty(value) && !"null".equals(value)){
|
||||
ExpressionList expressionList = new ExpressionList(Arrays.asList(value.split(",")).stream().map(StringValue::new).collect(Collectors.toList()));
|
||||
// 设置左边的字段表达式,右边设置值。
|
||||
InExpression operatorInExpression = new InExpression();
|
||||
|
||||
@ -104,4 +104,10 @@ public class BatteryStationController {
|
||||
return batteryStationService.loginList(proxyCode);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询")
|
||||
@GetMapping("/resource/list")
|
||||
public BaseResponse<List<BatteryStation>> resourceList(@RequestParam String pkIds) {
|
||||
return batteryStationService.resourceList(pkIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,14 +1,18 @@
|
||||
package com.evotech.hd.cloud.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationDc;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2024-10-17
|
||||
*/
|
||||
|
||||
@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "source_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
public interface BatteryStationDcDao extends BaseMapper<BatteryStationDc> {
|
||||
|
||||
List<BatteryStationDc> getDcByStationCode(String stationCode);
|
||||
|
||||
@ -1,14 +1,17 @@
|
||||
package com.evotech.hd.cloud.dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationRobot;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2024-10-17
|
||||
*/
|
||||
@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
public interface BatteryStationRobotDao extends BaseMapper<BatteryStationRobot> {
|
||||
|
||||
List<BatteryStationRobot> getRobotByStationCode(String stationCode);
|
||||
|
||||
@ -32,4 +32,6 @@ public interface BatteryStationService {
|
||||
|
||||
public BaseResponse<List<BatteryStation>> loginList(String proxyId);
|
||||
|
||||
public BaseResponse<List<BatteryStation>> resourceList(String pkIds);
|
||||
|
||||
}
|
||||
|
||||
@ -272,4 +272,10 @@ public class BatteryStationServiceImpl implements BatteryStationService {
|
||||
return new BaseResponse<List<BatteryStation>>().success(batteryStationDao.selectList(new LambdaQueryWrapper<BatteryStation>().eq(BatteryStation::getProxyId, proxyCode).select(BatteryStation::getPkId, BatteryStation::getCode)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse<List<BatteryStation>> resourceList(String pkIds) {
|
||||
String[] pkIdArray = pkIds.split(",");
|
||||
return new BaseResponse<List<BatteryStation>>().success(batteryStationDao.selectList(new LambdaQueryWrapper<BatteryStation>().eq((pkIdArray != null && pkIdArray.length > 0), BatteryStation::getPkId, Arrays.asList(pkIdArray)).eq(BatteryStation::getStatus, 1).eq(BatteryStation::getDelFlag, 0).select(BatteryStation::getPkId, BatteryStation::getCode)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -154,6 +154,9 @@ public class HomeServiceImpl implements HomeService {
|
||||
data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN));
|
||||
data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN));
|
||||
// 交易
|
||||
/***
|
||||
* @TODO: 待定
|
||||
*/
|
||||
List<HomeDataTradeCollate> collateList = homeDataTradeCollateDao.selectList(new QueryWrapper<HomeDataTradeCollate>()
|
||||
.ge("day", data.getDayBegin())
|
||||
.le("day", data.getDayEnd()));
|
||||
|
||||
@ -1,31 +1,23 @@
|
||||
package com.evotech.hd.cloud;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
|
||||
import cn.hutool.crypto.KeyUtil;
|
||||
import cn.hutool.crypto.Mode;
|
||||
import cn.hutool.crypto.Padding;
|
||||
import cn.hutool.crypto.symmetric.AES;
|
||||
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
|
||||
import cn.hutool.crypto.symmetric.SymmetricCrypto;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
|
||||
public class AesDecryTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String key = "94kl35k25d3t2rk2";
|
||||
String iv = "k394kf44lf1pyq8k";
|
||||
SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());
|
||||
// 需要加密的数据
|
||||
String data = "2yKExCzIRWg6bLwf2zsTn83XhzTAvuQtW5svhO111zihn3oX/Jrf4UFrKCA5UbZy4SWRF5vtcyYXLr8oFof2xRDBXsvFRDFHYKmmkpN6Udk7ChB0sCNTzisaM/iqAtbybD8uC9HpHYCQsSVipUc//aUhgSNvhK7CewK1UjGKnyBvOvCUJiPGVtuKzX5Pf5KIrR1ozJ+moDq01+td8Du5lA3lXaHdLZ8WbmoqYd2T6r3PDVsh/yxC327mNsQrivK0yL3QUt4ZCuLV6G/nQTsxvNgAYprSNVejGCywDD2cWuA4f90bsxJEKFLJ+XUd9/IAJR50QGhwm0qzxWwZzszWU9+EJoDyp+gUUn9bY4u9V/I=";
|
||||
|
||||
byte[] decrypt = aes.decrypt(Base64.getDecoder().decode(data));
|
||||
System.out.println(new String(decrypt));
|
||||
|
||||
SecretKey key1 = KeyUtil.generateKey(SymmetricAlgorithm.AES.getValue());
|
||||
System.out.println(Base64.getEncoder().encodeToString(key1.getEncoded()));
|
||||
|
||||
System.out.println(new BCryptPasswordEncoder().encode("123456"));
|
||||
// String key = "94kl35k25d3t2rk2";
|
||||
// String iv = "k394kf44lf1pyq8k";
|
||||
// SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());
|
||||
// // 需要加密的数据
|
||||
// String data = "2yKExCzIRWg6bLwf2zsTn83XhzTAvuQtW5svhO111zihn3oX/Jrf4UFrKCA5UbZy4SWRF5vtcyYXLr8oFof2xRDBXsvFRDFHYKmmkpN6Udk7ChB0sCNTzisaM/iqAtbybD8uC9HpHYCQsSVipUc//aUhgSNvhK7CewK1UjGKnyBvOvCUJiPGVtuKzX5Pf5KIrR1ozJ+moDq01+td8Du5lA3lXaHdLZ8WbmoqYd2T6r3PDVsh/yxC327mNsQrivK0yL3QUt4ZCuLV6G/nQTsxvNgAYprSNVejGCywDD2cWuA4f90bsxJEKFLJ+XUd9/IAJR50QGhwm0qzxWwZzszWU9+EJoDyp+gUUn9bY4u9V/I=";
|
||||
//
|
||||
// byte[] decrypt = aes.decrypt(Base64.getDecoder().decode(data));
|
||||
// System.out.println(new String(decrypt));
|
||||
//
|
||||
// SecretKey key1 = KeyUtil.generateKey(SymmetricAlgorithm.AES.getValue());
|
||||
// System.out.println(Base64.getEncoder().encodeToString(key1.getEncoded()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -70,7 +70,11 @@
|
||||
<groupId>io.minio</groupId>
|
||||
<artifactId>minio</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
|
||||
@ -5,12 +5,14 @@ import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
|
||||
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
|
||||
@EnableDiscoveryClient
|
||||
@ComponentScan("com.evotech.hd.**")
|
||||
@MapperScan({"com.evotech.hd.resource.dao.**", "com.evotech.hd.common.core.dao.**"})
|
||||
@EnableFeignClients
|
||||
public class ResourceServerApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@ -1,28 +1,24 @@
|
||||
package com.evotech.hd.resource.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.BaseResponse;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
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.AuthUserStation;
|
||||
import com.evotech.hd.resource.entity.request.ListUserRequest;
|
||||
import com.evotech.hd.resource.service.AuthUserService;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "用户管理")
|
||||
@RestController
|
||||
@ -83,4 +79,19 @@ public class AuthUserController {
|
||||
return authUserService.deleteUserRole(uid, rid);
|
||||
}
|
||||
|
||||
@Operation(summary = "用户分配站")
|
||||
@PostMapping("/adduserstation")
|
||||
@ApiOperationSupport(order = 5)
|
||||
public Result<Integer> addUserRole(@RequestParam @NotBlank String uid, @RequestParam String stationIds) {
|
||||
return authUserService.addUserStation(stationIds, uid);
|
||||
}
|
||||
|
||||
@Operation(summary = "登录查询站信息")
|
||||
@GetMapping("/station")
|
||||
@ApiOperationSupport(order = 4)
|
||||
public BaseResponse<List<AuthUserStation>> loadUserStation(@RequestParam @NotBlank String uid) {
|
||||
return authUserService.loadUserStation(uid);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
package com.evotech.hd.resource.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.BaseResponse;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
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.AuthUserStation;
|
||||
import com.evotech.hd.resource.entity.request.ListUserRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AuthUserService {
|
||||
|
||||
public Result<AuthUser> userByName(String uname);
|
||||
@ -23,4 +25,7 @@ public interface AuthUserService {
|
||||
|
||||
public Result<Integer> deleteUserRole(String uid, String rid);
|
||||
|
||||
public Result<Integer> addUserStation(String stationIds, String uid);
|
||||
|
||||
public BaseResponse<List<AuthUserStation>> loadUserStation(String uid);
|
||||
}
|
||||
|
||||
@ -1,28 +1,34 @@
|
||||
package com.evotech.hd.resource.service.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.evotech.hd.common.core.Dto.BaseResponse;
|
||||
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.AuthUserStationDao;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStation;
|
||||
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.AuthUserStation;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
import com.evotech.hd.common.core.utils.SnowflakeUtil;
|
||||
import com.evotech.hd.resource.entity.request.ListUserRequest;
|
||||
import com.evotech.hd.resource.service.AuthUserService;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.evotech.hd.resource.service.rpc.CloudService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class AuthUserServiceImpl implements AuthUserService {
|
||||
@ -31,6 +37,10 @@ public class AuthUserServiceImpl implements AuthUserService {
|
||||
private AuthUserDao userDao;
|
||||
@Resource
|
||||
private AuthUserRoleDao authUserRoleDao;
|
||||
@Resource
|
||||
private AuthUserStationDao authUserStationDao;
|
||||
@Resource
|
||||
private CloudService cloudService;
|
||||
|
||||
|
||||
@Override
|
||||
@ -129,4 +139,31 @@ public class AuthUserServiceImpl implements AuthUserService {
|
||||
return new Result<Integer>().success(n);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<Integer> addUserStation(String stationIds, String uid) {
|
||||
BaseResponse<List<BatteryStation>> result = cloudService.resourceList(stationIds);
|
||||
if(CodeMsg.SUCCESS.getCode().equals(result.getCode())){
|
||||
List<BatteryStation> stationlist = result.getData();
|
||||
if(!CollectionUtils.isEmpty(stationlist)){
|
||||
List<AuthUserStation> list = new ArrayList<AuthUserStation>();
|
||||
for (BatteryStation station : stationlist) {
|
||||
AuthUserStation u = new AuthUserStation();
|
||||
u.setUid(uid);
|
||||
u.setStationId(station.getPkId());
|
||||
u.setStationCode(station.getCode());
|
||||
list.add(u);
|
||||
}
|
||||
authUserStationDao.insert(list);
|
||||
return new Result<Integer>().success(list.size());
|
||||
}
|
||||
}
|
||||
return new Result<Integer>().error("添加用户站信息失败!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse<List<AuthUserStation>> loadUserStation(String uid) {
|
||||
return new BaseResponse<List<AuthUserStation>>().success(authUserStationDao.selectList(new LambdaQueryWrapper<AuthUserStation>().eq(AuthUserStation::getUid, uid).select(AuthUserStation::getStationId, AuthUserStation::getStationId)));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.evotech.hd.resource.service.rpc;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.BaseResponse;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient(name = "${CLOUD-SERVER-API-NAME}", path = "${CLOUD-SERVER-API-PATH}")
|
||||
public interface CloudService {
|
||||
|
||||
|
||||
@GetMapping(value = "/batterystation/resource/list",
|
||||
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
|
||||
public BaseResponse<List<BatteryStation>> resourceList(String pkIds);
|
||||
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.evotech.hd.common.core.dao.resource.auth.AuthUserStationDao">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.evotech.hd.common.core.entity.resource.auth.AuthUserStation">
|
||||
<id column="pk_id" property="pkId" />
|
||||
<result column="uid" property="uid" />
|
||||
<result column="station_code" property="stationCode" />
|
||||
<result column="station_id" property="stationId" />
|
||||
<result column="creater" property="creater" />
|
||||
<result column="ctime" property="ctime" />
|
||||
<result column="uptime" property="uptime" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
pk_id, uid, station_code, station_id, creater, ctime, uptime
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
@ -12,7 +12,7 @@ logging:
|
||||
spring:
|
||||
# 服务名称必须带上,不然nacos服务列表中没有,也不会有注册成功的信息
|
||||
application:
|
||||
name: ${cloud-manage-server:wechat-server}
|
||||
name: ${wechat-server:wechat-server}
|
||||
config:
|
||||
import:
|
||||
- nacos:yt-common.properties?refreshEnabled=true
|
||||
|
||||
Loading…
Reference in New Issue
Block a user