diff --git a/Cpop-Common/src/main/java/com/cpop/common/constant/Constants.java b/Cpop-Common/src/main/java/com/cpop/common/constant/Constants.java
index b1f32fb..2b97c40 100644
--- a/Cpop-Common/src/main/java/com/cpop/common/constant/Constants.java
+++ b/Cpop-Common/src/main/java/com/cpop/common/constant/Constants.java
@@ -187,7 +187,7 @@ public interface Constants {
/**
* 隐藏菜单
*/
- String HIDE_MENU = "Menu";
+ String HIDE_MENU = "Menu,Brand";
/**
* 用户类型
diff --git a/Cpop-Core/src/main/java/com/cpop/core/handler/TencentCosHandler.java b/Cpop-Core/src/main/java/com/cpop/core/handler/TencentCosHandler.java
index ed86c5a..63c65be 100644
--- a/Cpop-Core/src/main/java/com/cpop/core/handler/TencentCosHandler.java
+++ b/Cpop-Core/src/main/java/com/cpop/core/handler/TencentCosHandler.java
@@ -2,6 +2,7 @@ package com.cpop.core.handler;
import com.cpop.core.base.exception.UtilException;
import com.cpop.core.config.TencentCosProperties;
+import com.qcloud.cos.COS;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
@@ -20,6 +21,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.ExecutorService;
@@ -40,13 +42,16 @@ public class TencentCosHandler {
@Autowired
private TencentCosProperties properties;
+ private TransferManager transferManager;
+
/**
- * @descriptions 创建 TransferManager 实例,这个实例用来后续调用高级接口
+ * @descriptions 初始化创建TransferManager 实例,这个实例用来后续调用高级接口
* @author DB
- * @date 2023/10/31 16:48
- * @return: com.qcloud.cos.transfer.TransferManager
+ * @date 2023/11/01 10:34
+ * @return: void
*/
- private TransferManager createTransferManager() {
+ @PostConstruct
+ public void createTransferManager(){
// 创建一个 COSClient 实例,这是访问 COS 服务的基础实例。
// 详细代码参见本页: 简单操作 -> 创建 COSClient
COSClient cosClient = createCosClient();
@@ -54,14 +59,13 @@ public class TencentCosHandler {
// 对于使用公网传输且网络带宽质量不高的情况,建议减小该值,避免因网速过慢,造成请求超时。
ExecutorService threadPool = Executors.newFixedThreadPool(32);
// 传入一个 threadPool, 若不传入线程池,默认 TransferManager 中会生成一个单线程的线程池。
- TransferManager transferManager = new TransferManager(cosClient, threadPool);
+ transferManager = new TransferManager(cosClient, threadPool);
// 设置高级接口的配置项
// 分块上传阈值和分块大小分别为 5MB 和 1MB
TransferManagerConfiguration transferManagerConfiguration = new TransferManagerConfiguration();
transferManagerConfiguration.setMultipartUploadThreshold(5 * 1024 * 1024);
transferManagerConfiguration.setMinimumUploadPartSize(1 * 1024 * 1024);
transferManager.setConfiguration(transferManagerConfiguration);
- return transferManager;
}
/**
@@ -106,7 +110,7 @@ public class TencentCosHandler {
* @param transferManager 管理器
* @return: void
*/
- private void shutdownTransferManager(TransferManager transferManager) {
+ public void shutdownTransferManager(TransferManager transferManager) {
// 指定参数为 true, 则同时会关闭 transferManager 内部的 COSClient 实例。
// 指定参数为 false, 则不会关闭 transferManager 内部的 COSClient 实例。
transferManager.shutdownNow(true);
@@ -120,7 +124,6 @@ public class TencentCosHandler {
* @return: com.qcloud.cos.model.UploadResult
*/
public UploadResult cdnUpload(MultipartFile file) {
- TransferManager transferManager = createTransferManager();
try {
ObjectMetadata objectMetadata = new ObjectMetadata();
// 上传的流如果能够获取准确的流长度,则推荐一定填写 content-length
@@ -133,12 +136,11 @@ public class TencentCosHandler {
// 更多存储类型请参见 https://cloud.tencent.com/document/product/436/33417
putObjectRequest.setStorageClass(StorageClass.Standard_IA);
Upload upload = transferManager.upload(putObjectRequest);
+ UploadResult uploadResult = upload.waitForUploadResult();
inputStream.close();
- return upload.waitForUploadResult();
+ return uploadResult;
} catch (IOException | InterruptedException e) {
throw new UtilException(e);
- } finally {
- shutdownTransferManager(transferManager);
}
}
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-dev.yml b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-dev.yml
index 4c65ecb..9058f48 100644
--- a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-dev.yml
+++ b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-dev.yml
@@ -104,7 +104,13 @@ logging:
#微信支付
wx:
pay:
- #通知地址
+ # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+ keyPath: E:/Cpop/Cpop-Union/Cpop-Mall/Cpop-Mall-Web/src/main/resources/static/keyPair/wxPay_cert.p12
+ # 私钥证书
+ privateKeyPath: E:/Cpop/Cpop-Union/Cpop-Mall/Cpop-Mall-Web/src/main/resources/static/keyPair/wxPay_key.pem
+ # 私钥文件
+ privateCertPath: E:/Cpop/Cpop-Union/Cpop-Mall/Cpop-Mall-Web/src/main/resources/static/keyPair/wxPay_cert.pem
+ #支付通知地址
notifyUrl: https://frp-oak.top:11899/Cpop-Mall/wxPay/callback/notify/order
- #支付成功
+ #退款通知地址
notifyRefund: https://frp-oak.top:11899/Cpop-Mall/wxPay/callback/notify/refund
\ No newline at end of file
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-prod.yml b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-prod.yml
index 3554e3b..7b8880a 100644
--- a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-prod.yml
+++ b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-prod.yml
@@ -75,7 +75,13 @@ logging:
#微信支付
wx:
pay:
- #通知地址
+ # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+ keyPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_cert.p12
+ # 私钥证书
+ privateKeyPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_key.pem
+ # 私钥文件
+ privateCertPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_cert.pem
+ #支付通知地址
notifyUrl: https://test.cpopsz.com/onlineShop/Cpop-Mall/wxPay/callback/notify/order
- #支付成功
+ #退款通知地址
notifyRefund: https://test.cpopsz.com/onlineShop/Cpop-Mall/wxPay/callback/notify/refund
\ No newline at end of file
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-test.yml b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-test.yml
index f1e19be..6ccd3e1 100644
--- a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-test.yml
+++ b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application-test.yml
@@ -105,7 +105,13 @@ logging:
#微信支付
wx:
pay:
- #通知地址
+ # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+ keyPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_cert.p12
+ # 私钥证书
+ privateKeyPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_key.pem
+ # 私钥文件
+ privateCertPath: /root/cpop-union/cpop-mall/script/secretKey/wxPay_cert.pem
+ #支付通知地址
notifyUrl: https://test.cpopsz.com/onlineShop/Cpop-Mall/wxPay/callback/notify/order
- #支付成功
+ #退款通知地址
notifyRefund: https://test.cpopsz.com/onlineShop/Cpop-Mall/wxPay/callback/notify/refund
\ No newline at end of file
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application.yml b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application.yml
index d9036c8..b2aa4c8 100644
--- a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application.yml
+++ b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/application.yml
@@ -137,5 +137,3 @@ wx:
#微信支付商户密钥
mchKey: JamBox20230919174000000000000002
apiV3Key: JamBox20230919174000000000000002
- # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
- keyPath:
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/logback.xml b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/logback.xml
index 53bd533..63c0cbf 100644
--- a/Cpop-Mall/Cpop-Mall-Web/src/main/resources/logback.xml
+++ b/Cpop-Mall/Cpop-Mall-Web/src/main/resources/logback.xml
@@ -4,7 +4,7 @@
-
+
@@ -16,49 +16,55 @@
-
- ${LOG_HOME}/${LOG_PREFIX}-info.log
- true
-
-
- INFO
- ACCEPT
- DENY
-
-
- ${LOG_HOME}/${LOG_PREFIX}-info-%d{yyyyMMdd}.log.%d
- 7
-
-
- [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
- UTF-8
-
-
+
+
+ ${LOG_HOME}/${LOG_PREFIX}-info.log
+ true
+
+
+ INFO
+ ACCEPT
+ DENY
+
+
+ ${LOG_HOME}/${LOG_PREFIX}-info-%d{yyyyMMdd}.log.%d
+ 7
+
+
+ [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
+ UTF-8
+
+
-
- ${LOG_HOME}/${LOG_PREFIX}-error.log
- true
-
-
- ERROR
- ACCEPT
- DENY
-
-
- ${LOG_HOME}/${LOG_PREFIX}-error-%d{yyyyMMdd}.log.%d
- 7
-
-
- [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
- UTF-8
-
-
+
+ ${LOG_HOME}/${LOG_PREFIX}-error.log
+ true
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+ ${LOG_HOME}/${LOG_PREFIX}-error-%d{yyyyMMdd}.log.%d
+ 7
+
+
+ [%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n
+ UTF-8
+
+
+
-
-
-
+
+
+
+
+
+
+
diff --git a/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/OrderTests.java b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/OrderTests.java
new file mode 100644
index 0000000..a2bef6a
--- /dev/null
+++ b/Cpop-Mall/Cpop-Mall-Web/src/test/java/com/cpop/mall/web/OrderTests.java
@@ -0,0 +1,41 @@
+package com.cpop.mall.web;
+
+import com.cpop.mall.business.service.ProductRecordService;
+import org.checkerframework.checker.units.qual.A;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author DB
+ * @createTime 2023/11/01 12:25
+ * @description 订单测试
+ */
+@SpringBootTest
+public class OrderTests {
+
+ @Autowired
+ private ProductRecordService productRecordService;
+
+ /**
+ * @descriptions 并发更新库存
+ * @author DB
+ * @date 2023/11/01 12:26
+ * @return: void
+ */
+ @Test
+ public void concurrencyUpdateStock(){
+ ExecutorService threadPool = Executors.newFixedThreadPool(10);
+ for (int i = 0; i < 100; i++) {
+ threadPool.submit(new Runnable() {
+ @Override
+ public void run() {
+ System.out.println(Thread.currentThread().getName() + "正在执行任务");
+ }
+ });
+ }
+ }
+}
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderPageBo.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderPageBo.java
index 5987fc6..04fb7b1 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderPageBo.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderPageBo.java
@@ -30,10 +30,10 @@ public class OrderPageBo implements Serializable {
private String payUserName;
/**
- * 支付用户手机号
+ * 接收人手机号
*/
- @ApiModelProperty("支付用户手机号")
- private String payUserPhone;
+ @ApiModelProperty("接收人手机号")
+ private String receivePhone;
/**
* 订单状态(0:待付款;1:待发货;2:待确认;3:已完成;4:退款/售后中)
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderRefundPageBo.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderRefundPageBo.java
index 028413c..de85af9 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderRefundPageBo.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/bo/OrderRefundPageBo.java
@@ -30,10 +30,10 @@ public class OrderRefundPageBo implements Serializable {
private String payUserName;
/**
- * 支付用户手机号
+ * 接收人手机号
*/
- @ApiModelProperty("支付用户手机号")
- private String payUserPhone;
+ @ApiModelProperty("接收人手机号")
+ private String receivePhone;
/**
* 退款状态(0:申请中;1:通过;2:驳回)
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderRefundServiceImpl.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderRefundServiceImpl.java
index 24a96d3..973dfde 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderRefundServiceImpl.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/OrderRefundServiceImpl.java
@@ -130,7 +130,7 @@ public class OrderRefundServiceImpl extends ServiceImpl implements
.from(ORDER)
.leftJoin(SYS_USER).on(SYS_USER.ID.eq(ORDER.PAY_USER_ID))
.and(ORDER.PAY_USER_NAME.like(bo.getPayUserName()))
- .and(SYS_USER.PHONE_NUMBER.eq(bo.getPayUserPhone()))
+ .and(ORDER.RECEIVE_PHONE.like(bo.getReceivePhone()))
.and(ORDER.PRODUCT_NAMES.like(bo.getProductName()))
//订单状态
.and(ORDER.ORDER_STATUS.eq(bo.getOrderStatus()))
@@ -303,8 +303,7 @@ public class OrderServiceImpl extends ServiceImpl implements
WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
String orderId = notifyResult.getOutTradeNo();
//修改订单状态
- this.updateChain()
- .set(ORDER.OUT_ORDER_NO, notifyResult.getTransactionId())
+ this.updateChain().set(ORDER.OUT_ORDER_NO, notifyResult.getTransactionId())
.set(ORDER.ORDER_STATUS, 1).where(ORDER.ID.eq(orderId)).update();
//支付成功减库存
List orderDetails = SpringUtils.getBean(OrderDetailService.class).queryChain()
@@ -316,7 +315,7 @@ public class OrderServiceImpl extends ServiceImpl implements
productRecords.forEach(item -> {
item.setRecordNum(item.getRecordNum() - orderNumMap.get(item.getId()));
});
- asyncUpdateRecords(productRecords,0);
+ productRecordService.updateBatch(productRecords);
//TODO:分账先注释
/*ProfitSharing profitSharing = new ProfitSharing();
profitSharing.setOrderId(orderId)
@@ -350,7 +349,6 @@ public class OrderServiceImpl extends ServiceImpl implements
* @Description: 异步更新数据库
* @param productRecords 产品记录
* @param flag 成功标志
- * @return
* @Author DB
* @Date: 2023/11/1 0:09
*/
@@ -362,7 +360,7 @@ public class OrderServiceImpl extends ServiceImpl implements
throw new ServiceException("更新订单失败");
} else {
boolean tx = Db.tx(() -> productRecordService.updateBatch(productRecords));
- if (!tx){
+ if (!tx) {
//更新失败
flag++;
asyncUpdateRecords(productRecords, flag);
diff --git a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/MenuServiceImpl.java b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/MenuServiceImpl.java
index 129c642..af1d78a 100644
--- a/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/MenuServiceImpl.java
+++ b/Cpop-Oam/src/main/java/com/cpop/oam/business/service/impl/MenuServiceImpl.java
@@ -225,7 +225,7 @@ public class MenuServiceImpl extends ServiceImpl implements Me
.leftJoin(ROLE).on(ROLE.ID.eq(ROLE_MENU.ROLE_ID))
.where(MENU.STATUS.eq(1))
.and(MENU.TYPE.in(0, 1))
- .and(MENU.NAME.ne(Constants.HIDE_MENU))
+ .and(MENU.NAME.notIn(Constants.HIDE_MENU.split(",")))
.and(ROLE_MENU.ROLE_ID.eq(staffInfo.getRoleId()))
.orderBy(MENU.ORDER_NO.asc()),
MenuRouteVo.class));
diff --git a/Cpop-System/src/main/java/com/cpop/system/business/service/impl/MenuServiceImpl.java b/Cpop-System/src/main/java/com/cpop/system/business/service/impl/MenuServiceImpl.java
index 25b69c0..27f1205 100644
--- a/Cpop-System/src/main/java/com/cpop/system/business/service/impl/MenuServiceImpl.java
+++ b/Cpop-System/src/main/java/com/cpop/system/business/service/impl/MenuServiceImpl.java
@@ -63,7 +63,7 @@ public class MenuServiceImpl extends ServiceImpl implements Me
.leftJoin(ROLE).on(ROLE.ID.eq(ROLE_MENU.ROLE_ID))
.where(MENU.STATUS.eq(1))
.and(MENU.TYPE.in(0, 1))
- .and(MENU.NAME.ne(Constants.HIDE_MENU))
+ .and(MENU.NAME.notIn(Constants.HIDE_MENU.split(",")))
.and(ROLE_MENU.ROLE_ID.eq(loginStaffInfo.getString("roleId")))
//构建公共菜单与特有菜单
.and(MENU.USER_TYPE.in("COMMON", user.getUserType()))