This commit is contained in:
六如
2024-10-25 20:28:42 +08:00
parent 8b34c0a80d
commit dabf8032ca
87 changed files with 1031 additions and 307 deletions

View File

@@ -38,7 +38,7 @@
<commons-logging.version>1.2</commons-logging.version>
<validation-api.version>2.0.1.Final</validation-api.version>
<hibernate-validator.version>6.0.13.Final</hibernate-validator.version>
<fastmybatis.version>3.0.11</fastmybatis.version>
<fastmybatis.version>3.0.12</fastmybatis.version>
</properties>
<dependencies>

View File

@@ -8,7 +8,6 @@ import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import javax.crypto.Cipher;
import javax.swing.plaf.PanelUI;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;

View File

@@ -1,7 +1,6 @@
package com.gitee.sop.adminbackend.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
/**
* @author 六如
@@ -26,7 +25,7 @@ public class SpringContext {
return ctx;
}
public static void publishEvent(ApplicationEvent event) {
public static void publishEvent(Object event) {
ctx.publishEvent(event);
}
}

View File

@@ -1,8 +1,8 @@
package com.gitee.sop.adminbackend.config;
import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.common.IConfig;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import java.util.function.Supplier;

View File

@@ -1,9 +1,9 @@
package com.gitee.sop.adminbackend.controller;
import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.common.exception.BizException;
import com.gitee.sop.adminbackend.common.exception.ErrorCode;
import com.gitee.sop.adminbackend.common.exception.ExceptionCode;
import com.gitee.sop.adminbackend.common.resp.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.validation.ObjectError;

View File

@@ -7,7 +7,6 @@ import com.gitee.sop.adminbackend.common.RSATool;
import com.gitee.sop.adminbackend.common.dto.StatusUpdateDTO;
import com.gitee.sop.adminbackend.common.req.StatusUpdateParam;
import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.controller.isv.req.IsvGroupSettingParam;
import com.gitee.sop.adminbackend.controller.isv.req.IsvInfoAddParam;
import com.gitee.sop.adminbackend.controller.isv.req.IsvInfoUpdateKeysParam;
import com.gitee.sop.adminbackend.controller.isv.req.IsvInfoUpdateParam;
@@ -15,13 +14,13 @@ import com.gitee.sop.adminbackend.controller.isv.req.IsvKeysGenParam;
import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
import com.gitee.sop.adminbackend.service.isv.IsvInfoService;
import com.gitee.sop.adminbackend.service.isv.PermIsvGroupService;
import com.gitee.sop.adminbackend.service.isv.dto.IsvGroupSettingDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoAddDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoUpdateDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoUpdateKeysDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvKeysDTO;
import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -29,8 +28,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author 六如
@@ -39,9 +36,9 @@ import javax.annotation.Resource;
@RequestMapping("isv")
public class IsvInfoController {
@Resource
@Autowired
private IsvInfoService isvInfoService;
@Resource
@Autowired
private PermIsvGroupService permIsvGroupService;

View File

@@ -8,6 +8,7 @@ import com.gitee.sop.adminbackend.controller.isv.req.PermGroupPageParam;
import com.gitee.sop.adminbackend.controller.isv.req.PermGroupParam;
import com.gitee.sop.adminbackend.dao.entity.PermGroup;
import com.gitee.sop.adminbackend.service.isv.PermGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -15,7 +16,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
@@ -27,7 +27,7 @@ import java.util.List;
@RequestMapping("perm/group")
public class PermGroupController {
@Resource
@Autowired
private PermGroupService permGroupService;
/**

View File

@@ -9,6 +9,7 @@ import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import com.gitee.sop.adminbackend.service.isv.PermGroupPermissionService;
import com.gitee.sop.adminbackend.service.isv.dto.PermGroupPermissionDTO;
import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -16,8 +17,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author 六如
*/
@@ -25,7 +24,7 @@ import javax.annotation.Resource;
@RequestMapping("perm/group/permission")
public class PermGroupPermissionController {
@Resource
@Autowired
private PermGroupPermissionService permGroupPermissionService;
/**

View File

@@ -1,10 +1,13 @@
package com.gitee.sop.adminbackend.controller.isv;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.controller.isv.req.IsvGroupSettingParam;
import com.gitee.sop.adminbackend.service.isv.PermIsvGroupService;
import com.gitee.sop.adminbackend.service.isv.dto.IsvGroupSettingDTO;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvPermEvent;
import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -12,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
@@ -22,7 +25,7 @@ import java.util.List;
@RequestMapping("perm/isv/group")
public class PermIsvGroupController {
@Resource
@Autowired
private PermIsvGroupService permIsvGroupService;
/**
@@ -47,6 +50,10 @@ public class PermIsvGroupController {
public Result<Integer> updateIsvGroup(@Validated @RequestBody IsvGroupSettingParam param) {
IsvGroupSettingDTO isvGroupSettingDTO = CopyUtil.copyBean(param, IsvGroupSettingDTO::new);
int i = permIsvGroupService.updateIsvGroup(isvGroupSettingDTO);
if (i > 0) {
// 刷新isv权限
SpringContext.publishEvent(new ChangeIsvPermEvent(Collections.singletonList(isvGroupSettingDTO.getIsvId())));
}
return Result.ok(i);
}

View File

@@ -8,14 +8,13 @@ import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 登录相关接口
*
@@ -25,7 +24,7 @@ import javax.annotation.Resource;
@RequestMapping("sys")
public class LoginController {
@Resource
@Autowired
private LoginService loginService;
/**

View File

@@ -3,7 +3,6 @@ package com.gitee.sop.adminbackend.controller.sys;
import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.Query;
import com.gitee.fastmybatis.core.query.param.PageParam;
import com.gitee.sop.adminbackend.common.req.IdParam;
import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.service.sys.SysAdminUserService;

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名api_info

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名isv_info

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名isv_keys

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_group

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_group_permission

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名perm_isv_group

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名sys_admin_user

View File

@@ -1,13 +1,12 @@
package com.gitee.sop.adminbackend.dao.entity;
import java.time.LocalDateTime;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 表名sys_config

View File

@@ -3,10 +3,12 @@ package com.gitee.sop.adminbackend.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface ApiInfoMapper extends BaseMapper<ApiInfo> {
default ApiInfo getByNameVersion(String apiName, String apiVersion) {

View File

@@ -2,10 +2,12 @@ package com.gitee.sop.adminbackend.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface IsvInfoMapper extends BaseMapper<IsvInfo> {
default IsvInfo getByAppId(String appId) {

View File

@@ -2,10 +2,12 @@ package com.gitee.sop.adminbackend.dao.mapper;
import com.gitee.fastmybatis.core.mapper.BaseMapper;
import com.gitee.sop.adminbackend.dao.entity.PermIsvGroup;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 六如
*/
@Mapper
public interface PermIsvGroupMapper extends BaseMapper<PermIsvGroup> {
}

View File

@@ -4,22 +4,26 @@ import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.LambdaQuery;
import com.gitee.fastmybatis.core.support.LambdaService;
import com.gitee.sop.adminbackend.common.RSATool;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.common.dto.StatusUpdateDTO;
import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.common.enums.YesOrNoEnum;
import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
import com.gitee.sop.adminbackend.dao.entity.IsvKeys;
import com.gitee.sop.adminbackend.dao.entity.PermIsvGroup;
import com.gitee.sop.adminbackend.dao.mapper.IsvInfoMapper;
import com.gitee.sop.adminbackend.service.isv.dto.IsvGroupSettingDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoAddDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoUpdateDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoUpdateKeysDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvKeysDTO;
import com.gitee.sop.adminbackend.service.isv.dto.IsvKeysGenDTO;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvInfoEvent;
import com.gitee.sop.adminbackend.util.CopyUtil;
import com.gitee.sop.adminbackend.util.IdGen;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
@@ -28,12 +32,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
/**
@@ -42,9 +40,9 @@ import org.springframework.util.CollectionUtils;
@Service
public class IsvInfoService implements LambdaService<IsvInfo, IsvInfoMapper> {
@Resource
@Autowired
private IsvKeysService isvKeysService;
@Resource
@Autowired
private PermIsvGroupService permIsvGroupService;
public PageInfo<IsvInfoDTO> doPage(LambdaQuery<IsvInfo> query) {
@@ -104,34 +102,24 @@ public class IsvInfoService implements LambdaService<IsvInfo, IsvInfoMapper> {
rec.setAppId(appKey);
rec.setStatus(StatusEnum.ENABLE.getStatus());
this.save(rec);
this.sendChangeEvent(rec.getId());
return rec.getId();
}
public int update(IsvInfoUpdateDTO isvInfoUpdateDTO) {
return this.query()
int cnt = this.query()
.eq(IsvInfo::getId, isvInfoUpdateDTO.getId())
.set(IsvInfo::getStatus, isvInfoUpdateDTO.getStatus())
.set(IsvInfo::getRemark, isvInfoUpdateDTO.getRemark())
.update();
sendChangeEvent(isvInfoUpdateDTO.getId());
return cnt;
}
public int updateKeys(IsvInfoUpdateKeysDTO isvInfoUpdateKeysDTO) {
return isvKeysService.saveKeys(isvInfoUpdateKeysDTO);
}
private IsvKeysGenDTO createIsvKeys(RSATool.KeyFormat keyFormat) throws Exception {
IsvKeysGenDTO isvKeysGenDTO = new IsvKeysGenDTO();
RSATool.KeyStore keyStoreIsv = this.createKeys(keyFormat);
isvKeysGenDTO.setPublicKeyIsv(keyStoreIsv.getPublicKey());
isvKeysGenDTO.setPrivateKeyIsv(keyStoreIsv.getPrivateKey());
isvKeysGenDTO.setPublicKeyPlatform("");
isvKeysGenDTO.setPrivateKeyPlatform("");
return isvKeysGenDTO;
}
public IsvKeysDTO getKeys(Long isvId) {
IsvKeys isvKeys = isvKeysService.get(IsvKeys::getIsvId, isvId);
if (isvKeys == null) {
@@ -154,10 +142,19 @@ public class IsvInfoService implements LambdaService<IsvInfo, IsvInfoMapper> {
* @return 返回影响行数
*/
public int updateStatus(StatusUpdateDTO statusUpdateDTO) {
return this.query()
.eq(IsvInfo::getId, statusUpdateDTO.getId())
Long isvId = statusUpdateDTO.getId();
int cnt = this.query()
.eq(IsvInfo::getId, isvId)
.set(IsvInfo::getStatus, statusUpdateDTO.getStatus())
.update();
// 同步isv信息
this.sendChangeEvent(isvId);
return cnt;
}
private void sendChangeEvent(Long isvId) {
SpringContext.publishEvent(new ChangeIsvInfoEvent(Collections.singletonList(isvId)));
}
}

