From aae00a4bb9d6605b3b277600bc881628ccd428fd Mon Sep 17 00:00:00 2001 From: Diyu0904 <1819728964@qq.com> Date: Thu, 9 Jan 2025 11:14:22 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9E=E5=90=8D?= =?UTF-8?q?=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/comment/CommentController.java | 154 ++++---- .../controller/pay/WxPay/WxPayController.java | 65 ++++ .../resource/MallProductLikeController.java | 2 +- .../controller/system/SysUserController.java | 12 + .../web/controller/system/WXController.java | 14 +- .../java/com/mcwl/comment/domain/Comment.java | 106 +++--- .../domain/ProductCommentConditionEntity.java | 108 +++--- .../comment/domain/ProductCommentEntity.java | 96 ++--- .../domain/RequestConditionEntity.java | 82 ++--- .../comment/domain/RequestPageEntity.java | 144 ++++---- .../mcwl/comment/mapper/CommentMapper.java | 62 ++-- .../service/impl/CommentServiceImpl.java | 176 +++++----- .../mapper/comment/CommentMapper.xml | 95 ----- mcwl-common/pom.xml | 21 +- .../mcwl/common/constant/CacheConstants.java | 5 + .../common/core/domain/entity/SysUser.java | 28 ++ .../java/com/mcwl/common/utils/HttpUtils.java | 328 ++++++++++++++++++ .../com/mcwl/common/utils/VerifyCard.java | 55 +++ .../impl/SysUserAttentionServiceImpl.java | 3 +- .../com/mcwl/system/mapper/SysUserMapper.java | 4 + .../mcwl/system/service/ISysUserService.java | 2 + .../service/impl/SysUserServiceImpl.java | 50 +++ .../resources/mapper/system/SysUserMapper.xml | 13 +- 23 files changed, 1050 insertions(+), 575 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/pay/WxPay/WxPayController.java delete mode 100644 mcwl-comment/src/main/resources/mapper/comment/CommentMapper.xml create mode 100644 mcwl-common/src/main/java/com/mcwl/common/utils/HttpUtils.java create mode 100644 mcwl-common/src/main/java/com/mcwl/common/utils/VerifyCard.java 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 index 5739ee1..83d8d28 100644 --- 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 @@ -1,77 +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); - } - - -} +//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/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 844e024..dda90b0 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/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-comment/src/main/java/com/mcwl/comment/domain/Comment.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java index 858cb4e..202c209 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java @@ -1,53 +1,53 @@ -package com.mcwl.comment.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.NoArgsConstructor; - -/** - * @Author:ChenYan - * @Project:McWl - * @Package:com.mcwl.comment.domain - * @Filename:Comment - * @Description 评论表 - * @Date:2025/1/4 18:47 - */ -@AllArgsConstructor -@NoArgsConstructor -@Data -@TableName("mall_product_comment") -public class Comment extends BaseEntity { - - /** - * ID - */ - @TableId - private Long id; - /** - * 父评论ID - */ - private String parentId; - /** - * 商品ID - */ - private String productId; - /** - * 用户ID - */ - private String userId; - /** - * 评论内容 - */ - private String content; - /** - * 评分 - */ - private String rating; - /** - * 删除标志(0代表存在 2代表删除) - */ - private String delFlag; -} +//package com.mcwl.comment.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.NoArgsConstructor; +// +///** +// * @Author:ChenYan +// * @Project:McWl +// * @Package:com.mcwl.comment.domain +// * @Filename:Comment +// * @Description 评论表 +// * @Date:2025/1/4 18:47 +// */ +//@AllArgsConstructor +//@NoArgsConstructor +//@Data +//@TableName("mall_product_comment") +//public class Comment extends BaseEntity { +// +// /** +// * ID +// */ +// @TableId +// private Long id; +// /** +// * 父评论ID +// */ +// private String parentId; +// /** +// * 商品ID +// */ +// private String productId; +// /** +// * 用户ID +// */ +// private String userId; +// /** +// * 评论内容 +// */ +// private String content; +// /** +// * 评分 +// */ +// private String rating; +// /** +// * 删除标志(0代表存在 2代表删除) +// */ +// private String delFlag; +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java index a2cf39e..e3c5832 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java @@ -1,56 +1,56 @@ -package com.mcwl.comment.domain; - - -import lombok.Data; - -import java.util.List; - -/** - * 商品评论查询条件实体 - */ -@Data -public class ProductCommentConditionEntity extends RequestConditionEntity { - - /** - * ID集合 - */ - private List idList; - - /** - * ID - */ - private Long id; - /** - * 父评论ID - */ - private Long parentId; - /** - * 商品ID - */ - private Long productId; - - /** - * 商品ID集合 - */ - private List productIdList; - /** - * 用户ID - */ - private Long userId; - /** - * 评论内容 - */ - private String content; - /** - * 评分 - */ - private Integer rating; - /** - * 删除标志(0代表存在 2代表删除) - */ - private String delFlag; +//package com.mcwl.comment.domain; +// +// +//import lombok.Data; +// +//import java.util.List; +// +///** +// * 商品评论查询条件实体 +// */ +//@Data +//public class ProductCommentConditionEntity extends RequestConditionEntity { +// // /** -// * 评论类型 +// * ID集合 // */ -// private Integer type; -} +// private List idList; +// +// /** +// * ID +// */ +// private Long id; +// /** +// * 父评论ID +// */ +// private Long parentId; +// /** +// * 商品ID +// */ +// private Long productId; +// +// /** +// * 商品ID集合 +// */ +// private List productIdList; +// /** +// * 用户ID +// */ +// private Long userId; +// /** +// * 评论内容 +// */ +// private String content; +// /** +// * 评分 +// */ +// private Integer rating; +// /** +// * 删除标志(0代表存在 2代表删除) +// */ +// private String delFlag; +//// /** +//// * 评论类型 +//// */ +//// private Integer type; +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java index c3780c6..ac099a7 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java @@ -1,50 +1,50 @@ -package com.mcwl.comment.domain; - -import com.mcwl.common.core.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author:ChenYan - * @Project:McWl - * @Package:com.mcwl.comment.domain - * @Filename:ProductCommentEntity - * @Description 评论实体 - * @Date:2025/1/6 13:21 - */ -@AllArgsConstructor -@NoArgsConstructor -@Data -public class ProductCommentEntity extends BaseEntity { - - /** - * 父评论ID - */ - private Long parentId; - - /** - * 商品ID - */ - private Long productId; - - /** - * 用户ID - */ - private Long userId; - - /** - * 评论内容 - */ - private String content; - - /** - * 评分 - */ - private Integer rating; - +//package com.mcwl.comment.domain; +// +//import com.mcwl.common.core.domain.BaseEntity; +//import lombok.AllArgsConstructor; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +///** +// * @Author:ChenYan +// * @Project:McWl +// * @Package:com.mcwl.comment.domain +// * @Filename:ProductCommentEntity +// * @Description 评论实体 +// * @Date:2025/1/6 13:21 +// */ +//@AllArgsConstructor +//@NoArgsConstructor +//@Data +//public class ProductCommentEntity extends BaseEntity { +// // /** -// * 评论类型 +// * 父评论ID // */ -// private Integer type; -} +// private Long parentId; +// +// /** +// * 商品ID +// */ +// private Long productId; +// +// /** +// * 用户ID +// */ +// private Long userId; +// +// /** +// * 评论内容 +// */ +// private String content; +// +// /** +// * 评分 +// */ +// private Integer rating; +// +//// /** +//// * 评论类型 +//// */ +//// private Integer type; +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java index 0522e90..0f3e740 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java @@ -1,41 +1,41 @@ -package com.mcwl.comment.domain; - -import com.mcwl.common.utils.RequestPageEntity; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.List; - -/** - * 请求条件实体 - */ -@Data -public class RequestConditionEntity extends RequestPageEntity { - - - /** - * 创建日期范围 - */ - @ApiModelProperty("创建日期范围") - private List betweenTime; - - /** - * 创建开始时间 - */ - private String createBeginTime; - - /** - * 创建结束时间 - */ - private String createEndTime; - - /** - * 自定义excel表头列表 - */ - private List customizeColumnNameList; - - /** - * 查询条件 - */ - private String blurry; -} +//package com.mcwl.comment.domain; +// +//import com.mcwl.common.utils.RequestPageEntity; +//import io.swagger.annotations.ApiModelProperty; +//import lombok.Data; +// +//import java.util.List; +// +///** +// * 请求条件实体 +// */ +//@Data +//public class RequestConditionEntity extends RequestPageEntity { +// +// +// /** +// * 创建日期范围 +// */ +// @ApiModelProperty("创建日期范围") +// private List betweenTime; +// +// /** +// * 创建开始时间 +// */ +// private String createBeginTime; +// +// /** +// * 创建结束时间 +// */ +// private String createEndTime; +// +// /** +// * 自定义excel表头列表 +// */ +// private List customizeColumnNameList; +// +// /** +// * 查询条件 +// */ +// private String blurry; +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java index ff21aa0..fff5643 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java @@ -1,72 +1,72 @@ -package com.mcwl.comment.domain; - -import cn.hutool.core.collection.CollectionUtil; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 分页请求实体 - */ -@AllArgsConstructor -@NoArgsConstructor -@Data -public class RequestPageEntity implements Serializable { - - private static final int DEFAULT_PAGE_SIZE = 10; - - /** - * 页码,默认从一页开始 - */ - private Integer pageNo = 1; - - /** - * 每页大小,默认一页查询10条数据 - */ - private Integer pageSize = DEFAULT_PAGE_SIZE; - - /** - * 排序字段 - */ - private List sortField; - - - /** - * 获取分页开始位置 - * - * @return 分页开始位置 - */ - public Integer getPageBegin() { - if (Objects.isNull(this.pageNo) || this.pageNo <= 0) { - this.pageNo = 1; - } - - if (Objects.isNull(this.pageSize)) { - this.pageSize = DEFAULT_PAGE_SIZE; - } - - return (this.pageNo - 1) * this.pageSize; - } - - /** - * 获取用户自定义排序集合 - * - * @return 排序集合实体 - */ - public String getSortString() { - List sortField = this.getSortField(); - if (CollectionUtil.isEmpty(sortField)) { - return null; - } - StringBuilder sortBuilder = new StringBuilder(); - for (String field : sortField) { - String[] values = field.split(","); - sortBuilder.append(String.format("%s %s", values[0], values[1])).append(","); - } - return sortBuilder.deleteCharAt(sortBuilder.length() - 1).toString(); - } -} +//package com.mcwl.comment.domain; +// +//import cn.hutool.core.collection.CollectionUtil; +//import lombok.AllArgsConstructor; +//import lombok.Data; +//import lombok.NoArgsConstructor; +// +//import java.io.Serializable; +//import java.util.List; +//import java.util.Objects; +// +///** +// * 分页请求实体 +// */ +//@AllArgsConstructor +//@NoArgsConstructor +//@Data +//public class RequestPageEntity implements Serializable { +// +// private static final int DEFAULT_PAGE_SIZE = 10; +// +// /** +// * 页码,默认从一页开始 +// */ +// private Integer pageNo = 1; +// +// /** +// * 每页大小,默认一页查询10条数据 +// */ +// private Integer pageSize = DEFAULT_PAGE_SIZE; +// +// /** +// * 排序字段 +// */ +// private List sortField; +// +// +// /** +// * 获取分页开始位置 +// * +// * @return 分页开始位置 +// */ +// public Integer getPageBegin() { +// if (Objects.isNull(this.pageNo) || this.pageNo <= 0) { +// this.pageNo = 1; +// } +// +// if (Objects.isNull(this.pageSize)) { +// this.pageSize = DEFAULT_PAGE_SIZE; +// } +// +// return (this.pageNo - 1) * this.pageSize; +// } +// +// /** +// * 获取用户自定义排序集合 +// * +// * @return 排序集合实体 +// */ +// public String getSortString() { +// List sortField = this.getSortField(); +// if (CollectionUtil.isEmpty(sortField)) { +// return null; +// } +// StringBuilder sortBuilder = new StringBuilder(); +// for (String field : sortField) { +// String[] values = field.split(","); +// sortBuilder.append(String.format("%s %s", values[0], values[1])).append(","); +// } +// return sortBuilder.deleteCharAt(sortBuilder.length() - 1).toString(); +// } +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java b/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java index 4a0fcb8..79038a8 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java @@ -1,31 +1,31 @@ -package com.mcwl.comment.mapper; - - -import com.mcwl.comment.domain.ProductCommentConditionEntity; -import com.mcwl.comment.domain.ProductCommentEntity; -import com.mcwl.common.web.BaseMapper; -import com.mcwl.resource.domain.MallProduct; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @Author:ChenYan - * @Project:McWl - * @Package:com.mcwl.comment.mapper - * @Filename:CommentMapper - * @Description TODO - * @Date:2025/1/4 19:04 - */ -public interface CommentMapper extends BaseMapper { - - MallProduct findById(@Param("id") Long id); - - int insert(ProductCommentEntity productCommentEntity); - - int upda(ProductCommentEntity productCommentEntity); - - List findByIds(List ids); - - int deleteByIds(List ids, ProductCommentEntity productCommentEntity); -} +//package com.mcwl.comment.mapper; +// +// +//import com.mcwl.comment.domain.ProductCommentConditionEntity; +//import com.mcwl.comment.domain.ProductCommentEntity; +//import com.mcwl.common.web.BaseMapper; +//import com.mcwl.resource.domain.MallProduct; +//import org.apache.ibatis.annotations.Param; +// +//import java.util.List; +// +///** +// * @Author:ChenYan +// * @Project:McWl +// * @Package:com.mcwl.comment.mapper +// * @Filename:CommentMapper +// * @Description TODO +// * @Date:2025/1/4 19:04 +// */ +//public interface CommentMapper extends BaseMapper { +// +// MallProduct findById(@Param("id") Long id); +// +// int insert(ProductCommentEntity productCommentEntity); +// +// int upda(ProductCommentEntity productCommentEntity); +// +// List findByIds(List ids); +// +// int deleteByIds(List ids, ProductCommentEntity productCommentEntity); +//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java b/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java index 6c43a7b..f3bae10 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java @@ -1,88 +1,88 @@ -package com.mcwl.comment.service.impl; - - -import com.mcwl.comment.domain.ProductCommentConditionEntity; -import com.mcwl.comment.domain.ProductCommentEntity; -import com.mcwl.comment.mapper.CommentMapper; -import com.mcwl.common.core.domain.AjaxResult; -import com.mcwl.common.utils.AssertUtil; -import com.mcwl.common.utils.FillUserUtil; -import com.mcwl.common.utils.ResponsePageEntity; -import com.mcwl.common.utils.SecurityUtils; -import com.mcwl.common.utils.bean.BaseService; - -import com.mcwl.common.web.BaseMapper; -import com.mcwl.resource.domain.MallProduct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Objects; - -import static com.mcwl.common.utils.SecurityUtils.getUsername; - -/** - * @Author:ChenYan - * @Project:McWl - * @Package:com.mcwl.comment.service.impl - * @Filename:CommentServiceImpl - * @Description TODO - * @Date:2025/1/4 19:04 - */ -@Service -public class CommentServiceImpl extends BaseService { - - @Autowired - private CommentMapper commentMapper; - - - public MallProduct findById(Long id) { - return commentMapper.findById(id); - } - - - public int insert(ProductCommentEntity productCommentEntity) { - // 获取当前用户 - Long userId = SecurityUtils.getUserId(); - productCommentEntity.setUserId(userId); - productCommentEntity.setCreateBy(getUsername()); - checkParam(productCommentEntity); - return commentMapper.insert(productCommentEntity); - } - - - public int update(ProductCommentEntity productCommentEntity) { - // 获取当前用户 - Long userId = SecurityUtils.getUserId(); - productCommentEntity.setUserId(userId); - productCommentEntity.setUpdateBy(getUsername()); - checkParam(productCommentEntity); - return commentMapper.upda(productCommentEntity); - } - - - public int deleteByIds(List ids) { - List entities = commentMapper.findByIds(ids); - AssertUtil.notEmpty(entities, "商品评论已被删除"); - - ProductCommentEntity entity = new ProductCommentEntity(); - FillUserUtil.fillUpdateUserInfo(entity); - return commentMapper.deleteByIds(ids, entity); - } - private void checkParam(ProductCommentEntity productCommentEntity) { - if (Objects.nonNull(productCommentEntity.getParentId()) && productCommentEntity.getParentId() > 0) { - MallProduct productEntity = commentMapper.findById(productCommentEntity.getParentId()); - AssertUtil.notNull(productEntity, "该父评论在系统中不存在"); - } - - MallProduct userEntity = commentMapper.findById(productCommentEntity.getUserId()); - AssertUtil.notNull(userEntity, "该用户在系统中不存在"); - - MallProduct productEntity = commentMapper.findById(productCommentEntity.getProductId()); - AssertUtil.notNull(productEntity, "该商品在系统中不存在"); - } - - @Override - protected BaseMapper getBaseMapper() { - return commentMapper; - } -} +//package com.mcwl.comment.service.impl; +// +// +//import com.mcwl.comment.domain.ProductCommentConditionEntity; +//import com.mcwl.comment.domain.ProductCommentEntity; +//import com.mcwl.comment.mapper.CommentMapper; +//import com.mcwl.common.core.domain.AjaxResult; +//import com.mcwl.common.utils.AssertUtil; +//import com.mcwl.common.utils.FillUserUtil; +//import com.mcwl.common.utils.ResponsePageEntity; +//import com.mcwl.common.utils.SecurityUtils; +//import com.mcwl.common.utils.bean.BaseService; +// +//import com.mcwl.common.web.BaseMapper; +//import com.mcwl.resource.domain.MallProduct; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +//import java.util.List; +//import java.util.Objects; +// +//import static com.mcwl.common.utils.SecurityUtils.getUsername; +// +///** +// * @Author:ChenYan +// * @Project:McWl +// * @Package:com.mcwl.comment.service.impl +// * @Filename:CommentServiceImpl +// * @Description TODO +// * @Date:2025/1/4 19:04 +// */ +//@Service +//public class CommentServiceImpl extends BaseService { +// +// @Autowired +// private CommentMapper commentMapper; +// +// +// public MallProduct findById(Long id) { +// return commentMapper.findById(id); +// } +// +// +// public int insert(ProductCommentEntity productCommentEntity) { +// // 获取当前用户 +// Long userId = SecurityUtils.getUserId(); +// productCommentEntity.setUserId(userId); +// productCommentEntity.setCreateBy(getUsername()); +// checkParam(productCommentEntity); +// return commentMapper.insert(productCommentEntity); +// } +// +// +// public int update(ProductCommentEntity productCommentEntity) { +// // 获取当前用户 +// Long userId = SecurityUtils.getUserId(); +// productCommentEntity.setUserId(userId); +// productCommentEntity.setUpdateBy(getUsername()); +// checkParam(productCommentEntity); +// return commentMapper.upda(productCommentEntity); +// } +// +// +// public int deleteByIds(List ids) { +// List entities = commentMapper.findByIds(ids); +// AssertUtil.notEmpty(entities, "商品评论已被删除"); +// +// ProductCommentEntity entity = new ProductCommentEntity(); +// FillUserUtil.fillUpdateUserInfo(entity); +// return commentMapper.deleteByIds(ids, entity); +// } +// private void checkParam(ProductCommentEntity productCommentEntity) { +// if (Objects.nonNull(productCommentEntity.getParentId()) && productCommentEntity.getParentId() > 0) { +// MallProduct productEntity = commentMapper.findById(productCommentEntity.getParentId()); +// AssertUtil.notNull(productEntity, "该父评论在系统中不存在"); +// } +// +// MallProduct userEntity = commentMapper.findById(productCommentEntity.getUserId()); +// AssertUtil.notNull(userEntity, "该用户在系统中不存在"); +// +// MallProduct productEntity = commentMapper.findById(productCommentEntity.getProductId()); +// AssertUtil.notNull(productEntity, "该商品在系统中不存在"); +// } +// +// @Override +// protected BaseMapper getBaseMapper() { +// return commentMapper; +// } +//} diff --git a/mcwl-comment/src/main/resources/mapper/comment/CommentMapper.xml b/mcwl-comment/src/main/resources/mapper/comment/CommentMapper.xml deleted file mode 100644 index 5ce895c..0000000 --- a/mcwl-comment/src/main/resources/mapper/comment/CommentMapper.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - insert into mall_product_comment(id, parent_id, product_id, user_id, content, rating, create_by, create_time, - update_by, update_time, del_flag, remark) - values (#{id}, #{parentId}, #{productId}, #{userId}, #{content}, #{rating}, #{createBy}, #{createTime}, - #{updateBy}, #{updateTime}, #{remark}, #{delFlag}) - - - update mall_product_comment - - - parent_id = #{parentId}, - - - product_id = #{productId}, - - - user_id = #{userId}, - - - content = #{content}, - - - rating = #{rating}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - remark = #{remark}, - - - del_flag = #{delFlag}, - - - where id = #{id} - - - - delete - from mall_product_comment - where id in - - #{id} - - - - - 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 a73cc15..1f39eeb 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 @@ -95,6 +95,16 @@ public class SysUser extends BaseEntity /** 简介 */ private String brief; + /** + * 姓名 + */ + private String name; + + /** + * 身份证 + */ + private String idCard; + public SysUser() { @@ -228,6 +238,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; @@ -333,6 +359,8 @@ public class SysUser extends BaseEntity ", postIds=" + Arrays.toString(postIds) + ", roleId=" + roleId + ", brief='" + brief + '\'' + + ", name='" + name + '\'' + + ", idCard='" + idCard + '\'' + '}'; } } 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-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-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysUserMapper.java index 8cd762f..79bd9be 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 @@ -132,4 +132,8 @@ public interface SysUserMapper SysUser selectUserInfoById(@Param("userId") Long userId); + void updateIdCard(SysUser sysUser); + + SysUser selectByIdCard(@Param("idCard") String idCard); + } 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..3af1402 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,5 @@ public interface ISysUserService SysUser selectUserInfoById(Long userId); + AjaxResult updateIdCard(SysUser sysUser); } 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 6c203b6..9cd5a26 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,12 +1,17 @@ package com.mcwl.system.service.impl; +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; @@ -29,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; /** @@ -41,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; @@ -599,6 +608,47 @@ 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("实名认证成功"); + } + /** * 生成随机密码 * @param length diff --git a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml index 4c7d436..2bb0cd0 100644 --- a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -148,7 +148,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -223,7 +226,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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} From 872cf657504c4958ee20d526a09422d50205b3cc Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Thu, 9 Jan 2025 14:04:48 +0800 Subject: [PATCH 2/6] =?UTF-8?q?refactor(memberCenter):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BC=9A=E5=91=98=E7=A7=AF=E5=88=86=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改积分充值逻辑,将金额乘以 100 转换为积分 - 添加会员消费记录保存功能 - 优化订单交易服务,添加充值记录 - 调整支付宝支付类型比较逻辑 - 移除未使用的 RequestConditionEntity 类 --- mcwl-admin/pom.xml | 11 +++++ .../memberCenter/MemberController.java | 2 +- .../pay/AliPay/OrderTradeController.java | 4 +- .../domain/ProductCommentConditionEntity.java | 1 + .../domain/RequestConditionEntity.java | 41 ------------------- .../service/impl/MemberServiceImpl.java | 29 +++++++++---- .../service/impl/OrderTradeServiceImpl.java | 4 ++ 7 files changed, 39 insertions(+), 53 deletions(-) delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java diff --git a/mcwl-admin/pom.xml b/mcwl-admin/pom.xml index 5a751d5..d7c6bf5 100644 --- a/mcwl-admin/pom.xml +++ b/mcwl-admin/pom.xml @@ -24,6 +24,17 @@ 0.4.7 + + + + + + + + + + + com.alipay.sdk alipay-easysdk 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/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-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java index a2cf39e..2e86647 100644 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java +++ b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java @@ -1,6 +1,7 @@ package com.mcwl.comment.domain; +import com.mcwl.common.domain.RequestConditionEntity; import lombok.Data; import java.util.List; diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java deleted file mode 100644 index 0522e90..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.mcwl.comment.domain; - -import com.mcwl.common.utils.RequestPageEntity; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.List; - -/** - * 请求条件实体 - */ -@Data -public class RequestConditionEntity extends RequestPageEntity { - - - /** - * 创建日期范围 - */ - @ApiModelProperty("创建日期范围") - private List betweenTime; - - /** - * 创建开始时间 - */ - private String createBeginTime; - - /** - * 创建结束时间 - */ - private String createEndTime; - - /** - * 自定义excel表头列表 - */ - private List customizeColumnNameList; - - /** - * 查询条件 - */ - private String blurry; -} 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-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 42cb33b..6e846ef 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 @@ -158,11 +158,15 @@ public class OrderTradeServiceImpl extends ServiceImpl Date: Thu, 9 Jan 2025 14:44:59 +0800 Subject: [PATCH 3/6] =?UTF-8?q?refactor(payment):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E6=94=AF=E4=BB=98=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -暂时注释掉了 AliPayIntegration 中的 orderPay 方法 - 更新了 application.yml 中的支付宝通知 URL - 重构了 OrderTradeServiceImpl 中的订单处理逻辑 - 移除了 mcwl-pay 中的 OrderTypeEnum 枚举 - 更新了 mcwl-resource 中的 OrderTypeEnum 枚举 - 升级了 alipay-sdk-java 版本 - 在 SysUser 模型中添加了邀请人 ID 和免费积分字段 - 更新了 SysUser --- mcwl-admin/pom.xml | 2 +- .../pay/AliPay/AliPayIntegration.java | 65 +++++++++---------- mcwl-admin/src/main/resources/application.yml | 2 +- .../common/core/domain/entity/SysUser.java | 27 ++++++++ mcwl-pay/pom.xml | 6 ++ .../mcwl/pay/domain/enums/OrderTypeEnum.java | 16 ----- .../service/impl/OrderTradeServiceImpl.java | 24 ++++--- .../resource/domain/enums/OrderTypeEnum.java | 5 +- .../resources/mapper/system/SysUserMapper.xml | 2 +- 9 files changed, 86 insertions(+), 63 deletions(-) delete mode 100644 mcwl-pay/src/main/java/com/mcwl/pay/domain/enums/OrderTypeEnum.java diff --git a/mcwl-admin/pom.xml b/mcwl-admin/pom.xml index d7c6bf5..c2794f3 100644 --- a/mcwl-admin/pom.xml +++ b/mcwl-admin/pom.xml @@ -31,7 +31,7 @@ - + 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..919b44c 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 @@ -17,7 +17,6 @@ import com.mcwl.memberCenter.service.MemberLevelService; import com.mcwl.memberCenter.service.MemberService; 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 org.springframework.beans.factory.annotation.Autowired; @@ -63,38 +62,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(); +// } /** 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/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 1f39eeb..1816dc0 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 @@ -105,6 +105,17 @@ public class SysUser extends BaseEntity */ private String idCard; + /** + * 邀请人id + */ + private Long inviterUserId; + + /** + * 免费用户积分 + */ + private Double freePoints; + + public SysUser() { @@ -337,6 +348,22 @@ public class SysUser extends BaseEntity this.brief = brief; } + public Long getInviterUserId() { + return inviterUserId; + } + + public void setInviterUserId(Long inviterUserId) { + this.inviterUserId = inviterUserId; + } + + public Double getFreePoints() { + return freePoints; + } + + public void setFreePoints(Double freePoints) { + this.freePoints = freePoints; + } + @Override public String toString() { return "SysUser{" + 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/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 8dd6136..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 - 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 From a3241b83ff2122c0607680e9b5b72c5f7b858e1b Mon Sep 17 00:00:00 2001 From: Diyu0904 <1819728964@qq.com> Date: Thu, 9 Jan 2025 14:46:01 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/MallProductController.java | 150 ------------------ .../resource/WorkFlowController.java | 73 +++++++++ .../java/com/mcwl/comment/domain/Comment.java | 53 ------- .../domain/ProductCommentConditionEntity.java | 56 ------- .../comment/domain/ProductCommentEntity.java | 50 ------ .../domain/RequestConditionEntity.java | 41 ----- .../comment/domain/RequestPageEntity.java | 72 --------- .../mcwl/comment/mapper/CommentMapper.java | 31 ---- .../service/impl/CommentServiceImpl.java | 88 ---------- .../common/core/domain/entity/SysUser.java | 28 ++++ .../service/impl/OrderTradeServiceImpl.java | 25 +-- .../mcwl/resource/mapper/WorkFlowMapper.java | 18 +++ .../mapper/WorkFlowVersionMapper.java | 16 ++ .../resource/service/WorkFlowService.java | 11 ++ .../service/WorkFlowVersionService.java | 11 ++ .../service/impl/WorkFlowServiceImpl.java | 17 ++ .../impl/WorkFlowVersionServiceImpl.java | 16 ++ 17 files changed, 206 insertions(+), 550 deletions(-) delete mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductController.java create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/resource/WorkFlowController.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java delete mode 100644 mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/mapper/WorkFlowVersionMapper.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/WorkFlowVersionService.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowServiceImpl.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/service/impl/WorkFlowVersionServiceImpl.java diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductController.java deleted file mode 100644 index dc19977..0000000 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/MallProductController.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.mcwl.web.controller.resource; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -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.resource.domain.ModelProduct; -import com.mcwl.resource.domain.vo.MallProductVo; -import com.mcwl.resource.service.MallProductService; -import com.mcwl.web.controller.common.OssUtil; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.util.List; - - -/** - * 商品 - * @Author:ChenYan - * @Project:McWl - * @Package:com.mcwl.web.controller.resource - * @Filename:MallProductController - * @Description 商品 - * @Date:2024/12/31 10:48 - */ - -@RestController -@RequestMapping("/MallProduct") -public class MallProductController extends BaseController { - - - private final MallProductService mallProductRuleInfoService; - - public MallProductController(MallProductService mallProductService) { - this.mallProductRuleInfoService = mallProductService; - } - - - - /*** - * - * 图片 - * @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("/list") - public TableDataInfo list(@RequestBody ModelProduct mallProduct) - { - startPage(); - List list = mallProductRuleInfoService.selectMallProductList(mallProduct); - return getDataTable(list); - } - - - /** - * 获取详细信息 - */ - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long Id) - { - return success(mallProductRuleInfoService.getById(Id)); - } - - - /** - * 新增 - */ - @PostMapping("/add") - public AjaxResult add(@RequestBody ModelProduct mallProduct) - { - - return toAjax(mallProductRuleInfoService.insertMallProduct(mallProduct)); - } - - - /** - * 修改 - */ - @PutMapping("/upda") - public AjaxResult edit(@RequestBody ModelProduct mallProduct) - { - mallProduct.setUpdateBy(getUsername()); - return toAjax(mallProductRuleInfoService.updateMallProduct(mallProduct)); - } - - /** - * 删除 - */ - @PostMapping - public AjaxResult remove(@RequestBody IdsParam ids) - { - mallProductRuleInfoService.deleteMallProductByIds(ids); - return success(); - } - - /** - * 查看用户发布的作品 - * @return - */ - @PostMapping("/selectByUserId") - public AjaxResult selectByUserId(@RequestBody MallProductVo mallProductVo){ - - Page mallProductList = mallProductRuleInfoService.selectByUserId(mallProductVo); - return AjaxResult.success(mallProductList); - } - -} 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-comment/src/main/java/com/mcwl/comment/domain/Comment.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java deleted file mode 100644 index 202c209..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/Comment.java +++ /dev/null @@ -1,53 +0,0 @@ -//package com.mcwl.comment.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.NoArgsConstructor; -// -///** -// * @Author:ChenYan -// * @Project:McWl -// * @Package:com.mcwl.comment.domain -// * @Filename:Comment -// * @Description 评论表 -// * @Date:2025/1/4 18:47 -// */ -//@AllArgsConstructor -//@NoArgsConstructor -//@Data -//@TableName("mall_product_comment") -//public class Comment extends BaseEntity { -// -// /** -// * ID -// */ -// @TableId -// private Long id; -// /** -// * 父评论ID -// */ -// private String parentId; -// /** -// * 商品ID -// */ -// private String productId; -// /** -// * 用户ID -// */ -// private String userId; -// /** -// * 评论内容 -// */ -// private String content; -// /** -// * 评分 -// */ -// private String rating; -// /** -// * 删除标志(0代表存在 2代表删除) -// */ -// private String delFlag; -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java deleted file mode 100644 index e3c5832..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentConditionEntity.java +++ /dev/null @@ -1,56 +0,0 @@ -//package com.mcwl.comment.domain; -// -// -//import lombok.Data; -// -//import java.util.List; -// -///** -// * 商品评论查询条件实体 -// */ -//@Data -//public class ProductCommentConditionEntity extends RequestConditionEntity { -// -// /** -// * ID集合 -// */ -// private List idList; -// -// /** -// * ID -// */ -// private Long id; -// /** -// * 父评论ID -// */ -// private Long parentId; -// /** -// * 商品ID -// */ -// private Long productId; -// -// /** -// * 商品ID集合 -// */ -// private List productIdList; -// /** -// * 用户ID -// */ -// private Long userId; -// /** -// * 评论内容 -// */ -// private String content; -// /** -// * 评分 -// */ -// private Integer rating; -// /** -// * 删除标志(0代表存在 2代表删除) -// */ -// private String delFlag; -//// /** -//// * 评论类型 -//// */ -//// private Integer type; -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java deleted file mode 100644 index ac099a7..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/ProductCommentEntity.java +++ /dev/null @@ -1,50 +0,0 @@ -//package com.mcwl.comment.domain; -// -//import com.mcwl.common.core.domain.BaseEntity; -//import lombok.AllArgsConstructor; -//import lombok.Data; -//import lombok.NoArgsConstructor; -// -///** -// * @Author:ChenYan -// * @Project:McWl -// * @Package:com.mcwl.comment.domain -// * @Filename:ProductCommentEntity -// * @Description 评论实体 -// * @Date:2025/1/6 13:21 -// */ -//@AllArgsConstructor -//@NoArgsConstructor -//@Data -//public class ProductCommentEntity extends BaseEntity { -// -// /** -// * 父评论ID -// */ -// private Long parentId; -// -// /** -// * 商品ID -// */ -// private Long productId; -// -// /** -// * 用户ID -// */ -// private Long userId; -// -// /** -// * 评论内容 -// */ -// private String content; -// -// /** -// * 评分 -// */ -// private Integer rating; -// -//// /** -//// * 评论类型 -//// */ -//// private Integer type; -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java deleted file mode 100644 index 0f3e740..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestConditionEntity.java +++ /dev/null @@ -1,41 +0,0 @@ -//package com.mcwl.comment.domain; -// -//import com.mcwl.common.utils.RequestPageEntity; -//import io.swagger.annotations.ApiModelProperty; -//import lombok.Data; -// -//import java.util.List; -// -///** -// * 请求条件实体 -// */ -//@Data -//public class RequestConditionEntity extends RequestPageEntity { -// -// -// /** -// * 创建日期范围 -// */ -// @ApiModelProperty("创建日期范围") -// private List betweenTime; -// -// /** -// * 创建开始时间 -// */ -// private String createBeginTime; -// -// /** -// * 创建结束时间 -// */ -// private String createEndTime; -// -// /** -// * 自定义excel表头列表 -// */ -// private List customizeColumnNameList; -// -// /** -// * 查询条件 -// */ -// private String blurry; -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java b/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java deleted file mode 100644 index fff5643..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/domain/RequestPageEntity.java +++ /dev/null @@ -1,72 +0,0 @@ -//package com.mcwl.comment.domain; -// -//import cn.hutool.core.collection.CollectionUtil; -//import lombok.AllArgsConstructor; -//import lombok.Data; -//import lombok.NoArgsConstructor; -// -//import java.io.Serializable; -//import java.util.List; -//import java.util.Objects; -// -///** -// * 分页请求实体 -// */ -//@AllArgsConstructor -//@NoArgsConstructor -//@Data -//public class RequestPageEntity implements Serializable { -// -// private static final int DEFAULT_PAGE_SIZE = 10; -// -// /** -// * 页码,默认从一页开始 -// */ -// private Integer pageNo = 1; -// -// /** -// * 每页大小,默认一页查询10条数据 -// */ -// private Integer pageSize = DEFAULT_PAGE_SIZE; -// -// /** -// * 排序字段 -// */ -// private List sortField; -// -// -// /** -// * 获取分页开始位置 -// * -// * @return 分页开始位置 -// */ -// public Integer getPageBegin() { -// if (Objects.isNull(this.pageNo) || this.pageNo <= 0) { -// this.pageNo = 1; -// } -// -// if (Objects.isNull(this.pageSize)) { -// this.pageSize = DEFAULT_PAGE_SIZE; -// } -// -// return (this.pageNo - 1) * this.pageSize; -// } -// -// /** -// * 获取用户自定义排序集合 -// * -// * @return 排序集合实体 -// */ -// public String getSortString() { -// List sortField = this.getSortField(); -// if (CollectionUtil.isEmpty(sortField)) { -// return null; -// } -// StringBuilder sortBuilder = new StringBuilder(); -// for (String field : sortField) { -// String[] values = field.split(","); -// sortBuilder.append(String.format("%s %s", values[0], values[1])).append(","); -// } -// return sortBuilder.deleteCharAt(sortBuilder.length() - 1).toString(); -// } -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java b/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java deleted file mode 100644 index 79038a8..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/mapper/CommentMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -//package com.mcwl.comment.mapper; -// -// -//import com.mcwl.comment.domain.ProductCommentConditionEntity; -//import com.mcwl.comment.domain.ProductCommentEntity; -//import com.mcwl.common.web.BaseMapper; -//import com.mcwl.resource.domain.MallProduct; -//import org.apache.ibatis.annotations.Param; -// -//import java.util.List; -// -///** -// * @Author:ChenYan -// * @Project:McWl -// * @Package:com.mcwl.comment.mapper -// * @Filename:CommentMapper -// * @Description TODO -// * @Date:2025/1/4 19:04 -// */ -//public interface CommentMapper extends BaseMapper { -// -// MallProduct findById(@Param("id") Long id); -// -// int insert(ProductCommentEntity productCommentEntity); -// -// int upda(ProductCommentEntity productCommentEntity); -// -// List findByIds(List ids); -// -// int deleteByIds(List ids, ProductCommentEntity productCommentEntity); -//} diff --git a/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java b/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java deleted file mode 100644 index f3bae10..0000000 --- a/mcwl-comment/src/main/java/com/mcwl/comment/service/impl/CommentServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -//package com.mcwl.comment.service.impl; -// -// -//import com.mcwl.comment.domain.ProductCommentConditionEntity; -//import com.mcwl.comment.domain.ProductCommentEntity; -//import com.mcwl.comment.mapper.CommentMapper; -//import com.mcwl.common.core.domain.AjaxResult; -//import com.mcwl.common.utils.AssertUtil; -//import com.mcwl.common.utils.FillUserUtil; -//import com.mcwl.common.utils.ResponsePageEntity; -//import com.mcwl.common.utils.SecurityUtils; -//import com.mcwl.common.utils.bean.BaseService; -// -//import com.mcwl.common.web.BaseMapper; -//import com.mcwl.resource.domain.MallProduct; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -//import java.util.List; -//import java.util.Objects; -// -//import static com.mcwl.common.utils.SecurityUtils.getUsername; -// -///** -// * @Author:ChenYan -// * @Project:McWl -// * @Package:com.mcwl.comment.service.impl -// * @Filename:CommentServiceImpl -// * @Description TODO -// * @Date:2025/1/4 19:04 -// */ -//@Service -//public class CommentServiceImpl extends BaseService { -// -// @Autowired -// private CommentMapper commentMapper; -// -// -// public MallProduct findById(Long id) { -// return commentMapper.findById(id); -// } -// -// -// public int insert(ProductCommentEntity productCommentEntity) { -// // 获取当前用户 -// Long userId = SecurityUtils.getUserId(); -// productCommentEntity.setUserId(userId); -// productCommentEntity.setCreateBy(getUsername()); -// checkParam(productCommentEntity); -// return commentMapper.insert(productCommentEntity); -// } -// -// -// public int update(ProductCommentEntity productCommentEntity) { -// // 获取当前用户 -// Long userId = SecurityUtils.getUserId(); -// productCommentEntity.setUserId(userId); -// productCommentEntity.setUpdateBy(getUsername()); -// checkParam(productCommentEntity); -// return commentMapper.upda(productCommentEntity); -// } -// -// -// public int deleteByIds(List ids) { -// List entities = commentMapper.findByIds(ids); -// AssertUtil.notEmpty(entities, "商品评论已被删除"); -// -// ProductCommentEntity entity = new ProductCommentEntity(); -// FillUserUtil.fillUpdateUserInfo(entity); -// return commentMapper.deleteByIds(ids, entity); -// } -// private void checkParam(ProductCommentEntity productCommentEntity) { -// if (Objects.nonNull(productCommentEntity.getParentId()) && productCommentEntity.getParentId() > 0) { -// MallProduct productEntity = commentMapper.findById(productCommentEntity.getParentId()); -// AssertUtil.notNull(productEntity, "该父评论在系统中不存在"); -// } -// -// MallProduct userEntity = commentMapper.findById(productCommentEntity.getUserId()); -// AssertUtil.notNull(userEntity, "该用户在系统中不存在"); -// -// MallProduct productEntity = commentMapper.findById(productCommentEntity.getProductId()); -// AssertUtil.notNull(productEntity, "该商品在系统中不存在"); -// } -// -// @Override -// protected BaseMapper getBaseMapper() { -// return commentMapper; -// } -//} 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 1f39eeb..a07004e 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 @@ -105,6 +105,32 @@ public class SysUser extends BaseEntity */ private String idCard; + /** + * 邀请人id + */ + private Long inviterUserId; + + /** + * 免费用户积分 + */ + private Double freePoints; + + public Long getInviterUserId() { + return inviterUserId; + } + + public void setInviterUserId(Long inviterUserId) { + this.inviterUserId = inviterUserId; + } + + public Double getFreePoints() { + return freePoints; + } + + public void setFreePoints(Double freePoints) { + this.freePoints = freePoints; + } + public SysUser() { @@ -361,6 +387,8 @@ public class SysUser extends BaseEntity ", brief='" + brief + '\'' + ", name='" + name + '\'' + ", idCard='" + idCard + '\'' + + ", inviterUserId=" + inviterUserId + + ", freePoints=" + freePoints + '}'; } } 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..7f0db99 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,30 @@ 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.domain.enums.OrderTypeEnum; import com.mcwl.pay.mapper.OrderTradeMapper; import com.mcwl.pay.service.OrderTradeService; +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.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.Objects; /** * @Author:ChenYan @@ -36,12 +49,6 @@ public class OrderTradeServiceImpl extends ServiceImpl { + + +} 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/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/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 { + +} 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 5/6] =?UTF-8?q?feat(resource):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E5=92=8C?= =?UTF-8?q?=E8=AF=84=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 + + + + From bce9420d555169885f74100a5d097399b017f71e Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Fri, 10 Jan 2025 19:04:28 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat(system):=20=E6=96=B0=E5=A2=9E=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加消息通知相关枚举、实体类、服务接口和实现类 - 实现用户消息、系统公告等功能接口 - 新增消息通知相关的数据库表和映射文件 - 优化用户信息查询接口,支持批量查询 --- .../main/java/com/mcwl/McWlApplication.java | 1 - .../resource/ModelImageController.java | 36 +++++++--- .../system/SysAdviceController.java | 57 +++++++++++++++ .../consumer/EmptyPointsRemindConsumer.java | 26 +++++-- .../consumer/MemberBillingConsumer.java | 17 ++++- .../memberCenter/task/UserMemberTask.java | 15 ++++ .../java/com/mcwl/pay/config/AliConfig.java | 7 +- .../domain/ModelImageCommentLike.java | 3 + .../domain/dto/ModelImageCommentRes.java | 27 +++++++ .../mapper/ModelImageCommentLikeMapper.java | 1 + .../service/ModelImageCommentLikeService.java | 2 + .../resource/service/ModelImageService.java | 14 ++++ .../ModelImageCommentLikeServiceImpl.java | 51 ++++++++++++++ .../service/impl/ModelImageServiceImpl.java | 45 ++++++++++++ .../resource/ModelImageCommentLikeMapper.xml | 38 ++++++++++ .../com/mcwl/system/domain/SysAdvice.java | 54 ++++++++++++++ .../mcwl/system/domain/enums/AdviceEnum.java | 58 +++++++++++++++ .../com/mcwl/system/domain/vo/AdviceVo.java | 29 ++++++++ .../mcwl/system/mapper/SysAdviceMapper.java | 16 +++++ .../com/mcwl/system/mapper/SysUserMapper.java | 2 + .../system/service/ISysAdviceService.java | 24 +++++++ .../mcwl/system/service/ISysUserService.java | 3 + .../service/impl/SysAdviceServiceImpl.java | 70 +++++++++++++++++++ .../service/impl/SysUserServiceImpl.java | 6 ++ .../resources/mapper/system/SysUserMapper.xml | 10 +++ 25 files changed, 596 insertions(+), 16 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/system/SysAdviceController.java create mode 100644 mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageCommentRes.java create mode 100644 mcwl-resource/src/main/resources/mapper/resource/ModelImageCommentLikeMapper.xml create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/SysAdvice.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/enums/AdviceEnum.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/vo/AdviceVo.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/mapper/SysAdviceMapper.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/service/ISysAdviceService.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/service/impl/SysAdviceServiceImpl.java diff --git a/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java b/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java index 26960e7..e7c3b73 100644 --- a/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java +++ b/mcwl-admin/src/main/java/com/mcwl/McWlApplication.java @@ -18,7 +18,6 @@ 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/resource/ModelImageController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/resource/ModelImageController.java index 38efa1a..37d5f20 100644 --- 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 @@ -5,8 +5,11 @@ 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; @@ -25,6 +28,8 @@ public class ModelImageController { private final ModelImageLikeService modelImageLikeService; + private final ModelImageCommentLikeService modelImageCommentLikeService; + /** * 图片上传 @@ -42,24 +47,39 @@ public class ModelImageController { */ @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); + modelImageService.publish(modelImageRes); return AjaxResult.success(); } /** * 图片点赞/取消 */ - @GetMapping("/like/{imageId}") + @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/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-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/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/src/main/java/com/mcwl/pay/config/AliConfig.java b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java index d0a6a23..95ebbf6 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java @@ -2,18 +2,21 @@ 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 -@ConfigurationProperties(prefix = "mall.mgt.aliPayConfig") @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-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java index d1c8ec1..a682e4e 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/ModelImageCommentLike.java @@ -24,6 +24,9 @@ public class ModelImageCommentLike extends BaseEntity { */ private Long userId; + /** + * 图片评论id + */ private Long modelImageCommentId; diff --git a/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageCommentRes.java b/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageCommentRes.java new file mode 100644 index 0000000..ce2e6e2 --- /dev/null +++ b/mcwl-resource/src/main/java/com/mcwl/resource/domain/dto/ModelImageCommentRes.java @@ -0,0 +1,27 @@ +package com.mcwl.resource.domain.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class ModelImageCommentRes { + /** + * 图片id + */ + @NotNull(message = "图片id不能为空") + private Long modelImageId; + + /** + * 评论内容 + */ + @NotBlank(message = "评论内容不能为空") + private String content; + + /** + * 父评论id + */ + private Long parentId; + +} 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 index 4d5137a..e266230 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/mapper/ModelImageCommentLikeMapper.java @@ -7,4 +7,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ModelImageCommentLikeMapper extends BaseMapper { + ModelImageCommentLike getLikeImageComment(Long userId, Long commentId); } 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 index 55e8313..95f1fdc 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageCommentLikeService.java @@ -3,7 +3,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; +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/ModelImageService.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java index 43550fb..2e79d86 100644 --- a/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java +++ b/mcwl-resource/src/main/java/com/mcwl/resource/service/ModelImageService.java @@ -5,8 +5,22 @@ 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/impl/ModelImageCommentLikeServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageCommentLikeServiceImpl.java index d347426..1e7c014 100644 --- 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 @@ -1,15 +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/ModelImageServiceImpl.java b/mcwl-resource/src/main/java/com/mcwl/resource/service/impl/ModelImageServiceImpl.java index 0aca774..18222d6 100644 --- 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 @@ -1,25 +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/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 @@ + + + + + + + + + + + + + + + + + + + select id, + user_id, + model_image_comment_id, + create_by, + create_time, + update_by, + update_time, + del_flag, + remark + from model_image_comment_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 79bd9be..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 @@ -136,4 +136,6 @@ public interface SysUserMapper 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 3af1402..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 @@ -215,4 +215,7 @@ 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 9cd5a26..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 @@ -649,6 +649,12 @@ public class SysUserServiceImpl implements ISysUserService return AjaxResult.success("实名认证成功"); } + @Override + public List listByIds(List userIdList) { + return userMapper.listByIds(userIdList); + } + + /** * 生成随机密码 * @param length diff --git a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml index edbbe0e..69ecb7f 100644 --- a/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/mcwl-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -156,6 +156,16 @@ select * from sys_user where id_card = #{idCard} + + + insert into sys_user( user_id,