feat():增加查、改(数据,状态)、删接口

yuan
yuan 2024-08-23 09:50:53 +08:00
parent 4c12e90952
commit fefc7b04f2
12 changed files with 538 additions and 36 deletions

View File

@ -1,10 +1,15 @@
package com.muyu.common.domain; package com.muyu.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.domain.req.RuleDataUpdReq;
import lombok.*; import lombok.*;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.util.function.Supplier;
/** /**
* @Authoryang * @Authoryang
* @Packagecom.muyu.common.domain * @Packagecom.muyu.common.domain
@ -19,18 +24,46 @@ import lombok.experimental.SuperBuilder;
@NoArgsConstructor @NoArgsConstructor
@TableName("rule_data") @TableName("rule_data")
public class RuleData extends BaseEntity { public class RuleData extends BaseEntity {
/**
* ID
*/
private Integer ruleId;
/**
*
*/
private String ruleRemark;
/**
*
*/
private String ruleClassify;
/**
* ID
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
*
*/
private Integer ruleClassify;
/**
*
*/
private String ruleName;
/**
*
*/
private String ruleCode;
/**
*
*/
private String ruleExplain;
/**
*
*/
private String ruleRespond;
/**
*
*/
private String ruleStatus;
public static RuleData updBuild(RuleDataUpdReq ruleDataUpdReq, Supplier<Long> idSupplier) {
return RuleData.builder()
.id(idSupplier.get())
.ruleClassify(ruleDataUpdReq.getRuleClassify())
.ruleName(ruleDataUpdReq.getRuleName())
.ruleCode(ruleDataUpdReq.getRuleCode())
.ruleExplain(ruleDataUpdReq.getRuleExplain())
.ruleRespond(ruleDataUpdReq.getRuleRespond())
.ruleStatus(ruleDataUpdReq.getRuleStatus())
.build();
}
} }

View File

@ -1,5 +1,7 @@
package com.muyu.common.domain; package com.muyu.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.core.web.domain.BaseEntity;
import lombok.*; import lombok.*;
@ -19,33 +21,19 @@ import lombok.experimental.SuperBuilder;
@NoArgsConstructor @NoArgsConstructor
@TableName("rule_data_classify") @TableName("rule_data_classify")
public class RuleDataClassify extends BaseEntity { public class RuleDataClassify extends BaseEntity {
/** /**
* ID * ID
*/ */
private Integer id; @TableId(value = "id",type = IdType.AUTO)
private Long ruleId;
/** /**
* *
*/ */
private Integer ruleClassify; private String ruleRemark;
/** /**
* *
*/ */
private String ruleName; private String ruleClassify;
/**
*
*/
private String ruleCode;
/**
*
*/
private String ruleExplain;
/**
*
*/
private String ruleRespond;
/**
*
*/
private Integer ruleStatus;
} }

View File

@ -0,0 +1,42 @@
package com.muyu.common.domain.req;
import com.muyu.common.core.validation.custom.IsSystemYesNo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.common.domain.req
* @Projectcloud-rule
* @nameRuleDataListReq
* @Date2024/8/22 10:12
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name = "接口列表请求对象")
public class RuleDataListReq {
/**
*
*/
@Schema(description = "规则名称",defaultValue = "邮箱规则接口",type = "String")
private String ruleName;
/**
*
*/
@Schema(description = "规则状态",defaultValue = "Y",type = "String")
@IsSystemYesNo
private String ruleStatus;
/**
*
*/
@Schema(description = "创建人",defaultValue = "yuan",type = "String")
private String createBy;
}

View File

@ -0,0 +1,62 @@
package com.muyu.common.domain.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.common.core.validation.custom.IsSystemYesNo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author
* @Packagecom.muyu.common.domain.req
* @Projectcloud-rule
* @nameRuleDataUpdReq
* @Date2024/8/23 1:09
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RuleDataUpdReq {
/**
*
*/
@Schema(title = "规则分类", type = "Integer",description = "选择规则分类" )
private Integer ruleClassify;
/**
*
*/
@NotEmpty(message = "规则名称不可为空 ")
@Schema(title = "规则名称" , type = "String",defaultValue = "XX规则"
,description = "规则名称一般为类型名称,方便使用者进行区分" ,requiredProperties = {"ruleName"})
private String ruleName;
/**
*
*/
@Schema(title = "规则代码",type = "String")
private String ruleCode;
/**
*
*/
@Schema(title = "规则说明",type = "String")
private String ruleExplain;
/**
*
*/
@Schema(title = "响应示例",type = "String")
private String ruleRespond;
/**
*
*/
@NotEmpty(message = "规则状态不可为空 ")
@IsSystemYesNo
@Schema(title = "接口开通状态" , type = "String" , defaultValue = "Y",
description = "状态为Y和N,如果为Y则客户可以使用接口规则若为N则客户不可以使用接口规则")
private String ruleStatus;
}

View File

