mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
5.0
This commit is contained in:
@@ -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.10</fastmybatis.version>
|
||||
<fastmybatis.version>3.0.11</fastmybatis.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@@ -0,0 +1,26 @@
|
||||
package com.gitee.sop.adminbackend.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author 六如
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum YesOrNoEnum {
|
||||
YES(1),
|
||||
NO(0);
|
||||
|
||||
private final int value;
|
||||
|
||||
public static YesOrNoEnum of(Integer value) {
|
||||
return Objects.equals(value, YES.value) ? YES : NO;
|
||||
}
|
||||
|
||||
public static YesOrNoEnum of(Boolean value) {
|
||||
return Objects.equals(value, true) ? YES : NO;
|
||||
}
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
package com.gitee.sop.adminbackend.controller.isv;
|
||||
|
||||
import com.gitee.fastmybatis.core.PageInfo;
|
||||
import com.gitee.fastmybatis.core.query.LambdaQuery;
|
||||
import com.gitee.fastmybatis.core.query.Query;
|
||||
import com.gitee.fastmybatis.core.query.param.PageParam;
|
||||
import com.gitee.sop.adminbackend.common.RSATool;
|
||||
@@ -8,10 +9,13 @@ 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.IsvInfoAddParam;
|
||||
import com.gitee.sop.adminbackend.controller.isv.req.IsvInfoUpdateParam;
|
||||
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.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.IsvKeysDTO;
|
||||
import com.gitee.sop.adminbackend.util.CopyUtil;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -35,7 +39,6 @@ public class IsvInfoController {
|
||||
private IsvInfoService isvInfoService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
@@ -43,10 +46,10 @@ public class IsvInfoController {
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public Result<PageInfo<IsvInfo>> page(PageParam param) {
|
||||
Query query = param.toQuery();
|
||||
PageInfo<IsvInfo> pageInfo = isvInfoService.page(query);
|
||||
return Result.ok(pageInfo);
|
||||
public Result<PageInfo<IsvInfoDTO>> page(PageParam param) {
|
||||
LambdaQuery<IsvInfo> query = param.toLambdaQuery(IsvInfo.class);
|
||||
PageInfo<IsvInfoDTO> isvInfoDTOPageInfo = isvInfoService.doPage(query);
|
||||
return Result.ok(isvInfoDTOPageInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,12 +95,13 @@ public class IsvInfoController {
|
||||
/**
|
||||
* 修改记录
|
||||
*
|
||||
* @param user 表单数据
|
||||
* @param param 表单数据
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public Result<Integer> update(@Validated @RequestBody IsvInfo user) {
|
||||
return Result.ok(isvInfoService.update(user));
|
||||
public Result<Integer> update(@Validated @RequestBody IsvInfoUpdateParam param) {
|
||||
IsvInfoUpdateDTO isvInfoUpdateDTO = CopyUtil.copyBean(param, IsvInfoUpdateDTO::new);
|
||||
return Result.ok(isvInfoService.update(isvInfoUpdateDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -3,8 +3,6 @@ package com.gitee.sop.adminbackend.controller.isv.req;
|
||||
import lombok.Data;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
|
||||
@@ -14,13 +12,6 @@ import javax.validation.constraints.NotNull;
|
||||
@Data
|
||||
public class IsvInfoAddParam {
|
||||
|
||||
/**
|
||||
* 秘钥格式,1:PKCS8(JAVA适用),2:PKCS1(非JAVA适用)
|
||||
*/
|
||||
@Min(value = 1, message = "秘钥格式错误")
|
||||
@Max(value = 2, message = "秘钥格式错误")
|
||||
private Integer keyFormat;
|
||||
|
||||
/**
|
||||
* 1启用,2禁用
|
||||
*/
|
||||
|
@@ -1,26 +1,34 @@
|
||||
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.RSATool;
|
||||
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.PermIsvRole;
|
||||
import com.gitee.sop.adminbackend.dao.mapper.IsvInfoMapper;
|
||||
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.IsvKeysDTO;
|
||||
import com.gitee.sop.adminbackend.service.isv.dto.IsvKeysGenDTO;
|
||||
import com.gitee.sop.adminbackend.util.CopyUtil;
|
||||
import com.gitee.sop.adminbackend.util.IdGen;
|
||||
import org.apache.dubbo.common.utils.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@@ -35,6 +43,38 @@ public class IsvInfoService implements LambdaService<IsvInfo, IsvInfoMapper> {
|
||||
@Resource
|
||||
private PermIsvRoleService permIsvRoleService;
|
||||
|
||||
public PageInfo<IsvInfoDTO> doPage(LambdaQuery<IsvInfo> query) {
|
||||
PageInfo<IsvInfo> page = this.page(query);
|
||||
List<IsvInfo> list = page.getList();
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return page.convert(isvInfo -> new IsvInfoDTO());
|
||||
}
|
||||
List<Long> idList = list.stream()
|
||||
.map(IsvInfo::getId).collect(Collectors.toList());
|
||||
|
||||
Map<Long, IsvKeys> isvIdMap = isvKeysService.query()
|
||||
.in(IsvKeys::getIsvId, idList)
|
||||
.map(IsvKeys::getIsvId, Function.identity());
|
||||
|
||||
// 格式转换
|
||||
return page.convert(isvInfo -> {
|
||||
IsvInfoDTO isvInfoDTO = CopyUtil.copyBean(isvInfo, IsvInfoDTO::new);
|
||||
boolean hasKey = false;
|
||||
Optional<IsvKeys> isvKeysOpt = Optional.ofNullable(isvIdMap.get(isvInfo.getId()));
|
||||
if (isvKeysOpt.isPresent()) {
|
||||
IsvKeys isvKeys = isvKeysOpt.get();
|
||||
hasKey = !StringUtils.isAllBlank(
|
||||
isvKeys.getPrivateKeyIsv(),
|
||||
isvKeys.getPrivateKeyPlatform(),
|
||||
isvKeys.getPublicKeyIsv(),
|
||||
isvKeys.getPublicKeyPlatform()
|
||||
);
|
||||
}
|
||||
isvInfoDTO.setHasKeys(YesOrNoEnum.of(hasKey).getValue());
|
||||
return isvInfoDTO;
|
||||
});
|
||||
}
|
||||
|
||||
public RSATool.KeyStore createKeys(RSATool.KeyFormat keyFormat) throws Exception {
|
||||
if (keyFormat == null) {
|
||||
keyFormat = RSATool.KeyFormat.PKCS8;
|
||||
@@ -45,36 +85,31 @@ public class IsvInfoService implements LambdaService<IsvInfo, IsvInfoMapper> {
|
||||
|
||||
/**
|
||||
* 添加ISV
|
||||
*
|
||||
* @param isvInfoAddDTO
|
||||
* @return
|
||||
* @throws Exception
|
||||
* @return 返回id
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public long add(IsvInfoAddDTO isvInfoAddDTO) throws Exception {
|
||||
public long add(IsvInfoAddDTO isvInfoAddDTO) {
|
||||
IsvInfo rec = CopyUtil.copyBean(isvInfoAddDTO, IsvInfo::new);
|
||||
String appKey = new SimpleDateFormat("yyyyMMdd").format(new Date()) + IdGen.nextId();
|
||||
rec.setAppId(appKey);
|
||||
rec.setStatus(StatusEnum.ENABLE.getStatus());
|
||||
this.save(rec);
|
||||
if (CollectionUtils.isNotEmpty(isvInfoAddDTO.getRoleCodes())) {
|
||||
this.saveIsvRole(rec, isvInfoAddDTO.getRoleCodes());
|
||||
}
|
||||
// 生成秘钥
|
||||
RSATool.KeyFormat keyFormat = RSATool.KeyFormat.of(isvInfoAddDTO.getKeyFormat());
|
||||
IsvKeysGenDTO isvKeysGenVO = this.createIsvKeys(keyFormat);
|
||||
IsvKeys isvKeys = new IsvKeys();
|
||||
isvKeys.setIsvId(rec.getId());
|
||||
CopyUtil.copyPropertiesIgnoreNull(isvKeysGenVO, isvKeys);
|
||||
isvKeysService.save(isvKeys);
|
||||
return rec.getId();
|
||||
}
|
||||
|
||||
public int update(IsvInfoUpdateDTO isvInfoUpdateDTO) {
|
||||
return this.query()
|
||||
.eq(IsvInfo::getId, isvInfoUpdateDTO.getId())
|
||||
.set(IsvInfo::getStatus, isvInfoUpdateDTO.getStatus())
|
||||
.set(IsvInfo::getRemark, isvInfoUpdateDTO.getRemark())
|
||||
.update();
|
||||
}
|
||||
|
||||
|
||||
private void saveIsvRole(IsvInfo isvInfo, List<String> roleCodeList) {
|
||||
Long isvId = isvInfo.getId();
|
||||
permIsvRoleService.query()
|
||||
.eq(PermIsvRole::getIsvId, isvId)
|
||||
.delete();
|
||||
|
||||
permIsvRoleService.deleteByColumn(PermIsvRole::getIsvId, isvId);
|
||||
|
||||
List<PermIsvRole> tobeSaveList = roleCodeList.stream()
|
||||
.map(roleCode -> {
|
||||
|
@@ -3,10 +3,7 @@ package com.gitee.sop.adminbackend.service.isv.dto;
|
||||
import lombok.Data;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -15,13 +12,6 @@ import java.util.List;
|
||||
@Data
|
||||
public class IsvInfoAddDTO {
|
||||
|
||||
/**
|
||||
* 秘钥格式,1:PKCS8(JAVA适用),2:PKCS1(非JAVA适用)
|
||||
*/
|
||||
@Min(value = 1, message = "秘钥格式错误")
|
||||
@Max(value = 2, message = "秘钥格式错误")
|
||||
private Integer keyFormat;
|
||||
|
||||
/**
|
||||
* 1启用,2禁用
|
||||
*/
|
||||
@@ -34,9 +24,4 @@ public class IsvInfoAddDTO {
|
||||
@Length(max = 500)
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 角色code
|
||||
*/
|
||||
private List<String> roleCodes;
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,45 @@
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author 六如
|
||||
*/
|
||||
@Data
|
||||
public class IsvInfoDTO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* appKey
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 1启用,2禁用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否有秘钥
|
||||
*/
|
||||
private Integer hasKeys;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
private LocalDateTime addTime;
|
||||
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
package com.gitee.sop.adminbackend.service.isv.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @author 六如
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class IsvInfoUpdateDTO extends IsvInfoAddDTO {
|
||||
private Long id;
|
||||
}
|
Reference in New Issue
Block a user