diff --git a/mcwl-admin/pom.xml b/mcwl-admin/pom.xml
index 5a751d5..ef9109d 100644
--- a/mcwl-admin/pom.xml
+++ b/mcwl-admin/pom.xml
@@ -24,6 +24,17 @@
0.4.7
+
+
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.40.30.ALL
+
+
+
com.alipay.sdk
alipay-easysdk
diff --git a/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java b/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java
index 1cf52e3..e7c3b73 100644
--- a/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java
+++ b/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java
@@ -1,6 +1,7 @@
package com.mcwl;
import com.fasterxml.jackson.databind.SerializationFeature;
+import com.mcwl.pay.config.AliConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
@@ -8,6 +9,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
/**
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/comment/CommentController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/comment/CommentController.java
new file mode 100644
index 0000000..83d8d28
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/comment/CommentController.java
@@ -0,0 +1,77 @@
+//package com.mcwl.web.controller.comment;
+//
+//
+//import com.mcwl.comment.domain.ProductCommentConditionEntity;
+//import com.mcwl.comment.domain.ProductCommentEntity;
+//import com.mcwl.comment.service.impl.CommentServiceImpl;
+//import com.mcwl.common.utils.ResponsePageEntity;
+//import com.mcwl.resource.domain.MallProduct;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.validation.constraints.NotNull;
+//import java.util.List;
+//
+///**
+// * @Author:ChenYan
+// * @Project:McWl
+// * @Package:com.mcwl.web.controller.comment
+// * @Filename:CommentController
+// * @Description TODO
+// * @Date:2025/1/4 18:56
+// */
+//@RestController
+//@RequestMapping("/comment")
+//public class CommentController {
+//
+// @Autowired
+// private CommentServiceImpl commentService;
+//
+// /**
+// * 通过id查询商品评论信息
+// *
+// * @param id 系统ID
+// * @return 商品评论信息
+// */
+// @GetMapping("/findById")
+// public MallProduct findById(Long id) {
+// return commentService.findById(id);
+// }
+//
+//
+//
+// /**
+// * 添加商品评论
+// *
+// * @param productCommentEntity 商品评论实体
+// * @return 影响行数
+// */
+// @PostMapping("/insert")
+// public int insert(@RequestBody ProductCommentEntity productCommentEntity) {
+// return commentService.insert(productCommentEntity);
+// }
+//
+// /**
+// * 修改商品评论
+// *
+// * @param productCommentEntity 商品评论实体
+// * @return 影响行数
+// */
+// @PostMapping("/update")
+// public int update(@RequestBody ProductCommentEntity productCommentEntity) {
+// return commentService.update(productCommentEntity);
+// }
+//
+// /**
+// * 批量删除商品评论
+// *
+// * @param ids 商品评论ID集合
+// * @return 影响行数
+// */
+// @PostMapping("/deleteByIds")
+// public int deleteByIds(@RequestBody @NotNull List ids) {
+// return commentService.deleteByIds(ids);
+// }
+//
+//
+//}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java
index 602986a..9a384bd 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java
@@ -111,7 +111,7 @@ public class MemberController {
return AjaxResult.warn("用户不存在");
}
- Member member = memberService.rechargePoints(userId, amount * 10);
+ Member member = memberService.rechargePoints(userId, amount * 100);
// 返回充值积分
if (!Optional.ofNullable(member).isPresent()) {
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayIntegration.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayIntegration.java
index 733770e..bbc69c5 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayIntegration.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayIntegration.java
@@ -5,6 +5,17 @@ import cn.hutool.core.lang.UUID;
import cn.hutool.db.sql.Order;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.*;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.domain.*;
+import com.alipay.api.request.AlipayFundAccountQueryRequest;
+import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
+import com.alipay.api.request.AlipayFundTransUniTransferRequest;
+import com.alipay.api.response.AlipayFundAccountQueryResponse;
+import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
@@ -15,11 +26,12 @@ import com.mcwl.memberCenter.domain.Member;
import com.mcwl.memberCenter.domain.MemberLevel;
import com.mcwl.memberCenter.service.MemberLevelService;
import com.mcwl.memberCenter.service.MemberService;
+import com.mcwl.pay.config.AliConfig;
import com.mcwl.pay.domain.OrderTrade;
import com.mcwl.pay.domain.OrderTradeDto;
-import com.mcwl.resource.domain.MallProduct;
import com.mcwl.resource.service.MallProductService;
import com.mcwl.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
@@ -32,7 +44,7 @@ import java.util.concurrent.TimeUnit;
* 支付宝支付
*/
@Component
-
+@Slf4j
public class AliPayIntegration {
@Autowired
@@ -50,6 +62,9 @@ public class AliPayIntegration {
@Autowired
private ISysUserService sysUserService;
+ @Autowired
+ private AliConfig aliConfig;
+
public AliPayIntegration(Config config) {
Factory.setOptions(config);
@@ -63,38 +78,38 @@ public class AliPayIntegration {
* @return 二维码url
* @throws Exception
*/
- public String orderPay(OrderTradeDto orderTradeDto) throws Exception {
- Integer productId = orderTradeDto.getProductId();
- if (!Optional.ofNullable(productId).isPresent()) {
- throw new ServiceException("mallProductId不能为空");
- }
-
- MallProduct mallProduct = mallProductService.getById(productId);
- if (!Optional.ofNullable(mallProduct).isPresent()) {
- throw new ServiceException("mallProduct不存在");
- }
-
- // 设置orderTrade信息
- OrderTrade tradeEntity = new OrderTrade();
- BeanUtil.copyProperties(orderTradeDto, tradeEntity);
- tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
- tradeEntity.setUserId(SecurityUtils.getUserId());
- tradeEntity.setUserName(SecurityUtils.getUsername());
- tradeEntity.setProductName(mallProduct.getProductName());
-
- //调用支付宝的接口
- AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
- .preCreate(mallProduct.getProductName(),
- tradeEntity.getCode() + "_product",
- orderTradeDto.getPaymentAmount().toString());
- // 缓存到redis
- redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES);
-// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999");
- //参照官方文档响应示例,解析返回结果
- String httpBodyStr = payResponse.getHttpBody();
- JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
- return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
- }
+// public String orderPay(OrderTradeDto orderTradeDto) throws Exception {
+// Integer productId = orderTradeDto.getProductId();
+// if (!Optional.ofNullable(productId).isPresent()) {
+// throw new ServiceException("mallProductId不能为空");
+// }
+//
+// MallProduct mallProduct = mallProductService.getById(productId);
+// if (!Optional.ofNullable(mallProduct).isPresent()) {
+// throw new ServiceException("mallProduct不存在");
+// }
+//
+// // 设置orderTrade信息
+// OrderTrade tradeEntity = new OrderTrade();
+// BeanUtil.copyProperties(orderTradeDto, tradeEntity);
+// tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
+// tradeEntity.setUserId(SecurityUtils.getUserId());
+// tradeEntity.setUserName(SecurityUtils.getUsername());
+// tradeEntity.setProductName(mallProduct.getProductName());
+//
+// //调用支付宝的接口
+// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
+// .preCreate(mallProduct.getProductName(),
+// tradeEntity.getCode() + "_product",
+// orderTradeDto.getPaymentAmount().toString());
+// // 缓存到redis
+// redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES);
+//// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999");
+// //参照官方文档响应示例,解析返回结果
+// String httpBodyStr = payResponse.getHttpBody();
+// JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
+// return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
+// }
/**
@@ -173,4 +188,172 @@ public class AliPayIntegration {
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
}
+
+ /**
+ * 支付宝转账方法
+ * @param outBizNo 外部业务单号
+ * @param payerUserId 付款方用户ID
+ * @param payeeUserId 收款方用户ID
+ * @param amount 转账金额
+ * @return 返回支付宝转账响应的内容
+ */
+ public String transfer(String outBizNo, String payerUserId, String payeeUserId, String amount) {
+ // 参数校验:检查外部业务单号是否为空
+ if (outBizNo == null || outBizNo.isEmpty()) {
+ throw new IllegalArgumentException("outBizNo cannot be null or empty");
+ }
+ // 参数校验:检查付款方用户ID是否为空
+ if (payerUserId == null || payerUserId.isEmpty()) {
+ throw new IllegalArgumentException("payerUserId cannot be null or empty");
+ }
+ // 参数校验:检查收款方用户ID是否为空
+ if (payeeUserId == null || payeeUserId.isEmpty()) {
+ throw new IllegalArgumentException("payeeUserId cannot be null or empty");
+ }
+
+ try {
+ // 初始化支付宝SDK客户端,传入相关配置信息
+ AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+ // 创建向支付宝账户转账的请求对象
+ AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
+ // 创建转账请求的业务模型对象,用于设置具体业务参数
+ AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
+
+ // 设置转账金额到业务模型对象中
+ model.setAmount(amount);
+
+ // 设置收款方账户类型为支付宝登录账号
+ model.setPayeeType("ALIPAY_LOGONID");
+ // 设置收款方的支付宝账号
+ model.setPayeeAccount(payeeUserId);
+ // 设置收款方真实姓名,此处应替换为真实信息
+ model.setPayeeRealName("测试用户");
+ // 设置转账备注信息
+ model.setRemark("转账备注");
+ // 设置外部业务单号
+ model.setOutBizNo(outBizNo);
+ // 设置付款方展示名称
+ model.setPayerShowName("测试用户");
+ // 设置付款方真实姓名
+ model.setPayerRealName("测试用户");
+ // 设置扩展参数,这里示例为一个空JSON字符串
+ model.setExtParam("{}");
+ // 将设置好参数的业务模型对象放入请求对象中
+ request.setBizModel(model);
+
+ // 执行转账请求,获取支付宝响应对象
+ AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
+ // 记录支付宝转账响应的详细内容
+ log.info("Alipay transfer response: {}", response.getBody());
+
+ // 判断转账是否成功
+ if (response.isSuccess()) {
+ // 记录转账成功日志
+ log.info("Alipay transfer call success");
+ // 如果成功,返回响应内容
+ return response.getBody();
+ } else {
+ // 记录转账失败日志,包含错误码和错误信息
+ log.error("Alipay transfer call failed, error code: {}, error msg: {}", response.getCode(), response.getMsg());
+ // 抛出运行时异常,告知调用者转账失败及失败原因
+ throw new RuntimeException("Alipay transfer failed: " + response.getMsg());
+ }
+ } catch (AlipayApiException e) {
+ // 捕获支付宝API异常,记录详细异常信息
+ log.error("Alipay API exception occurred during transfer", e);
+ // 包装成运行时异常再次抛出,让调用者处理
+ throw new RuntimeException("Alipay API exception during transfer", e);
+ }
+ }
+
+ /**
+ * 查看余额
+ */
+ public void balance() throws AlipayApiException {
+ // 初始化SDK
+ AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
+
+ // 构造请求参数以调用接口
+ AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest();
+ AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel();
+
+ // uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
+ // model.setAlipayUserId("2088301409188095");
+
+ // 设置支付宝openId
+ model.setAlipayOpenId("061P6NAblcWDWJoDRxSVvOYz-ufp-3wQaA4E_szQyMFTXse");
+
+ // 设置查询的账号类型
+ model.setAccountType("ACCTRANS_ACCOUNT");
+
+ request.setBizModel(model);
+ AlipayFundAccountQueryResponse response = alipayClient.execute(request);
+ System.out.println(response.getBody());
+
+ if (response.isSuccess()) {
+ System.out.println("调用成功");
+ } else {
+ System.out.println("调用失败");
+ // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+ // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+ // System.out.println(diagnosisUrl);
+ }
+ }
+
+// public static void main(String[] args) throws AlipayApiException {
+// String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0=";
+// CertAlipayRequest alipayConfig = new CertAlipayRequest();
+// alipayConfig.setPrivateKey(privateKey);
+// alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
+// alipayConfig.setAppId("9021000135682614");
+// alipayConfig.setCharset("UTF-8");
+// alipayConfig.setSignType("RSA2");
+// alipayConfig.setEncryptor("");
+// alipayConfig.setFormat("json");
+// alipayConfig.setCertContent("<-- 请填写您的应用公钥证书内容字符串 -->");
+// alipayConfig.setAlipayPublicCertContent("<-- 请填写您的支付宝公钥证书内容字符串 -->");
+// alipayConfig.setRootCertContent("-----BEGIN CERTIFICATE-----\r\nMIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG\r\nEwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw\r\nMzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO\r\nUkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE\r\nMPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT\r\nV7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti\r\nW/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ\r\nMxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b\r\n53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI\r\npDoiVhsLwg==\r\n-----END CERTIFICATE-----\r\n\r\n-----BEGIN CERTIFICATE-----\r\nMIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE\r\nBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj\r\nYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj\r\nYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0\r\nMFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV\r\nBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j\r\naWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF\r\nAAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk\r\nrUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2\r\nxAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp\r\ndRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6\r\nvSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl\r\nYUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1\r\nPbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H\r\nDtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98\r\nSZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG\r\nPsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe\r\n9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC\r\nAwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90\r\ntATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy\r\nnOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf\r\ntJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq\r\nJSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3\r\nIODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW\r\n05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41\r\nT0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI\r\nkkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop\r\nPKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N\r\n1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y\r\njXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02\r\n77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi\r\nkT9qhqn+lw==\r\n-----END CERTIFICATE-----\r\n\r\n-----BEGIN CERTIFICATE-----\r\nMIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG\r\nEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh\r\ndGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh\r\ndGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0\r\nWjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE\r\nCwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp\r\nYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA\r\nIgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU\r\nWP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt\r\nrpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ\r\n4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2\r\nzVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg\r\nwHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH\r\nRglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA==\r\n-----END CERTIFICATE-----\r\n\r\n-----BEGIN CERTIFICATE-----\r\nMIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF\r\nBQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM\r\nE0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg\r\nMiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq\r\nMQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp\r\nbmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv\r\nb3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV\r\nnJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5\r\n4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg\r\nwykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw\r\nWktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN\r\nz+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g\r\nKgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA\r\nuTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF\r\nMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp\r\nemMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3\r\nU8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I\r\nUugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn\r\nDJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU\r\n1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX\r\nYf4Zr0fJsGuv\r\n-----END CERTIFICATE-----");
+// // 如果不使用content的模式,那么这里需要自行设置文件的绝对路径
+// // alipayConfig.setCertPath("cert的绝对路径");
+// // alipayConfig.setAlipayPublicCertPath("AlipayPublicCertPath的绝对路径");
+// // alipayConfig.setRootCertPath("RootCertPath的绝对路径");
+// AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+// AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
+// AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
+// model.setOutBizNo("201806300001");
+// model.setTransAmount("23.00");
+// model.setProductCode("TRANS_ACCOUNT_NO_PWD");
+// Participant payeeInfo = new Participant();
+// BankcardExtInfo bankcardExtInfo = new BankcardExtInfo();
+// bankcardExtInfo.setInstName("招商银行");
+// bankcardExtInfo.setAccountType("1");
+// payeeInfo.setBankcardExtInfo(bankcardExtInfo);
+// model.setPayeeInfo(payeeInfo);
+// request.setBizModel(model);
+// AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
+// System.out.println(response.getBody());
+// if (response.isSuccess()) {
+// System.out.println("调用成功");
+// } else {
+// System.out.println("调用失败");
+// // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
+// // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
+// // System.out.println(diagnosisUrl);
+// }
+// }
+
+ private AlipayConfig getAlipayConfig() {
+ String privateKey = aliConfig.getPrivateKey();
+ String alipayPublicKey = aliConfig.getPublicKey();
+ AlipayConfig alipayConfig = new AlipayConfig();
+ alipayConfig.setServerUrl(aliConfig.getGatewayUrl());
+ alipayConfig.setAppId(aliConfig.getAppId());
+ alipayConfig.setPrivateKey(privateKey);
+ alipayConfig.setFormat("json");
+ alipayConfig.setAlipayPublicKey(alipayPublicKey);
+ alipayConfig.setCharset("UTF-8");
+ alipayConfig.setSignType("RSA2");
+ return alipayConfig;
+ }
}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java
index 918f87b..2aada84 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/OrderTradeController.java
@@ -118,9 +118,9 @@ public class OrderTradeController extends BaseController {
String type = orderTradeDto.getType();
- if ("member".equals(type)) {
+ if ("member".equalsIgnoreCase(type)) {
qrUrl = aliPayIntegration.memberPay(orderTradeDto);
- } else if ("points".equals(type)) {
+ } else if ("points".equalsIgnoreCase(type)) {
qrUrl = aliPayIntegration.pointsPay(orderTradeDto.getPaymentAmount());
}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/WxPay/WxPayController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/WxPay/WxPayController.java
new file mode 100644
index 0000000..ec2efe6
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/WxPay/WxPayController.java
@@ -0,0 +1,65 @@
+package com.mcwl.web.controller.pay.WxPay;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.mcwl.web.controller.pay.WxPay.util.PayUtil;
+import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
+import org.springframework.web.bind.annotation.*;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 微信支付
+ *
+ * @author DaiZibo
+ * @date 2025/1/6
+ * @apiNote
+ */
+
+
+@RestController
+@RequestMapping(value = "/wx/pay")
+public class WxPayController {
+
+ /**
+ * 预支付下单
+ *
+ * @param orderSn 订单号
+ * @param total 分
+ * @param description 描述
+ */
+ @GetMapping(value = "/getPay")
+ public String getPay(String orderSn, int total, String description) {
+ PayUtil payUtil = new PayUtil();
+ try {
+ return payUtil.requestwxChatPay(orderSn, total, description, "oYgFI91D00GpCwccdnKDR4KNxI4k");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // 支付回调
+ @PostMapping(value = "/returnNotify")
+ public Map returnNotify(@RequestBody JSONObject jsonObject) {
+ // v3 私钥
+ String key = "xxxxx";
+ String json = jsonObject.toString();
+ String associated_data = (String) JSONUtil.getByPath(JSONUtil.parse(json), "resource.associated_data");
+ String ciphertext = (String) JSONUtil.getByPath(JSONUtil.parse(json), "resource.ciphertext");
+ String nonce = (String) JSONUtil.getByPath(JSONUtil.parse(json), "resource.nonce");
+ try {
+ String decryptData = new AesUtil(key.getBytes(StandardCharsets.UTF_8)).decryptToString(associated_data.getBytes(StandardCharsets.UTF_8), nonce.getBytes(StandardCharsets.UTF_8), ciphertext);
+ System.out.println("decryptData = " + decryptData);
+ //TODO 业务校验
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ HashMap stringStringHashMap = new HashMap<>();
+ stringStringHashMap.put("code", "200");
+ stringStringHashMap.put("message", "返回成功");
+ // 返回这个说明应答成功
+ return stringStringHashMap;
+ }
+}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductLikeController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductLikeController.java
index 50e18fd..abcca5c 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductLikeController.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductLikeController.java
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
* @apiNote
*/
-@RequestMapping("like")
+@RequestMapping("/like")
@RestController
public class MallProductLikeController {
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java
new file mode 100644
index 0000000..37d5f20
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java
@@ -0,0 +1,85 @@
+package com.mcwl.web.controller.resource;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.common.utils.oss.OssUtil;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageCommentLike;
+import com.mcwl.resource.domain.ModelImageLike;
+import com.mcwl.resource.domain.dto.ModelImageCommentRes;
+import com.mcwl.resource.domain.dto.ModelImageRes;
+import com.mcwl.resource.service.ModelImageCommentLikeService;
+import com.mcwl.resource.service.ModelImageLikeService;
+import com.mcwl.resource.service.ModelImageService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+import java.util.Objects;
+
+@RestController
+@RequestMapping("/modelImage")
+@RequiredArgsConstructor
+public class ModelImageController {
+
+ private final ModelImageService modelImageService;
+
+ private final ModelImageLikeService modelImageLikeService;
+
+ private final ModelImageCommentLikeService modelImageCommentLikeService;
+
+
+ /**
+ * 图片上传
+ */
+ @GetMapping("/upload")
+ public AjaxResult upload(MultipartFile file) {
+
+ return AjaxResult.success("上传成功", OssUtil.uploadMultipartFile(file));
+
+ }
+
+
+ /**
+ * 图片发布
+ */
+ @PostMapping("/publish")
+ public AjaxResult publish(@RequestBody ModelImageRes modelImageRes) {
+ modelImageService.publish(modelImageRes);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 图片点赞/取消
+ */
+ @GetMapping("/imageLike/{imageId}")
+ public AjaxResult like(@PathVariable Long imageId) {
+ modelImageLikeService.like(imageId);
+ return AjaxResult.success();
+ }
+
+
+ /**
+ * 图片评论发布
+ */
+ @PostMapping("/comment")
+ public AjaxResult comment(@RequestBody ModelImageCommentRes modelImageCommentRes) {
+ modelImageService.comment(modelImageCommentRes);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 图片评论点赞/取消
+ */
+ @GetMapping("/commentLike/{commentId}")
+ public AjaxResult commentLike(@PathVariable Long commentId) {
+ modelImageCommentLikeService.like(commentId);
+ return AjaxResult.error();
+ }
+
+
+
+
+}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/WorkFlowController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/WorkFlowController.java
new file mode 100644
index 0000000..7442adf
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/WorkFlowController.java
@@ -0,0 +1,73 @@
+package com.mcwl.web.controller.resource;
+
+import com.mcwl.common.core.controller.BaseController;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.web.controller.common.OssUtil;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * 工作流
+ * @Author:ChenYan
+ * @Project:McWl
+ * @Package:com.mcwl.web.controller.resource
+ * @Filename:MallProductController
+ * @Description 商品
+ * @Date:2024/12/31 10:48
+ */
+
+@RestController
+@RequestMapping("/WorkFlow")
+public class WorkFlowController extends BaseController {
+
+
+
+ /***
+ *
+ * 图片
+ * @param file
+ * @return
+ */
+ @PostMapping("/file")
+ public AjaxResult Malifile(@RequestParam MultipartFile file){
+
+ String s = OssUtil.uploadMultipartFile(file);
+ return AjaxResult.success(s);
+ }
+
+
+ /***
+ *
+ * zip
+ * @param file
+ * @return
+ */
+ @PostMapping("/zipUrlFile")
+ public AjaxResult zipUrlFile(@RequestParam MultipartFile file){
+ String s = OssUtil.uploadMultipartFile(file);
+ return AjaxResult.success(s);
+ }
+
+
+
+
+ /***
+ *
+ * 下载zip
+ * @param file
+ * @return
+ */
+ @PostMapping("/zipUrl")
+ public AjaxResult zipUrl(@RequestParam MultipartFile file){
+ String s = OssUtil.uploadMultipartFile(file);
+ return AjaxResult.success(s);
+ }
+
+
+// @PostMapping("/add")
+// public AjaxResult
+}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java
new file mode 100644
index 0000000..31dde5b
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java
@@ -0,0 +1,57 @@
+package com.mcwl.web.controller.system;
+
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.system.domain.vo.AdviceVo;
+import com.mcwl.system.service.ISysAdviceService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("system/advice")
+@RequiredArgsConstructor
+public class SysAdviceController {
+
+ private final ISysAdviceService sysAdviceService;
+
+ /**
+ * 根据当前用户获取新消息提醒
+ */
+ @GetMapping("getUserNewMsg")
+ public AjaxResult getUserNewMsg() {
+ List adviceVo = sysAdviceService.getUserNewMsg();
+ return AjaxResult.success(adviceVo);
+ }
+
+ /**
+ * 根据当前用户获取系统公告
+ */
+ @GetMapping("getUserSystemNotice")
+ public AjaxResult getUserSystemNotice() {
+ List adviceVo = sysAdviceService.getUserSystemNotice();
+ return AjaxResult.success(adviceVo);
+ }
+
+ /**
+ * 根据当前用户获取所有消息
+ */
+ @GetMapping("getUserAllMsg")
+ public AjaxResult getUserAllMsg() {
+ List adviceVo = sysAdviceService.getUserAllMsg();
+ return AjaxResult.success(adviceVo);
+ }
+
+ /**
+ * 获取所有消息
+ */
+ @GetMapping("getAllMsg")
+ public AjaxResult getAllMsg() {
+ List adviceVo = sysAdviceService.getAllMsg();
+ return AjaxResult.success(adviceVo);
+ }
+
+
+}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysUserController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysUserController.java
index 236581e..77ed1a6 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysUserController.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysUserController.java
@@ -269,4 +269,16 @@ public class SysUserController extends BaseController
userService.updateUserInfo(sysUser);
return AjaxResult.success("修改成功");
}
+
+ /**
+ * 实名认证
+ * @param sysUser
+ * @return
+ */
+ @PostMapping("/updateIdCard")
+ public AjaxResult updateIdCard(@RequestBody SysUser sysUser){
+
+ return userService.updateIdCard(sysUser);
+ }
+
}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/WXController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/WXController.java
index 199c60c..014be8a 100644
--- a/mcwl-admin/src/main/java/com/mcwl/web/controller/system/WXController.java
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/system/WXController.java
@@ -14,12 +14,13 @@ import com.mcwl.system.domain.SysUserThirdAccount;
import com.mcwl.system.service.ISysUserService;
import com.mcwl.system.service.ISysUserThirdAccountService;
import com.mcwl.system.service.IWXService;
-import com.mcwl.web.controller.common.OssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.IOException;
@@ -59,13 +60,6 @@ public class WXController {
@Resource
private SysPermissionService permissionService;
- @Anonymous
- @PostMapping("/test")
- public AjaxResult test(@RequestParam MultipartFile file){
-
- String s = OssUtil.uploadMultipartFile(file);
- return AjaxResult.success(s);
- }
/**
* 扫码登录用uuid生成
diff --git a/mcwl-admin/src/main/resources/application.yml b/mcwl-admin/src/main/resources/application.yml
index f36a688..2d9736b 100644
--- a/mcwl-admin/src/main/resources/application.yml
+++ b/mcwl-admin/src/main/resources/application.yml
@@ -183,5 +183,5 @@ mall:
appId: 9021000135682614
privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0=
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB
- notifyUrl: https://702bc39c.r27.cpolar.top/web/pay/notify
+ notifyUrl: https://253d7236.r27.cpolar.top/web/pay/notify
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
diff --git a/mcwl-common/pom.xml b/mcwl-common/pom.xml
index 84f00c1..f56a827 100644
--- a/mcwl-common/pom.xml
+++ b/mcwl-common/pom.xml
@@ -341,7 +341,26 @@
3.5.0
-
+
+
+
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.2.1
+
+
+ org.apache.httpcomponents
+ httpcore
+ 4.2.1
+
+
+ commons-lang
+ commons-lang
+ 2.6
+
diff --git a/mcwl-common/src/main/java/com/mcwl/common/constant/CacheConstants.java b/mcwl-common/src/main/java/com/mcwl/common/constant/CacheConstants.java
index aa05d09..8182e6b 100644
--- a/mcwl-common/src/main/java/com/mcwl/common/constant/CacheConstants.java
+++ b/mcwl-common/src/main/java/com/mcwl/common/constant/CacheConstants.java
@@ -47,5 +47,10 @@ public class CacheConstants
*/
public static final String WX_OPENID_KEY = "wx_openid:";
+ /**
+ * 类型
+ */
public static final String WE_CHAT = "we_chat";
+
+ public static final String ID_CARD_COUNT = "id_card_count:";
}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/core/domain/entity/SysUser.java b/mcwl-common/src/main/java/com/mcwl/common/core/domain/entity/SysUser.java
index c949b91..ac6ea89 100644
--- a/mcwl-common/src/main/java/com/mcwl/common/core/domain/entity/SysUser.java
+++ b/mcwl-common/src/main/java/com/mcwl/common/core/domain/entity/SysUser.java
@@ -58,9 +58,6 @@ public class SysUser extends BaseEntity
/** 密码 */
private String password;
- /** 钱包 */
- private Long wallet;
-
/** 帐号状态(0正常 1停用) */
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
private String status;
@@ -98,6 +95,16 @@ public class SysUser extends BaseEntity
/** 简介 */
private String brief;
+ /**
+ * 姓名
+ */
+ private String name;
+
+ /**
+ * 身份证
+ */
+ private String idCard;
+
/**
* 邀请人id
*/
@@ -108,6 +115,7 @@ public class SysUser extends BaseEntity
*/
private Double freePoints;
+
public SysUser()
{
@@ -241,6 +249,22 @@ public class SysUser extends BaseEntity
return delFlag;
}
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIdCard() {
+ return idCard;
+ }
+
+ public void setIdCard(String idCard) {
+ this.idCard = idCard;
+ }
+
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
@@ -324,7 +348,6 @@ public class SysUser extends BaseEntity
this.brief = brief;
}
-
public Long getInviterUserId() {
return inviterUserId;
}
@@ -363,6 +386,10 @@ public class SysUser extends BaseEntity
", postIds=" + Arrays.toString(postIds) +
", roleId=" + roleId +
", brief='" + brief + '\'' +
+ ", name='" + name + '\'' +
+ ", idCard='" + idCard + '\'' +
+ ", inviterUserId=" + inviterUserId +
+ ", freePoints=" + freePoints +
'}';
}
}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/utils/HttpUtils.java b/mcwl-common/src/main/java/com/mcwl/common/utils/HttpUtils.java
new file mode 100644
index 0000000..ee016fe
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/utils/HttpUtils.java
@@ -0,0 +1,328 @@
+package com.mcwl.common.utils;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.scheme.Scheme;
+import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.ssl.SSLSocketFactory;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 校验实名认证信息
+ * @author DaiZibo
+ * @date 2025/1/8
+ * @apiNote
+ */
+
+public class HttpUtils {
+
+ /**
+ * get
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doGet(String host, String path, String method,
+ Map headers,
+ Map querys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpGet request = new HttpGet(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * post form
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param bodys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map headers,
+ Map querys,
+ Map bodys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (bodys != null) {
+ List nameValuePairList = new ArrayList();
+
+ for (String key : bodys.keySet()) {
+ nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
+ }
+ UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
+ formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
+ request.setEntity(formEntity);
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Post String
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map headers,
+ Map querys,
+ String body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (StringUtils.isNotBlank(body)) {
+ request.setEntity(new StringEntity(body, "utf-8"));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Post stream
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPost(String host, String path, String method,
+ Map headers,
+ Map querys,
+ byte[] body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPost request = new HttpPost(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (body != null) {
+ request.setEntity(new ByteArrayEntity(body));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Put String
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPut(String host, String path, String method,
+ Map headers,
+ Map querys,
+ String body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPut request = new HttpPut(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (StringUtils.isNotBlank(body)) {
+ request.setEntity(new StringEntity(body, "utf-8"));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Put stream
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @param body
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doPut(String host, String path, String method,
+ Map headers,
+ Map querys,
+ byte[] body)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpPut request = new HttpPut(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ if (body != null) {
+ request.setEntity(new ByteArrayEntity(body));
+ }
+
+ return httpClient.execute(request);
+ }
+
+ /**
+ * Delete
+ *
+ * @param host
+ * @param path
+ * @param method
+ * @param headers
+ * @param querys
+ * @return
+ * @throws Exception
+ */
+ public static HttpResponse doDelete(String host, String path, String method,
+ Map headers,
+ Map querys)
+ throws Exception {
+ HttpClient httpClient = wrapClient(host);
+
+ HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
+ for (Map.Entry e : headers.entrySet()) {
+ request.addHeader(e.getKey(), e.getValue());
+ }
+
+ return httpClient.execute(request);
+ }
+
+ private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException {
+ StringBuilder sbUrl = new StringBuilder();
+ sbUrl.append(host);
+ if (!StringUtils.isBlank(path)) {
+ sbUrl.append(path);
+ }
+ if (null != querys) {
+ StringBuilder sbQuery = new StringBuilder();
+ for (Map.Entry query : querys.entrySet()) {
+ if (0 < sbQuery.length()) {
+ sbQuery.append("&");
+ }
+ if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
+ sbQuery.append(query.getValue());
+ }
+ if (!StringUtils.isBlank(query.getKey())) {
+ sbQuery.append(query.getKey());
+ if (!StringUtils.isBlank(query.getValue())) {
+ sbQuery.append("=");
+ sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
+ }
+ }
+ }
+ if (0 < sbQuery.length()) {
+ sbUrl.append("?").append(sbQuery);
+ }
+ }
+
+ return sbUrl.toString();
+ }
+
+ private static HttpClient wrapClient(String host) {
+ HttpClient httpClient = new DefaultHttpClient();
+ if (host.startsWith("https://")) {
+ sslClient(httpClient);
+ }
+
+ return httpClient;
+ }
+
+ private static void sslClient(HttpClient httpClient) {
+ try {
+ SSLContext ctx = SSLContext.getInstance("TLS");
+ X509TrustManager tm = new X509TrustManager() {
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] xcs, String str) {
+
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] xcs, String str) {
+
+ }
+ };
+ ctx.init(null, new TrustManager[]{tm}, null);
+ SSLSocketFactory ssf = new SSLSocketFactory(ctx);
+ ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
+ ClientConnectionManager ccm = httpClient.getConnectionManager();
+ SchemeRegistry registry = ccm.getSchemeRegistry();
+ registry.register(new Scheme("https", 443, ssf));
+ } catch (KeyManagementException ex) {
+ throw new RuntimeException(ex);
+ } catch (NoSuchAlgorithmException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/utils/VerifyCard.java b/mcwl-common/src/main/java/com/mcwl/common/utils/VerifyCard.java
new file mode 100644
index 0000000..916afef
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/utils/VerifyCard.java
@@ -0,0 +1,55 @@
+package com.mcwl.common.utils;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 身份证校验
+ *
+ * @author DaiZibo
+ * @date 2025/1/8
+ * @apiNote
+ */
+public class VerifyCard {
+
+ public static String idCard(String name, String card) {
+ String host = "https://kzidcardv1.market.alicloudapi.com";
+ String path = "/api-mall/api/id_card/check";
+ String method = "POST";
+ String appcode = "680661d47eb740bcb85472cec9774ecf";
+ Map headers = new HashMap();
+ //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
+ headers.put("Authorization", "APPCODE " + appcode);
+ //根据API的要求,定义相对应的Content-Type
+ headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+ Map querys = new HashMap();
+ Map bodys = new HashMap();
+ bodys.put("name", name);
+ bodys.put("idcard", card);
+
+
+ try {
+ /**
+ * 重要提示如下:
+ * HttpUtils请从
+ * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
+ * 下载
+ *
+ * 相应的依赖请参照
+ * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
+ */
+ HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
+ System.out.println(response.toString());
+ //获取response的body
+ //System.out.println(EntityUtils.toString(response.getEntity()));
+ return EntityUtils.toString(response.getEntity());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java
index b54de54..0557381 100644
--- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java
+++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java
@@ -1,8 +1,14 @@
package com.mcwl.memberCenter.consumer;
import com.mcwl.common.constant.QueueConstants;
+import com.mcwl.common.core.domain.entity.SysUser;
+import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.memberCenter.domain.Member;
import com.mcwl.memberCenter.service.MemberService;
+import com.mcwl.system.domain.SysAdvice;
+import com.mcwl.system.domain.enums.AdviceEnum;
+import com.mcwl.system.service.ISysAdviceService;
+import com.mcwl.system.service.ISysUserService;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import lombok.RequiredArgsConstructor;
@@ -11,6 +17,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.io.IOException;
+import java.util.Date;
/**
* 积分消费者
@@ -20,16 +27,27 @@ import java.io.IOException;
@RequiredArgsConstructor
public class EmptyPointsRemindConsumer {
- private final MemberService memberService;
+ private final ISysAdviceService sysAdviceService;
+
+ private final ISysUserService sysUserService;
/**
* 积分清零提醒
*/
@RabbitListener(queues = QueueConstants.EMPTY_POINTS_REMIND_QUEUE, ackMode = "MANUAL")
- public void emptyPointsRemind(Member Member, Channel channel, Message message) {
+ public void emptyPointsRemind(Member member, Channel channel, Message message) {
try {
- // TODO 发送短信提醒用户积分即将清零
- log.info("获取到积分清零提醒的数据:{}", Member);
+ SysUser sysUser = sysUserService.selectUserByUserName("admin");
+ SysAdvice sysAdvice = new SysAdvice();
+ sysAdvice.setSenderId(sysUser.getUserId());
+ sysAdvice.setReceiverId(member.getUserId());
+ sysAdvice.setType(AdviceEnum.NEW_MESSAGE_REMIND);
+ sysAdvice.setTitle("积分清零提醒");
+ sysAdvice.setContent("您的积分即将清零,请及时消费");
+ sysAdvice.setCreateBy(sysUser.getUserName());
+ sysAdvice.setUpdateBy(sysUser.getUserName());
+ sysAdvice.setUpdateTime(new Date());
+ sysAdviceService.save(sysAdvice);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
log.error("处理积分清零提醒消息时出错: {}", e.getMessage(), e);
diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java
index 02a0085..e39bd00 100644
--- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java
+++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java
@@ -1,7 +1,12 @@
package com.mcwl.memberCenter.consumer;
import com.mcwl.common.constant.QueueConstants;
+import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.memberCenter.domain.Member;
+import com.mcwl.system.domain.SysAdvice;
+import com.mcwl.system.domain.enums.AdviceEnum;
+import com.mcwl.system.service.ISysAdviceService;
+import com.mcwl.system.service.ISysUserService;
import com.rabbitmq.client.Channel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -19,6 +24,9 @@ import java.io.IOException;
@RequiredArgsConstructor
public class MemberBillingConsumer {
+ private final ISysAdviceService sysAdviceService;
+
+ private final ISysUserService sysUserService;
/**
* 会员账单
@@ -27,7 +35,14 @@ public class MemberBillingConsumer {
public void memberBillingQueue(Member member, Channel channel, Message message) {
try {
// TODO 发送短信提醒用户会员账单,如果支付成功,更新last_payment_date,并重新计算end_date(start_date + 1个月)
- log.info("获取到会员账单的数据:{}", member);
+ SysUser sysUser = sysUserService.selectUserByUserName("admin");
+ SysAdvice sysAdvice = new SysAdvice();
+ sysAdvice.setSenderId(sysUser.getUserId());
+ sysAdvice.setReceiverId(member.getUserId());
+ sysAdvice.setType(AdviceEnum.NEW_MESSAGE_REMIND);
+ sysAdvice.setTitle("会员账单");
+ sysAdvice.setContent("您的会员即将到期,请及时支付");
+ sysAdviceService.save(sysAdvice);
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
log.error("处理会员账单消息时出错: {}", e.getMessage(), e);
diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java
index f237821..92f79ad 100644
--- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java
+++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java
@@ -7,20 +7,14 @@ import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.exception.ServiceException;
import com.mcwl.common.utils.SecurityUtils;
-import com.mcwl.memberCenter.domain.MemberBenefit;
-import com.mcwl.memberCenter.domain.MemberLevel;
-import com.mcwl.memberCenter.domain.Member;
-import com.mcwl.memberCenter.domain.Promotion;
+import com.mcwl.memberCenter.domain.*;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import com.mcwl.memberCenter.enums.MemberEnum;
import com.mcwl.memberCenter.enums.MemberPeriodicEnum;
import com.mcwl.memberCenter.enums.PromotionEnum;
import com.mcwl.memberCenter.mapper.MemberMapper;
import com.mcwl.memberCenter.mapper.PromotionMapper;
-import com.mcwl.memberCenter.service.MemberBenefitService;
-import com.mcwl.memberCenter.service.MemberLevelService;
-import com.mcwl.memberCenter.service.MemberService;
-import com.mcwl.memberCenter.service.PromotionService;
+import com.mcwl.memberCenter.service.*;
import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -41,6 +35,8 @@ public class MemberServiceImpl extends ServiceImpl impleme
private final PromotionMapper promotionMapper;
+ private final MemberConsumeService memberConsumeService;
+
@Override
public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod, Long promotionId) {
if (userId == null) {
@@ -195,16 +191,19 @@ public class MemberServiceImpl extends ServiceImpl impleme
throw new ServiceException("积分不足");
}
+ // 保存消费记录
+ saveMemberConsume(consumePoints, userId, points);
+
// 先扣除会员的积分
if (member != null) {
double mp = member.getPoints() - consumePoints;
if (mp >= 0) {
member.setPoints(mp);
+ consumePoints = 0.0;
} else {
member.setPoints(0D);
consumePoints = consumePoints - memberPoints;
}
- member.setPoints(mp);
baseMapper.updateById(member);
}
// consumePoints有剩余再扣除用户的积分
@@ -215,6 +214,18 @@ public class MemberServiceImpl extends ServiceImpl impleme
}
+ private void saveMemberConsume(Double consumePoints, Long userId, double points) {
+ MemberConsume memberConsume = new MemberConsume();
+ memberConsume.setUserId(userId);
+ memberConsume.setConsumePoints(consumePoints);
+ memberConsume.setRemainingPoints(points - consumePoints);
+ memberConsume.setConsumeTime(new Date());
+ memberConsume.setCreateBy(SecurityUtils.getUsername());
+ memberConsume.setUpdateBy(SecurityUtils.getUsername());
+ memberConsume.setUpdateTime(new Date());
+ memberConsumeService.save(memberConsume);
+ }
+
private List getUseUserMember(Long userId) {
// startDate 小于等于当前时间、endDate 大于等于当前时间
// subscriptionStatus 不为 "过期" 或 "待支付"
diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java
index a2dcadf..a02bc2d 100644
--- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java
+++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java
@@ -2,13 +2,17 @@ package com.mcwl.memberCenter.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mcwl.common.constant.QueueConstants;
+import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.memberCenter.domain.Member;
import com.mcwl.memberCenter.enums.MemberEnum;
import com.mcwl.memberCenter.service.MemberService;
+import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -19,6 +23,8 @@ public class UserMemberTask {
private final MemberService memberService;
+ private final ISysUserService sysUserService;
+
private final RabbitTemplate rabbitTemplate;
@@ -41,14 +47,23 @@ public class UserMemberTask {
/**
* 清空积分 每月月底前两天
*/
+ @Transactional
public void emptyPointsTsk() {
List memberList = memberService.getUseUserMember();
+ List userIdList = new ArrayList<>();
+ List sysUserList = new ArrayList<>();
if (memberList == null || memberList.isEmpty()) {
return;
}
for (Member member : memberList) {
member.setPoints(0.0);
member.setUpdateTime(new Date());
+ userIdList.add(member.getUserId());
+ }
+ sysUserList = sysUserService.listByIds(userIdList);
+ for (SysUser sysUser : sysUserList) {
+ sysUser.setFreePoints(0.0);
+ sysUserService.updateUser(sysUser);
}
memberService.updateBatchById(memberList);
}
diff --git a/mcwl-pay/pom.xml b/mcwl-pay/pom.xml
index 5dc7363..ae0612e 100644
--- a/mcwl-pay/pom.xml
+++ b/mcwl-pay/pom.xml
@@ -53,6 +53,12 @@
com.mcwl
mcwl-system
+
+ com.mcwl
+ mcwl-resource
+ 3.8.8
+ compile
+
diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java
new file mode 100644
index 0000000..95ebbf6
--- /dev/null
+++ b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java
@@ -0,0 +1,22 @@
+package com.mcwl.pay.config;
+
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+@Data
+@Configuration
+@Component
+public class AliConfig {
+ @Value("${mall.mgt.aliPayConfig.appId}")
+ private String appId;
+ @Value("${mall.mgt.aliPayConfig.privateKey}")
+ private String privateKey;
+ @Value("${mall.mgt.aliPayConfig.publicKey}")
+ private String publicKey;
+ @Value("${mall.mgt.aliPayConfig.gatewayUrl}")
+ private String gatewayUrl;
+}
diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/domain/enums/OrderTypeEnum.java b/mcwl-pay/src/main/java/com/mcwl/pay/domain/enums/OrderTypeEnum.java
deleted file mode 100644
index 89830e5..0000000
--- a/mcwl-pay/src/main/java/com/mcwl/pay/domain/enums/OrderTypeEnum.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mcwl.pay.domain.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-
-@Getter
-@AllArgsConstructor
-public enum OrderTypeEnum {
-
- POINTS("points"),
- MEMBER("member");
-
- private final String name;
-
-}
diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java
index 10612f2..5957d7b 100644
--- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java
+++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java
@@ -5,17 +5,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.common.domain.IdsParam;
+import com.mcwl.common.utils.DateUtils;
import com.mcwl.common.utils.StringUtils;
+import com.mcwl.memberCenter.domain.RechargeRecord;
+import com.mcwl.memberCenter.service.MemberService;
+import com.mcwl.memberCenter.service.RechargeRecordService;
+import com.mcwl.myInvitation.domain.Commission;
+import com.mcwl.myInvitation.domain.Consume;
+import com.mcwl.myInvitation.service.CommissionService;
+import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.pay.domain.OrderTrade;
-import com.mcwl.pay.domain.PaymentResult;
-import com.mcwl.pay.domain.enums.PaymentStatus;
import com.mcwl.pay.mapper.OrderTradeMapper;
import com.mcwl.pay.service.OrderTradeService;
+import com.mcwl.resource.domain.enums.OrderTypeEnum;
+import com.mcwl.system.service.ISysUserService;
+import com.mcwl.system.service.impl.SysUserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
-import java.util.Collections;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
/**
* @Author:ChenYan
@@ -36,12 +46,6 @@ public class OrderTradeServiceImpl extends ServiceImpl {
+ ModelImageCommentLike getLikeImageComment(Long userId, Long commentId);
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentMapper.java
new file mode 100644
index 0000000..a883ace
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentMapper.java
@@ -0,0 +1,10 @@
+package com.mcwl.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageComment;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ModelImageCommentMapper extends BaseMapper {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageLikeMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageLikeMapper.java
new file mode 100644
index 0000000..3c4bb13
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageLikeMapper.java
@@ -0,0 +1,11 @@
+package com.mcwl.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageLike;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ModelImageLikeMapper extends BaseMapper {
+ ModelImageLike getLikeImage(Long userId, Long imageId);
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageMapper.java
new file mode 100644
index 0000000..76579d0
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageMapper.java
@@ -0,0 +1,9 @@
+package com.mcwl.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.resource.domain.ModelImage;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ModelImageMapper extends BaseMapper {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowMapper.java
new file mode 100644
index 0000000..b233fe7
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowMapper.java
@@ -0,0 +1,18 @@
+package com.mcwl.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.resource.domain.WorkFlow;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工作流
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+@Mapper
+public interface WorkFlowMapper extends BaseMapper {
+
+
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowVersionMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowVersionMapper.java
new file mode 100644
index 0000000..3a91407
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowVersionMapper.java
@@ -0,0 +1,16 @@
+package com.mcwl.resource.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.resource.domain.WorkFlowVersion;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工作流版本 业务实现层
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+@Mapper
+public interface WorkFlowVersionMapper extends BaseMapper {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java
new file mode 100644
index 0000000..95f1fdc
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java
@@ -0,0 +1,11 @@
+package com.mcwl.resource.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.resource.domain.ModelImageComment;
+import com.mcwl.resource.domain.ModelImageCommentLike;
+import com.mcwl.resource.domain.dto.ModelImageCommentRes;
+
+
+public interface ModelImageCommentLikeService extends IService {
+ void like(Long commentId);
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentService.java
new file mode 100644
index 0000000..e1ad5b2
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentService.java
@@ -0,0 +1,9 @@
+package com.mcwl.resource.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageComment;
+
+
+public interface ModelImageCommentService extends IService {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageLikeService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageLikeService.java
new file mode 100644
index 0000000..6a34b9c
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageLikeService.java
@@ -0,0 +1,11 @@
+package com.mcwl.resource.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageLike;
+
+
+public interface ModelImageLikeService extends IService {
+
+ void like(Long imageId);
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java
new file mode 100644
index 0000000..2e79d86
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java
@@ -0,0 +1,26 @@
+package com.mcwl.resource.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelProduct;
+import com.mcwl.resource.domain.dto.ModelImageCommentRes;
+import com.mcwl.resource.domain.dto.ModelImageRes;
+import com.mcwl.resource.domain.vo.MallProductVo;
+
+
+public interface ModelImageService extends IService {
+
+ /**
+ * 发布
+ * @param modelImageRes 发布对象
+ */
+ void publish(ModelImageRes modelImageRes);
+
+ /**
+ * 评论
+ * @param modelImageCommentRes 评论对象
+ */
+ void comment(ModelImageCommentRes modelImageCommentRes);
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowService.java
new file mode 100644
index 0000000..3a60ffc
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowService.java
@@ -0,0 +1,11 @@
+package com.mcwl.resource.service;
+
+/**
+ * 工作流 业务层
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+public interface WorkFlowService {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowVersionService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowVersionService.java
new file mode 100644
index 0000000..da8fc1b
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowVersionService.java
@@ -0,0 +1,11 @@
+package com.mcwl.resource.service;
+
+/**
+ * 工作流版本 业务层
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+public interface WorkFlowVersionService {
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java
new file mode 100644
index 0000000..1e7c014
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java
@@ -0,0 +1,66 @@
+package com.mcwl.resource.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.common.exception.ServiceException;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageComment;
+import com.mcwl.resource.domain.ModelImageCommentLike;
+import com.mcwl.resource.domain.ModelImageLike;
+import com.mcwl.resource.domain.dto.ModelImageCommentRes;
+import com.mcwl.resource.mapper.ModelImageCommentLikeMapper;
+import com.mcwl.resource.mapper.ModelImageCommentMapper;
+import com.mcwl.resource.service.ModelImageCommentLikeService;
+import com.mcwl.resource.service.ModelImageCommentService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Objects;
+
+@Service
+@RequiredArgsConstructor
+public class ModelImageCommentLikeServiceImpl extends ServiceImpl implements ModelImageCommentLikeService {
+
+ private final ModelImageCommentMapper modelImageCommentMapper;
+
+ @Override
+ @Transactional
+ public void like(Long commentId) {
+ ModelImageComment modelImageComment = modelImageCommentMapper.selectById(commentId);
+ if (Objects.isNull(modelImageComment)) {
+ throw new ServiceException("该评论不存在");
+ }
+ Long userId = SecurityUtils.getUserId();
+ ModelImageCommentLike modelImageCommentLike = baseMapper.getLikeImageComment(userId, commentId);
+ if (Objects.nonNull(modelImageCommentLike)) {
+ if (Objects.equals(modelImageCommentLike.getDelFlag(), "0")) {
+ modelImageCommentLike.setDelFlag("1");
+ modelImageComment.setLikeNum(modelImageComment.getLikeNum() - 1);
+ } else {
+ modelImageCommentLike.setDelFlag("0");
+ modelImageComment.setLikeNum(modelImageComment.getLikeNum() + 1);
+ }
+ // 更新点赞记录
+ baseMapper.updateById(modelImageCommentLike);
+ // 更新图片评论点赞数
+ modelImageCommentMapper.updateById(modelImageComment);
+ return;
+ }
+
+ // 添加点赞记录
+ modelImageCommentLike = new ModelImageCommentLike();
+ modelImageCommentLike.setUserId(userId);
+ modelImageCommentLike.setModelImageCommentId(commentId);
+ modelImageCommentLike.setCreateBy(SecurityUtils.getUsername());
+ modelImageCommentLike.setUpdateBy(SecurityUtils.getUsername());
+ modelImageCommentLike.setUpdateTime(new Date());
+ baseMapper.insert(modelImageCommentLike);
+
+ // 更新图片点赞数
+ modelImageComment.setLikeNum(modelImageComment.getLikeNum() + 1);
+ modelImageCommentMapper.updateById(modelImageComment);
+ }
+
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentServiceImpl.java
new file mode 100644
index 0000000..c35b923
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentServiceImpl.java
@@ -0,0 +1,15 @@
+package com.mcwl.resource.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageComment;
+import com.mcwl.resource.mapper.ModelImageCommentMapper;
+import com.mcwl.resource.mapper.ModelImageMapper;
+import com.mcwl.resource.service.ModelImageCommentService;
+import com.mcwl.resource.service.ModelImageService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ModelImageCommentServiceImpl extends ServiceImpl implements ModelImageCommentService {
+
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageLikeServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageLikeServiceImpl.java
new file mode 100644
index 0000000..14fa2f3
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageLikeServiceImpl.java
@@ -0,0 +1,63 @@
+package com.mcwl.resource.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.common.exception.ServiceException;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageLike;
+import com.mcwl.resource.mapper.ModelImageLikeMapper;
+import com.mcwl.resource.mapper.ModelImageMapper;
+import com.mcwl.resource.service.ModelImageLikeService;
+import com.mcwl.resource.service.ModelImageService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.Objects;
+
+@Service
+@RequiredArgsConstructor
+public class ModelImageLikeServiceImpl extends ServiceImpl implements ModelImageLikeService {
+
+ private final ModelImageMapper modelImageMapper;
+
+ @Override
+ @Transactional
+ public void like(Long imageId) {
+ ModelImage modelImage = modelImageMapper.selectById(imageId);
+ if (Objects.isNull(modelImage)) {
+ throw new ServiceException("该图片不存在或已下架");
+ }
+ Long userId = SecurityUtils.getUserId();
+ ModelImageLike modelImageLike = baseMapper.getLikeImage(userId, imageId);
+ if (Objects.nonNull(modelImageLike)) {
+ if (Objects.equals(modelImageLike.getDelFlag(), "0")) {
+ modelImageLike.setDelFlag("1");
+ modelImage.setLikeNum(modelImage.getLikeNum() - 1);
+ } else {
+ modelImageLike.setDelFlag("0");
+ modelImage.setLikeNum(modelImage.getLikeNum() + 1);
+ }
+ // 更新点赞记录
+ baseMapper.updateById(modelImageLike);
+ // 更新图片点赞数
+ modelImageMapper.updateById(modelImage);
+ return;
+ }
+
+ // 添加点赞记录
+ modelImageLike = new ModelImageLike();
+ modelImageLike.setUserId(userId);
+ modelImageLike.setModelImageId(imageId);
+ modelImageLike.setCreateBy(SecurityUtils.getUsername());
+ modelImageLike.setUpdateBy(SecurityUtils.getUsername());
+ modelImageLike.setUpdateTime(new Date());
+ baseMapper.insert(modelImageLike);
+
+ // 更新图片点赞数
+ modelImage.setLikeNum(modelImage.getLikeNum() + 1);
+ modelImageMapper.updateById(modelImage);
+ }
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java
new file mode 100644
index 0000000..18222d6
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java
@@ -0,0 +1,70 @@
+package com.mcwl.resource.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.resource.domain.MallProductLike;
+import com.mcwl.resource.domain.ModelImage;
+import com.mcwl.resource.domain.ModelImageComment;
+import com.mcwl.resource.domain.ModelProduct;
+import com.mcwl.resource.domain.dto.ModelImageCommentRes;
+import com.mcwl.resource.domain.dto.ModelImageRes;
+import com.mcwl.resource.domain.vo.MallProductVo;
+import com.mcwl.resource.mapper.MallProductLikeMapper;
+import com.mcwl.resource.mapper.ModelImageCommentMapper;
+import com.mcwl.resource.mapper.ModelImageMapper;
+import com.mcwl.resource.service.MallProductLikeService;
+import com.mcwl.resource.service.MallProductService;
+import com.mcwl.resource.service.ModelImageCommentService;
+import com.mcwl.resource.service.ModelImageService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@RequiredArgsConstructor
+public class ModelImageServiceImpl extends ServiceImpl implements ModelImageService {
+
+ private final ModelImageCommentMapper modelImageCommentMapper;
+
+ private final ModelImageMapper modelImageMapper;
+
+ @Override
+ public void comment(ModelImageCommentRes modelImageCommentRes) {
+ Long parentId = modelImageCommentRes.getParentId();
+ ModelImageComment mic = modelImageCommentMapper.selectById(parentId);
+
+ if (Objects.nonNull(parentId) && Objects.isNull(mic)) {
+ return;
+ }
+
+ ModelImageComment modelImageComment = new ModelImageComment();
+ BeanUtil.copyProperties(modelImageCommentRes, modelImageComment);
+ modelImageComment.setUserId(SecurityUtils.getUserId());
+ modelImageComment.setCreateBy(SecurityUtils.getUsername());
+ modelImageComment.setUpdateBy(SecurityUtils.getUsername());
+ modelImageComment.setUpdateTime(new Date());
+ modelImageCommentMapper.insert(modelImageComment);
+
+ }
+
+ @Override
+ public void publish(ModelImageRes modelImageRes) {
+
+ ModelImage modelImage = new ModelImage();
+ BeanUtil.copyProperties(modelImageRes, modelImage);
+ modelImage.setCreateBy(SecurityUtils.getUsername());
+ modelImage.setUpdateBy(SecurityUtils.getUsername());
+ modelImage.setUpdateTime(new Date());
+ modelImage.setStatus(3);
+ modelImageMapper.insert(modelImage);
+
+
+ }
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java
index 4de0d65..5971fea 100644
--- a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/SysUserAttentionServiceImpl.java
@@ -71,9 +71,8 @@ public class SysUserAttentionServiceImpl implements SysUserAttentionService {
public SysUserInfo selectUserInfo() {
Long userId = SecurityUtils.getUserId();
-
return SysUserInfo.builder().bean(sysUserAttentionMapper.selectBean(userId))
- .download(mallProductMapper.sumNumber(userId))
+// .download(mallProductMapper.sumNumber(userId))
.likeCount(mallProductLikeMapper.countLike(userId))
.attention(sysUserAttentionMapper.selectAttentionCount(userId)).build();
}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowServiceImpl.java
new file mode 100644
index 0000000..875acf2
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowServiceImpl.java
@@ -0,0 +1,17 @@
+package com.mcwl.resource.service.impl;
+
+import com.mcwl.resource.service.WorkFlowService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 工作流 业务实现层
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+@Service
+public class WorkFlowServiceImpl implements WorkFlowService {
+
+
+}
diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowVersionServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowVersionServiceImpl.java
new file mode 100644
index 0000000..8b0ba03
--- /dev/null
+++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowVersionServiceImpl.java
@@ -0,0 +1,16 @@
+package com.mcwl.resource.service.impl;
+
+import com.mcwl.resource.service.WorkFlowService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 工作流版本 业务实现层
+ * @author DaiZibo
+ * @date 2025/1/9
+ * @apiNote
+ */
+
+@Service
+public class WorkFlowVersionServiceImpl implements WorkFlowService {
+
+}
diff --git a/mcwl-resource/src/main/resources/mapper/resource/ModelImageCommentLikeMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/ModelImageCommentLikeMapper.xml
new file mode 100644
index 0000000..29ad01b
--- /dev/null
+++ b/mcwl-resource/src/main/resources/mapper/resource/ModelImageCommentLikeMapper.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mcwl-resource/src/main/resources/mapper/resource/ModelImageLikeMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/ModelImageLikeMapper.xml
new file mode 100644
index 0000000..c960a63
--- /dev/null
+++ b/mcwl-resource/src/main/resources/mapper/resource/ModelImageLikeMapper.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id,
+ user_id,
+ model_image_id,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ del_flag,
+ remark
+ from model_image_like
+
+
+
+
diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/SysAdvice.java b/mcwl-system/src/main/java/com/mcwl/system/domain/SysAdvice.java
new file mode 100644
index 0000000..137eb59
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/domain/SysAdvice.java
@@ -0,0 +1,54 @@
+package com.mcwl.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mcwl.common.core.domain.BaseEntity;
+import com.mcwl.system.domain.enums.AdviceEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 消息通知
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_advice")
+public class SysAdvice extends BaseEntity {
+
+ @TableId
+ private Long id;
+
+ /**
+ * 发送者id
+ */
+ private Long senderId;
+
+ /**
+ * 接收者id
+ */
+ private Long receiverId;
+
+ /**
+ * 消息类型 表示新消息提醒,系统公告等
+ */
+ private AdviceEnum type;
+
+ /**
+ * 标题
+ */
+ private String title;
+
+ /**
+ * 内容
+ */
+ private String content;
+
+ /**
+ * 是否已读 0 是 1 否
+ */
+ private String isRead;
+
+
+
+
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/enums/AdviceEnum.java b/mcwl-system/src/main/java/com/mcwl/system/domain/enums/AdviceEnum.java
new file mode 100644
index 0000000..b305311
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/domain/enums/AdviceEnum.java
@@ -0,0 +1,58 @@
+package com.mcwl.system.domain.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 通知枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum AdviceEnum {
+
+ /**
+ * 新消息提醒
+ */
+ NEW_MESSAGE_REMIND("newMessageRemind", "新消息提醒"),
+
+ /**
+ * 系统公告
+ */
+ SYSTEM_NOTICE("systemNotice", "系统公告"),
+
+ /**
+ * 邮件提醒
+ */
+ EMAIL_REMIND("emailRemind", "邮件提醒"),
+
+ /**
+ * 短信提醒
+ */
+ SMS_REMIND("smsRemind", "短信提醒"),
+
+ /**
+ * 推送提醒
+ */
+ PUSH_REMIND("pushRemind", "推送提醒"),
+
+ /**
+ * 点赞提醒
+ */
+ LIKE_REMIND("likeRemind", "点赞提醒"),
+ /**
+ * 评论提醒
+ */
+ COMMENT_REMIND("commentRemind", "评论提醒"),
+ /**
+ * 私信提醒
+ */
+ PRIVATE_MESSAGE_REMIND("privateMessageRemind", "私信提醒");
+
+ private final String name;
+
+ @EnumValue
+ private final String value;
+
+
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/vo/AdviceVo.java b/mcwl-system/src/main/java/com/mcwl/system/domain/vo/AdviceVo.java
new file mode 100644
index 0000000..81fe383
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/domain/vo/AdviceVo.java
@@ -0,0 +1,29 @@
+package com.mcwl.system.domain.vo;
+
+import com.mcwl.system.domain.enums.AdviceEnum;
+import lombok.Data;
+
+@Data
+public class AdviceVo {
+
+ /**
+ * 消息类型 表示新消息提醒,系统公告等
+ */
+ private AdviceEnum type;
+
+ /**
+ * 标题
+ */
+ private String title;
+
+ /**
+ * 内容
+ */
+ private String content;
+
+ /**
+ * 是否已读 0 是 1 否
+ */
+ private String isRead;
+
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/mapper/SysAdviceMapper.java b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysAdviceMapper.java
new file mode 100644
index 0000000..85f400a
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysAdviceMapper.java
@@ -0,0 +1,16 @@
+package com.mcwl.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.system.domain.SysAdvice;
+import com.mcwl.system.domain.SysConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 消息通知
+ */
+@Mapper
+public interface SysAdviceMapper extends BaseMapper {
+
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java
index a866592..893f970 100644
--- a/mcwl-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java
+++ b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java
@@ -1,6 +1,5 @@
package com.mcwl.system.mapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mcwl.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;
@@ -133,5 +132,10 @@ public interface SysUserMapper
SysUser selectUserInfoById(@Param("userId") Long userId);
+ void updateIdCard(SysUser sysUser);
+
+ SysUser selectByIdCard(@Param("idCard") String idCard);
+
+ List listByIds(List userIdList);
}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/ISysAdviceService.java b/mcwl-system/src/main/java/com/mcwl/system/service/ISysAdviceService.java
new file mode 100644
index 0000000..136addb
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/service/ISysAdviceService.java
@@ -0,0 +1,24 @@
+package com.mcwl.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.system.domain.SysAdvice;
+import com.mcwl.system.domain.SysConfig;
+import com.mcwl.system.domain.vo.AdviceVo;
+
+import java.util.List;
+
+/**
+ * 消息通知 服务层
+ *
+ * @author mcwl
+ */
+public interface ISysAdviceService extends IService {
+
+ List getUserNewMsg();
+
+ List getUserSystemNotice();
+
+ List getUserAllMsg();
+
+ List getAllMsg();
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/ISysUserService.java b/mcwl-system/src/main/java/com/mcwl/system/service/ISysUserService.java
index f3df3e2..ff375d9 100644
--- a/mcwl-system/src/main/java/com/mcwl/system/service/ISysUserService.java
+++ b/mcwl-system/src/main/java/com/mcwl/system/service/ISysUserService.java
@@ -1,5 +1,6 @@
package com.mcwl.system.service;
+import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.entity.SysUser;
import java.util.List;
@@ -213,4 +214,8 @@ public interface ISysUserService
SysUser selectUserInfoById(Long userId);
+ AjaxResult updateIdCard(SysUser sysUser);
+
+ List listByIds(List userIdList);
+
}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysAdviceServiceImpl.java b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysAdviceServiceImpl.java
new file mode 100644
index 0000000..a4199cb
--- /dev/null
+++ b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysAdviceServiceImpl.java
@@ -0,0 +1,70 @@
+package com.mcwl.system.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.system.domain.SysAdvice;
+import com.mcwl.system.domain.SysUserThirdAccount;
+import com.mcwl.system.domain.enums.AdviceEnum;
+import com.mcwl.system.domain.vo.AdviceVo;
+import com.mcwl.system.mapper.SysAdviceMapper;
+import com.mcwl.system.service.ISysAdviceService;
+import com.mcwl.system.service.IWXService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 消息管理 业务层处理
+ */
+@Service
+public class SysAdviceServiceImpl extends ServiceImpl implements ISysAdviceService {
+
+
+ @Override
+ public List getUserNewMsg() {
+
+ Long userId = SecurityUtils.getUserId();
+
+ List sysAdvices = baseMapper.selectList(lambdaQuery()
+ .eq(SysAdvice::getReceiverId, userId)
+ .eq(SysAdvice::getType, AdviceEnum.NEW_MESSAGE_REMIND));
+
+ return BeanUtil.copyToList(sysAdvices, AdviceVo.class);
+ }
+
+ @Override
+ public List getUserSystemNotice() {
+ Long userId = SecurityUtils.getUserId();
+
+ List sysAdvices = baseMapper.selectList(lambdaQuery()
+ .eq(SysAdvice::getReceiverId, userId)
+ .eq(SysAdvice::getType, AdviceEnum.SYSTEM_NOTICE));
+
+ return BeanUtil.copyToList(sysAdvices, AdviceVo.class);
+ }
+
+ @Override
+ public List getUserAllMsg() {
+ Long userId = SecurityUtils.getUserId();
+
+ List sysAdvices = baseMapper.selectList(lambdaQuery()
+ .eq(SysAdvice::getReceiverId, userId));
+
+ return BeanUtil.copyToList(sysAdvices, AdviceVo.class);
+ }
+
+ @Override
+ public List getAllMsg() {
+
+ List sysAdvices = baseMapper.selectList(null);
+
+ return BeanUtil.copyToList(sysAdvices, AdviceVo.class);
+ }
+}
diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysUserServiceImpl.java b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysUserServiceImpl.java
index c9ab419..be8aaf2 100644
--- a/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysUserServiceImpl.java
+++ b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysUserServiceImpl.java
@@ -1,13 +1,17 @@
package com.mcwl.system.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.alibaba.fastjson2.JSONObject;
import com.mcwl.common.annotation.DataScope;
+import com.mcwl.common.constant.CacheConstants;
import com.mcwl.common.constant.UserConstants;
+import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.entity.SysRole;
import com.mcwl.common.core.domain.entity.SysUser;
+import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.common.exception.ServiceException;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
+import com.mcwl.common.utils.VerifyCard;
import com.mcwl.common.utils.bean.BeanValidators;
import com.mcwl.common.utils.spring.SpringUtils;
import com.mcwl.system.domain.SysPost;
@@ -30,6 +34,7 @@ import javax.validation.Validator;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -42,6 +47,9 @@ public class SysUserServiceImpl implements ISysUserService
{
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
+ @Autowired
+ private RedisCache redisCache;
+
@Autowired
private SysUserMapper userMapper;
@@ -600,6 +608,53 @@ public class SysUserServiceImpl implements ISysUserService
return userMapper.selectUserInfoById(userId);
}
+ @Override
+ public AjaxResult updateIdCard(SysUser sysUser) {
+
+ //获取次数
+ Integer s = redisCache.getCacheObject(CacheConstants.ID_CARD_COUNT + sysUser.getUserId());
+ Integer count = 0;
+ if (s != null){
+
+ if (3<=s){
+
+ return AjaxResult.error("次数上限");
+ }else {
+ //次数+1
+ s++;
+ count = s;
+ }
+ }
+
+ //存入次数
+ redisCache.setCacheObject(CacheConstants.ID_CARD_COUNT+sysUser.getUserId(),count,1, TimeUnit.DAYS);
+
+ //查看身份证是否唯一
+ SysUser user = userMapper.selectByIdCard(sysUser.getIdCard());
+ if (user != null){
+ return AjaxResult.error("该信息已绑定");
+ }
+ //校验
+ String s1 = VerifyCard.idCard(sysUser.getName(), sysUser.getIdCard());
+ JSONObject jsonObject = JSONObject.parseObject(s1);
+ Integer code = jsonObject.getInteger("code");
+ if (code != 200){
+
+ return AjaxResult.error(jsonObject.getString("msg"));
+ }
+ log.info("实名认证校验的结果:{}",s1);
+ //修改数据库
+ userMapper.updateIdCard(sysUser);
+
+ return AjaxResult.success("实名认证成功");
+ }
+
+ @Override
+ public List listByIds(List userIdList) {
+ return userMapper.listByIds(userIdList);
+ }
+
+
/**
* 生成随机密码
* @param length
@@ -618,5 +673,4 @@ public class SysUserServiceImpl implements ISysUserService
return sb.toString();
}
-
}
diff --git a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml
index febf895..69ecb7f 100644
--- a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -49,7 +49,7 @@
- select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.inviter_user_id, u.free_points,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@@ -150,8 +150,21 @@
+
+
+
+
insert into sys_user(
@@ -226,7 +239,13 @@
where user_id = #{userId}
-
+
+ update sys_user set name = #{name},
+ id_card = #{idCard}
+ where user_id = #{userId}
+
+
+
update sys_user set del_flag = '2' where user_id = #{userId}