map = new HashMap<>();
+ map.put("username","15808234569");
+ map.put("apiKey","gaoxingongyuanchengshiju");
+ BuyHouses buyHouses = buyHousesMapper.selectById("3");
+ String s = JSONUtil.toJsonPrettyStr(map);
+ String doEncrypt = Sm2.doEncrypt(s, publicKey);
+ String result2 = HttpRequest.post("http://192.168.0.54:8084/userOpenLogin")
+ .header("Referer","http://192.168.0.54:8084")
+ .header("path","/userOpenLogin")
+ .header("targe","weixin")
+ .header("Authorization","Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJhcHBfdXNlcjo0Mzc4OSIsInJuU3RyIjoiV05XZFFnaHpHYlRRRU5ObVpwbmhaaFp6MmtKaWtSR0MiLCJ1c2VySWQiOjQzNzg5fQ.QCsN3iIFk38dzTvXITGx2wV5c9kdPdvWZs7gjf6dFzc")
+ .header("method","POST")
+ .body(doEncrypt,"application/json")
+ .execute().body();
+ }
+
+ /**
+ * 图片导出
+ *
+ * 1. 创建excel对应的实体对象 参照{@link ImageDemoData}
+ *
+ * 2. 直接写即可
+ */
+ @Test
+ public void imageWrite() throws Exception {
+ String fileName = "E:\\"+ System.currentTimeMillis() + ".xlsx";
+
+ // 这里注意下 所有的图片都会放到内存 暂时没有很好的解法,大量图片的情况下建议 2选1:
+ // 1. 将图片上传到oss 或者其他存储网站: https://www.aliyun.com/product/oss ,然后直接放链接
+ // 2. 使用: https://github.com/coobird/thumbnailator 或者其他工具压缩图片
+ String imagePath = "https://gx.chengdutalent.cn:8010/upload/GXTalents/images/f264ec41dcfb47b9b6ef231441d3123b.png";
+ try {
+ List list = ListUtils.newArrayList();
+ ImageDemoData imageDemoData = new ImageDemoData();
+ list.add(imageDemoData);
+ // 放入五种类型的图片 实际使用只要选一种即可
+// imageDemoData.setByteArray(FileUtils.readFileToByteArray(new File(imagePath)));
+// imageDemoData.setFile(new File(imagePath));
+// imageDemoData.setString(imagePath);
+// imageDemoData.setInputStream(inputStream);
+ imageDemoData.setUrl(new URL(
+ "https://gx.chengdutalent.cn:8010/upload/GXTalents/images/f264ec41dcfb47b9b6ef231441d3123b.png"));
+
+ // 这里演示
+ // 需要额外放入文字
+ // 而且需要放入2个图片
+ // 第一个图片靠左
+ // 第二个靠右 而且要额外的占用他后面的单元格
+ /*WriteCellData writeCellData = new WriteCellData<>();
+ imageDemoData.setWriteCellDataFile(writeCellData);
+ // 这里可以设置为 EMPTY 则代表不需要其他数据了
+ writeCellData.setType(CellDataTypeEnum.STRING);
+ writeCellData.setStringValue("额外的放一些文字");*/
+
+ /*// 可以放入多个图片
+ List imageDataList = new ArrayList<>();
+ ImageData imageData = new ImageData();
+ imageDataList.add(imageData);
+ writeCellData.setImageDataList(imageDataList);
+ // 放入2进制图片
+ imageData.setImage(FileUtils.readFileToByteArray(new File(imagePath)));
+ // 图片类型
+ imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
+ // 上 右 下 左 需要留空
+ // 这个类似于 css 的 margin
+ // 这里实测 不能设置太大 超过单元格原始大小后 打开会提示修复。暂时未找到很好的解法。
+ imageData.setTop(5);
+ imageData.setRight(40);
+ imageData.setBottom(5);
+ imageData.setLeft(5);
+
+ // 放入第二个图片
+ imageData = new ImageData();
+ imageDataList.add(imageData);
+ writeCellData.setImageDataList(imageDataList);
+ imageData.setImage(FileUtils.readFileToByteArray(new File(imagePath)));
+ imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
+ imageData.setTop(5);
+ imageData.setRight(5);
+ imageData.setBottom(5);
+ imageData.setLeft(50);
+ // 设置图片的位置 假设 现在目标 是 覆盖 当前单元格 和当前单元格右边的单元格
+ // 起点相对于当前单元格为0 当然可以不写
+ imageData.setRelativeFirstRowIndex(0);
+ imageData.setRelativeFirstColumnIndex(0);
+ imageData.setRelativeLastRowIndex(0);
+ // 前面3个可以不写 下面这个需要写 也就是 结尾 需要相对当前单元格 往右移动一格
+ // 也就是说 这个图片会覆盖当前单元格和 后面的那一格
+ imageData.setRelativeLastColumnIndex(1);*/
+
+ // 写入数据
+ EasyExcel.write(fileName, ImageDemoData.class).sheet().doWrite(list);
+ }catch (Exception e){
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Test
+ public void test0121123(){
+ HashMap hashMap = new HashMap<>();
+ hashMap.put("id","1");
+ hashMap.put("status","00T");
+ hashMap.put("description","测试");
+ housingConstructionBureauPushDto.send3(hashMap,"http://218.89.220.30:9200/rctopen/api/anju/openBuyHousesCallback");
+ }
+
+ @Test
+ public void test15234523(){
+// providerCustomer.sendDelayMsg("延迟队列测试",3);
+ String msg ="我来了";
+ MessageProperties messageProperties = new MessageProperties();
+ messageProperties.setHeader("x-delay",5000);//延迟5秒被删除
+ Message message = new Message(msg.getBytes(), messageProperties);
+ amqpTemplate.convertAndSend("PLUGIN_DELAY_EXCHANGE","delay","123132");//交换机和路由键必须和配置文件类中保持一致
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ System.out.println("消息发送成功【" + sdf.format(new Date()) + "】");
+// orderService.makeOrder();
+ }
+
+ @Test
+ public void testt12333(){
+ double div = NumberUtil.div(28, 3000);
+ System.out.println("div = " + div);
+ String s = NumberUtil.decimalFormat("#.##%", div);
+ System.out.println("s = " + s);
+ //获取二期认定通过人才数
+ /*List housesReviewList = housesReviewMapper.selectList(new LambdaQueryWrapper<>(HousesReview.class)
+ .eq(HousesReview::getProcessStatus, Constants.SUCCEED));
+ //获取本月复审通过数
+ Date date = DateUtil.date();
+ //获得月份,从0开始计数
+ int month = DateUtil.month(date);
+ housesReviewList.forEach(h ->{
+ int month1 = h.getPassTime().getMonth();
+ System.out.println("month1 = " + month1);
+ String s = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, h.getPassTime());
+ System.out.println("s = " + s);
+ });*/
+// List collect = housesReviewList.stream().filter(h -> h.getPassTime().getMonth() == month).collect(Collectors.toList());
+// System.out.println("collect = " + collect);
+ }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java
index 1396b6d18..ed249987c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java
@@ -30,6 +30,9 @@ public interface CacheNames {
*/
String SYS_DICT = "sys_dict";
+
+ String RSA_SECURITY = "rsa_security";
+
/**
* 用户账户
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/RsaSecurity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/RsaSecurity.java
new file mode 100644
index 000000000..0e33a0e2d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/RsaSecurity.java
@@ -0,0 +1,61 @@
+package com.ruoyi.common.core.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 请求RSA数据加解密对象 rsa_security
+ *
+ * @author ruoyi
+ * @date 2023-05-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("rsa_security")
+public class RsaSecurity extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ *
+ */
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+ /**
+ * 需要加密的接口
+ */
+ private String path;
+ /**
+ * 入参是否解密,默认不解密
+ */
+ private String inDecode;
+ /**
+ * 出参是否加密,默认加密
+ */
+ private String outEncode;
+ /**
+ * 公钥
+ */
+ private String publicKey;
+ /**
+ * 私钥
+ */
+ private String privateKey;
+
+ /**
+ * 请求方式
+ */
+ private String method;
+
+ /**
+ * 接口限制请求
+ */
+ private String restricted;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
index 5eae468a7..21bc4dff4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -19,7 +19,7 @@ public class LoginBody {
/**
* 用户名
*/
- @NotBlank(message = "{user.username.not.blank}",groups = {passwordLogin.class,smgLogin.class,forgetPasswordLogin.class,registerUser.class})
+ @NotBlank(message = "{user.username.not.blank}",groups = {passwordLogin.class,smgLogin.class,forgetPasswordLogin.class,registerUser.class,userOpenLogin.class})
@Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}",groups = {passwordLogin.class,smgLogin.class,forgetPasswordLogin.class,registerUser.class})
private String username;
@@ -43,6 +43,13 @@ public class LoginBody {
private String uuid;
+ /**
+ * 外部用户标识key
+ */
+ @NotBlank(message = "user.id.cannot.be.empty",groups ={userOpenLogin.class})
+ private String apiKey;
+
+
/**
* 账号登录验证
*/
@@ -63,6 +70,8 @@ public class LoginBody {
*/
public interface registerUser {}
+ public interface userOpenLogin {}
+
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
index eb86f2e20..ca9046d02 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -90,6 +90,8 @@ public class LoginUser implements Serializable {
*/
private String username;
+ private String nickName;
+
private String companyId;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index c64f1f8a1..ee90cd3bd 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -99,6 +99,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
return DateFormatUtils.format(now, "yyyyMMdd");
}
+ public static String dateTime(String format) {
+ Date now = new Date();
+ return DateFormatUtils.format(now, format);
+ }
+
/**
* 日期型字符串转化为日期 格式
*/
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StrUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StrUtils.java
index 6327572ea..13a8479d4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StrUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StrUtils.java
@@ -1,5 +1,6 @@
package com.ruoyi.common.utils;
+import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -72,7 +73,7 @@ public class StrUtils {
public static String getComplexRandomString(int length) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- Random random = new Random();
+ SecureRandom random = new SecureRandom();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(62);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MyFileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MyFileUtils.java
index 9a431a2a9..d940f1dcf 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MyFileUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MyFileUtils.java
@@ -99,14 +99,14 @@ public class MyFileUtils extends FileUtils
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");//POST
//防止屏蔽程序抓取而返回403错误
- conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ conn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
int responseCode = conn.getResponseCode();
System.out.println("responseCode = " + responseCode);
- InputStream inputStream = conn.getInputStream();;
- byte[] temp = new byte[inputStream.available()];;
- if (200==responseCode) {
+ InputStream inputStream = conn.getInputStream();
+ byte[] temp = new byte[inputStream.available()];
+ if (responseCode==200) {
if (temp.length==0) {
ClassPathResource classPathResource = new ClassPathResource("/404.jpg");
inputStream = classPathResource.getStream();
@@ -124,6 +124,90 @@ public class MyFileUtils extends FileUtils
e.printStackTrace();
}
}
+ /**
+ * 对中文字符进行UTF-8编码
+ * @param source 要转义的字符串
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ public static String tranformStyle(String source) throws UnsupportedEncodingException
+ {
+ char[] arr = source.toCharArray();
+ StringBuilder sb = new StringBuilder();
+ for(int i = 0; i < arr.length; i++)
+ {
+ char temp = arr[i];
+ if(isChinese(temp))
+ {
+ sb.append(URLEncoder.encode("" + temp, "UTF-8"));
+ continue;
+ }
+ sb.append(arr[i]);
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 获取字符的编码值
+ * @param s
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ public static int getValue(char s) throws UnsupportedEncodingException
+ {
+ String temp = (URLEncoder.encode("" + s, "GBK")).replace("%", "");
+ if(temp.equals(s + ""))
+ {
+ return 0;
+ }
+ char[] arr = temp.toCharArray();
+ int total = 0;
+ for(int i = 0; i < arr.length; i++)
+ {
+ try
+ {
+ int t = Integer.parseInt((arr[i] + ""), 16);
+ total = total * 16 + t;
+ }
+ catch(NumberFormatException e)
+ {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+ return total;
+ }
+
+ /**
+ * 判断是不是中文字符
+ * @param c
+ * @return
+ */
+ public static boolean isChinese(char c)
+ {
+
+ Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
+
+ if(ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
+
+ || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
+
+ || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+
+ || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
+
+ || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
+
+ || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
+ {
+
+ return true;
+
+ }
+
+ return false;
+
+ }
/**
* 删除文件
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/ImageDemoData.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/ImageDemoData.java
new file mode 100644
index 000000000..5554aa95b
--- /dev/null
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/ImageDemoData.java
@@ -0,0 +1,43 @@
+package com.ruoyi.demo.domain;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.converters.string.StringImageConverter;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+
+@Getter
+@Setter
+@EqualsAndHashCode
+@ContentRowHeight(100)
+@ColumnWidth(100 / 8)
+public class ImageDemoData {
+ private File file;
+ private InputStream inputStream;
+ /**
+ * 如果string类型 必须指定转换器,string默认转换成string
+ */
+ @ExcelProperty(converter = StringImageConverter.class)
+ private String string;
+ private byte[] byteArray;
+ /**
+ * 根据url导出
+ *
+ * @since 2.1.1
+ */
+ private URL url;
+
+ /**
+ * 根据文件导出 并设置导出的位置。
+ *
+ * @since 3.0.0-beta1
+ */
+ private WriteCellData writeCellDataFile;
+}
diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml
index edbd25528..ea46dae8e 100644
--- a/ruoyi-generator/pom.xml
+++ b/ruoyi-generator/pom.xml
@@ -28,6 +28,10 @@
com.ruoyi
ruoyi-common
+
+ com.ruoyi
+ ruoyi-rsaencrypt
+
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 77df9fd92..8b47c4bec 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -12,6 +12,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.generator.domain.GenTable;
import com.ruoyi.generator.domain.GenTableColumn;
import com.ruoyi.generator.service.IGenTableService;
+import com.ruoyi.rsaencrypt.annotation.RsaSecurityParameter;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -108,6 +109,7 @@ public class GenController extends BaseController {
@SaCheckPermission("tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE)
@PutMapping
+ @RsaSecurityParameter(inDecode = true)
public R editSave(@Validated @RequestBody GenTable genTable) {
genTableService.validateEdit(genTable);
genTableService.updateGenTable(genTable);
diff --git a/ruoyi-job/src/main/java/com/ruoyi/job/config/XxlJobConfig.java b/ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobConfig.java
similarity index 94%
rename from ruoyi-job/src/main/java/com/ruoyi/job/config/XxlJobConfig.java
rename to ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobConfig.java
index e051ff0d4..19b25179c 100644
--- a/ruoyi-job/src/main/java/com/ruoyi/job/config/XxlJobConfig.java
+++ b/ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobConfig.java
@@ -1,6 +1,5 @@
-package com.ruoyi.job.config;
+package com.ruoyi.mq.config;
-import com.ruoyi.job.config.properties.XxlJobProperties;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-job/src/main/java/com/ruoyi/job/config/properties/XxlJobProperties.java b/ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobProperties.java
similarity index 94%
rename from ruoyi-job/src/main/java/com/ruoyi/job/config/properties/XxlJobProperties.java
rename to ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobProperties.java
index f2c755a15..173d3132f 100644
--- a/ruoyi-job/src/main/java/com/ruoyi/job/config/properties/XxlJobProperties.java
+++ b/ruoyi-job/src/main/java/com/ruoyi/mq/config/XxlJobProperties.java
@@ -1,4 +1,4 @@
-package com.ruoyi.job.config.properties;
+package com.ruoyi.mq.config;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/ruoyi-job/src/main/java/com/ruoyi/job/service/SampleService.java b/ruoyi-job/src/main/java/com/ruoyi/mq/service/SampleService.java
similarity index 99%
rename from ruoyi-job/src/main/java/com/ruoyi/job/service/SampleService.java
rename to ruoyi-job/src/main/java/com/ruoyi/mq/service/SampleService.java
index 4ca170be7..36aa37419 100644
--- a/ruoyi-job/src/main/java/com/ruoyi/job/service/SampleService.java
+++ b/ruoyi-job/src/main/java/com/ruoyi/mq/service/SampleService.java
@@ -1,4 +1,4 @@
-package com.ruoyi.job.service;
+package com.ruoyi.mq.service;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/DelayedRabbitMQConfig.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/DelayedRabbitMQConfig.java
new file mode 100644
index 000000000..78d76638e
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/DelayedRabbitMQConfig.java
@@ -0,0 +1,55 @@
+/*
+package com.ruoyi.mq.config;
+
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.CustomExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class DelayedRabbitMQConfig {
+ */
+/**
+ * 延迟队列名称
+ *//*
+
+ public static final String DELAYED_QUEUE_NAME = "delay.queue.demo.delay.queue";
+ */
+/**
+ * 延迟队列交换机
+ *//*
+
+ public static final String DELAYED_EXCHANGE_NAME = "delay.queue.demo.delay.exchange";
+ */
+/**
+ * 延迟队列路由键
+ *//*
+
+ public static final String DELAYED_ROUTING_KEY = "delay.queue.demo.delay.routingkey";
+
+ // 声明延迟队列
+ @Bean
+ public Queue delayedSmsQueueInit() {
+ return new Queue("sms_delayed_queue",true);
+ }
+
+ // 声明延迟交换机
+ @Bean
+ public CustomExchange delayedExchangeInit() {
+ Map args = new HashMap<>();
+ args.put("x-delayed-type", "direct");
+ return new CustomExchange("delayed_exchange", "x-delayed-message", true, false, args);
+ }
+
+ @Bean
+ public Binding delayedBindingSmsQueue(Queue delayedSmsQueueInit, CustomExchange customExchange) {
+ // 延迟队列绑定延迟交换机并设置RoutingKey为sms
+ return BindingBuilder.bind(delayedSmsQueueInit).to(customExchange).with("sms").noargs();
+ }
+}
+*/
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/PluginDelayRabbitConfig.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/PluginDelayRabbitConfig.java
new file mode 100644
index 000000000..1c839ef9a
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/PluginDelayRabbitConfig.java
@@ -0,0 +1,34 @@
+package com.ruoyi.mq.config;
+
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.CustomExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Configuration
+public class PluginDelayRabbitConfig {
+
+ @Bean("pluginDelayExchange")
+ public CustomExchange pluginDelayExchange() {
+ Map argMap = new HashMap<>();
+ argMap.put("x-delayed-type", "direct");//必须要配置这个类型,可以是direct,topic和fanout
+ //第二个参数必须为x-delayed-message
+ return new CustomExchange("PLUGIN_DELAY_EXCHANGE","x-delayed-message",true, false, argMap);
+ }
+
+ @Bean("pluginDelayQueue")
+ public Queue pluginDelayQueue(){
+ return new Queue("PLUGIN_DELAY_QUEUE");
+ }
+
+ @Bean
+ public Binding pluginDelayBinding(@Qualifier("pluginDelayQueue") Queue queue, @Qualifier("pluginDelayExchange") CustomExchange customExchange){
+ return BindingBuilder.bind(queue).to(customExchange).with("delay").noargs();
+ }
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitConfig.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitConfig.java
new file mode 100644
index 000000000..3ddd22d49
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitConfig.java
@@ -0,0 +1,50 @@
+package com.ruoyi.mq.config;
+
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+/**
+ * @Author : JCccc
+ * @CreateTime : 2019/9/3
+ * @Description :
+ */
+
+@Configuration
+public class RabbitConfig {
+
+ @Bean
+ public RabbitTemplate createRabbitTemplate(ConnectionFactory connectionFactory){
+ RabbitTemplate rabbitTemplate = new RabbitTemplate();
+ rabbitTemplate.setConnectionFactory(connectionFactory);
+ //设置开启Mandatory,才能触发回调函数,无论消息推送结果怎么样都强制调用回调函数
+ rabbitTemplate.setMandatory(true);
+
+ rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
+ @Override
+ public void confirm(CorrelationData correlationData, boolean ack, String cause) {
+ System.out.println("ConfirmCallback: "+"相关数据:"+correlationData);
+ System.out.println("ConfirmCallback: "+"确认情况:"+ack);
+ System.out.println("ConfirmCallback: "+"原因:"+cause);
+ }
+ });
+
+ rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
+ @Override
+ public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
+ System.out.println("ReturnCallback: "+"消息:"+message);
+ System.out.println("ReturnCallback: "+"回应码:"+replyCode);
+ System.out.println("ReturnCallback: "+"回应信息:"+replyText);
+ System.out.println("ReturnCallback: "+"交换机:"+exchange);
+ System.out.println("ReturnCallback: "+"路由键:"+routingKey);
+ }
+ });
+
+ return rabbitTemplate;
+ }
+
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitMQConfiguration.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitMQConfiguration.java
new file mode 100644
index 000000000..b3d868681
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/config/RabbitMQConfiguration.java
@@ -0,0 +1,54 @@
+package com.ruoyi.mq.config;
+
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.FanoutExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author whc
+ * @date 2022/5/23 10:18
+ */
+@Configuration
+public class RabbitMQConfiguration {
+
+ //1.声明注册fanout模式的交换机
+ @Bean
+ public FanoutExchange fanoutExchange() {
+ return new FanoutExchange("fanout_order_exchange", true, false);
+ }
+
+ //2.声明队列,sms.fanout.queue email.fanout.queue msg.fanout.queue
+ @Bean
+ public Queue smsQueue() {
+ return new Queue("sms.fanout.queue", true);
+ }
+
+ @Bean
+ public Queue emailQueue() {
+ return new Queue("email.fanout.queue", true);
+ }
+
+ @Bean
+ public Queue msgQueue() {
+ return new Queue("msg.fanout.queue", true);
+ }
+
+ //3.完成绑定关系(队列与交换机完成绑定关系)
+ @Bean
+ public Binding smsBind() {
+ return BindingBuilder.bind(smsQueue()).to(fanoutExchange());
+ }
+
+ @Bean
+ public Binding emailBind() {
+ return BindingBuilder.bind(emailQueue()).to(fanoutExchange());
+ }
+
+ @Bean
+ public Binding msgBind() {
+ return BindingBuilder.bind(msgQueue()).to(fanoutExchange());
+ }
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Consumer.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Consumer.java
new file mode 100644
index 000000000..81e6d3cb4
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Consumer.java
@@ -0,0 +1,24 @@
+package com.ruoyi.mq.service;
+
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.Date;
+
+
+@Slf4j
+@Component
+public class Consumer {
+
+ @RabbitListener(queues = "sms_delayed_queue")
+ public void receiveD(Message message, Channel channel) throws IOException {
+ String msg = new String(message.getBody());
+ log.info("当前时间:{},延时队列收到消息:{}", new Date().toString(), msg);
+// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+ }
+}
+
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/FanoutEmailConsumer.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/FanoutEmailConsumer.java
new file mode 100644
index 000000000..80c939252
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/FanoutEmailConsumer.java
@@ -0,0 +1,19 @@
+package com.ruoyi.mq.service;
+
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author whc
+ * @date 2022/5/23 18:53
+ */
+@RabbitListener(queues = "email.fanout.queue")
+@Component
+public class FanoutEmailConsumer {
+
+ @RabbitHandler
+ public void messageService(String message) {
+ System.out.println("fanout email ==>" + message);
+ }
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/OrderService.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/OrderService.java
new file mode 100644
index 000000000..195863c77
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/OrderService.java
@@ -0,0 +1,27 @@
+package com.ruoyi.mq.service;
+
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.UUID;
+
+/**
+ * @author whc
+ * @date 2022/5/23 18:50
+ */
+
+@Service
+public class OrderService {
+
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+ public void makeOrder() {
+ String orderId = UUID.randomUUID().toString();
+ System.out.println("订单生成成功:" + orderId);
+ String exchange_name = "fanout_order_exchange";
+ String routeingKey = "";
+ rabbitTemplate.convertAndSend(exchange_name, routeingKey, orderId);
+ }
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/PluginDelayConsumer.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/PluginDelayConsumer.java
new file mode 100644
index 000000000..db9d4e4fe
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/PluginDelayConsumer.java
@@ -0,0 +1,24 @@
+package com.ruoyi.mq.service;
+
+import com.rabbitmq.client.Channel;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class PluginDelayConsumer {
+
+ @RabbitHandler
+ @RabbitListener(queues = "PLUGIN_DELAY_QUEUE")//监听延时队列
+ public void fanoutConsumer(Message msg, Channel channel) throws IOException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ System.out.println("【插件延迟队列】【" + sdf.format(new Date()) + "】收到消息:" + msg);
+// channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+ }
+}
diff --git a/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Produceras.java b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Produceras.java
new file mode 100644
index 000000000..34502cc92
--- /dev/null
+++ b/ruoyi-rabbitmq/src/main/java/com/ruoyi/mq/service/Produceras.java
@@ -0,0 +1,23 @@
+package com.ruoyi.mq.service;
+
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class Produceras {
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+
+ public void sendDelayMsg(String msg, Integer delayTime) {
+ rabbitTemplate.convertAndSend("delayed_exchange", "sms", msg, a -> {
+ a.getMessageProperties().setDelay(delayTime*1000);
+ return a;
+ });
+ }
+}
+
diff --git a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/DecodeRequestBodyAdvice.java b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/DecodeRequestBodyAdvice.java
index 7f17156d2..bf9188a4b 100644
--- a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/DecodeRequestBodyAdvice.java
+++ b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/DecodeRequestBodyAdvice.java
@@ -1,14 +1,10 @@
package com.ruoyi.rsaencrypt.advice;
-import cn.hutool.core.io.FastByteArrayOutputStream;
import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.stream.StreamUtil;
import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.ruoyi.common.utils.StreamUtils;
-import com.ruoyi.rsaencrypt.annotation.RsaSecurityParameter;
+import com.ruoyi.common.core.domain.RsaSecurity;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.rsaencrypt.service.IRsaSecurityService2;
import com.ruoyi.rsaencrypt.utls.RSAUtil;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,10 +26,11 @@ import java.util.List;
* @date 2018/10/29 20:17
*/
@ControllerAdvice
-@RsaSecurityParameter()
+//@RsaSecurityParameter()
public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
private static final Logger logger = LoggerFactory.getLogger(DecodeRequestBodyAdvice.class);
+ private static final IRsaSecurityService2 rsaSecurityService= SpringUtils.getBean(IRsaSecurityService2.class);
@Override
public boolean supports(MethodParameter methodParameter, Type type, Class extends HttpMessageConverter>> aClass) {
@@ -48,7 +45,21 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
@Override
public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter methodParameter, Type type, Class extends HttpMessageConverter>> aClass) throws IOException {
try {
- if (methodParameter.getMethod().isAnnotationPresent(RsaSecurityParameter.class)) {
+ String path = inputMessage.getHeaders().getFirst("path");
+ String method = inputMessage.getHeaders().getFirst("method");
+ if (ObjectUtil.isNotNull(path)) {
+ RsaSecurity info = rsaSecurityService.getInfo(path, StringUtils.toRootUpperCase(method));
+ if (ObjectUtil.isNotNull(info)) {
+ if ("1".equals(info.getRestricted())){
+ throw new ServerException("接口已限制请求");
+ }
+ if ("1".equals(info.getInDecode())) {
+ return new RsaHttpInputMessage(inputMessage, info.getPrivateKey());
+ }
+
+ }
+ }
+ /*if (methodParameter.getMethod().isAnnotationPresent(RsaSecurityParameter.class)) {
//获取注解配置的包含和去除字段
RsaSecurityParameter serializedField = methodParameter.getMethodAnnotation(RsaSecurityParameter.class);
//入参是否需要解密
@@ -56,7 +67,7 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
logger.info("注解RsaSecurityParameter,对方法method :【" + methodParameter.getMethod().getName() + "】返回数据进行解密");
return new RsaHttpInputMessage(inputMessage);
}
- }
+ }*/
return inputMessage;
} catch (Exception e) {
e.printStackTrace();
@@ -75,7 +86,7 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
private InputStream body;
- public RsaHttpInputMessage(HttpInputMessage inputMessage) throws Exception {
+ public RsaHttpInputMessage(HttpInputMessage inputMessage,String privateKey ) throws Exception {
this.headers = inputMessage.getHeaders();
String targe="pc";
List list = headers.get("targe");
@@ -85,7 +96,7 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
targe = "weixin";
}
}
- this.body = IoUtil.toUtf8Stream(easpString(IoUtil.readUtf8(inputMessage.getBody()),targe));
+ this.body = IoUtil.toUtf8Stream(easpString(IoUtil.readUtf8(inputMessage.getBody()),targe,privateKey));
}
@Override
@@ -98,7 +109,7 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
return headers;
}
- public String easpString(String requestData,String targe) throws IOException {
+ public String easpString(String requestData,String targe,String privateKey) throws IOException {
if (requestData != null && !requestData.equals("")) {
if (StringUtils.isEmpty(requestData)) {
throw new RuntimeException("参数【requestData】缺失异常!");
@@ -107,11 +118,11 @@ public class DecodeRequestBodyAdvice implements RequestBodyAdvice {
try {
logger.info("解密密文:"+requestData);
if ("weixin".equals(targe)){
- content = RSAUtil.privateKeyDecryptStr(requestData);
+ content = RSAUtil.privateKeyDecryptStr(requestData,privateKey);
}else {
String data1 = requestData.substring(1);
String substring = requestData.substring(1, data1.length());
- content = RSAUtil.privateKeyDecryptStr(substring);
+ content = RSAUtil.privateKeyDecryptStr(substring,privateKey);
}
logger.info("解密明文:"+content);
} catch (Exception e) {
diff --git a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/EncodeResponseBodyAdvice.java b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/EncodeResponseBodyAdvice.java
index 08f42136b..6ec5bbc13 100644
--- a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/EncodeResponseBodyAdvice.java
+++ b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/advice/EncodeResponseBodyAdvice.java
@@ -1,14 +1,10 @@
package com.ruoyi.rsaencrypt.advice;
-import cn.hutool.core.codec.Base64;
-import cn.hutool.core.text.UnicodeUtil;
-import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.RsaSecurity;
import com.ruoyi.common.utils.JsonUtils;
-import com.ruoyi.rsaencrypt.annotation.RsaSecurityParameter;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.rsaencrypt.service.IRsaSecurityService2;
import com.ruoyi.rsaencrypt.utls.RSAUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -19,8 +15,7 @@ import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
-import java.net.URLEncoder;
-import java.util.HashMap;
+import java.rmi.ServerException;
/**
* @author monkey
@@ -28,9 +23,11 @@ import java.util.HashMap;
* @date 2018/10/25 20:17
*/
@ControllerAdvice
-@RsaSecurityParameter()
+//@RsaSecurityParameter()
public class EncodeResponseBodyAdvice implements ResponseBodyAdvice {
private final static Logger logger = LoggerFactory.getLogger(EncodeResponseBodyAdvice.class);
+ private static final IRsaSecurityService2 rsaSecurityService=SpringUtils.getBean(IRsaSecurityService2.class);
+
@Override
public boolean supports(MethodParameter methodParameter, Class aClass) {
@@ -40,12 +37,26 @@ public class EncodeResponseBodyAdvice implements ResponseBodyAdvice {
@Override
public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
// 此处要用反射将字段中的注解解析出来
- if (methodParameter.getMethod().isAnnotationPresent(RsaSecurityParameter.class)) {
+ String method = serverHttpRequest.getMethod().name();
+ String path = serverHttpRequest.getURI().getPath();
+ RsaSecurity info = rsaSecurityService.getInfo(path,method);
+ if (ObjectUtil.isNotNull(info)) {
+ if ("1".equals(info.getRestricted())){
+ return R.fail("接口已限制请求");
+ }
+ if ("1".equals(info.getOutEncode())) {
+ serverHttpResponse.getHeaders().add("isRsaencrypt","true");
+ return encodeRsa(methodParameter, body, info.getPublicKey());
+ }
+ }
+ serverHttpResponse.getHeaders().add("isRsaencrypt","false");
+ return body;
+ /*if (methodParameter.getMethod().isAnnotationPresent(RsaSecurityParameter.class)) {
//获取注解配置的包含和去除字段
RsaSecurityParameter serializedField = methodParameter.getMethodAnnotation(RsaSecurityParameter.class);
//出参是否需要加密
if (serializedField.outEncode()) {
- return encodeRsa(methodParameter, body);
+ return encodeRsa(methodParameter, body,serializedField.outPublicKey());
}
}
JSONObject jsonObject = JSONUtil.parseObj(body);
@@ -55,10 +66,10 @@ public class EncodeResponseBodyAdvice implements ResponseBodyAdvice {
String num3 ="403";
if (ObjectUtil.isNotNull(code)){
if (num.equals(code.toString()) || num2.equals(code.toString()) || num3.equals(code.toString())){
- return encodeRsa(methodParameter, body);
+ return encodeRsa(methodParameter, body,"");
}
}
- return body;
+ return body;*/
}
/**
@@ -68,11 +79,11 @@ public class EncodeResponseBodyAdvice implements ResponseBodyAdvice {
* @param body
* @return
*/
- private Object encodeRsa(MethodParameter methodParameter, Object body) {
+ private Object encodeRsa(MethodParameter methodParameter, Object body,String outPublicKey) {
try {
String result = JsonUtils.toJsonString(body);
logger.info("对返回数据 :【" + result + "】进行加密");
- String s = RSAUtil.publicKeyEncryptBase64(result);
+ String s = RSAUtil.publicKeyEncryptBase64(result,outPublicKey);
logger.info("加密之后密文:"+s);
return s;
} catch (Exception e) {
diff --git a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/annotation/RsaSecurityParameter.java b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/annotation/RsaSecurityParameter.java
index 880f5b15e..e23eb5781 100644
--- a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/annotation/RsaSecurityParameter.java
+++ b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/annotation/RsaSecurityParameter.java
@@ -29,5 +29,12 @@ public @interface RsaSecurityParameter {
boolean outEncode() default true;
+ /**
+ * 出参公钥
+ * @return
+ */
+ String outPublicKey() default "" ;
+
+
}
diff --git a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/service/IRsaSecurityService2.java b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/service/IRsaSecurityService2.java
new file mode 100644
index 000000000..067d4bdbb
--- /dev/null
+++ b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/service/IRsaSecurityService2.java
@@ -0,0 +1,8 @@
+package com.ruoyi.rsaencrypt.service;
+
+
+import com.ruoyi.common.core.domain.RsaSecurity;
+
+public interface IRsaSecurityService2 {
+ RsaSecurity getInfo(String path,String method);
+}
diff --git a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/utls/RSAUtil.java b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/utls/RSAUtil.java
index 4c445a7d0..18bb69107 100644
--- a/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/utls/RSAUtil.java
+++ b/ruoyi-rsaencrypt/src/main/java/com/ruoyi/rsaencrypt/utls/RSAUtil.java
@@ -1,5 +1,7 @@
package com.ruoyi.rsaencrypt.utls;
+import cn.hutool.core.util.ObjectUtil;
import com.antherd.smcrypto.sm2.Sm2;
+import com.ruoyi.rsaencrypt.annotation.RsaSecurityParameter;
/**
* RSA加解密工具类
@@ -10,18 +12,23 @@ public class RSAUtil {
public static final String PRIVATE_KEY = "9cefdfcb925a32e10206d3a693ba204632c59e5f9a171faebb814885191dd35e";
public static final String VUE_PUBLIC_KEY = "048af4184056315a9ecfcc14280b32504ba194ec8dd0e06b298c4a1aa557e7e9a5d15e1293392f741f7fb31a82e55785b7f1880d61b57def1e38e3f06435fb0502";
- public static final String PUBLIC_KEY1 = "0435661bb2d13bba88f47af0bbe243fcded8f27ac298932661787f88ea283c2b31fe427e1aa8410826a963e9114fe5ffab4ad278aeeb7f1f161e735d1f50570e78";
/**
* 公钥加密
*/
- public static String publicKeyEncryptBase64(String data){
+ public static String publicKeyEncryptBase64(String data,String outPublicKey){
+ if (ObjectUtil.isNotEmpty(outPublicKey)){
+ return Sm2.doEncrypt(data, outPublicKey);
+ }
return Sm2.doEncrypt(data, VUE_PUBLIC_KEY);
}
/**
* 私钥解密
*/
- public static String privateKeyDecryptStr(String data){
+ public static String privateKeyDecryptStr(String data,String privateKey){
+ if (ObjectUtil.isNotEmpty(privateKey)){
+ return Sm2.doDecrypt(data, privateKey);
+ }
return Sm2.doDecrypt(data,PRIVATE_KEY);
}
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHouses.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHouses.java
index fcc027d57..6f02b3aec 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHouses.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHouses.java
@@ -172,5 +172,10 @@ public class BuyHouses extends BaseEntity {
@TableField(exist = false)
private List buyHousesMemberList=new ArrayList<>();
+ private String apiKey;
+
+ @TableField(exist = false)
+ private String reply;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHousesReviewMember.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHousesReviewMember.java
index daab10866..2ed907837 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHousesReviewMember.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BuyHousesReviewMember.java
@@ -58,4 +58,6 @@ public class BuyHousesReviewMember extends BaseEntity {
*/
private String name;
+ private Integer number;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/HousesReview.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/HousesReview.java
index 62c2fb8cc..fbcf0a563 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/HousesReview.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/HousesReview.java
@@ -114,7 +114,7 @@ public class HousesReview extends BaseEntity {
*/
private String companyAddress;
/**
- * 来源
+ * 来源区级:1,市级:2
*/
private String sourceBy;
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/MaterialProof.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/MaterialProof.java
index 2d0324626..6bf728508 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/MaterialProof.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/MaterialProof.java
@@ -62,5 +62,6 @@ public class MaterialProof extends BaseEntity {
private String processKey;
+ private Integer number;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/User.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/User.java
index 69b542cfb..4297da45a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/User.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/User.java
@@ -96,4 +96,6 @@ public class User extends BaseEntity {
private String companyId;
+ private String apiKey;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesBo.java
index dea08bc26..ec08170b1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesBo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesBo.java
@@ -64,7 +64,7 @@ public class BuyHousesBo extends BaseEntity {
/**
*
*/
- @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date createTime;
/**
@@ -88,13 +88,13 @@ public class BuyHousesBo extends BaseEntity {
/**
* 身份证正面
*/
- @NotBlank(message = "身份证正面不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "身份证正面不能为空", groups = { AddGroup.class, EditGroup.class })
private String frontUrl;
/**
* 公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @NotBlank(message = "公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
private String gyStatus;
/**
@@ -106,7 +106,7 @@ public class BuyHousesBo extends BaseEntity {
/**
* 户口簿主页
*/
- @NotBlank(message = "户口簿主页不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "户口簿主页不能为空", groups = { AddGroup.class, EditGroup.class })
private String homepageUrl;
/**
@@ -148,13 +148,13 @@ public class BuyHousesBo extends BaseEntity {
/**
* 区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @NotBlank(message = "区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
private String qyStatus;
/**
* 身份证背面
*/
- @NotBlank(message = "身份证背面不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "身份证背面不能为空", groups = { AddGroup.class, EditGroup.class })
private String reverseUrl;
/**
@@ -166,7 +166,7 @@ public class BuyHousesBo extends BaseEntity {
/**
* 社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @NotBlank(message = "社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过不能为空", groups = { AddGroup.class, EditGroup.class })
private String shStatus;
/**
@@ -184,7 +184,7 @@ public class BuyHousesBo extends BaseEntity {
/**
* 状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过
*/
- @NotBlank(message = "状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
@@ -208,13 +208,13 @@ public class BuyHousesBo extends BaseEntity {
/**
*
*/
- @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date passTime;
/**
*人才影像卡
*/
- @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private String pictureInformationUrl;
/**
@@ -244,4 +244,6 @@ public class BuyHousesBo extends BaseEntity {
@TableField(exist = false)
private Long[] ids;
+ private String apiKey;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesReviewMemberBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesReviewMemberBo.java
index 883435198..7458cb625 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesReviewMemberBo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/BuyHousesReviewMemberBo.java
@@ -74,5 +74,6 @@ public class BuyHousesReviewMemberBo extends BaseEntity {
@NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
+ private Integer number;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/HousesReviewBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/HousesReviewBo.java
index d444022bd..79be9ff2c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/HousesReviewBo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/HousesReviewBo.java
@@ -109,7 +109,7 @@ public class HousesReviewBo extends BaseEntity {
/**
* 状态
*/
- @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
@@ -133,7 +133,7 @@ public class HousesReviewBo extends BaseEntity {
/**
* 单位类型
*/
- @NotBlank(message = "单位类型不能为空", groups = { AddGroup.class, EditGroup.class })
+// @NotBlank(message = "单位类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String companyType;
/**
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/MaterialProofBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/MaterialProofBo.java
index 70aba4a4a..75844645c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/MaterialProofBo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/MaterialProofBo.java
@@ -83,4 +83,9 @@ public class MaterialProofBo extends BaseEntity {
private String materialName;
+ /**
+ * 次数
+ */
+ private Integer number;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/RsaSecurityBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/RsaSecurityBo.java
new file mode 100644
index 000000000..d9d2dae42
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/RsaSecurityBo.java
@@ -0,0 +1,68 @@
+package com.ruoyi.system.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 请求RSA数据加解密业务对象 rsa_security
+ *
+ * @author ruoyi
+ * @date 2023-05-17
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class RsaSecurityBo extends BaseEntity {
+
+ /**
+ *
+ */
+ @NotNull(message = "不能为空", groups = { EditGroup.class })
+ private Long id;
+ /**
+ * 需要加密的接口
+ */
+ @NotBlank(message = "需要加密的接口不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String path;
+
+ /**
+ * 入参是否解密,默认不解密
+ */
+ @NotNull(message = "入参是否解密,默认不解密不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String inDecode;
+
+ /**
+ * 出参是否加密,默认加密
+ */
+ @NotNull(message = "出参是否加密,默认加密不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String outEncode;
+
+ /**
+ * 公钥
+ */
+ private String publicKey;
+
+ /**
+ * 私钥
+ */
+ private String privateKey;
+
+ /**
+ * 请求方式
+ */
+ private String method;
+
+ /**
+ * 接口限制请求
+ */
+ private String restricted;
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesReviewMemberVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesReviewMemberVo.java
index c3e1e395c..b51954716 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesReviewMemberVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesReviewMemberVo.java
@@ -71,5 +71,6 @@ public class BuyHousesReviewMemberVo {
@ExcelProperty(value = "姓名")
private String name;
+ private Integer number;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesVo.java
index 2030d9b79..234aba0f8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/BuyHousesVo.java
@@ -2,11 +2,18 @@ package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.converters.date.DateStringConverter;
+import com.alibaba.excel.converters.url.UrlImageConverter;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.system.domain.BuyHousesMember;
import com.ruoyi.system.domain.MaterialProof;
import lombok.Data;
+import java.net.URL;
import java.util.Date;
import java.util.List;
@@ -26,25 +33,31 @@ public class BuyHousesVo {
/**
*
*/
- @ExcelProperty(value = "")
+// @ExcelProperty(value = "")
private Long id;
+ /**
+ * 姓名
+ */
+ @ExcelProperty(value = "姓名")
+ private String userName;
+
/**
* 户口簿内页/护照内页
*/
- @ExcelProperty(value = "户口簿内页/护照内页")
+// @ExcelProperty(value = "户口簿内页/护照内页")
private String insidepageUrl;
/**
* 身份证/护照
*/
- @ExcelProperty(value = "身份证/护照")
+ @ExcelProperty(value = "证件号码")
private String cardId;
/**
* 承诺书
*/
- @ExcelProperty(value = "承诺书")
+// @ExcelProperty(value = "承诺书")
private String commitmentUrl;
/**
@@ -59,22 +72,19 @@ public class BuyHousesVo {
@ExcelProperty(value = "工作单位")
private String companyName;
- /**
- *
- */
- @ExcelProperty(value = "")
- private Date createTime;
+
/**
* 申明书
*/
- @ExcelProperty(value = "申明书")
+// @ExcelProperty(value = "申明书")
private String declarationUrl;
/**
* 企业所在地 1.新经济活力区 2.交子公园金融商务区 3.高新西区 4.生物城
*/
- @ExcelProperty(value = "企业所在地 1.新经济活力区 2.交子公园金融商务区 3.高新西区 4.生物城")
+ @ExcelProperty(value = "企业所在地",converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "company_address_area")
private String district;
/**
@@ -86,49 +96,50 @@ public class BuyHousesVo {
/**
* 身份证正面
*/
- @ExcelProperty(value = "身份证正面")
+// @ExcelProperty(value = "身份证正面")
private String frontUrl;
/**
* 公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @ExcelProperty(value = "公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过")
+// @ExcelProperty(value = "公园城市局审核状态 1.待审核 2.退件 3.不通过 4.通过")
private String gyStatus;
/**
* 房屋记录
*/
- @ExcelProperty(value = "房屋记录")
+// @ExcelProperty(value = "房屋记录")
private String homeRecordUrl;
/**
* 户口簿主页
*/
- @ExcelProperty(value = "户口簿主页")
+// @ExcelProperty(value = "户口簿主页")
private String homepageUrl;
/**
* 劳动合同
*/
- @ExcelProperty(value = "劳动合同")
+// @ExcelProperty(value = "劳动合同")
private String laborContractUrl;
/**
* 企业营业执照
*/
- @ExcelProperty(value = "企业营业执照")
+// @ExcelProperty(value = "企业营业执照")
private String licenseUrl;
/**
* 婚姻状况 1.未婚 2.已婚 3.离异
*/
- @ExcelProperty(value = "婚姻状况 1.未婚 2.已婚 3.离异")
+ @ExcelProperty(value = "婚姻状况",converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "marital_status")
private String maritalStatus;
/**
* 婚姻证明材料
*/
- @ExcelProperty(value = "婚姻证明材料")
+// @ExcelProperty(value = "婚姻证明材料")
private String maritalUrl;
/**
@@ -146,13 +157,13 @@ public class BuyHousesVo {
/**
* 区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @ExcelProperty(value = "区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过")
+// @ExcelProperty(value = "区域部门审核状态 1.待审核 2.退件 3.不通过 4.通过")
private String qyStatus;
/**
* 身份证背面
*/
- @ExcelProperty(value = "身份证背面")
+// @ExcelProperty(value = "身份证背面")
private String reverseUrl;
/**
@@ -164,7 +175,7 @@ public class BuyHousesVo {
/**
* 社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过
*/
- @ExcelProperty(value = "社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过")
+// @ExcelProperty(value = "社会事业局审核状态 1.待审核 2.退件 3.不通过 4.通过")
private String shStatus;
/**
@@ -176,49 +187,52 @@ public class BuyHousesVo {
/**
* 社保证明
*/
- @ExcelProperty(value = "社保证明")
+// @ExcelProperty(value = "社保证明")
private String socialSecurityUrl;
/**
* 状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过
*/
- @ExcelProperty(value = "状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过")
+// @ExcelProperty(value = "状态 1.待提交 2.受理中 3.受理退件 4.受理驳回 5.初审中 6初审不通过 7.初审退件 8.审定中 9.审定不通过 10.审定通过")
private String status;
/**
* 类型 A B C D
*/
- @ExcelProperty(value = "类型 A B C D")
+ @ExcelProperty(value = "类型")
private String type;
/**
* 用户id
*/
- @ExcelProperty(value = "用户id")
+// @ExcelProperty(value = "用户id")
private Long userId;
- /**
- * 姓名
- */
- @ExcelProperty(value = "姓名")
- private String userName;
-
/**
*
*/
- @ExcelProperty(value = "审核通过时间")
+ @ExcelProperty(value = "创建时间",converter = DateStringConverter.class)
+ private Date createTime;
+
+ @ExcelProperty(value = "修改时间",converter = DateStringConverter.class)
+ private Date updateTime;
+
+ /**
+ *
+ */
+ @ExcelProperty(value = "审核通过时间",converter = DateStringConverter.class)
private Date passTime;
/**
*
*/
- @ExcelProperty(value = "人才影像卡")
+// @ExcelProperty(value = "人才影像卡")
private String pictureInformationUrl;
/**
*
*/
- @ExcelProperty(value = "")
+// @ExcelProperty(value = "")
private String workAddress;
private String processKey;
@@ -233,8 +247,9 @@ public class BuyHousesVo {
@TableField(exist = false)
private List materialProofList;
- private Date updateTime;
private String companyId;
+ private String apiKey;
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/HousesReviewVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/HousesReviewVo.java
index 652cc3035..00dc32624 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/HousesReviewVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/HousesReviewVo.java
@@ -2,10 +2,13 @@ package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.converters.date.DateDateConverter;
+import com.alibaba.excel.converters.date.DateStringConverter;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.common.utils.MySerializerUtils;
import com.ruoyi.system.domain.BuyHousesReviewMember;
import lombok.Data;
@@ -39,13 +42,12 @@ public class HousesReviewVo implements Serializable {
*/
@ExcelProperty(value = "证件类型")
@NotNull(message = "证件类型不可为空")
- @ExcelDictFormat(dictType = "card_type")
private String cardType;
/**
* 身份证号码
*/
- @ExcelProperty(value = "身份证号码")
+ @ExcelProperty(value = "证件号码")
private String card;
/**
@@ -112,7 +114,7 @@ public class HousesReviewVo implements Serializable {
/**
* 状态
*/
- @ExcelProperty(value = "状态")
+// @ExcelProperty(value = "状态")
private String status;
/**
@@ -124,19 +126,22 @@ public class HousesReviewVo implements Serializable {
/**
* 国籍
*/
-// @ExcelProperty(value = "国籍")
+ @ExcelProperty(value = "国籍", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "nationality_type")
private String nationality;
/**
* 婚姻状况
*/
-// @ExcelProperty(value = "婚姻状况")
+ @ExcelProperty(value = "婚姻状况",converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "marital_status")
private String maritalStatus;
/**
* 单位类型
*/
-// @ExcelProperty(value = "单位类型")
+ @ExcelProperty(value = "单位类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "company_type")
private String companyType;
/**
@@ -148,7 +153,8 @@ public class HousesReviewVo implements Serializable {
/**
* 人才类型
*/
- @ExcelProperty(value = "人才类型")
+ @ExcelProperty(value = "人才类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "talents_type")
private String talentsType;
/**
@@ -166,7 +172,8 @@ public class HousesReviewVo implements Serializable {
/**
* 来源
*/
-// @ExcelProperty(value = "来源")
+ @ExcelProperty(value = "来源", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "source_by")
private String sourceBy;
/**
@@ -192,7 +199,8 @@ public class HousesReviewVo implements Serializable {
/**
* 审核通过时间
*/
- @ExcelProperty(value = "审核通过时间")
+ @ExcelProperty(value = "审核通过时间",converter = DateStringConverter.class)
+ @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date passTime;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MaterialProofVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MaterialProofVo.java
index e581c90bb..dcf4701af 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MaterialProofVo.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MaterialProofVo.java
@@ -81,5 +81,6 @@ public class MaterialProofVo {
private String materialName;
+ private Integer number;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RsaSecurityVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RsaSecurityVo.java
new file mode 100644
index 000000000..1e4a8bdb7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RsaSecurityVo.java
@@ -0,0 +1,71 @@
+package com.ruoyi.system.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 lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 请求RSA数据加解密视图对象 rsa_security
+ *
+ * @author ruoyi
+ * @date 2023-05-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class RsaSecurityVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 需要加密的接口
+ */
+ @ExcelProperty(value = "需要加密的接口")
+ private String path;
+
+ /**
+ * 入参是否解密,默认不解密
+ */
+ @ExcelProperty(value = "入参是否解密,默认不解密", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_yes_no")
+ private String inDecode;
+
+ /**
+ * 出参是否加密,默认加密
+ */
+ @ExcelProperty(value = "出参是否加密,默认加密")
+ private String outEncode;
+
+ /**
+ * 公钥
+ */
+ @ExcelProperty(value = "公钥")
+ private String publicKey;
+
+ /**
+ * 私钥
+ */
+ @ExcelProperty(value = "私钥")
+ private String privateKey;
+
+ /**
+ * 请求方式
+ */
+ private String method;
+
+ /**
+ * 接口限制请求
+ */
+ private String restricted;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BuyHousesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BuyHousesMapper.java
index f607d7067..f4744a018 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BuyHousesMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BuyHousesMapper.java
@@ -4,6 +4,9 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.system.domain.BuyHouses;
import com.ruoyi.system.domain.vo.BuyHousesVo;
+import java.util.List;
+import java.util.Map;
+
/**
* 【请填写功能名称】Mapper接口
*
@@ -12,4 +15,13 @@ import com.ruoyi.system.domain.vo.BuyHousesVo;
*/
public interface BuyHousesMapper extends BaseMapperPlus {
+ List