@ -0,0 +1,84 @@
package com.muyu.common.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.domain.RuleData;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* @Author
* @Packagecom.muyu.common.domain.resp
* @Projectcloud-rule
* @nameRuleDataResp
* @Date2024/8/22 9:54
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name = "接口规则信息对应对象",description = "负责接口规则信息查询的相应结果")
public class RuleDataResp {
/**
* ID
*/
@Schema(description = "规则ID",defaultValue = "1",type = "Long")
private Long id;
/**
*
*/
@Schema(description = "规则名称",defaultValue = "邮箱规则接口",type = "String")
private String ruleName;
/**
*
*/
@Schema(description = "规则代码",defaultValue = "sql",type = "String")
private String ruleCode;
/**
*
*/
@Schema(description = "规则说明",defaultValue = "说明123",type = "String")
private String ruleExplain;
/**
*
*/
@Schema(description = "响应示例",defaultValue = "json{...}",type = "String")
private String ruleRespond;
/**
*
*/
@Schema(description = "规则状态",defaultValue = "Y",type = "String")
private String ruleStatus;
/**
*
*/
@Schema(description = "创建人",defaultValue = "yuan",type = "String")
private String createBy;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间",defaultValue = "2024-08-22 08:50:39",type = "Date")
private Date createTime;
public static RuleDataResp ruleDataBuild(RuleData ruleData, Supplier<List<RuleDataResp>> function) {
return RuleDataResp.builder()
.id(ruleData.getId())
.ruleName(ruleData.getRuleName())
.ruleCode(ruleData.getRuleCode())
.ruleExplain(ruleData.getRuleExplain())
.ruleRespond(ruleData.getRuleRespond())
.ruleStatus(ruleData.getRuleStatus())
.build();
}
}

View File

@ -1,8 +1,19 @@
package com.muyu.controller; package com.muyu.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.common.domain.RuleData;
import com.muyu.common.domain.req.RuleDataListReq;
import com.muyu.common.domain.req.RuleDataUpdReq;
import com.muyu.common.domain.resp.RuleDataResp;
import com.muyu.servier.RuleDataService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @Authoryang * @Authoryang
@ -13,6 +24,87 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@RestController @RestController
@RequestMapping("/rule_data") @RequestMapping("/rule_data")
@Tag(name = "查询源规则",description = "从自由数据库查询") @Tag(name = "规则控制层",description = "进行规则制定,查看等操作")
public class RuleDataController { public class RuleDataController {
@Autowired private RuleDataService ruleDataService;
/**
*
* @param ruleDataListReq
* @return
*/
@RequestMapping(path = "/list",method = RequestMethod.POST)
@Operation(summary = "查询接口规则",description = "根据规则名称、创建人、启动状态进行规则的筛选")
public Result<List<RuleDataResp>> selectList(
@Validated @RequestBody RuleDataListReq ruleDataListReq
){
return Result.success(
ruleDataService.selectList(ruleDataListReq)
);
}
/**
*
* @param id
* @param ruleDataUpdReq
* @return
*/
@PutMapping("/upd/{id}")
@Operation(summary = "接口规则修改",description = "通过ID修改接口规则信息")
public Result<String> update(
@Schema(title = "客户ID",type = "Long",defaultValue = "1",description = "修改接口规则信息需要唯一条件")
@PathVariable("id") Long id,
@Validated @RequestBody RuleDataUpdReq ruleDataUpdReq){
ruleDataService.updateById(RuleData.updBuild(ruleDataUpdReq,() -> id));
return Result.success(null,"操作成功");
}
/**
*
* @param id ID
* @return
*/
@DeleteMapping("/del/{id}")
@Operation(summary = "接口规则删除",description = "通过ID删除接口规则")
public Result<String> delete(@PathVariable("id") Long id){
ruleDataService.getOptById(id);
return Result.success(null,"操作成功");
}
/**
* ID
* @param id ID
* @return
*/
@GetMapping("/{id}")
@Operation(summary = "根据ID获取客户信息",description = "通过ID获取接口规则信息")
public Result<RuleData> findById(@PathVariable("id") Long id){
return Result.success(ruleDataService.getById(id),"操作成功");
}
/**
*ID
* @param id ID
* @return
*/
@GetMapping("/disable/{id}")
@Operation(summary = "通过ID禁用规则",description = "通过ID禁用规则之后禁止用户在使用此规则")
public Result<String> disable(@PathVariable("id") Long id){
this.ruleDataService.disable(id);
return Result.success(null,"操作成功");
}
/**
*ID
* @param id ID
* @return
*/
@GetMapping("/enable/{id}")
@Operation(summary = "通过ID启动规则",description = "通过ID禁用规则之后禁止用户在使用此规则")
public Result<String> enable(@PathVariable("id") Long id){
this.ruleDataService.enable(id);
return Result.success(null,"操作成功");
}
} }

View File

@ -0,0 +1,16 @@
package com.muyu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.common.domain.resp.RuleDataResp;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author
* @Packagecom.muyu.mapper
* @Projectcloud-rule
* @nameRuleDataInfoMapper
* @Date2024/8/23 12:58
*/
@Mapper
public interface RuleDataInfoMapper extends BaseMapper<RuleDataResp> {
}

