diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/IscConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/IscConstants.java index eedaef59d..34bda0baa 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/IscConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/IscConstants.java @@ -11,4 +11,14 @@ public class IscConstants { /** 待审核 */ public static final String ONLINE_STATUS_ON = "1"; + /** 申请类型 申请服务 */ + public static final String APPLY_TYPE_APPLY = "0"; + + /** 申请类型 服务续期 */ + public static final String APPLY_TYPE_RENEWAL = "1"; + + /** 申请类型 申请修改 */ + public static final String APPLY_TYPE_MODIFY = "2"; + + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java index 2e17c4a5d..d0d280069 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java @@ -2,7 +2,7 @@ package com.ruoyi.common.enums; /** * 业务操作类型 - * + * * @author ruoyi */ public enum BusinessType @@ -51,9 +51,14 @@ public enum BusinessType * 生成代码 */ GENCODE, - + /** * 清空数据 */ CLEAN, + + /** + * 审核 + */ + AUDIT } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceApplyController.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceApplyController.java new file mode 100644 index 000000000..0fbb2d481 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceApplyController.java @@ -0,0 +1,86 @@ +package com.ruoyi.isc.controller; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.isc.domain.bo.IscAppServiceApplyBo; +import com.ruoyi.isc.domain.vo.IscAppServiceApplyVo; +import com.ruoyi.isc.service.IIscAppServiceApplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 应用服务申请信息Controller + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +@Validated +@Api(value = "应用服务申请信息控制器", tags = {"应用服务申请信息管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/isc/serviceapply") +public class IscAppServiceApplyController extends BaseController { + + private final IIscAppServiceApplyService iIscAppServiceApplyService; + + /** + * 查询应用服务申请信息列表 + */ + @ApiOperation("查询应用服务申请信息列表") + @PreAuthorize("@ss.hasPermi('isc:serviceapply:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated(QueryGroup.class) IscAppServiceApplyBo bo) { + return iIscAppServiceApplyService.queryPageList(bo); + } + + /** + * 导出应用服务申请信息列表 + */ + @ApiOperation("导出应用服务申请信息列表") + @PreAuthorize("@ss.hasPermi('isc:serviceapply:export')") + @Log(title = "应用服务申请信息", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public void export(@Validated IscAppServiceApplyBo bo, HttpServletResponse response) { + List list = iIscAppServiceApplyService.queryList(bo); + ExcelUtil.exportExcel(list, "应用服务申请信息", IscAppServiceApplyVo.class, response); + } + + /** + * 获取应用服务申请信息详细信息 + */ + @ApiOperation("获取应用服务申请信息详细信息") + @PreAuthorize("@ss.hasPermi('isc:serviceapply:query')") + @GetMapping("/{applyId}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("applyId") Long applyId) { + return AjaxResult.success(iIscAppServiceApplyService.queryById(applyId)); + } + + /** + * 应用服务申请信息审核 + */ + @ApiOperation("应用服务申请信息审核") + @PreAuthorize("@ss.hasPermi('isc:serviceapply:audit')") + @Log(title = "应用服务申请信息审核", businessType = BusinessType.AUDIT) + @RepeatSubmit() + @PutMapping() + public AjaxResult audit(@Validated(EditGroup.class) @RequestBody IscAppServiceApplyBo bo) { + return toAjax(iIscAppServiceApplyService.updateByBo(bo) ? 1 : 0); + } +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceController.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceController.java index 4bc679579..833e750ab 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceController.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/controller/IscAppServiceController.java @@ -1,33 +1,32 @@ package com.ruoyi.isc.controller; -import java.util.List; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - import cn.hutool.core.lang.tree.Tree; -import com.ruoyi.isc.domain.IscServiceCate; -import lombok.RequiredArgsConstructor; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.*; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.isc.domain.vo.IscAppServiceVo; import com.ruoyi.isc.domain.bo.IscAppServiceBo; +import com.ruoyi.isc.domain.vo.IscAppServiceVo; import com.ruoyi.isc.service.IIscAppServiceService; -import com.ruoyi.common.core.page.TableDataInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; /** * 应用服务Controller @@ -71,10 +70,10 @@ public class IscAppServiceController extends BaseController { */ @ApiOperation("获取应用服务详细信息") @PreAuthorize("@ss.hasPermi('isc:appservice:query')") - @GetMapping("/{serviceAppId}") + @GetMapping("/{appServiceId}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") - @PathVariable("serviceAppId") Long serviceAppId) { - return AjaxResult.success(appServiceService.queryById(serviceAppId)); + @PathVariable("appServiceId") Long appServiceId) { + return AjaxResult.success(appServiceService.queryById(appServiceId)); } /** @@ -107,10 +106,10 @@ public class IscAppServiceController extends BaseController { @ApiOperation("删除应用服务") @PreAuthorize("@ss.hasPermi('isc:appservice:remove')") @Log(title = "应用服务" , businessType = BusinessType.DELETE) - @DeleteMapping("/{serviceAppIds}") + @DeleteMapping("/{appServiceIds}") public AjaxResult remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] serviceAppIds) { - return toAjax(appServiceService.deleteWithValidByIds(Arrays.asList(serviceAppIds), true) ? 1 : 0); + @PathVariable Long[] appServiceIds) { + return toAjax(appServiceService.deleteWithValidByIds(Arrays.asList(appServiceIds), true) ? 1 : 0); } /** diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppService.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppService.java index 2a4e21d0d..4c8a8d1b3 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppService.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppService.java @@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; + import java.io.Serializable; import java.util.Date; -import java.math.BigDecimal; /** * 应用服务对象 isc_app_service @@ -26,8 +26,8 @@ public class IscAppService implements Serializable { /** * 应用服务ID */ - @TableId(value = "service_app_id") - private Long serviceAppId; + @TableId(value = "app_service_id") + private Long appServiceId; /** * 服务ID @@ -119,4 +119,9 @@ public class IscAppService implements Serializable { @TableLogic private String delFlag; + /** + * 备注 + */ + private String remark; + } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppServiceApply.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppServiceApply.java new file mode 100644 index 000000000..76fcd14c7 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/IscAppServiceApply.java @@ -0,0 +1,112 @@ +package com.ruoyi.isc.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +/** + * 应用服务申请信息对象 isc_app_service_apply + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("isc_app_service_apply") +public class IscAppServiceApply implements Serializable { + + private static final long serialVersionUID=1L; + + + /** + * 申请ID + */ + @TableId(value = "apply_id") + private Long applyId; + + /** + * 应用服务ID + */ + private Long appServiceId; + + /** + * 申请类型(0申请 1续期) + */ + private String applyType; + + /** + * 审核状态(0待审核 1审核通过 2驳回) + */ + private String status; + + /** + * 审核意见 + */ + private String auditMind; + + /** + * 续期时长(单位月) + */ + private Long renewalDuration; + + /** + * 天配额 + */ + private Long quotaDays; + + /** + * 小时配额 + */ + private Long quotaHours; + + /** + * 分钟配额 + */ + private Long quotaMinutes; + + /** + * 秒配额 + */ + private Long quotaSeconds; + + /** + * 创建者 + */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceApplyBo.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceApplyBo.java new file mode 100644 index 000000000..c0a055bd8 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceApplyBo.java @@ -0,0 +1,113 @@ +package com.ruoyi.isc.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 应用服务申请信息业务对象 isc_app_service_apply + * + * @author Wenchao Gong + * @date 2021-09-09 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("应用服务申请信息业务对象") +public class IscAppServiceApplyBo extends BaseEntity { + + /** + * 申请ID + */ + @ApiModelProperty(value = "申请ID") + private Long applyId; + + /** + * 应用服务ID + */ + @ApiModelProperty(value = "应用服务ID", required = true) + @NotNull(message = "应用服务ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long appServiceId; + + /** + * 申请类型(0申请 1续期) + */ + @ApiModelProperty(value = "申请类型(0申请 1续期)") + private String applyType; + + /** + * 审核状态(0待审核 1审核通过 2驳回) + */ + @ApiModelProperty(value = "审核状态(0待审核 1审核通过 2驳回)") + private String status; + + /** + * 续期时长(单位月) + */ + @ApiModelProperty(value = "续期时长(单位月)") + private Long renewalDuration; + + /** + * 天配额 + */ + @ApiModelProperty(value = "天配额") + private Long quotaDays; + + /** + * 小时配额 + */ + @ApiModelProperty(value = "小时配额") + private Long quotaHours; + + /** + * 分钟配额 + */ + @ApiModelProperty(value = "分钟配额") + private Long quotaMinutes; + + /** + * 秒配额 + */ + @ApiModelProperty(value = "秒配额") + private Long quotaSeconds; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)") + private String delFlag; + + + /** + * 分页大小 + */ + @ApiModelProperty("分页大小") + private Integer pageSize; + + /** + * 当前页数 + */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + /** + * 排序列 + */ + @ApiModelProperty("排序列") + private String orderByColumn; + + /** + * 排序的方向desc或者asc + */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceBo.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceBo.java index 340edd465..5fb254b01 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceBo.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/bo/IscAppServiceBo.java @@ -1,19 +1,17 @@ package com.ruoyi.isc.domain.bo; +import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.validation.constraints.*; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.Date; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.ruoyi.common.core.domain.BaseEntity; - /** * 应用服务业务对象 isc_app_service * @@ -30,7 +28,7 @@ public class IscAppServiceBo extends BaseEntity { * 应用服务ID */ @ApiModelProperty(value = "应用服务ID") - private Long serviceAppId; + private Long appServiceId; /** * 服务ID @@ -53,12 +51,6 @@ public class IscAppServiceBo extends BaseEntity { @NotBlank(message = "启用状态(0启用 1停用)不能为空", groups = { AddGroup.class, EditGroup.class }) private String enabled; - /** - * 申请类型(0申请 1续期) - */ - @ApiModelProperty(value = "申请类型(0申请 1续期)") - private String applyType; - /** * 审核状态(0待审核 1审核通过 2驳回) */ @@ -95,6 +87,12 @@ public class IscAppServiceBo extends BaseEntity { @ApiModelProperty(value = "秒配额") private Long quotaSeconds; + /** + * 续期时长(单位月) + */ + @NotNull(message = "续期时长不能为空", groups = { AddGroup.class }) + private Long renewalDuration; + /** * 分页大小 diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceApplyVo.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceApplyVo.java new file mode 100644 index 000000000..f6a42ad47 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceApplyVo.java @@ -0,0 +1,127 @@ +package com.ruoyi.isc.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + + + +/** + * 应用服务申请信息视图对象 isc_app_service_apply + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +@Data +@ApiModel("应用服务申请信息视图对象") +@ExcelIgnoreUnannotated +public class IscAppServiceApplyVo { + + private static final long serialVersionUID = 1L; + + /** + * 申请ID + */ + @ApiModelProperty("申请ID") + private Long applyId; + + /** + * 应用服务ID + */ + @ApiModelProperty("应用服务ID") + private Long appServiceId; + + /** + * 应用名称 + */ + @ExcelProperty(value = "应用名称") + @ApiModelProperty("应用名称") + private String applicationName; + + /** + * 服务名称 + */ + @ExcelProperty(value = "服务名称") + @ApiModelProperty("服务名称") + private String serviceName; + + /** + * 申请类型(0申请 1续期) + */ + @ExcelProperty(value = "申请类型(0申请 1续期)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "isc_apply_type") + @ApiModelProperty("申请类型(0申请 1续期)") + private String applyType; + + /** + * 审核状态(0待审核 1审核通过 2驳回) + */ + @ExcelProperty(value = "审核状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_audit_status") + @ApiModelProperty("审核状态(0待审核 1审核通过 2驳回)") + private String status; + + /** + * 续期时长(单位月) + */ + @ExcelProperty(value = "续期时长", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位月") + @ApiModelProperty("续期时长(单位月)") + private Long renewalDuration; + + /** + * 天配额 + */ + @ExcelProperty(value = "天配额") + @ApiModelProperty("天配额") + private Long quotaDays; + + /** + * 小时配额 + */ + @ExcelProperty(value = "小时配额") + @ApiModelProperty("小时配额") + private Long quotaHours; + + /** + * 分钟配额 + */ + @ExcelProperty(value = "分钟配额") + @ApiModelProperty("分钟配额") + private Long quotaMinutes; + + /** + * 秒配额 + */ + @ExcelProperty(value = "秒配额") + @ApiModelProperty("秒配额") + private Long quotaSeconds; + + /** + * 更新者 + */ + @ExcelProperty(value = "更新者") + @ApiModelProperty("更新者") + private String updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + @ApiModelProperty("更新时间") + private Date updateTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + @ApiModelProperty("备注") + private String remark; + + +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceVo.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceVo.java index 5310f1574..782ad2cfe 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceVo.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/domain/vo/IscAppServiceVo.java @@ -29,7 +29,7 @@ public class IscAppServiceVo { * 应用服务ID */ @ApiModelProperty("应用服务ID") - private Long serviceAppId; + private Long appServiceId; /** * 服务ID @@ -96,6 +96,30 @@ public class IscAppServiceVo { @ApiModelProperty("到期时间") private Date endTime; + /** + * 天配额 + */ + @ApiModelProperty(value = "天配额") + private Long quotaDays; + + /** + * 小时配额 + */ + @ApiModelProperty(value = "小时配额") + private Long quotaHours; + + /** + * 分钟配额 + */ + @ApiModelProperty(value = "分钟配额") + private Long quotaMinutes; + + /** + * 秒配额 + */ + @ApiModelProperty(value = "秒配额") + private Long quotaSeconds; + /** * 更新者 */ diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/mapper/IscAppServiceApplyMapper.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/mapper/IscAppServiceApplyMapper.java new file mode 100644 index 000000000..0e4ea03d7 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/mapper/IscAppServiceApplyMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.isc.mapper; + +import com.ruoyi.isc.domain.IscAppServiceApply; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import org.apache.ibatis.annotations.CacheNamespace; + +/** + * 应用服务申请信息Mapper接口 + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +public interface IscAppServiceApplyMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceApplyService.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceApplyService.java new file mode 100644 index 000000000..994773a18 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceApplyService.java @@ -0,0 +1,56 @@ +package com.ruoyi.isc.service; + +import com.ruoyi.common.core.mybatisplus.core.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.isc.domain.IscAppServiceApply; +import com.ruoyi.isc.domain.bo.IscAppServiceApplyBo; +import com.ruoyi.isc.domain.vo.IscAppServiceApplyVo; + +import java.util.Collection; +import java.util.List; + +/** + * 应用服务申请信息Service接口 + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +public interface IIscAppServiceApplyService extends IServicePlus { + /** + * 查询单个 + * @return + */ + IscAppServiceApplyVo queryById(Long applyId); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(IscAppServiceApplyBo bo); + + /** + * 查询列表 + */ + List queryList(IscAppServiceApplyBo bo); + + /** + * 根据新增业务对象插入应用服务申请信息 + * @param bo 应用服务申请信息新增业务对象 + * @return + */ + Boolean insertByBo(IscAppServiceApplyBo bo); + + /** + * 根据编辑业务对象修改应用服务申请信息 + * @param bo 应用服务申请信息编辑业务对象 + * @return + */ + Boolean updateByBo(IscAppServiceApplyBo bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceService.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceService.java index 9c0c04300..9fce813a9 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceService.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscAppServiceService.java @@ -1,11 +1,11 @@ package com.ruoyi.isc.service; import cn.hutool.core.lang.tree.Tree; -import com.ruoyi.isc.domain.IscAppService; -import com.ruoyi.isc.domain.vo.IscAppServiceVo; -import com.ruoyi.isc.domain.bo.IscAppServiceBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.isc.domain.IscAppService; +import com.ruoyi.isc.domain.bo.IscAppServiceBo; +import com.ruoyi.isc.domain.vo.IscAppServiceVo; import java.util.Collection; import java.util.List; @@ -21,7 +21,7 @@ public interface IIscAppServiceService extends IServicePlus> genAppServiceTree(Long applicationId); + + /** + * 通过 Id集合 返回列表 + * @param ids 应用服务ID + * @return 应用服务列表 + */ + List getAppServiceListByIds(Collection ids); } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscApplicationService.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscApplicationService.java index 76989913f..4294390aa 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscApplicationService.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/IIscApplicationService.java @@ -1,13 +1,14 @@ package com.ruoyi.isc.service; -import com.ruoyi.isc.domain.IscApplication; -import com.ruoyi.isc.domain.vo.IscApplicationVo; -import com.ruoyi.isc.domain.bo.IscApplicationBo; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.isc.domain.IscApplication; +import com.ruoyi.isc.domain.bo.IscApplicationBo; +import com.ruoyi.isc.domain.vo.IscApplicationVo; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 应用信息Service接口 @@ -53,4 +54,11 @@ public interface IIscApplicationService extends IServicePlus ids, Boolean isValid); + + /** + * 通过应用ID集合批量查询 应用名称 + * @param applicationIds 应用ID集合 + * @return 应用名称Map + */ + Map getNameMap(Collection applicationIds); } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceApplyServiceImpl.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceApplyServiceImpl.java new file mode 100644 index 000000000..0dae5dcb7 --- /dev/null +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceApplyServiceImpl.java @@ -0,0 +1,131 @@ +package com.ruoyi.isc.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.ruoyi.common.core.page.PagePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.isc.domain.IscAppService; +import com.ruoyi.isc.domain.IscAppServiceApply; +import com.ruoyi.isc.domain.bo.IscAppServiceApplyBo; +import com.ruoyi.isc.domain.vo.IscAppServiceApplyVo; +import com.ruoyi.isc.mapper.IscAppServiceApplyMapper; +import com.ruoyi.isc.service.IIscAppServiceApplyService; +import com.ruoyi.isc.service.IIscAppServiceService; +import com.ruoyi.isc.service.IIscApplicationService; +import com.ruoyi.isc.service.IIscServiceService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 应用服务申请信息Service业务层处理 + * + * @author Wenchao Gong + * @date 2021-09-09 + */ +@Service +public class IscAppServiceApplyServiceImpl extends ServicePlusImpl implements IIscAppServiceApplyService { + + @Resource + private IIscAppServiceService appServiceService; + @Resource + private IIscApplicationService applicationService; + @Resource + private IIscServiceService serviceService; + + @Override + public IscAppServiceApplyVo queryById(Long applyId){ + return getVoById(applyId); + } + + @Override + public TableDataInfo queryPageList(IscAppServiceApplyBo bo) { + PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo)); + genServiceNameAndApplicationName(result.getRecordsVo()); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(IscAppServiceApplyBo bo) { + List results = listVo(buildQueryWrapper(bo)); + genServiceNameAndApplicationName(results); + return results; + } + + /** + * 组装服务、应用名称 + * @param list 申请记录 + */ + private void genServiceNameAndApplicationName(List list) + { + if(CollectionUtil.isEmpty(list)) { + return; + } + Set appServiceIds = list.stream().map(IscAppServiceApplyVo::getAppServiceId).collect(Collectors.toSet()); + List appServiceList = appServiceService.getAppServiceListByIds(appServiceIds); + if(CollectionUtil.isEmpty(appServiceList)) { + return; + } + Map appServiceMap = appServiceList.stream() + .collect(Collectors.toMap(IscAppService::getAppServiceId, Function.identity())); + Map serviceNameMap = serviceService.getNameMap(appServiceList.stream() + .map(IscAppService::getServiceId).collect(Collectors.toSet())); + Map applicationNameMap = applicationService.getNameMap(appServiceList.stream() + .map(IscAppService::getApplicationId).collect(Collectors.toSet())); + for (IscAppServiceApplyVo vo : list) { + IscAppService appService = appServiceMap.get(vo.getAppServiceId()); + if(Objects.isNull(appService)) { + continue; + } + vo.setServiceName(serviceNameMap.get(appService.getServiceId())); + vo.setApplicationName(applicationNameMap.get(appService.getApplicationId())); + } + } + + private LambdaQueryWrapper buildQueryWrapper(IscAppServiceApplyBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getApplyType()), IscAppServiceApply::getApplyType, bo.getApplyType()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), IscAppServiceApply::getStatus, bo.getStatus()); + return lqw; + } + + @Override + public Boolean insertByBo(IscAppServiceApplyBo bo) { + IscAppServiceApply add = BeanUtil.toBean(bo, IscAppServiceApply.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean updateByBo(IscAppServiceApplyBo bo) { + IscAppServiceApply update = BeanUtil.toBean(bo, IscAppServiceApply.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(IscAppServiceApply entity){ + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } +} diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceServiceImpl.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceServiceImpl.java index f3b9483bc..c5995713b 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceServiceImpl.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscAppServiceServiceImpl.java @@ -2,29 +2,33 @@ package com.ruoyi.isc.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.tree.Tree; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.PageUtils; -import com.ruoyi.common.core.page.PagePlus; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.isc.domain.IscService; -import com.ruoyi.isc.service.IIscServiceService; -import org.springframework.stereotype.Service; -import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.ruoyi.common.constant.IscConstants; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.ruoyi.common.core.page.PagePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.isc.domain.IscAppService; +import com.ruoyi.isc.domain.IscAppServiceApply; +import com.ruoyi.isc.domain.bo.IscAppServiceApplyBo; import com.ruoyi.isc.domain.bo.IscAppServiceBo; import com.ruoyi.isc.domain.vo.IscAppServiceVo; -import com.ruoyi.isc.domain.IscAppService; import com.ruoyi.isc.mapper.IscAppServiceMapper; +import com.ruoyi.isc.service.IIscAppServiceApplyService; import com.ruoyi.isc.service.IIscAppServiceService; +import com.ruoyi.isc.service.IIscServiceService; +import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.Set; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -38,9 +42,12 @@ public class IscAppServiceServiceImpl extends ServicePlusImpllambdaQuery() + .eq(IscAppServiceApply::getAppServiceId, entity.getAppServiceId()) + .eq(IscAppServiceApply::getStatus, IscConstants.AUDIT_WAIT)); + Assert.isFalse(SqlHelper.retBool(count), () -> new ServiceException("有申请未审核, 不能再申请")); + } } @Override @@ -125,4 +145,42 @@ public class IscAppServiceServiceImpl extends ServicePlusImpl (Long) o); return serviceService.genServiceTree(CollectionUtil.newHashSet(serviceIds)); } + + @Override + public List getAppServiceListByIds(Collection ids) + { + return list(Wrappers.lambdaQuery() + .select(IscAppService::getAppServiceId, IscAppService::getApplicationId, IscAppService::getServiceId) + .in(IscAppService::getAppServiceId, ids)); + } + + /** + * 添加 服务申请记录 + * @param appService 应用服务信息 + * @param applyType 申请类型 + * @param appServiceId 应用服务ID + * @return 是否添加成功 + */ + private Boolean addApplyRecord(IscAppServiceBo appService, String applyType, Long appServiceId) { + IscAppServiceApplyBo entity = new IscAppServiceApplyBo(); + entity.setAppServiceId(appServiceId); + entity.setApplyType(applyType); + entity.setStatus(IscConstants.AUDIT_WAIT); + entity.setRemark(appService.getRemark()); + switch (applyType) { + case IscConstants.APPLY_TYPE_APPLY: + entity.setRenewalDuration(appService.getRenewalDuration()); + case IscConstants.APPLY_TYPE_MODIFY: + entity.setQuotaDays(appService.getQuotaDays()); + entity.setQuotaHours(appService.getQuotaHours()); + entity.setQuotaMinutes(appService.getQuotaMinutes()); + entity.setQuotaSeconds(appService.getQuotaSeconds()); + break; + case IscConstants.APPLY_TYPE_RENEWAL: + entity.setRenewalDuration(appService.getRenewalDuration()); + break; + default: + } + return applyService.insertByBo(entity); + } } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscApplicationServiceImpl.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscApplicationServiceImpl.java index 50544c401..3a466a11b 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscApplicationServiceImpl.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscApplicationServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.isc.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -20,6 +22,7 @@ import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 应用信息Service业务层处理 @@ -88,4 +91,16 @@ public class IscApplicationServiceImpl extends ServicePlusImpl getNameMap(Collection applicationIds) + { + if(CollectionUtil.isEmpty(applicationIds)) { + return MapUtil.empty(); + } + return list(Wrappers.lambdaQuery() + .select(IscApplication::getApplicationId, IscApplication::getApplicationName) + .in(IscApplication::getApplicationId, applicationIds)).stream() + .collect(Collectors.toMap(IscApplication::getApplicationId, IscApplication::getApplicationName)); + } } diff --git a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscServiceServiceImpl.java b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscServiceServiceImpl.java index 5bb969f6a..49ec72bcc 100644 --- a/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscServiceServiceImpl.java +++ b/ruoyi-isc/src/main/java/com/ruoyi/isc/service/impl/IscServiceServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.isc.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.map.MapUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -134,6 +135,9 @@ public class IscServiceServiceImpl extends ServicePlusImpl getNameMap(Collection serviceIds) { + if(CollectionUtil.isEmpty(serviceIds)) { + return MapUtil.empty(); + } return list(Wrappers.lambdaQuery() .select(IscService::getServiceId, IscService::getServiceName) .in(IscService::getServiceId, serviceIds)).stream() diff --git a/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceApplyMapper.xml b/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceApplyMapper.xml new file mode 100644 index 000000000..6951d02aa --- /dev/null +++ b/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceApplyMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceMapper.xml b/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceMapper.xml index 721e5180a..57b2d3127 100644 --- a/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceMapper.xml +++ b/ruoyi-isc/src/main/resources/mapper/isc/IscAppServiceMapper.xml @@ -5,7 +5,7 @@ - + diff --git a/ruoyi-ui/src/api/isc/appservice.js b/ruoyi-ui/src/api/isc/appservice.js index 0f86ce555..6e3abdba3 100644 --- a/ruoyi-ui/src/api/isc/appservice.js +++ b/ruoyi-ui/src/api/isc/appservice.js @@ -10,9 +10,9 @@ export function listAppservice(query) { } // 查询应用服务详细 -export function getAppservice(serviceAppId) { +export function getAppservice(appServiceId) { return request({ - url: '/isc/appservice/' + serviceAppId, + url: '/isc/appservice/' + appServiceId, method: 'get' }) } @@ -36,9 +36,9 @@ export function updateAppservice(data) { } // 删除应用服务 -export function delAppservice(serviceAppId) { +export function delAppservice(appServiceId) { return request({ - url: '/isc/appservice/' + serviceAppId, + url: '/isc/appservice/' + appServiceId, method: 'delete' }) } diff --git a/ruoyi-ui/src/api/isc/serviceapply.js b/ruoyi-ui/src/api/isc/serviceapply.js new file mode 100644 index 000000000..ea0291535 --- /dev/null +++ b/ruoyi-ui/src/api/isc/serviceapply.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询应用服务申请信息列表 +export function listServiceapply(query) { + return request({ + url: '/isc/serviceapply/list', + method: 'get', + params: query + }) +} + +// 查询应用服务申请信息详细 +export function getServiceapply(applyId) { + return request({ + url: '/isc/serviceapply/' + applyId, + method: 'get' + }) +} + +// 新增应用服务申请信息 +export function addServiceapply(data) { + return request({ + url: '/isc/serviceapply', + method: 'post', + data: data + }) +} + +// 修改应用服务申请信息 +export function updateServiceapply(data) { + return request({ + url: '/isc/serviceapply', + method: 'put', + data: data + }) +} + +// 删除应用服务申请信息 +export function delServiceapply(applyId) { + return request({ + url: '/isc/serviceapply/' + applyId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/views/isc/application/index.vue b/ruoyi-ui/src/views/isc/application/index.vue index 02b337d36..9c9977c40 100644 --- a/ruoyi-ui/src/views/isc/application/index.vue +++ b/ruoyi-ui/src/views/isc/application/index.vue @@ -75,7 +75,7 @@ - +