View File

@@ -1,12 +1,16 @@
package com.gitee.sop.adminbackend.service.isv;
import com.gitee.fastmybatis.core.support.LambdaService;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.dao.entity.IsvKeys;
import com.gitee.sop.adminbackend.dao.mapper.IsvKeysMapper;
import com.gitee.sop.adminbackend.service.isv.dto.IsvInfoUpdateKeysDTO;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvKeyEvent;
import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.stereotype.Service;
import java.util.Collections;
/**
* @author 六如
@@ -20,7 +24,10 @@ public class IsvKeysService implements LambdaService<IsvKeys, IsvKeysMapper> {
isvKeys = new IsvKeys();
}
CopyUtil.copyPropertiesIgnoreNull(isvInfoUpdateKeysDTO, isvKeys);
return this.saveOrUpdate(isvKeys);
int cnt = this.saveOrUpdate(isvKeys);
// 发送变更事件
SpringContext.publishEvent(new ChangeIsvKeyEvent(Collections.singletonList(isvInfoUpdateKeysDTO.getIsvId())));
return cnt;
}
}

View File

@@ -3,15 +3,19 @@ package com.gitee.sop.adminbackend.service.isv;
import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.LambdaQuery;
import com.gitee.fastmybatis.core.support.LambdaService;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import com.gitee.sop.adminbackend.dao.entity.PermGroupPermission;
import com.gitee.sop.adminbackend.dao.entity.PermIsvGroup;
import com.gitee.sop.adminbackend.dao.mapper.ApiInfoMapper;
import com.gitee.sop.adminbackend.dao.mapper.PermGroupPermissionMapper;
import com.gitee.sop.adminbackend.dao.mapper.PermIsvGroupMapper;
import com.gitee.sop.adminbackend.service.isv.dto.PermGroupPermissionDTO;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvPermEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@@ -23,8 +27,10 @@ import java.util.stream.Collectors;
@Service
public class PermGroupPermissionService implements LambdaService<PermGroupPermission, PermGroupPermissionMapper> {
@Resource
@Autowired
private ApiInfoMapper apiInfoMapper;
@Autowired
private PermIsvGroupMapper permIsvGroupMapper;
public PageInfo<PermGroupPermission> doPage(LambdaQuery<PermGroupPermission> query) {
query.orderByDesc(PermGroupPermission::getId);
@@ -51,6 +57,12 @@ public class PermGroupPermissionService implements LambdaService<PermGroupPermis
return apiInfoMapper.page(query);
}
/**
* 设置组权限
*
* @param param
* @return
*/
public int setting(PermGroupPermissionDTO param) {
Long groupId = param.getGroupId();
List<Long> apiIdList = param.getApiIdList();
@@ -72,13 +84,31 @@ public class PermGroupPermissionService implements LambdaService<PermGroupPermis
return permGroupPermission;
})
.collect(Collectors.toList());
return this.saveBatch(saveList);
int cnt = this.saveBatch(saveList);
// 刷新isv权限
this.refreshIsvPerm(groupId);
return cnt;
}
private void refreshIsvPerm(Long groupId) {
List<Long> isvIds = permIsvGroupMapper.query()
.eq(PermIsvGroup::getGroupId, groupId)
.listUniqueValue(PermIsvGroup::getIsvId);
SpringContext.publishEvent(new ChangeIsvPermEvent(isvIds));
}
public int delete(Long groupId, Collection<Long> apiIds) {
return this.query()
int cnt = this.query()
.eq(PermGroupPermission::getGroupId, groupId)
.in(PermGroupPermission::getApiId, apiIds)
.delete();
this.refreshIsvPerm(groupId);
return cnt;
}
}