View File

@ -0,0 +1,16 @@
package com.muyu.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.common.domain.RuleData;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author
* @Packagecom.muyu.mapper
* @Projectcloud-rule
* @nameRuleDataMapper
* @Date2024/8/22 10:20
*/
@Mapper
public interface RuleDataMapper extends BaseMapper<RuleData> {
}

View File

@ -0,0 +1,18 @@
package com.muyu.servier;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.domain.resp.RuleDataResp;
import java.util.Collection;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.servier
* @Projectcloud-rule
* @nameRuleDataInfoService
* @Date2024/8/23 12:57
*/
public interface RuleDataInfoService extends IService<RuleDataResp> {
List<RuleDataResp> selectRuleDataAndLimit(Long id, int limit);
}

View File

@ -0,0 +1,30 @@
package com.muyu.servier;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.domain.RuleData;
import com.muyu.common.domain.req.RuleDataListReq;
import com.muyu.common.domain.resp.RuleDataResp;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.servier
* @Projectcloud-rule
* @nameRuleDataService
* @Date2024/8/22 10:20
*/
public interface RuleDataService extends IService<RuleData> {
List<RuleDataResp> selectList(RuleDataListReq ruleDataListReq);
void disable(Long id);
void enable(Long id);
/**
* ID
* @param id ID
* @param status SysIsYesNo
*/
public void settingStatus(Long id, String status);
}

View File

@ -0,0 +1,32 @@
package com.muyu.servier.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.domain.resp.RuleDataResp;
import com.muyu.mapper.RuleDataInfoMapper;
import com.muyu.servier.RuleDataInfoService;
import com.muyu.servier.RuleDataService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.servier.impl
* @Projectcloud-rule
* @nameRuleDataInfoServiceImpl
* @Date2024/8/23 12:58
*/
@Service
public class RuleDataInfoServiceImpl
extends ServiceImpl<RuleDataInfoMapper, RuleDataResp>
implements RuleDataInfoService {
@Override
public List<RuleDataResp> selectRuleDataAndLimit(Long id, int limit) {
LambdaQueryWrapper<RuleDataResp> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
objectLambdaQueryWrapper.eq(RuleDataResp::getId,id);
objectLambdaQueryWrapper.orderBy(true,false,RuleDataResp::getCreateTime);
objectLambdaQueryWrapper.last("limit "+limit);
return this.list(objectLambdaQueryWrapper);
}
}

View File

@ -0,0 +1,89 @@
package com.muyu.servier.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.enums.SystemYesNo;
import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.domain.RuleData;
import com.muyu.common.domain.req.RuleDataListReq;
import com.muyu.common.domain.resp.RuleDataResp;
import com.muyu.mapper.RuleDataMapper;
import com.muyu.servier.RuleDataInfoService;
import com.muyu.servier.RuleDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author
* @Packagecom.muyu.servier.impl
* @Projectcloud-rule
* @nameRuleDataServiceImpl
* @Date2024/8/22 10:21
*/
@Service
public class RuleDataServiceImpl
extends ServiceImpl<RuleDataMapper, RuleData>
implements RuleDataService {
@Autowired private RuleDataMapper ruleDataMapper;
@Autowired private RuleDataService ruleDataService;
@Autowired private RuleDataInfoService ruleDataInfoService;
@Override
public List<RuleDataResp> selectList(RuleDataListReq ruleDataListReq) {
LambdaQueryWrapper<RuleData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(
StringUtils.isNotEmpty(ruleDataListReq.getRuleName()),
RuleData::getRuleName, ruleDataListReq.getRuleName()
);
queryWrapper.eq(
StringUtils.isNotEmpty(ruleDataListReq.getCreateBy()),
RuleData::getCreateBy, ruleDataListReq.getCreateBy()
);
queryWrapper.eq(
StringUtils.isNotEmpty(ruleDataListReq.getRuleStatus()),
RuleData::getRuleStatus, ruleDataListReq.getRuleStatus()
);
List<RuleData> ruleDataList = this.list(queryWrapper);
return ruleDataList.stream()
.map(ruleData -> RuleDataResp.ruleDataBuild(ruleData,() ->
ruleDataInfoService.selectRuleDataAndLimit(ruleData.getId(),5)
.stream()
.toList()
))
.toList();
}
@Override
public void disable(Long id) {
this.settingStatus(id, SystemYesNo.NO.getCode());
}
@Override
public void enable(Long id) {
this.settingStatus(id, SystemYesNo.YES.getCode());
}
@Override
public void settingStatus(Long id, String status) {
LambdaQueryWrapper<RuleData> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(RuleData::getId,id);
boolean isExists = this.exists(queryWrapper);
if (!isExists) {
throw new ServiceException("操作规则不存在");
}
if (SystemYesNo.isCode(status)){
throw new ServiceException("设置状态值违法");
}
LambdaUpdateWrapper<RuleData> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(RuleData::getId,id);
updateWrapper.set(RuleData::getRuleStatus,status);
this.update(updateWrapper);
}
}