From 6cfc2e4258089c953b67054229170c1178585590 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 23 三月 2026 14:19:33 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 89 insertions(+), 31 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
index 3eff438..c1cba43 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
@@ -1,5 +1,7 @@
package com.doumee.service.business.impl;
+import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest;
+import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,14 +14,9 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.CommentJoinMapper;
-import com.doumee.dao.business.CommentMapper;
-import com.doumee.dao.business.MemberMapper;
-import com.doumee.dao.business.MultifileMapper;
-import com.doumee.dao.business.model.Activity;
-import com.doumee.dao.business.model.Comment;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.model.*;
import com.doumee.dao.web.dto.CommentDTO;
import com.doumee.dao.web.dto.ZanDTO;
import com.doumee.dao.web.dto.activity.ActivityCommentDTO;
@@ -28,6 +25,7 @@
import com.doumee.service.business.CommentService;
import com.doumee.service.business.ZanService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -57,6 +55,9 @@
private MemberMapper memberMapper;
@Autowired
+ private NoticeMapper noticeMapper;
+
+ @Autowired
private ZanService zanService;
@Autowired
@@ -70,6 +71,26 @@
@Override
public Comment apply(CommentApplyRequest comment, Integer memberId) {
+ if (StringUtils.isNotBlank(comment.getContent())) {
+ try {
+ WxMaMsgSecCheckCheckRequest checkRequest = WxMaMsgSecCheckCheckRequest.builder()
+ .version("2")
+ .scene(3)
+ .openid(getMemberOpenId(memberId))
+ .content(comment.getContent())
+ .build();
+ WxMaMsgSecCheckCheckResponse checkResponse = WxMiniConfig.wxMaService.getSecurityService().checkMessage(checkRequest);
+ if (checkResponse.getResult() != null && checkResponse.getResult().getSuggest() != null) {
+ String suggest = checkResponse.getResult().getSuggest();
+ if ("risky".equalsIgnoreCase(suggest)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇勮鍐呭鍖呭惈杩濊淇℃伅锛岃淇敼鍚庨噸鏂板彂甯�");
+ }
+ }
+ } catch (WxErrorException e) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍐呭瀹夊叏妫�娴嬪け璐ワ紝璇风◢鍚庨噸璇�");
+ }
+ }
+
Comment target = new Comment();
target.setCreateDate(new Date());
target.setEditDate(new Date());
@@ -90,14 +111,23 @@
);
reply = Optional.ofNullable(reply).orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍥炲鐩爣涓嶅瓨鍦�"));
target.setReplyId(reply.getId());
- target.setReplyMemberId(reply.getMemberId());
- target.setReplyMemberNikeName(reply.getReplyMemberNikeName());
- target.setCommentId(reply.getId());
- target.setCommentMemberId(reply.getMemberId());
+ target.setCommentId(Objects.isNull(reply.getCommentId())?reply.getId():reply.getCommentId());
target.setType(Constants.ONE);
- target.setCommentId(reply.getCommentId());
- target.setCommentMemberId(reply.getCommentMemberId());
- }else if (comment.getCommentId() != null ){
+ target.setCommentMemberId(reply.getMemberId());
+
+ if(!Constants.equalsInteger(memberId,reply.getMemberId())){
+ Member member = memberMapper.selectById(memberId);
+ //璇勮鍙戦�佺敤鎴锋秷鎭�
+ //鍙戦�佹牳閿�閫氱煡
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.COMMENT,
+ reply.getMemberId(),
+ reply.getActivityId()
+ );
+ notice.setContent(notice.getContent().replace("{param}",member.getNickname()));
+ noticeMapper.insert(notice);
+ }
+ }else if(comment.getCommentId() != null ){
Comment reply = commentMapper.selectById(comment.getCommentId());
reply = Optional.ofNullable(reply).orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "涓�绾ц瘎璁虹洰鏍囦笉瀛樺湪"));
target.setCommentId(reply.getCommentId());
@@ -138,8 +168,18 @@
@Override
- public void deleteById(Integer id) {
- commentMapper.deleteById(id);
+ public void deleteById(Integer id,Integer memberId) {
+ Comment comment = commentMapper.selectById(id);
+ if(Objects.isNull(comment)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇勮涓嶅瓨鍦�");
+ }
+ if(!Constants.equalsInteger(memberId,comment.getMemberId())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "闈炴偍鐨勮瘎璁烘棤鏉冮檺鍒犻櫎");
+ }
+ commentMapper.update(new UpdateWrapper<Comment>().lambda()
+ .set(Comment::getIsdeleted,Constants.ONE)
+ .eq(Comment::getId,id)
+ );
}
@Override
@@ -247,7 +287,7 @@
queryWrapper.eq(Comment::getType, Constants.ZERO);
queryWrapper.eq(Comment::getStatus, Constants.ZERO);
queryWrapper.eq(Comment::getActivityId,pageWrap.getModel().getActivityId());
- queryWrapper.orderByDesc(Comment::getId);
+ queryWrapper.orderByAsc(Comment::getId);
IPage<ActivityCommentDTO> result = commentJoinMapper.selectJoinPage(page, ActivityCommentDTO.class, queryWrapper);
if (CollectionUtils.isEmpty(result.getRecords())){
@@ -258,6 +298,8 @@
MPJLambdaWrapper<Comment> replyWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
replyWrapper.selectAs(Comment::getId,ActivityReplyCommentDTO::getId);
+ replyWrapper.selectAs(Comment::getReplyId,ActivityReplyCommentDTO::getReplyId);
+ replyWrapper.selectAs(Comment::getIsdeleted,ActivityReplyCommentDTO::getIsdeleted);
if(Objects.isNull(pageWrap.getModel().getMemberId())){
replyWrapper.select(" 0 ",ActivityReplyCommentDTO::getZanStatus);
}else{
@@ -271,11 +313,12 @@
replyWrapper.selectAs(Member::getImgurl,ActivityReplyCommentDTO::getMemberImgUrl);
replyWrapper.selectCount(Comment::getId,ActivityReplyCommentDTO::getReplyCount);
replyWrapper.selectMin(Comment::getCreateDate,ActivityReplyCommentDTO::getCreateDate);
+ replyWrapper.select("reply.NICKNAME",ActivityReplyCommentDTO::getReplyMemberNikeName);
replyWrapper.leftJoin(Member.class,Member::getId,Comment::getMemberId);
+ replyWrapper.leftJoin("member reply on reply.id = t.REPLY_MEMBER_ID");
replyWrapper.eq(Comment::getType, Constants.ONE);
replyWrapper.eq(Comment::getStatus, Constants.ZERO);
replyWrapper.in(Comment::getCommentId,commentIds);
- replyWrapper.orderByDesc(Comment::getId);
replyWrapper.groupBy(Comment::getCommentId);
List<ActivityReplyCommentDTO> activityCommentDTOS = commentJoinMapper.selectJoinList(ActivityReplyCommentDTO.class, replyWrapper);
@@ -300,17 +343,25 @@
}
}
result.getRecords().forEach(s->{
- s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
- s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+ if(Constants.equalsInteger(s.getIsdeleted(),Constants.ONE)){
+ s.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+ }else{
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+ s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+ }
}
+ s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
ZanDTO object = MapUtils.getObject(count, s.getId());
ActivityReplyCommentDTO replyCommentDTO = collect.get(s.getId());
if(Objects.nonNull(replyCommentDTO)){
ZanDTO replyZan = MapUtils.getObject(count, replyCommentDTO.getId());
replyCommentDTO.setZanCount(replyZan != null ? replyZan.getCount() : 0);
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
- replyCommentDTO.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+ if(Constants.equalsInteger(replyCommentDTO.getIsdeleted(),Constants.ONE)){
+ replyCommentDTO.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+ }else{
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+ replyCommentDTO.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(replyCommentDTO.getId())).collect(Collectors.toList()));
+ }
}
replyCommentDTO.setMemberImgUrl(StringUtils.isNotBlank(replyCommentDTO.getMemberImgUrl())?memberFile+replyCommentDTO.getMemberImgUrl():null);
s.setActivityReplyCommentDTO(replyCommentDTO);
@@ -338,11 +389,11 @@
queryWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.ISDELETED = 0 and z.OBJ_TYPE = 0) ",ActivityReplyCommentDTO::getZanCount);
queryWrapper.select("reply.NICKNAME as replyMemberNikeName");
queryWrapper.leftJoin(Member.class,Member::getId,Comment::getMemberId);
- queryWrapper.leftJoin("member reply on reply.id = t.REPLY_MEMBER_ID");
+ queryWrapper.leftJoin("member reply on reply.id = t.COMMENT_MEMBER_ID");
queryWrapper.eq(Comment::getType, Constants.ONE);
queryWrapper.eq(Comment::getStatus, Constants.ZERO);
queryWrapper.eq(Comment::getCommentId,pageWrap.getModel().getCommentId());
- queryWrapper.orderByDesc(Comment::getId);
+ queryWrapper.orderByAsc(Comment::getId);
IPage<ActivityReplyCommentDTO> result = commentJoinMapper.selectJoinPage(page, ActivityReplyCommentDTO.class, queryWrapper);
if (CollectionUtils.isEmpty(result.getRecords())){
return PageData.from(result);
@@ -363,20 +414,27 @@
}
}
List<Integer> integerStream = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
-
Map<Integer, ZanDTO> count = zanService.count(integerStream);
result.getRecords().forEach(s->{
- s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
- s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+ if(Constants.equalsInteger(s.getIsdeleted(),Constants.ONE)){
+ s.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+ }else{
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+ s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+ }
}
+ s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
ZanDTO replyZan = MapUtils.getObject(count, s.getId());
s.setZanCount(replyZan != null ? replyZan.getCount() : 0);
if (pageWrap.getModel().getCommentId().equals(s.getReplyId())){
s.setReplyMemberNikeName(null);
}
});
-
return PageData.from(result);
}
+
+ private String getMemberOpenId(Integer memberId) {
+ Member member = memberMapper.selectById(memberId);
+ return member != null ? member.getOpenId() : null;
+ }
}
--
Gitblit v1.9.3