View File

@@ -8,9 +8,9 @@ import com.gitee.sop.adminbackend.dao.entity.PermGroup;
import com.gitee.sop.adminbackend.dao.entity.PermIsvGroup;
import com.gitee.sop.adminbackend.dao.mapper.PermGroupMapper;
import com.gitee.sop.adminbackend.dao.mapper.PermIsvGroupMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.Map;
@@ -21,7 +21,7 @@ import java.util.Map;
@Service
public class PermGroupService implements LambdaService<PermGroup, PermGroupMapper> {
@Resource
@Autowired
PermIsvGroupMapper permIsvGroupMapper;
public PageInfo<PermGroup> doPage(LambdaQuery<PermGroup> query) {

View File

@@ -3,16 +3,19 @@ package com.gitee.sop.adminbackend.service.isv;
import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.LambdaQuery;
import com.gitee.fastmybatis.core.support.LambdaService;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.dao.entity.PermIsvGroup;
import com.gitee.sop.adminbackend.dao.mapper.PermIsvGroupMapper;
import com.gitee.sop.adminbackend.service.isv.dto.IsvGroupSettingDTO;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvPermEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.stream.Collectors;
@Service
public class PermIsvGroupService implements LambdaService<PermIsvGroup, PermIsvGroupMapper> {
@Resource
@Autowired
private PermGroupService permGroupService;
public PageInfo<PermIsvGroup> doPage(LambdaQuery<PermIsvGroup> query) {
@@ -70,10 +73,7 @@ public class PermIsvGroupService implements LambdaService<PermIsvGroup, PermIsvG
return permIsvGroup;
}).collect(Collectors.toList());
int cnt = this.saveBatch(saveList);
// TODO:同步到网关
return cnt;
return this.saveBatch(saveList);
}
public List<Long> listIsvGroupId(Long isvId) {
@@ -87,7 +87,7 @@ public class PermIsvGroupService implements LambdaService<PermIsvGroup, PermIsvG
public boolean isUsed(Long groupId) {
return this.query()
.eq(PermIsvGroup::getGroupId, groupId)
.get() != null;
.getCount() > 0;
}
}

View File

@@ -2,7 +2,6 @@ package com.gitee.sop.adminbackend.service.isv.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;

View File

@@ -1,8 +1,5 @@
package com.gitee.sop.adminbackend.service.isv.dto;
import com.gitee.fastmybatis.annotation.Pk;
import com.gitee.fastmybatis.annotation.PkStrategy;
import com.gitee.fastmybatis.annotation.Table;
import lombok.Data;
import java.time.LocalDateTime;

View File

@@ -0,0 +1,17 @@
package com.gitee.sop.adminbackend.service.isv.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Collection;
/**
* @author 六如
*/
@Getter
@AllArgsConstructor
public class ChangeApiInfoEvent {
private final Collection<Long> apiIds;
}

View File

@@ -0,0 +1,17 @@
package com.gitee.sop.adminbackend.service.isv.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Collection;
/**
* @author 六如
*/
@Getter
@AllArgsConstructor
public class ChangeIsvInfoEvent {
private final Collection<Long> isvIds;
}

View File

@@ -0,0 +1,17 @@
package com.gitee.sop.adminbackend.service.isv.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
/**
* @author 六如
*/
@Getter
@AllArgsConstructor
public class ChangeIsvKeyEvent {
private final List<Long> isvIds;
}

View File

@@ -0,0 +1,17 @@
package com.gitee.sop.adminbackend.service.isv.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
/**
* @author 六如
*/
@Getter
@AllArgsConstructor
public class ChangeIsvPermEvent {
private final List<Long> isvIds;
}

View File

@@ -0,0 +1,79 @@
package com.gitee.sop.adminbackend.service.isv.listener;
import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
import com.gitee.sop.adminbackend.dao.mapper.IsvInfoMapper;
import com.gitee.sop.adminbackend.service.isv.event.ChangeApiInfoEvent;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvInfoEvent;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvKeyEvent;
import com.gitee.sop.adminbackend.service.isv.event.ChangeIsvPermEvent;
import com.gitee.sop.support.service.RefreshService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.List;
/**
* 变更监听
*
* @author 六如
*/
@Component
public class ChangeListener {
@DubboReference
private RefreshService refreshService;
@Autowired
private IsvInfoMapper isvInfoMapper;
/**
* 监听isv信息变更
*
* @param event
*/
@EventListener
public void onChangeApiInfoEvent(ChangeApiInfoEvent event) {
Collection<Long> apiIds = event.getApiIds();
refreshService.refreshApi(apiIds);
}
/**
* 监听isv信息变更
*
* @param event
*/
@EventListener
public void onChangeIsvInfoEvent(ChangeIsvInfoEvent event) {
Collection<Long> isvIds = event.getIsvIds();
Collection<String> appIds = isvInfoMapper.query()
.in(IsvInfo::getId, isvIds)
.listUniqueValue(IsvInfo::getAppId);
refreshService.refreshIsv(appIds);
}
/**
* 监听isv秘钥变更
*
* @param event
*/
@EventListener
public void onChangeIsvKeyEvent(ChangeIsvKeyEvent event) {
List<Long> isvIds = event.getIsvIds();
refreshService.refreshSecret(isvIds);
}
/**
* 监听isv分组变更
*
* @param event
*/
@EventListener
public void onChangeIsvGroupEvent(ChangeIsvPermEvent event) {
List<Long> isvIds = event.getIsvIds();
refreshService.refreshIsvPerm(isvIds);
}
}

View File

@@ -1,11 +1,15 @@
package com.gitee.sop.adminbackend.service.serve;
import com.gitee.fastmybatis.core.support.LambdaService;
import com.gitee.sop.adminbackend.common.SpringContext;
import com.gitee.sop.adminbackend.common.dto.StatusUpdateDTO;
import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import com.gitee.sop.adminbackend.dao.mapper.ApiInfoMapper;
import com.gitee.sop.adminbackend.service.isv.event.ChangeApiInfoEvent;
import org.springframework.stereotype.Service;
import java.util.Collections;
/**
* @author 六如
@@ -20,10 +24,22 @@ public class ApiInfoService implements LambdaService<ApiInfo, ApiInfoMapper> {
* @return 返回影响行数
*/
public int updateStatus(StatusUpdateDTO statusUpdateDTO) {
return this.query()
int cnt = this.query()
.eq(ApiInfo::getId, statusUpdateDTO.getId())
.set(ApiInfo::getStatus, statusUpdateDTO.getStatus())
.update();
this.sendChangeEvent(statusUpdateDTO.getId());
return cnt;
}
@Override
public int update(ApiInfo entity) {
int cnt = LambdaService.super.update(entity);
sendChangeEvent(entity.getId());
return cnt;
}
private void sendChangeEvent(Long id) {
SpringContext.publishEvent(new ChangeApiInfoEvent(Collections.singletonList(id)));
}
}

