diff --git a/pom.xml b/pom.xml
index 70ffa0d..f2796c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,7 +164,7 @@
com.github.pagehelper
pagehelper-spring-boot-starter
- 1.4.2
+ 1.4.6
org.mybatis
@@ -198,9 +198,20 @@
org.springframework.boot
spring-boot-starter-logging
+
+ com.github.jsqlparser
+ jsqlparser
+
+
+
+ com.github.jsqlparser
+ jsqlparser
+ 4.4
+
+
cn.dev33
@@ -257,6 +268,20 @@
1.2.83
+
+
+ com.github.binarywang
+ weixin-java-pay
+ 4.4.0
+
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.38.0.ALL
+
+
diff --git a/src/main/java/com/kexue/skills/common/util/HttpUtil.java b/src/main/java/com/kexue/skills/common/util/HttpUtil.java
index dd1f246..2ee86b5 100644
--- a/src/main/java/com/kexue/skills/common/util/HttpUtil.java
+++ b/src/main/java/com/kexue/skills/common/util/HttpUtil.java
@@ -55,4 +55,31 @@ public class HttpUtil {
return response.body();
}
+
+ /**
+ * 发送POST请求到指定URL
+ *
+ * @param url 请求URL
+ * @param requestBody 请求体字符串
+ * @return 响应结果
+ * @throws Exception 异常信息
+ */
+ public static String post(String url, String requestBody) throws Exception {
+ // 创建HttpClient实例
+ HttpClient client = HttpClient.newBuilder()
+ .connectTimeout(Duration.ofSeconds(30))
+ .build();
+
+ // 构建HttpRequest
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(URI.create(url))
+ .header("Content-Type", "application/xml")
+ .POST(HttpRequest.BodyPublishers.ofString(requestBody, StandardCharsets.UTF_8))
+ .build();
+
+ // 发送请求并获取响应
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ return response.body();
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/kexue/skills/config/PaymentConfig.java b/src/main/java/com/kexue/skills/config/PaymentConfig.java
new file mode 100644
index 0000000..a48ae31
--- /dev/null
+++ b/src/main/java/com/kexue/skills/config/PaymentConfig.java
@@ -0,0 +1,66 @@
+package com.kexue.skills.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * 支付配置类
+ */
+@Component
+@ConfigurationProperties(prefix = "payment")
+@Data
+public class PaymentConfig {
+ // 微信支付配置
+ private WechatPayConfig wechat;
+ // 支付宝支付配置
+ private AlipayConfig alipay;
+
+ /**
+ * 微信支付配置
+ */
+ @Data
+ public static class WechatPayConfig {
+ // 应用ID
+ private String appId;
+ // 商户号
+ private String mchId;
+ // 商户密钥
+ private String mchKey;
+ // 商户API证书序列号
+ private String mchSerialNo;
+ // 商户私钥文件路径
+ private String privateKeyPath;
+ // 微信服务器地址
+ private String domain;
+ // 支付回调地址
+ private String notifyUrl;
+ // 支付成功跳转地址
+ private String returnUrl;
+
+ }
+
+ /**
+ * 支付宝支付配置
+ */
+ @Data
+ public static class AlipayConfig {
+ // 应用ID
+ private String appId;
+ // 商户私钥
+ private String privateKey;
+ // 支付宝公钥
+ private String publicKey;
+ // 支付回调地址
+ private String notifyUrl;
+ // 支付成功跳转地址
+ private String returnUrl;
+ // 签名类型
+ private String signType;
+ // 字符编码
+ private String charset;
+ // 支付宝网关
+ private String gatewayUrl;
+
+ }
+}
diff --git a/src/main/java/com/kexue/skills/controller/CmsContentController.java b/src/main/java/com/kexue/skills/controller/CmsContentController.java
index 061a81c..3332795 100644
--- a/src/main/java/com/kexue/skills/controller/CmsContentController.java
+++ b/src/main/java/com/kexue/skills/controller/CmsContentController.java
@@ -170,4 +170,30 @@ public class CmsContentController {
public CommonResult deleteById(@PathVariable("contentId") Long contentId) {
return CommonResult.success(cmsContentService.deleteById(contentId) > 0);
}
+
+ /**
+ * 添加收藏
+ *
+ * @param contentId 内容ID
+ * @return 操作结果
+ */
+ @PostMapping("/addFavorite")
+ @Operation(summary = "添加收藏", description = "添加内容收藏")
+ @RequireAuth
+ public CommonResult addFavorite(@RequestParam("contentId") Long contentId) {
+ return CommonResult.success(cmsContentService.addFavorite(contentId) > 0);
+ }
+
+ /**
+ * 添加查看记录
+ *
+ * @param contentId 内容ID
+ * @return 操作结果
+ */
+ @PostMapping("/addView")
+ @Operation(summary = "添加查看记录", description = "添加内容查看记录")
+ @RequireAuth
+ public CommonResult addView(@RequestParam("contentId") Long contentId) {
+ return CommonResult.success(cmsContentService.addView(contentId) > 0);
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/kexue/skills/controller/PayController.java b/src/main/java/com/kexue/skills/controller/PayController.java
new file mode 100644
index 0000000..c64ef28
--- /dev/null
+++ b/src/main/java/com/kexue/skills/controller/PayController.java
@@ -0,0 +1,110 @@
+package com.kexue.skills.controller;
+
+import com.kexue.skills.common.CommonResult;
+import com.kexue.skills.entity.PaymentOrder;
+import com.kexue.skills.service.PayService;
+import com.kexue.skills.service.PaymentOrderService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * 支付控制器
+ */
+@Tag(name = "支付管理 Api")
+@RestController
+@RequestMapping("/api/pay")
+public class PayController {
+
+ private static final Logger logger = LoggerFactory.getLogger(PayController.class);
+
+ @Resource
+ private PayService payService;
+
+ @Resource
+ private PaymentOrderService paymentOrderService;
+
+ /**
+ * 创建微信支付订单
+ * @param order 支付订单信息
+ * @return 微信支付参数
+ */
+ @Operation(summary = "创建微信支付订单", description = "创建微信支付订单")
+ @PostMapping("/wx/create")
+ public CommonResult