mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 13:42:07 +08:00
application应用管理无用代码移除、单元测试完善
This commit is contained in:
-81
@@ -1,81 +0,0 @@
|
|||||||
package com.cf.imes.module.system.controller.admin.application;
|
|
||||||
|
|
||||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
|
||||||
import com.cf.imes.framework.common.pojo.PageResult;
|
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationPageReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationRespVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationSaveReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.auth.ApplicationLoginRespVO;
|
|
||||||
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
|
||||||
import com.cf.imes.module.system.service.application.ApplicationService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
|
|
||||||
import static com.cf.imes.framework.common.pojo.CommonResult.success;
|
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 应用注册信息")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/system/application")
|
|
||||||
@Validated
|
|
||||||
public class ApplicationController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ApplicationService applicationService;
|
|
||||||
|
|
||||||
@PostMapping("/create")
|
|
||||||
@Operation(summary = "新建应用注册")
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:create')")
|
|
||||||
public CommonResult<Integer> createApplication(@Valid @RequestBody ApplicationSaveReqVO createReqVO) {
|
|
||||||
return success(applicationService.createApplication(createReqVO));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/update")
|
|
||||||
@Operation(summary = "更新应用注册")
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:update')")
|
|
||||||
public CommonResult<Boolean> updateApplication(@Valid @RequestBody ApplicationSaveReqVO updateReqVO) {
|
|
||||||
applicationService.updateApplication(updateReqVO);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/delete")
|
|
||||||
@Operation(summary = "删除应用注册")
|
|
||||||
@Parameter(name = "id", description = "编号", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:delete')")
|
|
||||||
public CommonResult<Boolean> deleteApplication(@RequestParam("id") Long id) {
|
|
||||||
applicationService.deleteApplication(id);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/get")
|
|
||||||
@Operation(summary = "获得应用注册")
|
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:query')")
|
|
||||||
public CommonResult<ApplicationRespVO> getApplication(@RequestParam("id") Long id) {
|
|
||||||
ApplicationDO applicationDO = applicationService.getApplication(id);
|
|
||||||
return success(BeanUtils.toBean(applicationDO, ApplicationRespVO.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/page")
|
|
||||||
@Operation(summary = "获得应用注册分页")
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:query')")
|
|
||||||
public CommonResult<PageResult<ApplicationRespVO>> getApplicationPage(@Valid ApplicationPageReqVO pageReqVO) {
|
|
||||||
PageResult<ApplicationDO> pageResult = applicationService.getApplicationPage(pageReqVO);
|
|
||||||
return success(BeanUtils.toBean(pageResult, ApplicationRespVO.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/appLogin")
|
|
||||||
@Operation(summary = "应用登陆")
|
|
||||||
@PreAuthorize("@ss.hasPermission('system:application:create')")
|
|
||||||
public CommonResult<ApplicationLoginRespVO> loginApplication(@Valid @RequestBody ApplicationRespVO applicationRespVO) {
|
|
||||||
return success(applicationService.loginApplication(applicationRespVO));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-47
@@ -1,47 +0,0 @@
|
|||||||
package com.cf.imes.module.system.controller.admin.application.vo.application;
|
|
||||||
|
|
||||||
import com.cf.imes.framework.common.pojo.PageParam;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.ToString;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 应用注册表分页 Request VO")
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@ToString(callSuper = true)
|
|
||||||
public class ApplicationPageReqVO extends PageParam {
|
|
||||||
|
|
||||||
@Schema(description = "应用标识", example = "okk")
|
|
||||||
private String appId;
|
|
||||||
|
|
||||||
@Schema(description = "应用密钥", example = "121gfrsg5sb4gs")
|
|
||||||
private String appKey;
|
|
||||||
|
|
||||||
@Schema(description = "服务器IP列表", example = "0.0.0.0")
|
|
||||||
private String serverIp;
|
|
||||||
|
|
||||||
@Schema(description = "应用简称")
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
@Schema(description = "应用名")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "应用主体")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "状态: 0停用,1正常")
|
|
||||||
private Boolean status;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
|
||||||
private LocalDateTime[] createTime;
|
|
||||||
}
|
|
||||||
-57
@@ -1,57 +0,0 @@
|
|||||||
package com.cf.imes.module.system.controller.admin.application.vo.application;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.*;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.alibaba.excel.annotation.*;
|
|
||||||
|
|
||||||
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 应用注册表 Response VO")
|
|
||||||
@Data
|
|
||||||
@ExcelIgnoreUnannotated
|
|
||||||
public class ApplicationRespVO {
|
|
||||||
|
|
||||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109")
|
|
||||||
@ExcelProperty("主键")
|
|
||||||
private int id;
|
|
||||||
|
|
||||||
@Schema(description = "应用标识", example = "okk")
|
|
||||||
@ExcelProperty("应用标识")
|
|
||||||
private String appId;
|
|
||||||
|
|
||||||
@Schema(description = "应用密钥", example = "121gfrsg5sb4gs")
|
|
||||||
@ExcelProperty("应用密钥")
|
|
||||||
private String appKey;
|
|
||||||
|
|
||||||
@Schema(description = "服务器IP列表", example = "0.0.0.0")
|
|
||||||
@ExcelProperty("服务器IP列表")
|
|
||||||
private String serverIp;
|
|
||||||
|
|
||||||
@Schema(description = "应用简称")
|
|
||||||
@ExcelProperty("应用简称")
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
@Schema(description = "应用名")
|
|
||||||
@ExcelProperty("应用名")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "应用主体")
|
|
||||||
@ExcelProperty("应用主体")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "状态: 0停用,1正常")
|
|
||||||
@ExcelProperty("状态")
|
|
||||||
private Boolean status;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
@ExcelProperty("备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@ExcelProperty("创建时间")
|
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
|
||||||
private LocalDateTime[] createTime;
|
|
||||||
|
|
||||||
}
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
package com.cf.imes.module.system.controller.admin.application.vo.application;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 应用注册表新增/修改 Request VO")
|
|
||||||
@Data
|
|
||||||
public class ApplicationSaveReqVO{
|
|
||||||
|
|
||||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "应用标识", example = "okk")
|
|
||||||
@NotNull(message = "应用标识不能为空")
|
|
||||||
private String appId;
|
|
||||||
|
|
||||||
@Schema(description = "应用密钥", example = "121gfrsg5sb4gs")
|
|
||||||
@NotNull(message = "应用密钥不能为空")
|
|
||||||
private String appKey;
|
|
||||||
|
|
||||||
// private String appSecret;
|
|
||||||
|
|
||||||
@Schema(description = "服务器IP列表", example = "0.0.0.0")
|
|
||||||
@NotNull(message = "服务器IP列表不能为空")
|
|
||||||
private String serverIp;
|
|
||||||
|
|
||||||
@Schema(description = "应用简称")
|
|
||||||
@NotNull(message = "应用简称不能为空")
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
@Schema(description = "应用名")
|
|
||||||
@NotNull(message = "应用名不能为空")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "应用主体")
|
|
||||||
@NotNull(message = "应用主体不能为空")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "状态: 0停用,1正常")
|
|
||||||
@NotNull(message = "不能为空")
|
|
||||||
private Boolean status;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
}
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
package com.cf.imes.module.system.controller.admin.application.vo.auth;
|
|
||||||
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 应用登录 Response VO")
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Builder
|
|
||||||
public class ApplicationLoginRespVO {
|
|
||||||
|
|
||||||
@Schema(description = "应用编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
|
||||||
private Integer appId;
|
|
||||||
|
|
||||||
@Schema(description = "访问令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "happy")
|
|
||||||
private String accessToken;
|
|
||||||
|
|
||||||
@Schema(description = "刷新令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "nice")
|
|
||||||
private String refreshToken;
|
|
||||||
|
|
||||||
@Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
|
||||||
private LocalDateTime expiresTime;
|
|
||||||
|
|
||||||
}
|
|
||||||
-23
@@ -1,14 +1,9 @@
|
|||||||
package com.cf.imes.module.system.dal.mysql.application;
|
package com.cf.imes.module.system.dal.mysql.application;
|
||||||
|
|
||||||
import com.cf.imes.framework.common.pojo.PageResult;
|
|
||||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationPageReqVO;
|
|
||||||
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.user.AdminUserDO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用信息表 process Mapper
|
* 应用信息表 process Mapper
|
||||||
@@ -17,24 +12,6 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface ApplicationMapper extends BaseMapperX<ApplicationDO> {
|
public interface ApplicationMapper extends BaseMapperX<ApplicationDO> {
|
||||||
|
|
||||||
default PageResult<ApplicationDO> selectPage(ApplicationPageReqVO reqVO) {
|
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<ApplicationDO>()
|
|
||||||
.likeIfPresent(ApplicationDO::getName, reqVO.getName())
|
|
||||||
.eqIfPresent(ApplicationDO::getAppId, reqVO.getAppId())
|
|
||||||
.eqIfPresent(ApplicationDO::getCode, reqVO.getCode())
|
|
||||||
.eqIfPresent(ApplicationDO::getServerIp, reqVO.getServerIp())
|
|
||||||
.eqIfPresent(ApplicationDO::getCompany, reqVO.getCompany())
|
|
||||||
.eqIfPresent(ApplicationDO::getStatus, reqVO.getStatus())
|
|
||||||
.eqIfPresent(ApplicationDO::getRemark, reqVO.getRemark())
|
|
||||||
.betweenIfPresent(ApplicationDO::getCreateTime, reqVO.getCreateTime())
|
|
||||||
.orderByDesc(ApplicationDO::getId));
|
|
||||||
}
|
|
||||||
|
|
||||||
default ApplicationDO selectByAppId(String appId) {
|
|
||||||
return selectOne(ApplicationDO::getAppId, appId);
|
|
||||||
}
|
|
||||||
|
|
||||||
default ApplicationDO selectByOrganId(Long organId) {
|
default ApplicationDO selectByOrganId(Long organId) {
|
||||||
return selectOne(ApplicationDO::getOrganId, organId);
|
return selectOne(ApplicationDO::getOrganId, organId);
|
||||||
}
|
}
|
||||||
|
|||||||
-55
@@ -1,63 +1,8 @@
|
|||||||
package com.cf.imes.module.system.service.application;
|
package com.cf.imes.module.system.service.application;
|
||||||
|
|
||||||
import com.cf.imes.framework.common.pojo.PageResult;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationPageReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationRespVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationSaveReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.auth.ApplicationLoginRespVO;
|
|
||||||
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface ApplicationService {
|
public interface ApplicationService {
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建应用信息表 application
|
|
||||||
*
|
|
||||||
* @param createReqVO 创建信息
|
|
||||||
* @return 编号
|
|
||||||
*/
|
|
||||||
Integer createApplication(@Valid ApplicationSaveReqVO createReqVO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新应用信息表 application
|
|
||||||
*
|
|
||||||
* @param updateReqVO 更新信息
|
|
||||||
*/
|
|
||||||
void updateApplication(@Valid ApplicationSaveReqVO updateReqVO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除应用信息表 application
|
|
||||||
*
|
|
||||||
* @param id 编号
|
|
||||||
*/
|
|
||||||
void deleteApplication(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得应用信息表 application
|
|
||||||
*
|
|
||||||
* @param id 编号
|
|
||||||
* @return 工序信息表 application
|
|
||||||
*/
|
|
||||||
ApplicationDO getApplication(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得应用信息表 application
|
|
||||||
*
|
|
||||||
* @param pageReqVO 分页查询
|
|
||||||
* @return 工序信息表 application
|
|
||||||
*/
|
|
||||||
PageResult<ApplicationDO> getApplicationPage(ApplicationPageReqVO pageReqVO);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 应用登陆
|
|
||||||
* @param reqVO: 登陆信息
|
|
||||||
* @return 登录结果
|
|
||||||
*/
|
|
||||||
ApplicationLoginRespVO loginApplication(@Valid ApplicationRespVO reqVO);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用信息
|
* 应用信息
|
||||||
* @param organId: 组织信息
|
* @param organId: 组织信息
|
||||||
|
|||||||
-111
@@ -1,32 +1,11 @@
|
|||||||
package com.cf.imes.module.system.service.application;
|
package com.cf.imes.module.system.service.application;
|
||||||
|
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
|
||||||
import com.cf.imes.framework.common.pojo.PageResult;
|
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationPageReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationRespVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.application.ApplicationSaveReqVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.application.vo.auth.ApplicationLoginRespVO;
|
|
||||||
import com.cf.imes.module.system.controller.admin.auth.vo.AuthLoginRespVO;
|
|
||||||
import com.cf.imes.module.system.convert.auth.AuthConvert;
|
|
||||||
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
|
|
||||||
import com.cf.imes.module.system.dal.mysql.application.ApplicationMapper;
|
import com.cf.imes.module.system.dal.mysql.application.ApplicationMapper;
|
||||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
|
||||||
import com.cf.imes.module.system.enums.logger.LoginLogTypeEnum;
|
|
||||||
import com.cf.imes.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
||||||
import com.cf.imes.module.system.service.oauth2.OAuth2TokenService;
|
|
||||||
import com.cf.imes.module.system.util.rsa.AsymmetricAlgorithmUtil;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
|
|
||||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.APPLICATION_NOT_EXISTS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用信息表 application Service 实现类
|
* 应用信息表 application Service 实现类
|
||||||
*
|
*
|
||||||
@@ -39,98 +18,8 @@ public class ApplicationServiceImpl implements ApplicationService{
|
|||||||
@Resource
|
@Resource
|
||||||
private ApplicationMapper applicationMapper;
|
private ApplicationMapper applicationMapper;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private OAuth2TokenService oauth2TokenService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer createApplication(ApplicationSaveReqVO createReqVO) {
|
|
||||||
// 插入
|
|
||||||
LinkedList<String> priKeyAndPubKey = AsymmetricAlgorithmUtil.getPriKeyAndPubKey();
|
|
||||||
String privateKey = priKeyAndPubKey.get(0);
|
|
||||||
String publicKey = priKeyAndPubKey.get(1);
|
|
||||||
String appKey = AsymmetricAlgorithmUtil.encryptByPublic(createReqVO.getAppId(), publicKey);
|
|
||||||
// 公钥加密,私钥解密
|
|
||||||
ApplicationDO applicationDO = BeanUtils.toBean(createReqVO, ApplicationDO.class)
|
|
||||||
.setAppKey(appKey).setAppSecret(privateKey);
|
|
||||||
applicationMapper.insert(applicationDO);
|
|
||||||
// 返回
|
|
||||||
return applicationDO.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateApplication(ApplicationSaveReqVO updateReqVO) {
|
|
||||||
// 校验存在
|
|
||||||
validateApplicationExists(updateReqVO.getId());
|
|
||||||
// 更新
|
|
||||||
ApplicationDO updateObj = BeanUtils.toBean(updateReqVO, ApplicationDO.class);
|
|
||||||
applicationMapper.updateById(updateObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteApplication(Long id) {
|
|
||||||
// 校验存在
|
|
||||||
validateApplicationExists(id);
|
|
||||||
// 删除
|
|
||||||
applicationMapper.deleteById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateApplicationExists(Long id) {
|
|
||||||
if (applicationMapper.selectById(id) == null) {
|
|
||||||
throw new ServiceException(APPLICATION_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApplicationDO getApplication(Long id) {
|
|
||||||
return applicationMapper.selectById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PageResult<ApplicationDO> getApplicationPage(ApplicationPageReqVO pageReqVO) {
|
|
||||||
return applicationMapper.selectPage(pageReqVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ApplicationLoginRespVO loginApplication(ApplicationRespVO reqVO) {
|
|
||||||
ApplicationDO app = applicationMapper.selectByAppId(reqVO.getAppId());
|
|
||||||
if (Objects.isNull(app)) {
|
|
||||||
throw new ServiceException(ErrorCodeConstants.APPLICATION_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
// 公钥加密,私钥解密
|
|
||||||
String appId = AsymmetricAlgorithmUtil.encryptByPublic(reqVO.getAppKey(), app.getAppSecret());
|
|
||||||
if (!appId.equals(app.getAppId())) {
|
|
||||||
throw new ServiceException(ErrorCodeConstants.APPLICATION_LOGIN_USER_DISABLED);
|
|
||||||
}
|
|
||||||
// 创建 Token 令牌,记录登录日志
|
|
||||||
return BeanUtils.toBean(createTokenAfterLoginSuccess(app.getId(), app.getAppId(), LoginLogTypeEnum.LOGIN_USERNAME), ApplicationLoginRespVO.class).setAppId(app.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApplicationDO getApplicationByOrganId(Long organId) {
|
public ApplicationDO getApplicationByOrganId(Long organId) {
|
||||||
return applicationMapper.selectByOrganId(organId);
|
return applicationMapper.selectByOrganId(organId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AuthLoginRespVO createTokenAfterLoginSuccess(Integer userId, String username, LoginLogTypeEnum logType) {
|
|
||||||
// Long organId = OrganContextHolder.getOrganId();
|
|
||||||
// OrganizationDO organ = organService.getOrgan(organId);
|
|
||||||
// if(Objects.isNull(organ)) {
|
|
||||||
// throw new ServerException(10023,"组织不存在");
|
|
||||||
// }
|
|
||||||
// 创建访问令牌
|
|
||||||
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(
|
|
||||||
1L,
|
|
||||||
null,
|
|
||||||
OAuth2ClientConstants.CLIENT_ID_DEFAULT,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null
|
|
||||||
);
|
|
||||||
// 构建返回结果
|
|
||||||
return AuthConvert.INSTANCE.convert(accessTokenDO);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
package com.cf.imes.module.system.service.application;
|
||||||
|
|
||||||
|
import com.cf.imes.framework.test.core.ut.BaseDbAndRedisUnitTest;
|
||||||
|
import com.cf.imes.module.system.dal.dataobject.application.ApplicationDO;
|
||||||
|
import com.cf.imes.module.system.dal.mysql.application.ApplicationMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import static com.cf.imes.framework.test.core.util.RandomUtils.randomPojo;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用管理服务单元测试
|
||||||
|
*
|
||||||
|
* @author Gqr
|
||||||
|
* @since 2026/1/13 14:37
|
||||||
|
*/
|
||||||
|
@Import(ApplicationServiceImpl.class)
|
||||||
|
class ApplicationServiceImplTest extends BaseDbAndRedisUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ApplicationServiceImpl applicationService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ApplicationMapper applicationMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getApplicationByOrganId() {
|
||||||
|
Long organId = 1L;
|
||||||
|
ApplicationDO applicationDO = randomPojo(ApplicationDO.class, o -> {
|
||||||
|
o.setOrganId(organId);
|
||||||
|
});
|
||||||
|
applicationMapper.insert(applicationDO);
|
||||||
|
|
||||||
|
ApplicationDO applicationByOrganId = applicationService.getApplicationByOrganId(organId);
|
||||||
|
assertNotNull(applicationByOrganId);
|
||||||
|
assertEquals(applicationDO.getId(), applicationByOrganId.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,3 +45,4 @@ DELETE FROM "income_expense_details";
|
|||||||
DELETE FROM "invoice_title_info";
|
DELETE FROM "invoice_title_info";
|
||||||
DELETE FROM "invoice_records";
|
DELETE FROM "invoice_records";
|
||||||
DELETE FROM "system_config_token";
|
DELETE FROM "system_config_token";
|
||||||
|
DELETE FROM "application";
|
||||||
@@ -900,3 +900,24 @@ CREATE TABLE IF NOT EXISTS "system_config_token"
|
|||||||
"deleted" BIT DEFAULT FALSE COMMENT '是否删除',
|
"deleted" BIT DEFAULT FALSE COMMENT '是否删除',
|
||||||
PRIMARY KEY ("id")
|
PRIMARY KEY ("id")
|
||||||
) COMMENT 'Token配置表';
|
) COMMENT 'Token配置表';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "application" (
|
||||||
|
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
|
||||||
|
"app_id" varchar(32) NOT NULL COMMENT '应用唯一标识',
|
||||||
|
"app_key" varchar(255) DEFAULT NULL,
|
||||||
|
"app_secret" varchar(255) DEFAULT NULL COMMENT '对应私钥',
|
||||||
|
"organ_id" bigint NOT NULL COMMENT '组织ID',
|
||||||
|
"server_ip" varchar(255) NOT NULL DEFAULT '' COMMENT '服务器IP列表',
|
||||||
|
"code" varchar(64) NOT NULL DEFAULT '' COMMENT '应用简称',
|
||||||
|
"name" varchar(64) NOT NULL DEFAULT '' COMMENT '应用名',
|
||||||
|
"company" varchar(64) NOT NULL DEFAULT '' COMMENT '应用主体',
|
||||||
|
"status" bit NOT NULL DEFAULT FALSE COMMENT '状态: 0停用,1正常',
|
||||||
|
"remark" varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
|
||||||
|
"creator" varchar(64) NOT NULL DEFAULT '' COMMENT '创建人',
|
||||||
|
"create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
"updater" varchar(64) NOT NULL DEFAULT '' COMMENT '更新人',
|
||||||
|
"update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
"deleted" bit NOT NULL DEFAULT FALSE COMMENT '删除标识: 0不删除,1已删除',
|
||||||
|
CONSTRAINT "idx_app_appid" UNIQUE ("app_id", "status", "deleted"),
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
) COMMENT '应用注册表';
|
||||||
Reference in New Issue
Block a user