View File

@@ -9,10 +9,10 @@ import com.gitee.sop.adminbackend.util.CopyUtil;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit;
@Service
public class SysConfigService extends BaseLambdaService<SysConfig, SysConfigMapper> implements IConfig {
@Resource
@Autowired
private Environment environment;
// key: configKey, value: configValue

View File

@@ -7,11 +7,11 @@ import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
import com.gitee.sop.adminbackend.util.PasswordUtil;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
* @author 六如
@@ -19,13 +19,13 @@ import javax.annotation.Resource;
@Service
public class UpgradeService {
@Resource
@Autowired
private SysConfigService sysConfigService;
@Resource
@Autowired
private SysAdminUserService sysAdminUserService;
@Resource
@Autowired
private UpgradeMapper upgradeMapper;
@PostConstruct

View File

@@ -2,6 +2,7 @@ package com.gitee.sop.adminbackend.service.sys.login;
import com.alibaba.nacos.shaded.com.google.common.collect.Sets;
import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.common.exception.BizException;
import com.gitee.sop.adminbackend.config.Configs;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
@@ -10,19 +11,18 @@ import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginForm;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginResult;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
import com.gitee.sop.adminbackend.util.CopyUtil;
import com.gitee.sop.adminbackend.util.GenerateUtil;
import com.gitee.sop.adminbackend.util.JwtUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
@@ -36,10 +36,10 @@ import java.util.Objects;
@Slf4j
public class LoginService {
@Resource
@Autowired
private SysAdminUserService sysAdminUserService;
@Resource
@Autowired
private UserCacheManager userCacheManager;

View File

@@ -1,11 +1,11 @@
package com.gitee.sop.adminbackend.service.sys.login.impl;
import com.gitee.sop.adminbackend.common.User;
import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.service.sys.SysAdminUserService;
import com.gitee.sop.adminbackend.service.sys.login.UserCacheManager;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.util.CopyUtil;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;

View File

@@ -6,6 +6,13 @@ spring.application.name=sop-admin-backend
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.application.qos-enable=false
dubbo.consumer.check=false
# ### register config see:https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/overview/
# ------
# nacos://localhost:8848 Cluster config:nacos://localhost:8848?backup=localshot:8846,localshot:8847
# zookeeper://localhost:2181 Cluster config:zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181
# redis://localhost:6379 Cluster config:redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379
# ------
dubbo.registry.address=zookeeper://localhost:2181
####### mysql config #######

View File

@@ -6,7 +6,7 @@ import com.gitee.sop.adminbackend.service.sys.login.LoginService;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.jupiter.api.Test;
@@ -19,7 +19,7 @@ import org.springframework.util.Assert;
*/
public class LoginServiceTest extends BaseTest {
@Resource
@Autowired
LoginService loginService;
@Test

View File

@@ -7,7 +7,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.junit.jupiter.api.Test;
import org.springframework.security.crypto.bcrypt.BCrypt;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
/**
@@ -15,7 +15,7 @@ import javax.annotation.Resource;
*/
public class PasswordTest extends BaseTest {
@Resource
@Autowired
SysAdminUserService sysAdminUserService;
/**