From 1eeec9162679ae78956fe9d050045c3219058ff8 Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Fri, 10 Jan 2025 13:58:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(resource):=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E5=92=8C=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ModelImage、ModelImageComment 和 ModelImageLike 等相关实体类 - 实现图片上传、发布和点赞功能 - 添加评论和评论点赞功能 - 集成支付宝支付相关配置和接口 --- mcwl-admin/pom.xml | 10 +- .../main/java/com/mcwl/McWlApplication.java | 3 + .../pay/AliPay/AliPayIntegration.java | 186 +++++++++++++++++- .../resource/ModelImageController.java | 65 ++++++ .../java/com/mcwl/pay/config/AliConfig.java | 19 ++ .../com/mcwl/resource/domain/ModelImage.java | 44 +++-- .../resource/domain/ModelImageComment.java | 45 +++++ .../domain/ModelImageCommentLike.java | 30 +++ .../mcwl/resource/domain/ModelImageLike.java | 35 ++++ .../resource/domain/dto/ModelImageRes.java | 45 +++++ .../mapper/ModelImageCommentLikeMapper.java | 10 + .../mapper/ModelImageCommentMapper.java | 10 + .../resource/mapper/ModelImageLikeMapper.java | 11 ++ .../resource/mapper/ModelImageMapper.java | 9 + .../service/ModelImageCommentLikeService.java | 9 + .../service/ModelImageCommentService.java | 9 + .../service/ModelImageLikeService.java | 11 ++ .../resource/service/ModelImageService.java | 12 ++ .../ModelImageCommentLikeServiceImpl.java | 15 ++ .../impl/ModelImageCommentServiceImpl.java | 15 ++ .../impl/ModelImageLikeServiceImpl.java | 63 ++++++ .../service/impl/ModelImageServiceImpl.java | 25 +++ .../mapper/resource/ModelImageLikeMapper.xml | 38 ++++ 23 files changed, 702 insertions(+), 17 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java create mode 100644 mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageComment.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageLike.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageRes.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageLikeMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageLikeService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentServiceImpl.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageLikeServiceImpl.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java create mode 100644 mcwl-resource/src/main/resources/mapper/resource/ModelImageLikeMapper.xml diff --git a/mcwl-admin/pom.xml b/mcwl-admin/pom.xml index c2794f3..ef9109d 100644 --- a/mcwl-admin/pom.xml +++ b/mcwl-admin/pom.xml @@ -28,11 +28,11 @@ - - - - - + + com.alipay.sdk + alipay-sdk-java + 4.40.30.ALL + diff --git a/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java b/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java index 1cf52e3..26960e7 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; /** @@ -16,6 +18,7 @@ import org.springframework.context.annotation.Bean; * @author mcwl */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +@EnableConfigurationProperties(AliConfig.class) public class McWlApplication { public static void main(String[] args) 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 919b44c..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,10 +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.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; @@ -31,7 +44,7 @@ import java.util.concurrent.TimeUnit; * 支付宝支付 */ @Component - +@Slf4j public class AliPayIntegration { @Autowired @@ -49,6 +62,9 @@ public class AliPayIntegration { @Autowired private ISysUserService sysUserService; + @Autowired + private AliConfig aliConfig; + public AliPayIntegration(Config config) { Factory.setOptions(config); @@ -172,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/resource/ModelImageController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java new file mode 100644 index 0000000..38efa1a --- /dev/null +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java @@ -0,0 +1,65 @@ +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.ModelImageLike; +import com.mcwl.resource.domain.dto.ModelImageRes; +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; + + + /** + * 图片上传 + */ + @GetMapping("/upload") + public AjaxResult upload(MultipartFile file) { + + return AjaxResult.success("上传成功", OssUtil.uploadMultipartFile(file)); + + } + + + /** + * 图片发布 + */ + @PostMapping("/publish") + public AjaxResult publish(@RequestBody 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); + modelImageService.save(modelImage); + return AjaxResult.success(); + } + + /** + * 图片点赞/取消 + */ + @GetMapping("/like/{imageId}") + public AjaxResult like(@PathVariable Long imageId) { + modelImageLikeService.like(imageId); + return AjaxResult.success(); + } + + +} 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..d0a6a23 --- /dev/null +++ b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java @@ -0,0 +1,19 @@ +package com.mcwl.pay.config; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +@Data +@ConfigurationProperties(prefix = "mall.mgt.aliPayConfig") +@Configuration +@Component +public class AliConfig { + + private String appId; + private String privateKey; + private String publicKey; + private String gatewayUrl; +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImage.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImage.java index a8a3fef..037955b 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImage.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImage.java @@ -1,8 +1,11 @@ package com.mcwl.resource.domain; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.mcwl.common.core.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; /**图片表 @@ -16,47 +19,66 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Data +@EqualsAndHashCode(callSuper = true) @TableName("model_image") -public class ModelImage { +public class ModelImage extends BaseEntity { /** * 主键ID */ + @TableId private Long id; /** * 图片地址(最多8张,切割) */ - private Long image_paths; + private String imagePaths; /** * 是否添加水印 */ - private Long has_watermark; + private Integer hasWatermark; /** * 是否会员下载 */ - private Long is_member_download; + private Integer isMemberDownload; /** * 是否不可下载 */ - private Long is_not_downloadable; + private Integer isNotDownloadable; /** * 是否隐藏生成信息 */ - private Long hide_gen_info; + private Integer hideGenInfo; /** * 图片标题(最多30字) */ - private Long title; + private String title; /** * 图片标签(多个,切割) */ - private Long tags; + private String tags; /** * 描述信息(最多500) */ - private Long description; + private String description; /** - * 删除标志(0代表存在 2代表删除) + * 在线生成数 */ - private Long del_flag; + private Integer onlineGenNum; + /** + * 下载数 + */ + private Integer downloadNum; + /** + * 返图数 + */ + private Integer returnNum; + /** + * 点赞数 + */ + private Integer likeNum; + + /** + * 状态 + */ + private Integer status; } diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageComment.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageComment.java new file mode 100644 index 0000000..e51109c --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageComment.java @@ -0,0 +1,45 @@ +package com.mcwl.resource.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.mcwl.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 图片评论 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("model_image_comment") +public class ModelImageComment extends BaseEntity { + + @TableId + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 图片id + */ + private Long modelImageId; + + /** + * 评论内容 + */ + private String content; + + /** + * 父评论id + */ + private Long parentId; + + /** + * 点赞数 + */ + private Integer likeNum; + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java new file mode 100644 index 0000000..d1c8ec1 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java @@ -0,0 +1,30 @@ +package com.mcwl.resource.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.mcwl.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 图片评论点赞 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("model_image_comment_like") +public class ModelImageCommentLike extends BaseEntity { + + @TableId + private Long id; + + /** + * 用户id + */ + private Long userId; + + private Long modelImageCommentId; + + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageLike.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageLike.java new file mode 100644 index 0000000..0384e56 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageLike.java @@ -0,0 +1,35 @@ +package com.mcwl.resource.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mcwl.common.core.domain.BaseEntity; +import lombok.*; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 图片点赞表 + */ + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Data +public class ModelImageLike extends BaseEntity { + + @TableId + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 图片id + */ + private Long modelImageId; + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageRes.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageRes.java new file mode 100644 index 0000000..1499307 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageRes.java @@ -0,0 +1,45 @@ +package com.mcwl.resource.domain.dto; + +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ModelImageRes { + /** + * 图片地址(最多8张,切割) + */ + @NotBlank(message = "图片地址不能为空") + private String imagePaths; + /** + * 是否添加水印 + */ + private Integer hasWatermark; + /** + * 是否会员下载 + */ + private Integer isMemberDownload; + /** + * 是否不可下载 + */ + private Integer isNotDownloadable; + /** + * 是否隐藏生成信息 + */ + private Integer hideGenInfo; + /** + * 图片标题(最多30字) + */ + @NotBlank(message = "图片标题不能为空") + private String title; + /** + * 图片标签(多个,切割) + */ + private String tags; + /** + * 描述信息(最多500) + */ + private String description; + +} diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java new file mode 100644 index 0000000..4d5137a --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java @@ -0,0 +1,10 @@ +package com.mcwl.resource.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mcwl.resource.domain.ModelImageComment; +import com.mcwl.resource.domain.ModelImageCommentLike; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ModelImageCommentLikeMapper extends BaseMapper { +} 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/service/ModelImageCommentLikeService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java new file mode 100644 index 0000000..55e8313 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java @@ -0,0 +1,9 @@ +package com.mcwl.resource.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mcwl.resource.domain.ModelImageComment; +import com.mcwl.resource.domain.ModelImageCommentLike; + + +public interface ModelImageCommentLikeService extends IService { +} 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..43550fb --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java @@ -0,0 +1,12 @@ +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.vo.MallProductVo; + + +public interface ModelImageService extends IService { +} 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..d347426 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java @@ -0,0 +1,15 @@ +package com.mcwl.resource.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mcwl.resource.domain.ModelImageComment; +import com.mcwl.resource.domain.ModelImageCommentLike; +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 org.springframework.stereotype.Service; + +@Service +public class ModelImageCommentLikeServiceImpl extends ServiceImpl implements ModelImageCommentLikeService { + +} 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..0aca774 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java @@ -0,0 +1,25 @@ +package com.mcwl.resource.service.impl; + +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.ModelProduct; +import com.mcwl.resource.domain.vo.MallProductVo; +import com.mcwl.resource.mapper.MallProductLikeMapper; +import com.mcwl.resource.mapper.ModelImageMapper; +import com.mcwl.resource.service.MallProductLikeService; +import com.mcwl.resource.service.MallProductService; +import com.mcwl.resource.service.ModelImageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@Service +public class ModelImageServiceImpl extends ServiceImpl implements ModelImageService { + +} 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 + + + +