diff --git a/platform-boot-started-costManagement/src/main/java/tech/abc/platform/costManagement/mapper/CostItemDetailMapper.xml b/platform-boot-started-costManagement/src/main/java/tech/abc/platform/costManagement/mapper/CostItemDetailMapper.xml
index 1a2de65..734c741 100644
--- a/platform-boot-started-costManagement/src/main/java/tech/abc/platform/costManagement/mapper/CostItemDetailMapper.xml
+++ b/platform-boot-started-costManagement/src/main/java/tech/abc/platform/costManagement/mapper/CostItemDetailMapper.xml
@@ -86,7 +86,7 @@
SELECT
- ,'供应商产品库' as productType,(select description from pmg_supplier_product_model where id=model_id )as ModelDescription
+ ,'供应商产品库' as productType,(select description from pmg_supplier_product_model where id=model_id )as productSpecifications
FROM pmg_supplier_products
@@ -96,7 +96,7 @@
SELECT
- ,'公司产品库' as productType,(select description from pmg_company_product_model where id=model_id )as ModelDescription
+ ,'公司产品库' as productType,(select description from pmg_company_product_model where id=model_id )as productSpecifications
FROM pmg_company_products
@@ -106,7 +106,7 @@
SELECT
- ,'个人产品库' as productType,(select description from pmg_person_product_model where id=model_id )as ModelDescription
+ ,'个人产品库' as productType,(select description from pmg_person_product_model where id=model_id )as productSpecifications
FROM pmg_person_products
diff --git a/platform-boot-started-productManagement/pom.xml b/platform-boot-started-productManagement/pom.xml
index a96b691..dbac8c0 100644
--- a/platform-boot-started-productManagement/pom.xml
+++ b/platform-boot-started-productManagement/pom.xml
@@ -19,7 +19,10 @@
tech.abc
platform-common
-
+
+ tech.abc
+ platform-boot-starter-elasticsearch
+
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/CompanyProductsController.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/CompanyProductsController.java
index 717880e..a782cce 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/CompanyProductsController.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/CompanyProductsController.java
@@ -197,7 +197,7 @@ public class CompanyProductsController extends BaseController {
CompanyProductsVO vo = convert2VO(x);
if(StringUtils.isNotEmpty(vo.getModelId())){
String description = companyProductModelService.getById(vo.getModelId()).getDescription();
- vo.setModelDescription(description);
+ vo.setProductSpecifications(description);
}
voList.add(vo);
});
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/PersonProductsController.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/PersonProductsController.java
index e84840f..43c06be 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/PersonProductsController.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/PersonProductsController.java
@@ -199,7 +199,7 @@ public class PersonProductsController extends BaseController {
//获取型号描述信息
if(StringUtils.isNotEmpty(modelId)){
String description = personProductModelService.getById(modelId).getDescription();
- vo.setModelDescription(description);
+ vo.setProductSpecifications(description);
}
voList.add(vo);
});
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/SupplierProductsController.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/SupplierProductsController.java
index ffcae02..6008e5e 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/SupplierProductsController.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/controller/SupplierProductsController.java
@@ -199,7 +199,7 @@ public class SupplierProductsController extends BaseController {
//获取型号描述信息
if(StringUtils.isNotEmpty(modelId)){
String description = supplierProductModelService.getById(modelId).getDescription();
- vo.setModelDescription(description);
+ vo.setProductSpecifications(description);
}
voList.add(vo);
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProductModel.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProductModel.java
index 3e2cf6d..66dec22 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProductModel.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProductModel.java
@@ -21,7 +21,7 @@ import lombok.experimental.Accessors;
public class CompanyProductModel extends BaseEntity {
/**
- * 产品描述
+ * 产品规格
*/
@TableField("description")
private String description;
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProducts.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProducts.java
index 438a461..7f6615b 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProducts.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/CompanyProducts.java
@@ -26,12 +26,16 @@ public class CompanyProducts extends BaseEntity {
*/
@TableField("supplier_information_id")
private String supplierInformationId;
-
/**
* 公司产品型号id
*/
@TableField("model_id")
private String modelId;
+ /**
+ * 公司产品规格
+ */
+ @TableField("product_specifications")
+ private String productSpecifications;
/**
* 供应商产品id
*/
@@ -67,6 +71,38 @@ public class CompanyProducts extends BaseEntity {
*/
@TableField("remarks")
private String remarks;
+ /**
+ * 产品图片
+ */
+ @TableField("image")
+ private String image;
+ /**
+ * 产品品牌
+ */
+ @TableField("brand")
+ private String brand;
+
+ /**
+ * 产品单位*/
+ @TableField("unit")
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ @TableField("ex_tax_price")
+ private BigDecimal exTaxPrice;
+
+ /**
+ * 税率
+ */
+ @TableField("taxrate")
+ private BigDecimal taxrate;
+ /**
+ * 分类id
+ */
+ @TableField("category_id")
+ private String categoryId;
/********非库表存储属性*****/
}
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/PersonProducts.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/PersonProducts.java
index 11e9539..97c51ed 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/PersonProducts.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/PersonProducts.java
@@ -20,12 +20,16 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@TableName("pmg_person_products")
public class PersonProducts extends BaseEntity {
-
/**
* 个人产品型号id
*/
@TableField("model_id")
private String modelId;
+ /**
+ * 个人产品规格
+ */
+ @TableField("product_specifications")
+ private String productSpecifications;
/**
* 供应商id
@@ -68,6 +72,38 @@ public class PersonProducts extends BaseEntity {
*/
@TableField("supplier_products_id")
private String supplierProductsId;
+ /**
+ * 产品图片
+ */
+ @TableField("image")
+ private String image;
+ /**
+ * 产品品牌
+ */
+ @TableField("brand")
+ private String brand;
+
+ /**
+ * 产品单位*/
+ @TableField("unit")
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ @TableField("ex_tax_price")
+ private BigDecimal exTaxPrice;
+
+ /**
+ * 税率
+ */
+ @TableField("taxrate")
+ private BigDecimal taxrate;
+ /**
+ * 分类id
+ */
+ @TableField("category_id")
+ private String categoryId;
/********非库表存储属性*****/
}
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/SupplierProducts.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/SupplierProducts.java
index 92de3ae..1e1409a 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/SupplierProducts.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/entity/SupplierProducts.java
@@ -33,6 +33,12 @@ public class SupplierProducts extends BaseEntity {
@TableField("model_id")
private String modelId;
+ /**
+ * 个人产品规格
+ */
+ @TableField("product_specifications")
+ private String productSpecifications;
+
/**
* 产品名称
*/
@@ -62,6 +68,38 @@ public class SupplierProducts extends BaseEntity {
*/
@TableField("remarks")
private String remarks;
+ /**
+ * 产品图片
+ */
+ @TableField("image")
+ private String image;
+ /**
+ * 产品品牌
+ */
+ @TableField("brand")
+ private String brand;
+
+ /**
+ * 产品单位*/
+ @TableField("unit")
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ @TableField("ex_tax_price")
+ private BigDecimal exTaxPrice;
+
+ /**
+ * 税率
+ */
+ @TableField("taxrate")
+ private BigDecimal taxrate;
+ /**
+ * 分类id
+ */
+ @TableField("category_id")
+ private String categoryId;
/********非库表存储属性*****/
}
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/service/impl/SupplierProductsServiceImpl.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/service/impl/SupplierProductsServiceImpl.java
index 54bb54c..5cf7800 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/service/impl/SupplierProductsServiceImpl.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/service/impl/SupplierProductsServiceImpl.java
@@ -58,17 +58,6 @@ public class SupplierProductsServiceImpl extends BaseServiceImpl modelUpdateWrapper = new LambdaUpdateWrapper<>(); // 临时数据标记
- modelUpdateWrapper.eq(SupplierProductModel::getId, modelId);
- supplierProductModelMapper.delete(modelUpdateWrapper);
- // 更新型号规格参数的is_temporary标记为临时数据
- LambdaUpdateWrapper detailsUpdateWrapper = new LambdaUpdateWrapper<>();
- detailsUpdateWrapper.eq(SupplierProductModelDetails::getModelId, modelId);
- supplierProductModelDetailsMapper.delete(detailsUpdateWrapper);
- }
}
@Override
public void beforeAdd(SupplierProducts entity) {
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductModelVO.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductModelVO.java
index a79c862..1701e8a 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductModelVO.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductModelVO.java
@@ -20,9 +20,9 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class CompanyProductModelVO extends BaseVO {
/**
- * 产品描述
+ * 产品规格
*/
- @NotBlank(message = "【产品描述】不能为空")
+ @NotBlank(message = "【产品规格】不能为空")
private String description;
/**
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductsVO.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductsVO.java
index 72cdc9d..ec91a7c 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductsVO.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/CompanyProductsVO.java
@@ -1,9 +1,11 @@
package tech.abc.platform.productManagement.vo;
+import com.baomidou.mybatisplus.annotation.TableField;
import tech.abc.platform.common.base.BaseVO;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -19,6 +21,11 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class CompanyProductsVO extends BaseVO {
+ /**
+ * 公司产品型号id
+ */
+ private String modelId;
+
/**
* 供应商ID
*/
@@ -28,11 +35,6 @@ public class CompanyProductsVO extends BaseVO {
*/
private String supplierName;
- /**
- * 公司产品型号id
- */
- @NotBlank(message = "【产品型号】不能为空")
- private String modelId;
/**
* 产品名称
@@ -49,7 +51,7 @@ public class CompanyProductsVO extends BaseVO {
/**
* 产品价格
*/
- @NotBlank(message = "【产品价格】不能为空")
+ @NotNull(message = "【产品价格】不能为空")
private BigDecimal productPrice;
/**
@@ -62,14 +64,36 @@ public class CompanyProductsVO extends BaseVO {
*/
private String remarks;
/**
- * 产品描述
+ * 产品规格
*/
- private String modelDescription;
+ private String productSpecifications;
/**
* 供应商产品id
*/
private String supplierProductsId;
+ /**
+ * 产品图片
+ */
+ private String image;
+ /**
+ * 产品品牌
+ */
+ private String brand;
+
+ /**
+ * 产品单位*/
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ private BigDecimal exTaxPrice;
+
+ /**
+ * 税率
+ */
+ private BigDecimal taxrate;
/********非库表存储属性*****/
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/PersonProductsVO.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/PersonProductsVO.java
index 4250df4..c228f1b 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/PersonProductsVO.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/PersonProductsVO.java
@@ -4,6 +4,7 @@ package tech.abc.platform.productManagement.vo;
import tech.abc.platform.common.base.BaseVO;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -44,7 +45,7 @@ public class PersonProductsVO extends BaseVO {
/**
* 产品价格
*/
- @NotBlank(message = "【产品价格】不能为空")
+ @NotNull(message = "【产品价格】不能为空")
private BigDecimal productPrice;
/**
@@ -62,10 +63,31 @@ public class PersonProductsVO extends BaseVO {
*/
private String supplierProductsId;
/**
- * 产品描述
+ * 产品规格
*/
- private String ModelDescription;
+ private String productSpecifications;
+ /**
+ * 产品图片
+ */
+ private String image;
+
+ /**
+ * 产品品牌
+ */
+ private String brand;
+ /**
+ * 产品单位*/
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ private BigDecimal exTaxPrice;
+ /**
+ * 税率
+ */
+ private BigDecimal taxrate;
/********非库表存储属性*****/
diff --git a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/SupplierProductsVO.java b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/SupplierProductsVO.java
index 95f2a4c..d9a22b5 100644
--- a/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/SupplierProductsVO.java
+++ b/platform-boot-started-productManagement/src/main/java/tech/abc/platform/productManagement/vo/SupplierProductsVO.java
@@ -1,9 +1,11 @@
package tech.abc.platform.productManagement.vo;
+import com.baomidou.mybatisplus.annotation.TableField;
import tech.abc.platform.common.base.BaseVO;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -48,23 +50,43 @@ public class SupplierProductsVO extends BaseVO {
/**
* 产品价格
*/
- @NotBlank(message = "【产品价格】不能为空")
+ @NotNull(message = "【产品价格】不能为空")
private BigDecimal productPrice;
/**
* 信息来源
*/
private String sourceInformation;
-
/**
* 备注
*/
private String remarks;
/**
- * 产品描述
+ * 产品规格
+ */
+ private String productSpecifications;
+ /**
+ * 产品图片
+ */
+ private String image;
+
+ /**
+ * 产品品牌
*/
- private String modelDescription;
+ private String brand;
+ /**
+ * 产品单位*/
+ private String unit;
+
+ /**
+ * 除税价格
+ */
+ private BigDecimal exTaxPrice;
+ /**
+ * 税率
+ */
+ private BigDecimal taxrate;
/********非库表存储属性*****/
diff --git a/platform-boot-starter-demo/src/main/resources/application-dev.yml b/platform-boot-starter-demo/src/main/resources/application-dev.yml
index 89581cc..09e8667 100644
--- a/platform-boot-starter-demo/src/main/resources/application-dev.yml
+++ b/platform-boot-starter-demo/src/main/resources/application-dev.yml
@@ -4,7 +4,7 @@ server:
spring:
datasource:
# 数据库设置
- url: jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
+ url: jdbc:mysql://localhost:3306/abc_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
# redis设置
diff --git a/platform-boot-starter-demo/src/main/resources/http_ca.crt b/platform-boot-starter-demo/src/main/resources/http_ca.crt
new file mode 100644
index 0000000..92ab33d
--- /dev/null
+++ b/platform-boot-starter-demo/src/main/resources/http_ca.crt
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIVAIoa4/XgAnDR+55oINCE0Vm77NOfMA0GCSqGSIb3DQEB
+CwUAMDwxOjA4BgNVBAMTMUVsYXN0aWNzZWFyY2ggc2VjdXJpdHkgYXV0by1jb25m
+aWd1cmF0aW9uIEhUVFAgQ0EwHhcNMjQwNTI4MDMwODM5WhcNMjcwNTI4MDMwODM5
+WjA8MTowOAYDVQQDEzFFbGFzdGljc2VhcmNoIHNlY3VyaXR5IGF1dG8tY29uZmln
+dXJhdGlvbiBIVFRQIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+1YbHndQVi5WRsO52jh1ThRGbndrVTdaKgepCEPc0bt3EiHPEXB3xUnoPQkmcazn/
+Vf3fuIV8ZLML6CeR5w5jX+FYr6fl7J4o2f8WWBGS9nWkpfYYxICUh0vf9g8y3jOc
+yeeME3tNFCOPRW9rlYUjq4ba514lNaGZGOnLCV6G2LBZLXIkE7ukj+Mly3pDUpJv
+5aen+nsWF9MyUcXa2U8mHvv3SHNSp+N+2jbpgTYAM6tWMSbpZ+6LTewNyQi+4QiJ
+Qo2BGpfi6G6YAWXfvy+ewI7hkWZVnep9ndFjci7306IDj6wfWntGmvf7OTXT2m4U
+8ZVg/PECfZAIwj7A5j60joia4r4q8ftlRa+wVNTyuEvAbSYfvLt+l9A/UldQ4Vxs
++VZOCpTNwME7UQUqaZq8TThgpqd9RFGwtgeJ7JV92NPlaQCHGC9FSE1iZQB6ykAE
+Dl1df5dnlTMSfj2EreDBOF4JpI406C/RDXxg3c94986UZC7ra7qQ8WBnAxpsaVto
+nXIVCFaBzn7yFkJbm4f6Zd0CCYrwB9pqhqp8LuVQr0ubDvawgodanuKBUkNC7qtZ
+F7jxXzSj4bg1bhDRzyUrtuIg+CTMJA0rrZWxthE2gYzvbfZqMSInPwjkgGmL6vxN
+KW1FJcIHamMTHU/tl1RNSA9BnczitN3/x7fWGGfSYN0CAwEAAaNTMFEwHQYDVR0O
+BBYEFI8Vo0wKU5BgjNtgyZ26uPI0iKX2MB8GA1UdIwQYMBaAFI8Vo0wKU5BgjNtg
+yZ26uPI0iKX2MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAANc
+g7Wf5ET9QDbTXdN4mwL4Vr2pri2mAzB1LRqAz4UGmsgxZICUZXWOoo1P5qfzOkWm
+xzP9BPHXMJLtQZh3pYtb+UGuxcLeT/IcuKpXiKVX4+7N6WVyEXZl1cSy2xf3i03j
+AjqP0aRJBQo74aMcFKngh2tz7NMOmSPw5cYyLIsklL9uShh/tFEgMAZtC8aReHTj
+WJJhIP0NgGHMiqbozTuDatDprKE4UDgt9tOKq/ci29kCDBHH2+siJOGsg5oDwa3V
+Cin/bMwCdvZwQAbmOOETyHl/Og3PduHQZ1O2FbgPICxlPzKRxDx2jTmSg7Ub36t6
+Ec/j+BV8eciZneJ0f9K3SGP4aG5GECYdsINhjbG0HQe+ktj0Fm3a4mwlR+vkmF3d
+/LeW6mbaO/Km3H9iRT9SRa0LG1rslL6awVSueHxpmAXU+EGI/gxdacxV8T32V8IJ
+cYYJcKVZC5HDnN4VP+PDXST3cfKGb1wRSL1+IkCjrY9EZK+DFJG/gmTdgDi9qSBx
+99vHbnGyKBY5+UAZ2nVxnnRTyfLXXkZQZqVzuRg6STlKGvYbWSS/nBLVyp/dW32J
+kJK7t92SV8TGzFY24VyfnBsQaf1mUnsSSn5tFDej6bvpA83nsL8sgUeHy/HbGKTA
+5AxbnKvU2qtM65Sx01ZKVdbVE5ubYGxu2h7IGZ38
+-----END CERTIFICATE-----
diff --git a/platform-boot-starter-elasticsearch/pom.xml b/platform-boot-starter-elasticsearch/pom.xml
index b55c12d..25850d1 100644
--- a/platform-boot-starter-elasticsearch/pom.xml
+++ b/platform-boot-starter-elasticsearch/pom.xml
@@ -6,6 +6,7 @@
tech.abc
abc-development-platform
5.1.0
+
@@ -21,11 +22,27 @@
platform-common
-
+
+
+
+
+
+
+
+ co.elastic.clients
+ elasticsearch-java
+ 8.1.3
+
- org.springframework.boot
- spring-boot-starter-data-elasticsearch
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.13.3
+
+
+
+
+
diff --git a/platform-boot-starter-elasticsearch/src/main/java/tech/abc/platform/elasticsearch/config/ElasticSearchConfig.java b/platform-boot-starter-elasticsearch/src/main/java/tech/abc/platform/elasticsearch/config/ElasticSearchConfig.java
index 94e45f3..307d5d4 100644
--- a/platform-boot-starter-elasticsearch/src/main/java/tech/abc/platform/elasticsearch/config/ElasticSearchConfig.java
+++ b/platform-boot-starter-elasticsearch/src/main/java/tech/abc/platform/elasticsearch/config/ElasticSearchConfig.java
@@ -1,14 +1,43 @@
package tech.abc.platform.elasticsearch.config;
+import co.elastic.clients.elasticsearch.ElasticsearchAsyncClient;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.ssl.SSLContexts;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.core.convert.support.DefaultConversionService;
-import org.springframework.data.convert.ReadingConverter;
-import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
-import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
-import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.util.StringUtils;
+
+import javax.net.ssl.SSLContext;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -20,28 +49,164 @@ import java.time.ZoneId;
* @date 2024-02-21
*/
@Configuration
+
public class ElasticSearchConfig {
+ @Value("${elasticsearch.uris}")
+ private String hosts;
+ @Value("${elasticsearch.username}")
+ private String userName;
+
+ @Value("${elasticsearch.password}")
+ private String passWord;
+ /**
+ * 同步方式
+ *
+ * @return
+ */
+// @Bean
+// public ElasticsearchClient elasticsearchClient() throws Exception {
+//// HttpHost[] httpHosts = toHttpHost();
+// final CredentialsProvider credentialsProvider =
+// new BasicCredentialsProvider();
+// credentialsProvider.setCredentials(AuthScope.ANY,
+// new UsernamePasswordCredentials(userName, passWord));
+//
+// ClassPathResource resource = new ClassPathResource("http_ca.crt");
+// CertificateFactory factory =
+// CertificateFactory.getInstance("X.509");
+// Certificate trustedCa;
+// try (InputStream is = resource.getInputStream()) {
+// trustedCa = factory.generateCertificate(is);
+// }
+// KeyStore trustStore = KeyStore.getInstance("pkcs12");
+// trustStore.load(null, null);
+// trustStore.setCertificateEntry("ca", trustedCa);
+// SSLContextBuilder sslContextBuilder = SSLContexts.custom()
+// .loadTrustMaterial(trustStore, null);
+// final SSLContext sslContext = sslContextBuilder.build();
+//
+// RestClientBuilder builder = RestClient.builder(
+// new HttpHost("localhost", 9200, "https"))
+// .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
+// @Override
+// public HttpAsyncClientBuilder customizeHttpClient(
+// HttpAsyncClientBuilder httpClientBuilder) {
+// return httpClientBuilder.setSSLContext(sslContext)
+// .setDefaultCredentialsProvider(credentialsProvider);
+// }
+// });
+//
+// RestClient restClient = builder.build();
+//
+// // Create the transport with a Jackson mapper
+// ElasticsearchTransport transport = new RestClientTransport(
+// restClient, new JacksonJsonpMapper());
+//
+// return new ElasticsearchClient(transport);
+//// asyncClient = new ElasticsearchAsyncClient(transport);
+//
+// }
@Bean
- ElasticsearchConverter elasticsearchConverter(SimpleElasticsearchMappingContext mappingContext) {
- DefaultConversionService defaultConversionService = new DefaultConversionService();
- defaultConversionService.addConverter(LongToLocalDateTimeConverter.INSTANCE);
- return new MappingElasticsearchConverter(mappingContext, defaultConversionService);
+ public ElasticsearchClient clientByPasswd() throws Exception {
+ ElasticsearchTransport transport = getElasticsearchTransport(userName, passWord, toHttpHost());
+ return new ElasticsearchClient(transport);
}
- @ReadingConverter
- static enum LongToLocalDateTimeConverter implements Converter {
- /**
- * 单例模式
- */
- INSTANCE;
-
- private LongToLocalDateTimeConverter() {
+ private static SSLContext buildSSLContext() {
+ ClassPathResource resource = new ClassPathResource("http_ca.crt");
+ SSLContext sslContext = null;
+ try {
+ CertificateFactory factory = CertificateFactory.getInstance("X.509");
+ Certificate trustedCa;
+ try (InputStream is = resource.getInputStream()) {
+ trustedCa = factory.generateCertificate(is);
+ }
+ KeyStore trustStore = KeyStore.getInstance("pkcs12");
+ trustStore.load(null, null);
+ trustStore.setCertificateEntry("ca", trustedCa);
+ SSLContextBuilder sslContextBuilder = SSLContexts.custom()
+ .loadTrustMaterial(trustStore, null);
+ sslContext = sslContextBuilder.build();
+ } catch (CertificateException | IOException | KeyStoreException | NoSuchAlgorithmException |
+ KeyManagementException e) {
+ throw new RuntimeException("ES连接认证失败", e);
}
- @Override
- public LocalDateTime convert(Long source) {
- return Instant.ofEpochMilli(source).atZone(ZoneId.systemDefault()).toLocalDateTime();
+ return sslContext;
+ }
+ private static ElasticsearchTransport getElasticsearchTransport(String username, String passwd, HttpHost...hosts) {
+ // 账号密码的配置
+ final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, passwd));
+
+ // 自签证书的设置,并且还包含了账号密码
+ RestClientBuilder.HttpClientConfigCallback callback = httpAsyncClientBuilder -> httpAsyncClientBuilder
+ .setSSLContext(buildSSLContext())
+ .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
+ .setDefaultCredentialsProvider(credentialsProvider);
+
+ // 用builder创建RestClient对象
+ RestClient client = RestClient
+ .builder(hosts)
+ .setHttpClientConfigCallback(callback)
+ .build();
+
+ return new RestClientTransport(client, new JacksonJsonpMapper());
+ }
+ /**
+ * 异步方式
+ *
+ * @return
+ */
+ @Bean
+ public ElasticsearchAsyncClient elasticsearchAsyncClient() {
+ HttpHost[] httpHosts = toHttpHost();
+ RestClient restClient = RestClient.builder(httpHosts).build();
+ RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
+ return new ElasticsearchAsyncClient(transport);
+ }
+ /**
+ * 解析配置的字符串hosts,转为HttpHost对象数组
+ *
+ * @return
+ */
+ private HttpHost[] toHttpHost() {
+ if (!StringUtils.hasLength(hosts)) {
+ throw new RuntimeException("invalid elasticsearch configuration. elasticsearch.hosts不能为空!");
+ }
+ // 多个IP逗号隔开
+ String[] hostArray = hosts.split(",");
+ HttpHost[] httpHosts = new HttpHost[hostArray.length];
+ HttpHost httpHost;
+ for (int i = 0; i < hostArray.length; i++) {
+ String[] strings = hostArray[i].split(":");
+ httpHost = new HttpHost(strings[0], Integer.parseInt(strings[1]), "https");
+ httpHosts[i] = httpHost;
}
+ return httpHosts;
}
+
+// @Bean
+// ElasticsearchConverter elasticsearchConverter(SimpleElasticsearchMappingContext mappingContext) {
+// DefaultConversionService defaultConversionService = new DefaultConversionService();
+// defaultConversionService.addConverter(LongToLocalDateTimeConverter.INSTANCE);
+// return new MappingElasticsearchConverter(mappingContext, defaultConversionService);
+// }
+//
+// @ReadingConverter
+// static enum LongToLocalDateTimeConverter implements Converter {
+// /**
+// * 单例模式
+// */
+// INSTANCE;
+//
+// private LongToLocalDateTimeConverter() {
+// }
+//
+// @Override
+// public LocalDateTime convert(Long source) {
+// return Instant.ofEpochMilli(source).atZone(ZoneId.systemDefault()).toLocalDateTime();
+// }
+// }
}
diff --git a/platform-boot-starter/src/main/resources/application-platform.yml b/platform-boot-starter/src/main/resources/application-platform.yml
index 933c0c1..5730fe8 100644
--- a/platform-boot-starter/src/main/resources/application-platform.yml
+++ b/platform-boot-starter/src/main/resources/application-platform.yml
@@ -1,12 +1,16 @@
server:
port: 8080
+elasticsearch:
+ uris: localhost:9200
+ username: elastic
+ password: '1CVfNF7NPO+HQXprJGaR'
#数据连接
spring:
datasource:
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
+ url: jdbc:mysql://localhost:3306/abc_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
druid:
diff --git a/platform-common/src/main/java/tech/abc/platform/common/exception/CommonException.java b/platform-common/src/main/java/tech/abc/platform/common/exception/CommonException.java
index 5efe7a2..2e74e4a 100644
--- a/platform-common/src/main/java/tech/abc/platform/common/exception/CommonException.java
+++ b/platform-common/src/main/java/tech/abc/platform/common/exception/CommonException.java
@@ -107,7 +107,7 @@ public enum CommonException implements ExceptionInterface {
* 未找到对应的枚举类型
*/
ENUM_TYPE_NOT_FOUNT("未找到对应的枚举类型:【{0}】"),
-
+ ELASTICSEARCH_ERROR("Elasticsearch错误:{0}"),
;
private String message;
diff --git a/pom.xml b/pom.xml
index 2f4f54f..faf558a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,12 +40,18 @@
5.1.0
2.3.0.RELEASE
1.8
+ 2.0.1
UTF-8
UTF-8
+
+ jakarta.json
+ jakarta.json-api
+ ${jakartajson.version}
+
tech.abc