!6 同步develop分支

* sync -- 同步develop分支
This commit is contained in:
KonBAI
2022-01-18 13:16:15 +00:00
parent a649962696
commit 5676316380
338 changed files with 10957 additions and 9551 deletions

View File

@@ -1,7 +1,7 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.RedisUtils;
import com.ruoyi.common.utils.redis.RedisUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;

View File

@@ -1,7 +1,7 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.RedisUtils;
import com.ruoyi.common.utils.redis.RedisUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.demo.domain.TestDemo;
import com.ruoyi.demo.service.ITestDemoService;
import com.ruoyi.demo.mapper.TestDemoMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@@ -29,7 +29,10 @@ import java.util.List;
@RequestMapping("/demo/batch")
public class TestBatchController extends BaseController {
private final ITestDemoService iTestDemoService;
/**
* 为了便于测试 直接引入mapper
*/
private final TestDemoMapper testDemoMapper;
/**
* 新增批量方法 可完美替代 saveBatch 秒级插入上万数据 (对mysql负荷较大)
@@ -38,13 +41,13 @@ public class TestBatchController extends BaseController {
*/
@ApiOperation(value = "新增批量方法")
@PostMapping("/add")
// @DS("slave")
// @DS("slave")
public R<Void> add() {
List<TestDemo> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增"));
}
return toAjax(iTestDemoService.saveAll(list) ? 1 : 0);
return toAjax(testDemoMapper.insertBatch(list) ? 1 : 0);
}
/**
@@ -54,13 +57,13 @@ public class TestBatchController extends BaseController {
*/
@ApiOperation(value = "新增或更新批量方法")
@PostMapping("/addOrUpdate")
// @DS("slave")
// @DS("slave")
public R<Void> addOrUpdate() {
List<TestDemo> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add(new TestDemo().setOrderNum(-1L).setTestKey("批量新增").setValue("测试新增"));
}
iTestDemoService.saveAll(list);
testDemoMapper.insertBatch(list);
for (int i = 0; i < list.size(); i++) {
TestDemo testDemo = list.get(i);
testDemo.setTestKey("批量新增或修改").setValue("批量新增或修改");
@@ -68,7 +71,7 @@ public class TestBatchController extends BaseController {
testDemo.setId(null);
}
}
return toAjax(iTestDemoService.saveOrUpdateAll(list) ? 1 : 0);
return toAjax(testDemoMapper.insertOrUpdateBatch(list) ? 1 : 0);
}
/**
@@ -76,10 +79,10 @@ public class TestBatchController extends BaseController {
*/
@ApiOperation(value = "删除批量方法")
@DeleteMapping()
// @DS("slave")
// @DS("slave")
public R<Void> remove() {
return toAjax(iTestDemoService.remove(new LambdaQueryWrapper<TestDemo>()
.eq(TestDemo::getOrderNum, -1L)) ? 1 : 0);
return toAjax(testDemoMapper.delete(new LambdaQueryWrapper<TestDemo>()
.eq(TestDemo::getOrderNum, -1L)));
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.demo.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
@@ -22,7 +23,6 @@ import com.ruoyi.demo.service.ITestDemoService;
import io.swagger.annotations.*;
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 org.springframework.web.multipart.MultipartFile;
@@ -53,7 +53,7 @@ public class TestDemoController extends BaseController {
* 查询测试单表列表
*/
@ApiOperation("查询测试单表列表")
@PreAuthorize("@ss.hasPermi('demo:demo:list')")
@SaCheckPermission("demo:demo:list")
@GetMapping("/list")
public TableDataInfo<TestDemoVo> list(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) {
return iTestDemoService.queryPageList(bo, pageQuery);
@@ -63,7 +63,7 @@ public class TestDemoController extends BaseController {
* 自定义分页查询
*/
@ApiOperation("自定义分页查询")
@PreAuthorize("@ss.hasPermi('demo:demo:list')")
@SaCheckPermission("demo:demo:list")
@GetMapping("/page")
public TableDataInfo<TestDemoVo> page(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) {
return iTestDemoService.customPageList(bo, pageQuery);
@@ -74,13 +74,13 @@ public class TestDemoController extends BaseController {
@ApiImplicitParam(name = "file", value = "导入文件", dataType = "java.io.File", required = true),
})
@Log(title = "测试单表", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('demo:demo:import')")
@SaCheckPermission("demo:demo:import")
@PostMapping("/importData")
public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
ExcelResult<TestDemoImportVo> excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true);
List<TestDemoImportVo> volist = excelResult.getList();
List<TestDemo> list = BeanUtil.copyToList(volist, TestDemo.class);
iTestDemoService.saveAll(list);
iTestDemoService.saveBatch(list);
return R.success(excelResult.getAnalysis());
}
@@ -88,15 +88,15 @@ public class TestDemoController extends BaseController {
* 导出测试单表列表
*/
@ApiOperation("导出测试单表列表")
@PreAuthorize("@ss.hasPermi('demo:demo:export')")
@SaCheckPermission("demo:demo:export")
@Log(title = "测试单表", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(@Validated TestDemoBo bo, HttpServletResponse response) {
List<TestDemoVo> list = iTestDemoService.queryList(bo);
// 测试雪花id导出
// for (TestDemoVo vo : list) {
// vo.setId(1234567891234567893L);
// }
// vo.setId(1234567891234567893L);
// }
ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, response);
}
@@ -104,7 +104,7 @@ public class TestDemoController extends BaseController {
* 获取测试单表详细信息
*/
@ApiOperation("获取测试单表详细信息")
@PreAuthorize("@ss.hasPermi('demo:demo:query')")
@SaCheckPermission("demo:demo:query")
@GetMapping("/{id}")
public R<TestDemoVo> getInfo(@ApiParam("测试ID")
@NotNull(message = "主键不能为空")
@@ -116,7 +116,7 @@ public class TestDemoController extends BaseController {
* 新增测试单表
*/
@ApiOperation("新增测试单表")
@PreAuthorize("@ss.hasPermi('demo:demo:add')")
@SaCheckPermission("demo:demo:add")
@Log(title = "测试单表", businessType = BusinessType.INSERT)
@RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "不允许重复提交")
@PostMapping()
@@ -131,7 +131,7 @@ public class TestDemoController extends BaseController {
* 修改测试单表
*/
@ApiOperation("修改测试单表")
@PreAuthorize("@ss.hasPermi('demo:demo:edit')")
@SaCheckPermission("demo:demo:edit")
@Log(title = "测试单表", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
@@ -143,8 +143,8 @@ public class TestDemoController extends BaseController {
* 删除测试单表
*/
@ApiOperation("删除测试单表")
@PreAuthorize("@ss.hasPermi('demo:demo:remove')")
@Log(title = "测试单表", businessType = BusinessType.DELETE)
@SaCheckPermission("demo:demo:remove")
@Log(title = "测试单表" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@ApiParam("测试ID串")
@NotEmpty(message = "主键不能为空")

View File

@@ -27,22 +27,22 @@ import javax.validation.constraints.NotNull;
@RequestMapping("/demo/i18n")
public class TestI18nController {
/**
* 通过code获取国际化内容
* code为 messages.properties 中的 key
*
* 测试使用 user.register.success
*/
@ApiOperation("通过code获取国际化内容")
@GetMapping()
public R<Void> get(@ApiParam("国际化code") String code) {
return R.success(MessageUtils.message(code));
}
/**
* 通过code获取国际化内容
* code为 messages.properties 中的 key
* <p>
* 测试使用 user.register.success
*/
@ApiOperation("通过code获取国际化内容")
@GetMapping()
public R<Void> get(@ApiParam("国际化code") String code) {
return R.success(MessageUtils.message(code));
}
/**
* Validator 校验国际化
* 不传值 分别查看异常返回
*
* <p>
* 测试使用 not.null
*/
@ApiOperation("Validator 校验国际化")
@@ -54,7 +54,7 @@ public class TestI18nController {
/**
* Bean 校验国际化
* 不传值 分别查看异常返回
*
* <p>
* 测试使用 not.null
*/
@ApiOperation("Bean 校验国际化")

View File

@@ -0,0 +1,81 @@
package com.ruoyi.demo.controller;
import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.SensitiveStrategy;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试数据脱敏控制器
*
* 默认管理员不过滤
* 需自行根据业务重写实现
*
* @see com.ruoyi.common.core.service.SensitiveService
* @author Lion Li
* @version 3.6.0
*/
@Api(value = "测试数据脱敏控制器", tags = {"测试数据脱敏管理"})
@RestController
@RequestMapping("/demo/sensitive")
public class TestSensitiveController extends BaseController {
/**
* 测试数据脱敏
*/
@ApiOperation("查询测试单表列表")
@GetMapping("/test")
public R<TestSensitive> test() {
TestSensitive testSensitive = new TestSensitive()
.setIdCard("210397198608215431")
.setPhone("17640125371")
.setAddress("北京市朝阳区某某四合院1203室")
.setEmail("17640125371@163.com")
.setBankCard("6226456952351452853");
return R.success(testSensitive);
}
@Data
@Accessors(chain = true)
static class TestSensitive {
/**
* 身份证
*/
@Sensitive(strategy = SensitiveStrategy.ID_CARD)
private String idCard;
/**
* 电话
*/
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String phone;
/**
* 地址
*/
@Sensitive(strategy = SensitiveStrategy.ADDRESS)
private String address;
/**
* 邮箱
*/
@Sensitive(strategy = SensitiveStrategy.EMAIL)
private String email;
/**
* 银行卡
*/
@Sensitive(strategy = SensitiveStrategy.BANK_CARD)
private String bankCard;
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.demo.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
@@ -17,7 +18,6 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.*;
@@ -46,7 +46,7 @@ public class TestTreeController extends BaseController {
* 查询测试树表列表
*/
@ApiOperation("查询测试树表列表")
@PreAuthorize("@ss.hasPermi('demo:tree:list')")
@SaCheckPermission("demo:tree:list")
@GetMapping("/list")
public R<List<TestTreeVo>> list(@Validated(QueryGroup.class) TestTreeBo bo) {
List<TestTreeVo> list = iTestTreeService.queryList(bo);
@@ -57,7 +57,7 @@ public class TestTreeController extends BaseController {
* 导出测试树表列表
*/
@ApiOperation("导出测试树表列表")
@PreAuthorize("@ss.hasPermi('demo:tree:export')")
@SaCheckPermission("demo:tree:export")
@Log(title = "测试树表", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public void export(@Validated TestTreeBo bo, HttpServletResponse response) {
@@ -69,7 +69,7 @@ public class TestTreeController extends BaseController {
* 获取测试树表详细信息
*/
@ApiOperation("获取测试树表详细信息")
@PreAuthorize("@ss.hasPermi('demo:tree:query')")
@SaCheckPermission("demo:tree:query")
@GetMapping("/{id}")
public R<TestTreeVo> getInfo(@ApiParam("测试树ID")
@NotNull(message = "主键不能为空")
@@ -81,7 +81,7 @@ public class TestTreeController extends BaseController {
* 新增测试树表
*/
@ApiOperation("新增测试树表")
@PreAuthorize("@ss.hasPermi('demo:tree:add')")
@SaCheckPermission("demo:tree:add")
@Log(title = "测试树表", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
@@ -93,7 +93,7 @@ public class TestTreeController extends BaseController {
* 修改测试树表
*/
@ApiOperation("修改测试树表")
@PreAuthorize("@ss.hasPermi('demo:tree:edit')")
@SaCheckPermission("demo:tree:edit")
@Log(title = "测试树表", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
@@ -105,8 +105,8 @@ public class TestTreeController extends BaseController {
* 删除测试树表
*/
@ApiOperation("删除测试树表")
@PreAuthorize("@ss.hasPermi('demo:tree:remove')")
@Log(title = "测试树表", businessType = BusinessType.DELETE)
@SaCheckPermission("demo:tree:remove")
@Log(title = "测试树表" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@ApiParam("测试树ID串")
@NotEmpty(message = "主键不能为空")

View File

@@ -0,0 +1,83 @@
package com.ruoyi.demo.controller.queue;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.redis.QueueUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 有界队列 演示案例
* <p>
* 轻量级队列 重量级数据量 请使用 MQ
* <p>
* 集群测试通过 同一个数据只会被消费一次 做好事务补偿
* 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条
*
* @author Lion Li
* @version 3.6.0
*/
@Slf4j
@Api(value = "有界队列 演示案例", tags = {"有界队列"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/demo/queue/bounded")
public class BoundedQueueController {
@ApiOperation("添加队列数据")
@GetMapping("/add")
public R<Void> add(@ApiParam("队列名") String queueName,
@ApiParam("容量") int capacity) {
// 用完了一定要销毁 否则会一直存在
boolean b = QueueUtils.destroyBoundedQueueObject(queueName);
log.info("通道: {} , 删除: {}", queueName, b);
// 初始化设置一次即可
if (QueueUtils.trySetBoundedQueueCapacity(queueName, capacity)) {
log.info("通道: {} , 设置容量: {}", queueName, capacity);
} else {
log.info("通道: {} , 设置容量失败", queueName);
return R.error("操作失败");
}
for (int i = 0; i < 11; i++) {
String data = "data-" + i;
boolean flag = QueueUtils.addBoundedQueueObject(queueName, data);
if (flag == false) {
log.info("通道: {} , 发送数据: {} 失败, 通道已满", queueName, data);
} else {
log.info("通道: {} , 发送数据: {}", queueName, data);
}
}
return R.success("操作成功");
}
@ApiOperation("删除队列数据")
@GetMapping("/remove")
public R<Void> remove(@ApiParam("队列名") String queueName) {
String data = "data-" + 5;
if (QueueUtils.removeBoundedQueueObject(queueName, data)) {
log.info("通道: {} , 删除数据: {}", queueName, data);
} else {
return R.error("操作失败");
}
return R.success("操作成功");
}
@ApiOperation("获取队列数据")
@GetMapping("/get")
public R<Void> get(@ApiParam("队列名") String queueName) {
String data;
do {
data = QueueUtils.getBoundedQueueObject(queueName);
log.info("通道: {} , 获取数据: {}", queueName, data);
} while (data != null);
return R.success("操作成功");
}
}

View File

@@ -0,0 +1,79 @@
package com.ruoyi.demo.controller.queue;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.redis.QueueUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
/**
* 延迟队列 演示案例
* <p>
* 轻量级队列 重量级数据量 请使用 MQ
* 例如: 创建订单30分钟后过期处理
* <p>
* 集群测试通过 同一个数据只会被消费一次 做好事务补偿
* 集群测试流程 两台集群分别开启订阅 在其中一台发送数据 观察接收消息的规律
*
* @author Lion Li
* @version 3.6.0
*/
@Slf4j
@Api(value = "延迟队列 演示案例", tags = {"延迟队列"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/demo/queue/delayed")
public class DelayedQueueController {
@ApiOperation("订阅队列")
@GetMapping("/subscribe")
public R<Void> subscribe(@ApiParam("队列名") String queueName) {
log.info("通道: {} 监听中......", queueName);
// 项目初始化设置一次即可
QueueUtils.subscribeBlockingQueue(queueName, (String orderNum) -> {
// 观察接收时间
log.info("通道: {}, 收到数据: {}", queueName, orderNum);
});
return R.success("操作成功");
}
@ApiOperation("添加队列数据")
@GetMapping("/add")
public R<Void> add(@ApiParam("队列名") String queueName,
@ApiParam("订单号") String orderNum,
@ApiParam("延迟时间(秒)") Long time) {
QueueUtils.addDelayedQueueObject(queueName, orderNum, time, TimeUnit.SECONDS);
// 观察发送时间
log.info("通道: {} , 发送数据: {}", queueName, orderNum);
return R.success("操作成功");
}
@ApiOperation("删除队列数据")
@GetMapping("/remove")
public R<Void> remove(@ApiParam("队列名") String queueName,
@ApiParam("订单号") String orderNum) {
if (QueueUtils.removeDelayedQueueObject(queueName, orderNum)) {
log.info("通道: {} , 删除数据: {}", queueName, orderNum);
} else {
return R.error("操作失败");
}
return R.success("操作成功");
}
@ApiOperation("销毁队列")
@GetMapping("/destroy")
public R<Void> destroy(@ApiParam("队列名") String queueName) {
// 用完了一定要销毁 否则会一直存在
QueueUtils.destroyDelayedQueue(queueName);
return R.success("操作成功");
}
}

View File

@@ -0,0 +1,19 @@
package com.ruoyi.demo.controller.queue;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 实体类 注意不允许使用内部类 否则会找不到类
*
* @author Lion Li
* @version 3.6.0
*/
@Data
@Accessors(chain = true)
@NoArgsConstructor
public class PriorityDemo {
private String name;
private Integer orderNum;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.demo.controller.queue;
import java.util.Comparator;
/**
* 比较器 注意不允许使用 内部类或匿名类或lambda表达式 会找不到类
*
* @author Lion Li
* @version 3.6.0
*/
public class PriorityDemoComparator implements Comparator<PriorityDemo> {
@Override
public int compare(PriorityDemo pd1, PriorityDemo pd2) {
return Integer.compare(pd1.getOrderNum(), pd2.getOrderNum());
}
}

View File

@@ -0,0 +1,85 @@
package com.ruoyi.demo.controller.queue;
import cn.hutool.core.util.RandomUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.redis.QueueUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 优先队列 演示案例
* <p>
* 轻量级队列 重量级数据量 请使用 MQ
* <p>
* 集群测试通过 同一个消息只会被消费一次 做好事务补偿
* 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条
*
* @author Lion Li
* @version 3.6.0
*/
@Slf4j
@Api(value = "优先队列 演示案例", tags = {"优先队列"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/demo/queue/priority")
public class PriorityQueueController {
@ApiOperation("添加队列数据")
@GetMapping("/add")
public R<Void> add(@ApiParam("队列名") String queueName) {
// 用完了一定要销毁 否则会一直存在
boolean b = QueueUtils.destroyPriorityQueueObject(queueName);
log.info("通道: {} , 删除: {}", queueName, b);
// 初始化设置一次即可 此处注意 不允许用内部类或匿名类
boolean flag = QueueUtils.trySetPriorityQueueComparator(queueName, new PriorityDemoComparator());
if (flag) {
log.info("通道: {} , 设置比较器成功", queueName);
} else {
log.info("通道: {} , 设置比较器失败", queueName);
return R.error("操作失败");
}
for (int i = 0; i < 10; i++) {
int randomNum = RandomUtil.randomInt(10);
PriorityDemo data = new PriorityDemo().setName("data-" + i).setOrderNum(randomNum);
if (QueueUtils.addPriorityQueueObject(queueName, data)) {
log.info("通道: {} , 发送数据: {}", queueName, data);
} else {
log.info("通道: {} , 发送数据: {}, 发送失败", queueName, data);
}
}
return R.success("操作成功");
}
@ApiOperation("删除队列数据")
@GetMapping("/remove")
public R<Void> remove(@ApiParam("队列名") String queueName,
@ApiParam("对象名") String name,
@ApiParam("排序号") Integer orderNum) {
PriorityDemo data = new PriorityDemo().setName(name).setOrderNum(orderNum);
if (QueueUtils.removePriorityQueueObject(queueName, data)) {
log.info("通道: {} , 删除数据: {}", queueName, data);
} else {
return R.error("操作失败");
}
return R.success("操作成功");
}
@ApiOperation("获取队列数据")
@GetMapping("/get")
public R<Void> get(@ApiParam("队列名") String queueName) {
PriorityDemo data;
do {
data = QueueUtils.getPriorityQueueObject(queueName);
log.info("通道: {} , 获取数据: {}", queueName, data);
} while (data != null);
return R.success("操作成功");
}
}