Merge branch 'feature/resource' of https://gitea.qinmian.online/CY/mcwl-ai into preview
commit
ca41c38141
|
@ -1,77 +0,0 @@
|
||||||
//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<Long> ids) {
|
|
||||||
// return commentService.deleteByIds(ids);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//}
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.mcwl.web.controller.pay;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alipay.easysdk.factory.Factory;
|
||||||
|
import com.alipay.easysdk.kernel.Config;
|
||||||
|
import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
|
||||||
|
import com.mcwl.pay.domain.OrderTrade;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝支付
|
||||||
|
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class AliPayIntegration {
|
||||||
|
@Autowired
|
||||||
|
private Config config;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用支付宝预下订单接口
|
||||||
|
*
|
||||||
|
* @param tradeEntity 订单实体
|
||||||
|
* @return 二维码url
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public String pay(OrderTrade tradeEntity) throws Exception {
|
||||||
|
Factory.setOptions(config);
|
||||||
|
//调用支付宝的接口
|
||||||
|
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||||
|
.preCreate(tradeEntity.getUserName(),
|
||||||
|
tradeEntity.getCode(),
|
||||||
|
tradeEntity.getPaymentAmount().toString());
|
||||||
|
// 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,179 @@
|
||||||
|
package com.mcwl.web.controller.pay;
|
||||||
|
|
||||||
|
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||||
|
import com.alipay.easysdk.factory.Factory;
|
||||||
|
import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse;
|
||||||
|
import com.mcwl.common.JSONUtils;
|
||||||
|
import com.mcwl.common.annotation.Anonymous;
|
||||||
|
import com.mcwl.common.core.controller.BaseController;
|
||||||
|
import com.mcwl.common.core.domain.AjaxResult;
|
||||||
|
import com.mcwl.common.core.page.TableDataInfo;
|
||||||
|
import com.mcwl.common.domain.IdsParam;
|
||||||
|
import com.mcwl.common.utils.SecurityUtils;
|
||||||
|
import com.mcwl.pay.domain.OrderTrade;
|
||||||
|
import com.mcwl.pay.service.OrderTradeService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import com.alipay.easysdk.kernel.Config;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.web.controller.pay
|
||||||
|
* @Filename:OrderTradeController
|
||||||
|
* @Description 支付模块
|
||||||
|
* @Date:2025/1/3 14:46
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/web/pay")
|
||||||
|
@Validated
|
||||||
|
public class OrderTradeController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private Config config;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderTradeService orderTradeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AliPayIntegration aliPayIntegration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(OrderTrade orderTrade)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<OrderTrade> list = orderTradeService.selectMallProductList(orderTrade);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增
|
||||||
|
*/
|
||||||
|
@PostMapping("/add")
|
||||||
|
public AjaxResult add(@RequestBody OrderTrade orderTrade)
|
||||||
|
{
|
||||||
|
// 获取当前用户
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
if (userId == null) {
|
||||||
|
return AjaxResult.warn("用户未登录");
|
||||||
|
}
|
||||||
|
orderTrade.setUserId(userId);
|
||||||
|
orderTrade.setCreateBy(getUsername());
|
||||||
|
return toAjax(orderTradeService.insertMallProduct(orderTrade));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改
|
||||||
|
*/
|
||||||
|
@PostMapping("/upda")
|
||||||
|
public AjaxResult upda(@RequestBody OrderTrade orderTrade)
|
||||||
|
{
|
||||||
|
// 获取当前用户
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
if (userId == null) {
|
||||||
|
return AjaxResult.warn("用户未登录");
|
||||||
|
}
|
||||||
|
orderTrade.setUserId(userId);
|
||||||
|
orderTrade.setUpdateBy(getUsername());
|
||||||
|
return toAjax(orderTradeService.updateMallProduct(orderTrade));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
*/
|
||||||
|
@PostMapping
|
||||||
|
public AjaxResult remove(@RequestBody IdsParam ids)
|
||||||
|
{
|
||||||
|
orderTradeService.deleteMallProductByIds(ids);
|
||||||
|
return success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付接口
|
||||||
|
*
|
||||||
|
* @param tradeEntity 订单实体
|
||||||
|
* @param response 响应
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Anonymous
|
||||||
|
@PostMapping("/doPay")
|
||||||
|
public void doPay(@RequestBody OrderTrade tradeEntity, HttpServletResponse response) throws Exception {
|
||||||
|
String qrUrl = aliPayIntegration.pay(tradeEntity);
|
||||||
|
QrCodeUtil.generate(qrUrl, 300, 300, "png", response.getOutputStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/queryTradeStatus")
|
||||||
|
public Object queryTradeStatus(@RequestParam String outTradeNo) throws Exception {
|
||||||
|
Factory.setOptions(config);
|
||||||
|
AlipayTradeQueryResponse query = Factory.Payment.Common().query(outTradeNo);
|
||||||
|
Map<String, Object> map = JSONUtils.jsonToMap(query.getHttpBody());
|
||||||
|
|
||||||
|
// 返回交易结果, 是否交易成功需要根据该对象中的 trade_status 来确定
|
||||||
|
// trade_status 的枚举值如下, 请见 https://opendocs.alipay.com/apis/api_1/alipay.trade.query
|
||||||
|
// WAIT_BUYER_PAY(交易创建,等待买家付款)
|
||||||
|
// TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)
|
||||||
|
// TRADE_SUCCESS(交易支付成功)
|
||||||
|
// TRADE_FINISHED(交易结束,不可退款)
|
||||||
|
// 当 trade_status 等于 TRADE_SUCCESS 或 TRADE_FINISHED 时, 表示支付成功
|
||||||
|
return map.get("alipay_trade_query_response");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付回调接口
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Anonymous
|
||||||
|
@PostMapping("/notify") // 注意这里必须是POST接口
|
||||||
|
public String payNotify(HttpServletRequest request) throws Exception {
|
||||||
|
|
||||||
|
log.info("已经进入回调接口");
|
||||||
|
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
|
||||||
|
System.out.println("=========支付宝异步回调========");
|
||||||
|
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
Map<String, String[]> requestParams = request.getParameterMap();
|
||||||
|
for (String name : requestParams.keySet()) {
|
||||||
|
params.put(name, request.getParameter(name));
|
||||||
|
// System.out.println(name + " = " + request.getParameter(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
String tradeNo = params.get("out_trade_no");
|
||||||
|
String gmtPayment = params.get("gmt_payment");
|
||||||
|
String alipayTradeNo = params.get("trade_no");
|
||||||
|
// 支付宝验签
|
||||||
|
if (Factory.Payment.Common().verifyNotify(params)) {
|
||||||
|
// 验签通过
|
||||||
|
System.out.println("交易名称: " + params.get("subject"));
|
||||||
|
System.out.println("交易状态: " + params.get("trade_status"));
|
||||||
|
System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
|
||||||
|
System.out.println("商户订单号: " + params.get("out_trade_no"));
|
||||||
|
System.out.println("交易金额: " + params.get("total_amount"));
|
||||||
|
System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
|
||||||
|
System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
||||||
|
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
||||||
|
// 更新订单状态
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "success";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.mcwl.web.controller.resource;
|
||||||
|
|
||||||
|
import com.mcwl.common.core.domain.AjaxResult;
|
||||||
|
import com.mcwl.resource.domain.ModelComment;
|
||||||
|
import com.mcwl.resource.service.ModelCommentLikeService;
|
||||||
|
import com.mcwl.resource.service.ModelCommentService;
|
||||||
|
import com.mcwl.resource.service.ModelLikeService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.web.controller.resource
|
||||||
|
* @Filename:ModelCommentcontroller
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 11:36
|
||||||
|
*/
|
||||||
|
@RequestMapping("/ModelComment")
|
||||||
|
@RestController
|
||||||
|
public class ModelCommentController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelLikeService modelLikeService;
|
||||||
|
@Autowired
|
||||||
|
private ModelCommentService modelCommentService;
|
||||||
|
@Autowired
|
||||||
|
private ModelCommentLikeService modelCommentLikeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型点赞/取消
|
||||||
|
*/
|
||||||
|
@GetMapping("/imageLike/{imageId}")
|
||||||
|
public AjaxResult like(@PathVariable Long imageId) {
|
||||||
|
modelLikeService.like(imageId);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型评论发布
|
||||||
|
*/
|
||||||
|
@PostMapping("/comment")
|
||||||
|
public AjaxResult comment(@RequestBody ModelComment modelComment) {
|
||||||
|
modelCommentService.comment(modelComment);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型评论点赞/取消
|
||||||
|
*/
|
||||||
|
@GetMapping("/commentLike/{commentId}")
|
||||||
|
public AjaxResult commentLike(@PathVariable Long commentId) {
|
||||||
|
modelCommentLikeService.like(commentId);
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型评论
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Data
|
||||||
|
@TableName("model_comment")
|
||||||
|
public class ModelComment extends BaseEntity {
|
||||||
|
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型id
|
||||||
|
*/
|
||||||
|
private Long modelId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评论内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父评论id
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞数
|
||||||
|
*/
|
||||||
|
private Integer likeNum;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型评论点赞
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Data
|
||||||
|
@TableName("model_comment_like")
|
||||||
|
public class ModelCommentLike extends BaseEntity {
|
||||||
|
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型评论id
|
||||||
|
*/
|
||||||
|
private Long modelCommentId;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
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
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Data
|
||||||
|
@TableName("model_like")
|
||||||
|
public class ModelLike extends BaseEntity {
|
||||||
|
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型id
|
||||||
|
*/
|
||||||
|
private Long modelId;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.mcwl.resource.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.mcwl.resource.domain.ModelCommentLike;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.mapper
|
||||||
|
* @Filename:ModelCommentLikeMapper
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:02
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ModelCommentLikeMapper extends BaseMapper<ModelCommentLike> {
|
||||||
|
ModelCommentLike getLikeComment(@Param("userId") Long userId, @Param("commentId") Long commentId);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.mcwl.resource.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.mcwl.resource.domain.ModelComment;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.mapper
|
||||||
|
* @Filename:ModelCommentMapper
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:04
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ModelCommentMapper extends BaseMapper<ModelComment> {
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.mcwl.resource.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.mcwl.resource.domain.ModelLike;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.mapper
|
||||||
|
* @Filename:ModelLikeMapper
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:05
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ModelLikeMapper extends BaseMapper<ModelLike> {
|
||||||
|
ModelLike getLike(@Param("userId") Long userId, @Param("modelId") Long modelId);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.mcwl.resource.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.mcwl.resource.domain.ModelCommentLike;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service
|
||||||
|
* @Filename:ModelCommentLikeService
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 11:58
|
||||||
|
*/
|
||||||
|
public interface ModelCommentLikeService extends IService<ModelCommentLike> {
|
||||||
|
void like(Long commentId);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.mcwl.resource.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.mcwl.resource.domain.ModelComment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service
|
||||||
|
* @Filename:ModelCommentService
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 11:58
|
||||||
|
*/
|
||||||
|
public interface ModelCommentService extends IService<ModelComment> {
|
||||||
|
void comment(ModelComment modelComment);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.mcwl.resource.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.mcwl.resource.domain.ModelLike;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service
|
||||||
|
* @Filename:ModelLikeService
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 11:57
|
||||||
|
*/
|
||||||
|
public interface ModelLikeService extends IService<ModelLike> {
|
||||||
|
|
||||||
|
|
||||||
|
void like(Long imageId);
|
||||||
|
|
||||||
|
}
|
|
@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**模型 业务实现层
|
||||||
* @Author:ChenYan
|
* @Author:ChenYan
|
||||||
* @Project:McWl
|
* @Project:McWl
|
||||||
* @Package:com.mcwl.resource.service.impl
|
* @Package:com.mcwl.resource.service.impl
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
package com.mcwl.resource.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
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.ModelComment;
|
||||||
|
import com.mcwl.resource.domain.ModelCommentLike;
|
||||||
|
import com.mcwl.resource.domain.ModelImageComment;
|
||||||
|
import com.mcwl.resource.domain.ModelImageCommentLike;
|
||||||
|
import com.mcwl.resource.mapper.ModelCommentLikeMapper;
|
||||||
|
import com.mcwl.resource.mapper.ModelCommentMapper;
|
||||||
|
import com.mcwl.resource.mapper.ModelImageCommentMapper;
|
||||||
|
import com.mcwl.resource.service.ModelCommentLikeService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service.impl
|
||||||
|
* @Filename:ModelCommentLikeServiceImpl
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:01
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ModelCommentLikeServiceImpl extends ServiceImpl<ModelCommentLikeMapper,ModelCommentLike> implements ModelCommentLikeService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelCommentMapper modelCommentMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void like(Long commentId) {
|
||||||
|
ModelComment modelComment = modelCommentMapper.selectById(commentId);
|
||||||
|
if (Objects.isNull(modelComment)) {
|
||||||
|
throw new ServiceException("该评论不存在");
|
||||||
|
}
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
ModelCommentLike modelCommentLike = baseMapper.getLikeComment(userId, commentId);
|
||||||
|
if (Objects.nonNull(modelCommentLike)) {
|
||||||
|
if (Objects.equals(modelCommentLike.getDelFlag(), "0")) {
|
||||||
|
modelCommentLike.setDelFlag("1");
|
||||||
|
modelComment.setLikeNum(modelComment.getLikeNum() - 1);
|
||||||
|
} else {
|
||||||
|
modelCommentLike.setDelFlag("0");
|
||||||
|
modelComment.setLikeNum(modelComment.getLikeNum() + 1);
|
||||||
|
}
|
||||||
|
// 更新点赞记录
|
||||||
|
baseMapper.updateById(modelCommentLike);
|
||||||
|
// 更新图片评论点赞数
|
||||||
|
modelCommentMapper.updateById(modelComment);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加点赞记录
|
||||||
|
modelCommentLike = new ModelCommentLike();
|
||||||
|
modelCommentLike.setUserId(userId);
|
||||||
|
modelCommentLike.setModelCommentId(commentId);
|
||||||
|
modelCommentLike.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
modelCommentLike.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
modelCommentLike.setUpdateTime(new Date());
|
||||||
|
baseMapper.insert(modelCommentLike);
|
||||||
|
|
||||||
|
// 更新模型点赞数
|
||||||
|
modelComment.setLikeNum(modelComment.getLikeNum() + 1);
|
||||||
|
modelCommentMapper.updateById(modelComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.mcwl.resource.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.mcwl.common.utils.SecurityUtils;
|
||||||
|
import com.mcwl.resource.domain.ModelComment;
|
||||||
|
import com.mcwl.resource.domain.ModelImageComment;
|
||||||
|
import com.mcwl.resource.domain.dto.ModelImageCommentRes;
|
||||||
|
import com.mcwl.resource.mapper.ModelCommentMapper;
|
||||||
|
import com.mcwl.resource.mapper.ModelImageCommentMapper;
|
||||||
|
import com.mcwl.resource.mapper.ModelImageMapper;
|
||||||
|
import com.mcwl.resource.service.ModelCommentService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service.impl
|
||||||
|
* @Filename:ModelCommentServiceImpl
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:03
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ModelCommentServiceImpl extends ServiceImpl<ModelCommentMapper, ModelComment> implements ModelCommentService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelCommentMapper modelCommentMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ModelImageMapper modelImageMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void comment(ModelComment modelComment) {
|
||||||
|
Long parentId = modelComment.getParentId();
|
||||||
|
ModelComment mic = modelCommentMapper.selectById(parentId);
|
||||||
|
|
||||||
|
if (Objects.nonNull(parentId) && Objects.isNull(mic)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
modelComment.setUserId(SecurityUtils.getUserId());
|
||||||
|
modelComment.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
modelComment.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
modelComment.setUpdateTime(new Date());
|
||||||
|
modelCommentMapper.insert(modelComment);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
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.*;
|
||||||
|
import com.mcwl.resource.domain.vo.MallProductVo;
|
||||||
|
import com.mcwl.resource.mapper.MallProductMapper;
|
||||||
|
import com.mcwl.resource.mapper.ModelLikeMapper;
|
||||||
|
import com.mcwl.resource.service.ModelLikeService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import springfox.documentation.swagger2.mappers.ModelMapper;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:ChenYan
|
||||||
|
* @Project:McWl
|
||||||
|
* @Package:com.mcwl.resource.service.impl
|
||||||
|
* @Filename:ModelLikeServiceImpl
|
||||||
|
* @Description TODO
|
||||||
|
* @Date:2025/1/12 12:05
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ModelLikeServiceImpl extends ServiceImpl<ModelLikeMapper, ModelLike> implements ModelLikeService {
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MallProductMapper mallProductMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void like(Long modelId) {
|
||||||
|
ModelProduct model = mallProductMapper.selectById(modelId);
|
||||||
|
if (Objects.isNull(model)) {
|
||||||
|
throw new ServiceException("该模型不存在或已下架");
|
||||||
|
}
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
ModelLike modelLike = baseMapper.getLike(userId, modelId);
|
||||||
|
if (Objects.nonNull(modelLike)) {
|
||||||
|
if (Objects.equals(modelLike.getDelFlag(), "0")) {
|
||||||
|
modelLike.setDelFlag("1");
|
||||||
|
model.setNumbers(model.getNumbers() - 1);
|
||||||
|
} else {
|
||||||
|
modelLike.setDelFlag("0");
|
||||||
|
model.setNumbers(model.getNumbers() + 1);
|
||||||
|
}
|
||||||
|
// 更新点赞记录
|
||||||
|
baseMapper.updateById(modelLike);
|
||||||
|
// 更新图片点赞数
|
||||||
|
mallProductMapper.updateById(model);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加点赞记录
|
||||||
|
modelLike = new ModelLike();
|
||||||
|
modelLike.setUserId(userId);
|
||||||
|
modelLike.setModelId(modelId);
|
||||||
|
modelLike.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
modelLike.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
modelLike.setUpdateTime(new Date());
|
||||||
|
baseMapper.insert(modelLike);
|
||||||
|
|
||||||
|
// 更新图片点赞数
|
||||||
|
model.setNumbers(model.getNumbers() + 1);
|
||||||
|
mallProductMapper.updateById(model);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,7 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**模型版本 业务实现层
|
||||||
* @Author:ChenYan
|
* @Author:ChenYan
|
||||||
* @Project:McWl
|
* @Project:McWl
|
||||||
* @Package:com.mcwl.resource.service.impl
|
* @Package:com.mcwl.resource.service.impl
|
||||||
|
|
|
@ -11,7 +11,7 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**活动 业务实现层
|
||||||
* @Author:ChenYan
|
* @Author:ChenYan
|
||||||
* @Project:McWl
|
* @Project:McWl
|
||||||
* @Package:com.mcwl.resource.service
|
* @Package:com.mcwl.resource.service
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.mcwl.resource.mapper.ModelCommentLikeMapper">
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getLikeComment" resultType="com.mcwl.resource.domain.ModelCommentLike">
|
||||||
|
select id,
|
||||||
|
user_id,
|
||||||
|
model_comment_id,
|
||||||
|
create_by,
|
||||||
|
create_time,
|
||||||
|
update_by,
|
||||||
|
update_time,
|
||||||
|
del_flag,
|
||||||
|
remark where user_id = #{userId} and model_comment_id = #{commentId}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.mcwl.resource.mapper.ModelLikeMapper">
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getLike" resultType="com.mcwl.resource.domain.ModelLike">
|
||||||
|
select id,
|
||||||
|
user_id,
|
||||||
|
model_id,
|
||||||
|
create_by,
|
||||||
|
create_time,
|
||||||
|
update_by,
|
||||||
|
update_time,
|
||||||
|
del_flag,
|
||||||
|
remark where user_id = #{userId} and model_id = #{modelId}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue