提交 7bd5136f 作者: xiaowang

动态审核

上级 226e4486
...@@ -34,6 +34,8 @@ public class UserAccountSimpleDTO implements Serializable { ...@@ -34,6 +34,8 @@ public class UserAccountSimpleDTO implements Serializable {
private String nickName; private String nickName;
@ApiModelProperty(value = "用户头像") @ApiModelProperty(value = "用户头像")
private String userImg; private String userImg;
@ApiModelProperty(value = "openid")
private String openid;
@ApiModelProperty(value = "用户性别:0未知、1男、2女") @ApiModelProperty(value = "用户性别:0未知、1男、2女")
private Integer userSex; private Integer userSex;
@ApiModelProperty(value = "用户邮箱") @ApiModelProperty(value = "用户邮箱")
......
...@@ -402,7 +402,7 @@ public enum ResultEnum implements BaseErrorInfoInterface { ...@@ -402,7 +402,7 @@ public enum ResultEnum implements BaseErrorInfoInterface {
INDUSTRY_NEWS_TITLE_EXISTS("40200", "文章标题存在"), INDUSTRY_NEWS_TITLE_EXISTS("40200", "文章标题存在"),
// 论坛 // 论坛
DYNAMIC_SENSITIVE_INFO("50100", "发布信息涉及敏感信息!"); DYNAMIC_SENSITIVE_INFO("50100", "发布内容涉及敏感信息!");
/** /**
* 错误码 * 错误码
* *
......
...@@ -4,7 +4,6 @@ import com.mmc.csf.common.util.web.ResultBody; ...@@ -4,7 +4,6 @@ import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.forum.vo.CommentVO; import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO; import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.service.DynamicService; import com.mmc.csf.release.service.DynamicService;
import com.mmc.csf.release.service.WxApiService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -22,30 +21,13 @@ public class DynamicController extends BaseController { ...@@ -22,30 +21,13 @@ public class DynamicController extends BaseController {
@Resource @Resource
private DynamicService dynamicService; private DynamicService dynamicService;
@Resource
private WxApiService wxApiService;
@ApiOperation(value = "动态发布") @ApiOperation(value = "动态发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/publish") @PostMapping("/publish")
public ResultBody publishDynamic(@RequestBody DynamicVO dynamicVO, HttpServletRequest request) { public ResultBody publishDynamic(@RequestBody DynamicVO dynamicVO, HttpServletRequest request) {
return dynamicService.insertDynamic( return dynamicService.insertDynamic(
dynamicVO, this.getUserLoginInfoFromRedis(request).getUserAccountId()); dynamicVO, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request);
}
// @ApiOperation(value = "内容test")
// @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
// @GetMapping("/test")
// public ResultBody publishDynamic(@RequestParam String content, HttpServletRequest request) {
// return wxApiService.msgSecCheck("ohQPS5Ca4K6mY4Eju6Vsev096SxM", content);
// }
@ApiOperation(value = "test")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("/test/te")
public String publishDynamic(String content) {
System.out.println(content);
return "success";
} }
@ApiOperation(value = "点赞或取消点赞") @ApiOperation(value = "点赞或取消点赞")
......
package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.service.WxApiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
* @Author LW
* @date 2023/7/12 17:32
* 概要:
*/
@Api(tags = {"wx-api"})
@RestController
@RequestMapping("/wechat")
public class WxApiController {
@Resource
WxApiService wxApiService;
/**
* 正确响应微信发送的Token验证,注意 这里是 get请求
*/
@PostMapping("/checkSignature")
@ApiOperation(value = "校验签名")
public String verifyUrl(Map<String, String> params) throws Exception {
return wxApiService.checkSignature(params);
}
@PostMapping("/mediaCheckAsync")
@ApiOperation(value = "媒体资源安全检查")
public ResultBody mediaCheckAsync(String mediaUrl) {
return wxApiService.mediaCheckAsync("ohQPS5Ca4K6mY4Eju6Vsev096SxM", mediaUrl);
}
}
...@@ -10,136 +10,138 @@ import java.util.List; ...@@ -10,136 +10,138 @@ import java.util.List;
/** /**
* @Author LW * @Author LW
*
* @date 2023/5/15 10:29 概要:动态信息数据访问层 * @date 2023/5/15 10:29 概要:动态信息数据访问层
*/ */
@Mapper @Mapper
public interface DynamicDAO { public interface DynamicDAO {
/** /**
* 插入动态 * 插入动态
* *
* @param forumDynamicDO 论坛动态信息 * @param forumDynamicDO 论坛动态信息
* @return {@link ForumDynamicDO} * @return {@link ForumDynamicDO}
*/ */
void insertDynamic(ForumDynamicDO forumDynamicDO); void insertDynamic(ForumDynamicDO forumDynamicDO);
/** /**
* 插入图片 * 插入图片
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param url url * @param url url
*/ */
void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url); void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url);
/** /**
* 插入视频 * 插入视频
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param videoUrl 视频网址 * @param videoUrl 视频网址
*/ */
void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl); void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl);
/** /**
* 更新动态点赞数量 * 更新动态点赞数量
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param version version * @param version version
*/ */
void updateDynamicLikeCount( void updateDynamicLikeCount(
@Param("dynamicId") Integer dynamicId, @Param("version") Integer version); @Param("dynamicId") Integer dynamicId, @Param("version") Integer version);
/** /**
* 得到动态信息 * 得到动态信息
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link ForumDynamicDO} * @return {@link ForumDynamicDO}
*/ */
ForumDynamicDO getDynamicInfo(Integer dynamicId); ForumDynamicDO getDynamicInfo(Integer dynamicId);
/** /**
* 动态点赞数减 * 动态点赞数减
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param version version * @param version version
*/ */
void updateSubDynamicLikeCount(Integer dynamicId, Integer version); void updateSubDynamicLikeCount(Integer dynamicId, Integer version);
/** /**
* 更新动态评论数 * 更新动态评论数
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param version version * @param version version
*/ */
void updateDynamicCommentCount(Integer dynamicId, Integer version); void updateDynamicCommentCount(Integer dynamicId, Integer version);
/** /**
* 动态列表计数 * 动态列表计数
* *
* @return int * @return int
*/ */
int countDynamicList(); int countDynamicList();
/** /**
* 动态列表 * 动态列表
* *
* @param itemIndex 项指数 * @param itemIndex 项指数
* @param pageSize 页面大小 * @param pageSize 页面大小
* @return {@link List}<{@link ForumDynamicDO}> * @return {@link List}<{@link ForumDynamicDO}>
*/ */
List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize); List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize);
/** /**
* 列表动态图片 * 列表动态图片
* *
* @param ids id * @param ids id
* @return {@link List}<{@link ForumResourceDO}> * @return {@link List}<{@link ForumResourceDO}>
*/ */
List<ForumResourceDO> listDynamicPicture(List<Integer> ids); List<ForumResourceDO> listDynamicPicture(List<Integer> ids);
/** /**
* 动态视频列表 * 动态视频列表
* *
* @param ids id * @param ids id
* @return {@link List}<{@link ForumVideoDO}> * @return {@link List}<{@link ForumVideoDO}>
*/ */
List<ForumVideoDO> listDynamicVideo(List<Integer> ids); List<ForumVideoDO> listDynamicVideo(List<Integer> ids);
/** /**
* 动态图片 * 动态图片
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link List}<{@link ForumResourceDO}> * @return {@link List}<{@link ForumResourceDO}>
*/ */
List<ForumResourceDO> dynamicPicture(Integer dynamicId); List<ForumResourceDO> dynamicPicture(Integer dynamicId);
/** /**
* 动态视频 * 动态视频
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link ForumVideoDO} * @return {@link ForumVideoDO}
*/ */
ForumVideoDO dynamicVideo(Integer dynamicId); ForumVideoDO dynamicVideo(Integer dynamicId);
void insertResource( void insertResource(
@Param("dynamicId") Integer dynamicId, @Param("type") int type, @Param("url") String url); @Param("dynamicId") Integer dynamicId, @Param("type") int type, @Param("url") String url);
List<ForumResourceDO> listDynamicResources(Integer dynamicId); List<ForumResourceDO> listDynamicResources(Integer dynamicId);
List<ForumDynamicDO> getDynamicComment(String dynamicId); List<ForumDynamicDO> getDynamicComment(String dynamicId);
void deleteDynamic(Integer dynamicId); void deleteDynamic(Integer dynamicId);
void hiddenDynamic(Integer dynamicId); void hiddenDynamic(Integer dynamicId);
List<ForumDynamicDO> listDynamicByUserId(Integer id); List<ForumDynamicDO> listDynamicByUserId(Integer id);
void batchDeleteDynamic(List<Integer> dynamicIds); void batchDeleteDynamic(List<Integer> dynamicIds);
/** /**
* 查询动态详情 * 查询动态详情
* @param dynamicId *
* @return * @param dynamicId
*/ * @return
ForumDynamicDO getDynamicInfoById(Integer dynamicId); */
ForumDynamicDO getDynamicInfoById(Integer dynamicId);
List<ForumDynamicDO> firstTwoItemsComment(List<Integer> ids);
} }
...@@ -22,59 +22,79 @@ import java.math.BigDecimal; ...@@ -22,59 +22,79 @@ import java.math.BigDecimal;
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class ForumDynamicDO extends BaseDO implements Serializable { public class ForumDynamicDO extends BaseDO implements Serializable {
private static final long serialVersionUID = 570379773690905364L; private static final long serialVersionUID = 570379773690905364L;
/** 版本字段 */ /**
private Integer version; * 版本字段
/** 发布用户ID */ */
private Integer userAccountId; private Integer version;
/** 动态描述 */ /**
private String description; * 发布用户ID
/** 发布动态具体位置 */ */
private String location; private Integer userAccountId;
/** 发布动态纬度 */ /**
private BigDecimal lat; * 动态描述
/** 发布动态经度 */ */
private BigDecimal lon; private String description;
/** 点赞数 */ /**
private Integer likesCount; * 发布动态具体位置
/** 评论数 */ */
private Integer commentsCount; private String location;
/** 记录父节点id */ /**
private String rootPath; * 发布动态纬度
*/
private BigDecimal lat;
/**
* 发布动态经度
*/
private BigDecimal lon;
/**
* 点赞数
*/
private Integer likesCount;
/**
* 评论数
*/
private Integer commentsCount;
/**
* 记录父节点id
*/
private String rootPath;
public ForumDynamicDO(DynamicVO dynamicVO) { private Integer checkStatus;
this.description = dynamicVO.getDescription();
this.location = dynamicVO.getLocation();
this.lat = dynamicVO.getLat();
this.lon = dynamicVO.getLon();
}
public DynamicVO buildDynamicVO() { public ForumDynamicDO(DynamicVO dynamicVO) {
return DynamicVO.builder() this.description = dynamicVO.getDescription();
.id(this.getId()) this.location = dynamicVO.getLocation();
.userAccountId(userAccountId) this.lat = dynamicVO.getLat();
.description(description) this.lon = dynamicVO.getLon();
.commentCount(commentsCount) }
.likesCount(likesCount)
.lat(lat)
.lon(lon)
.location(location)
.dynamicPublishTime(this.getCreateTime())
.build();
}
public DynamicInfoDTO buildDynamicInfoDTO() { public DynamicVO buildDynamicVO() {
return DynamicInfoDTO.builder() return DynamicVO.builder()
.id(this.getId()) .id(this.getId())
.userAccountId(userAccountId) .userAccountId(userAccountId)
.description(description) .description(description)
.show(this.getDeleted()) .commentCount(commentsCount)
.build(); .likesCount(likesCount)
} .lat(lat)
.lon(lon)
.location(location)
.dynamicPublishTime(this.getCreateTime())
.build();
}
public void defaultInfo() { public DynamicInfoDTO buildDynamicInfoDTO() {
this.lon = null; return DynamicInfoDTO.builder()
this.lat = null; .id(this.getId())
this.location = null; .userAccountId(userAccountId)
} .description(description)
.show(this.getDeleted())
.build();
}
public void defaultInfo() {
this.lon = null;
this.lat = null;
this.location = null;
}
} }
...@@ -9,52 +9,51 @@ import javax.servlet.http.HttpServletRequest; ...@@ -9,52 +9,51 @@ import javax.servlet.http.HttpServletRequest;
/** /**
* @Author LW 测试合并 * @Author LW 测试合并
*
* @date 2023/5/15 10:29 概要:动态信息service层 * @date 2023/5/15 10:29 概要:动态信息service层
*/ */
public interface DynamicService { public interface DynamicService {
/** /**
* 插入动态 * 插入动态
* *
* @param dynamicVO 动态 * @param dynamicVO 动态
* @return {@link ResultBody} * @return {@link ResultBody}
*/ */
ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId); ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId, HttpServletRequest request);
/** /**
* 点赞动态 * 点赞动态
* *
* @param userId 用户id * @param userId 用户id
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link ResultBody} * @return {@link ResultBody}
*/ */
ResultBody likeDynamic(Integer userId, Integer dynamicId); ResultBody likeDynamic(Integer userId, Integer dynamicId);
/** /**
* 评论动态 * 评论动态
* *
* @param commentVO 评论信息 * @param commentVO 评论信息
* @return {@link ResultBody} * @return {@link ResultBody}
*/ */
ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId); ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId);
/** /**
* 删除评论 * 删除评论
* *
* @param id id * @param id id
* @return {@link ResultBody} * @return {@link ResultBody}
*/ */
ResultBody deleteComment(Integer id); ResultBody deleteComment(Integer id);
/** /**
* 动态细节 * 动态细节
* *
* @param dynamicId 动态id * @param dynamicId 动态id
* @param userId 用户id * @param userId 用户id
* @return {@link ResultBody} * @return {@link ResultBody}
*/ */
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request); ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
PageResult dynamicList( PageResult dynamicList(
Integer pageNo, Integer pageSize, Integer userAccountId, HttpServletRequest request); Integer pageNo, Integer pageSize, Integer userAccountId, HttpServletRequest request);
} }
...@@ -2,8 +2,6 @@ package com.mmc.csf.release.service; ...@@ -2,8 +2,6 @@ package com.mmc.csf.release.service;
import com.mmc.csf.common.util.web.ResultBody; import com.mmc.csf.common.util.web.ResultBody;
import java.util.Map;
/** /**
* @Author LW * @Author LW
* @date 2023/7/12 13:44 * @date 2023/7/12 13:44
...@@ -18,8 +16,4 @@ public interface WxApiService { ...@@ -18,8 +16,4 @@ public interface WxApiService {
* @return * @return
*/ */
String getStableAccessToken() throws Exception; String getStableAccessToken() throws Exception;
String checkSignature(Map<String, String> params) throws Exception;
ResultBody mediaCheckAsync(String openid, String mediaUrl);
} }
...@@ -16,6 +16,7 @@ import com.mmc.csf.release.forum.vo.DynamicVO; ...@@ -16,6 +16,7 @@ import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.forum.vo.MediaVO; import com.mmc.csf.release.forum.vo.MediaVO;
import com.mmc.csf.release.forum.vo.UserBaseInfoVO; import com.mmc.csf.release.forum.vo.UserBaseInfoVO;
import com.mmc.csf.release.service.DynamicService; import com.mmc.csf.release.service.DynamicService;
import com.mmc.csf.release.service.WxApiService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,22 +46,38 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -45,22 +46,38 @@ public class DynamicServiceImpl implements DynamicService {
private CommentDAO commentDAO; private CommentDAO commentDAO;
@Autowired @Autowired
private UserAppApi userAppApi; private UserAppApi userAppApi;
@Resource
private WxApiService wxApiService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId) { public ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId, HttpServletRequest request) {
// 获取用户openid
// UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(userAccountId, request.getHeader(TokenConstant.TOKEN));
// 插入动态基本信息 // 插入动态基本信息
ForumDynamicDO forumDynamicDO = new ForumDynamicDO(dynamicVO); ForumDynamicDO forumDynamicDO = new ForumDynamicDO(dynamicVO);
forumDynamicDO.setRootPath(null); forumDynamicDO.setRootPath(null);
forumDynamicDO.setUserAccountId(userAccountId); forumDynamicDO.setUserAccountId(userAccountId);
dynamicDAO.insertDynamic(forumDynamicDO);
// 插入动态资源 // 插入动态资源
if (CollectionUtils.isNotEmpty(dynamicVO.getMediaVO())) { if (CollectionUtils.isNotEmpty(dynamicVO.getMediaVO())) {
forumDynamicDO.setCheckStatus(0);
dynamicDAO.insertDynamic(forumDynamicDO);
for (MediaVO mediaVO : dynamicVO.getMediaVO()) { for (MediaVO mediaVO : dynamicVO.getMediaVO()) {
dynamicDAO.insertResource(forumDynamicDO.getId(), mediaVO.getType(), mediaVO.getUrl()); dynamicDAO.insertResource(forumDynamicDO.getId(), mediaVO.getType(), mediaVO.getUrl());
} }
return ResultBody.success("您的信息通过审核后,即可向其他人展示");
} else {
// todo openid 需要获取
ResultBody resultBody = wxApiService.msgSecCheck("ohQPS5GV_ulnz4-PeftQlqktGLvw", dynamicVO.getDescription());
if (resultBody.getCode().equals("200")) {
forumDynamicDO.setCheckStatus(1);
dynamicDAO.insertDynamic(forumDynamicDO);
} else {
forumDynamicDO.setCheckStatus(2);
dynamicDAO.insertDynamic(forumDynamicDO);
}
return resultBody;
} }
return ResultBody.success("动态发布成功");
} }
@Override @Override
...@@ -84,16 +101,22 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -84,16 +101,22 @@ public class DynamicServiceImpl implements DynamicService {
if (forumDynamicDO == null) { if (forumDynamicDO == null) {
return ResultBody.error("动态不存在或已删除"); return ResultBody.error("动态不存在或已删除");
} }
// 新增评论 // todo openid 需要获取
ForumDynamicDO comment = new ForumDynamicDO(); ResultBody resultBody = wxApiService.msgSecCheck("ohQPS5GV_ulnz4-PeftQlqktGLvw", commentVO.getContent());
comment.setUserAccountId(userAccountId); if (resultBody.getCode().equals("200")) {
comment.setDescription(commentVO.getContent()); // 新增评论
comment.defaultInfo(); ForumDynamicDO comment = new ForumDynamicDO();
comment.setRootPath(commentVO.getRootPath()); comment.setUserAccountId(userAccountId);
dynamicDAO.insertDynamic(comment); comment.setDescription(commentVO.getContent());
// 修改评论数量 comment.defaultInfo();
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getVersion()); comment.setRootPath(commentVO.getRootPath());
return ResultBody.success(); dynamicDAO.insertDynamic(comment);
// 修改评论数量
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getVersion());
return ResultBody.success();
} else {
return resultBody;
}
} }
@Override @Override
...@@ -181,6 +204,9 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -181,6 +204,9 @@ public class DynamicServiceImpl implements DynamicService {
// 动态id集合 // 动态id集合
List<Integer> ids = List<Integer> ids =
forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList()); forumDynamicList.stream().map(ForumDynamicDO::getId).collect(Collectors.toList());
// 根据id集合查询评论
List<ForumDynamicDO> commentList = dynamicDAO.firstTwoItemsComment(ids);
Map<String, List<ForumDynamicDO>> commentMap = commentList.stream().collect(Collectors.groupingBy(ForumDynamicDO::getRootPath));
// 根据id集合查询图片 // 根据id集合查询图片
List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids); List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumResourceDO>> ImageMap = Map<Integer, List<ForumResourceDO>> ImageMap =
...@@ -203,12 +229,20 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -203,12 +229,20 @@ public class DynamicServiceImpl implements DynamicService {
.map( .map(
d -> { d -> {
DynamicVO dynamicVO = d.buildDynamicVO(); DynamicVO dynamicVO = d.buildDynamicVO();
List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId()); if (ImageMap != null) {
if (CollectionUtils.isNotEmpty(forumResourceDOList)) { List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId());
dynamicVO.setMediaVO( if (CollectionUtils.isNotEmpty(forumResourceDOList)) {
forumResourceDOList.stream() dynamicVO.setMediaVO(
.map(ForumResourceDO::buildMedia) forumResourceDOList.stream()
.collect(Collectors.toList())); .map(ForumResourceDO::buildMedia)
.collect(Collectors.toList()));
}
}
if (commentMap != null) {
List<ForumDynamicDO> comment = commentMap.get(d.getId().toString());
if (CollectionUtils.isNotEmpty(comment)) {
dynamicVO.setCommentAndReplyVO(comment.stream().limit(2).map(ForumDynamicDO::buildDynamicVO).collect(Collectors.toList()));
}
} }
UserAccountSimpleDTO userAccountSimpleDTO = UserAccountSimpleDTO userAccountSimpleDTO =
userAccountInfoMap.get(d.getUserAccountId()); userAccountInfoMap.get(d.getUserAccountId());
......
...@@ -5,7 +5,6 @@ import com.mmc.csf.common.util.web.HttpHelper; ...@@ -5,7 +5,6 @@ import com.mmc.csf.common.util.web.HttpHelper;
import com.mmc.csf.common.util.web.HttpsRequestUtil; import com.mmc.csf.common.util.web.HttpsRequestUtil;
import com.mmc.csf.common.util.web.ResultBody; import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.common.util.web.ResultEnum; import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.common.util.wx.WXMsgPushUtils;
import com.mmc.csf.release.constant.UserSystemConstant; import com.mmc.csf.release.constant.UserSystemConstant;
import com.mmc.csf.release.constant.WxConstant; import com.mmc.csf.release.constant.WxConstant;
import com.mmc.csf.release.service.WxApiService; import com.mmc.csf.release.service.WxApiService;
...@@ -50,7 +49,10 @@ public class WxApiServiceImpl implements WxApiService { ...@@ -50,7 +49,10 @@ public class WxApiServiceImpl implements WxApiService {
param.put("scene", 3); param.put("scene", 3);
param.put("openid", openid); param.put("openid", openid);
String url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken; String url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken;
if (buildParams(param, url)) { String res = HttpHelper.httpPost(url, param.toString());
JSONObject result = JSONObject.parseObject(res);
JSONObject resultData = result.getJSONObject(WxConstant.RESULT);
if (!resultData.get(WxConstant.LABEL).equals(100)) {
return ResultBody.error(ResultEnum.DYNAMIC_SENSITIVE_INFO); return ResultBody.error(ResultEnum.DYNAMIC_SENSITIVE_INFO);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -59,43 +61,6 @@ public class WxApiServiceImpl implements WxApiService { ...@@ -59,43 +61,6 @@ public class WxApiServiceImpl implements WxApiService {
return ResultBody.success(); return ResultBody.success();
} }
/**
* 图片视频识别
*
* @param openid
* @param mediaUrl
* @return
*/
@Override
public ResultBody mediaCheckAsync(String openid, String mediaUrl) {
try {
String accessToken = this.getStableAccessToken();
JSONObject param = new JSONObject();
param.put("media_url", mediaUrl);
param.put("media_type", 2);
param.put("version", 2);
param.put("scene", 3);
param.put("openid", openid);
String url = "https://api.weixin.qq.com/wxa/media_check_async?access_token=" + accessToken;
if (buildParams(param, url)) {
return ResultBody.error(ResultEnum.DYNAMIC_SENSITIVE_INFO);
}
} catch (Exception e) {
e.printStackTrace();
}
return ResultBody.success();
}
private boolean buildParams(JSONObject param, String url) throws Exception {
String res = HttpHelper.httpPost(url, param.toString());
JSONObject result = JSONObject.parseObject(res);
JSONObject resultData = result.getJSONObject(WxConstant.RESULT);
if (!resultData.getString(WxConstant.LABEL).equals(WxConstant.LABEL_DATA)) {
return true;
}
return false;
}
@Override @Override
public String getStableAccessToken() { public String getStableAccessToken() {
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取 //token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
...@@ -124,28 +89,4 @@ public class WxApiServiceImpl implements WxApiService { ...@@ -124,28 +89,4 @@ public class WxApiServiceImpl implements WxApiService {
} }
return accessToken; return accessToken;
} }
@Override
public String checkSignature(Map<String, String> params) throws Exception {
// 微信发送的请求中 会有四个参数
// 微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。
String signature = params.get("signature");
// 随机字符串
String echostr = params.get("echostr");
// 时间戳
String timestamp = params.get("timestamp");
// 随机数
String nonce = params.get("nonce");
// 消息推送配置中的 Token(令牌)
String token = "IUAVKBTMMC";
// 验证
String msgSignature = WXMsgPushUtils.getSHA1(token, timestamp, nonce);
// 验证失败
if (!signature.equals(msgSignature)) {
return "false";
}
// 验证成功 将 echostr 原格式返回 ,即可完成验证
return echostr;
}
} }
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
</insert> </insert>
<insert id="insertDynamic" keyProperty="id" useGeneratedKeys="true" <insert id="insertDynamic" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.csf.release.entity.forum.ForumDynamicDO"> parameterType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
INSERT INTO forum_dynamic(user_account_id, description, location, lat, lon, root_path) INSERT INTO forum_dynamic(user_account_id, description, location, lat, lon, root_path, check_status)
VALUES (#{userAccountId}, #{description}, #{location}, #{lat}, #{lon}, #{rootPath}) VALUES (#{userAccountId}, #{description}, #{location}, #{lat}, #{lon}, #{rootPath}, #{checkStatus})
</insert> </insert>
<insert id="insertResource"> <insert id="insertResource">
insert into forum_resource(dynamic_id, resource_url, `type`) insert into forum_resource(dynamic_id, resource_url, `type`)
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
<update id="hiddenDynamic"> <update id="hiddenDynamic">
update forum_dynamic update forum_dynamic
set is_deleted = set is_deleted =
case is_deleted case is_deleted
when 0 then 1 when 0 then 1
when 1 then 0 when 1 then 0
end end
where id = #{dynamicId} where id = #{dynamicId}
</update> </update>
<delete id="deleteDynamic"> <delete id="deleteDynamic">
...@@ -193,4 +193,21 @@ ...@@ -193,4 +193,21 @@
from forum_dynamic from forum_dynamic
where id = #{dynamicId} where id = #{dynamicId}
</select> </select>
<select id="firstTwoItemsComment" resultType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
SELECT
id,
user_account_id,
description,
create_time,
root_path
FROM
forum_dynamic
<where>
<foreach collection="list" item="item" separator="," open="root_path IN (" close=")">
#{item}
</foreach>
</where>
ORDER BY
create_time DESC
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论