提交 7bd5136f 作者: xiaowang

动态审核

上级 226e4486
......@@ -34,6 +34,8 @@ public class UserAccountSimpleDTO implements Serializable {
private String nickName;
@ApiModelProperty(value = "用户头像")
private String userImg;
@ApiModelProperty(value = "openid")
private String openid;
@ApiModelProperty(value = "用户性别:0未知、1男、2女")
private Integer userSex;
@ApiModelProperty(value = "用户邮箱")
......
......@@ -402,7 +402,7 @@ public enum ResultEnum implements BaseErrorInfoInterface {
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;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.service.DynamicService;
import com.mmc.csf.release.service.WxApiService;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
......@@ -22,30 +21,13 @@ public class DynamicController extends BaseController {
@Resource
private DynamicService dynamicService;
@Resource
private WxApiService wxApiService;
@ApiOperation(value = "动态发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/publish")
public ResultBody publishDynamic(@RequestBody DynamicVO dynamicVO, HttpServletRequest request) {
return dynamicService.insertDynamic(
dynamicVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
// @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";
dynamicVO, this.getUserLoginInfoFromRedis(request).getUserAccountId(), request);
}
@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;
/**
* @Author LW
*
* @date 2023/5/15 10:29 概要:动态信息数据访问层
*/
@Mapper
public interface DynamicDAO {
/**
* 插入动态
*
* @param forumDynamicDO 论坛动态信息
* @return {@link ForumDynamicDO}
*/
void insertDynamic(ForumDynamicDO forumDynamicDO);
/**
* 插入图片
*
* @param dynamicId 动态id
* @param url url
*/
void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url);
/**
* 插入视频
*
* @param dynamicId 动态id
* @param videoUrl 视频网址
*/
void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl);
/**
* 更新动态点赞数量
*
* @param dynamicId 动态id
* @param version version
*/
void updateDynamicLikeCount(
@Param("dynamicId") Integer dynamicId, @Param("version") Integer version);
/**
* 得到动态信息
*
* @param dynamicId 动态id
* @return {@link ForumDynamicDO}
*/
ForumDynamicDO getDynamicInfo(Integer dynamicId);
/**
* 动态点赞数减
*
* @param dynamicId 动态id
* @param version version
*/
void updateSubDynamicLikeCount(Integer dynamicId, Integer version);
/**
* 更新动态评论数
*
* @param dynamicId 动态id
* @param version version
*/
void updateDynamicCommentCount(Integer dynamicId, Integer version);
/**
* 动态列表计数
*
* @return int
*/
int countDynamicList();
/**
* 动态列表
*
* @param itemIndex 项指数
* @param pageSize 页面大小
* @return {@link List}<{@link ForumDynamicDO}>
*/
List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize);
/**
* 列表动态图片
*
* @param ids id
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumResourceDO> listDynamicPicture(List<Integer> ids);
/**
* 动态视频列表
*
* @param ids id
* @return {@link List}<{@link ForumVideoDO}>
*/
List<ForumVideoDO> listDynamicVideo(List<Integer> ids);
/**
* 动态图片
*
* @param dynamicId 动态id
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumResourceDO> dynamicPicture(Integer dynamicId);
/**
* 动态视频
*
* @param dynamicId 动态id
* @return {@link ForumVideoDO}
*/
ForumVideoDO dynamicVideo(Integer dynamicId);
void insertResource(
@Param("dynamicId") Integer dynamicId, @Param("type") int type, @Param("url") String url);
List<ForumResourceDO> listDynamicResources(Integer dynamicId);
List<ForumDynamicDO> getDynamicComment(String dynamicId);
void deleteDynamic(Integer dynamicId);
void hiddenDynamic(Integer dynamicId);
List<ForumDynamicDO> listDynamicByUserId(Integer id);
void batchDeleteDynamic(List<Integer> dynamicIds);
/**
* 查询动态详情
* @param dynamicId
* @return
*/
ForumDynamicDO getDynamicInfoById(Integer dynamicId);
/**
* 插入动态
*
* @param forumDynamicDO 论坛动态信息
* @return {@link ForumDynamicDO}
*/
void insertDynamic(ForumDynamicDO forumDynamicDO);
/**
* 插入图片
*
* @param dynamicId 动态id
* @param url url
*/
void insertPicture(@Param("dynamicId") Integer dynamicId, @Param("url") String url);
/**
* 插入视频
*
* @param dynamicId 动态id
* @param videoUrl 视频网址
*/
void insertVideo(@Param("dynamicId") Integer dynamicId, @Param("videoUrl") String videoUrl);
/**
* 更新动态点赞数量
*
* @param dynamicId 动态id
* @param version version
*/
void updateDynamicLikeCount(
@Param("dynamicId") Integer dynamicId, @Param("version") Integer version);
/**
* 得到动态信息
*
* @param dynamicId 动态id
* @return {@link ForumDynamicDO}
*/
ForumDynamicDO getDynamicInfo(Integer dynamicId);
/**
* 动态点赞数减
*
* @param dynamicId 动态id
* @param version version
*/
void updateSubDynamicLikeCount(Integer dynamicId, Integer version);
/**
* 更新动态评论数
*
* @param dynamicId 动态id
* @param version version
*/
void updateDynamicCommentCount(Integer dynamicId, Integer version);
/**
* 动态列表计数
*
* @return int
*/
int countDynamicList();
/**
* 动态列表
*
* @param itemIndex 项指数
* @param pageSize 页面大小
* @return {@link List}<{@link ForumDynamicDO}>
*/
List<ForumDynamicDO> dynamicList(int itemIndex, Integer pageSize);
/**
* 列表动态图片
*
* @param ids id
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumResourceDO> listDynamicPicture(List<Integer> ids);
/**
* 动态视频列表
*
* @param ids id
* @return {@link List}<{@link ForumVideoDO}>
*/
List<ForumVideoDO> listDynamicVideo(List<Integer> ids);
/**
* 动态图片
*
* @param dynamicId 动态id
* @return {@link List}<{@link ForumResourceDO}>
*/
List<ForumResourceDO> dynamicPicture(Integer dynamicId);
/**
* 动态视频
*
* @param dynamicId 动态id
* @return {@link ForumVideoDO}
*/
ForumVideoDO dynamicVideo(Integer dynamicId);
void insertResource(
@Param("dynamicId") Integer dynamicId, @Param("type") int type, @Param("url") String url);
List<ForumResourceDO> listDynamicResources(Integer dynamicId);
List<ForumDynamicDO> getDynamicComment(String dynamicId);
void deleteDynamic(Integer dynamicId);
void hiddenDynamic(Integer dynamicId);
List<ForumDynamicDO> listDynamicByUserId(Integer id);
void batchDeleteDynamic(List<Integer> dynamicIds);
/**
* 查询动态详情
*
* @param dynamicId
* @return
*/
ForumDynamicDO getDynamicInfoById(Integer dynamicId);
List<ForumDynamicDO> firstTwoItemsComment(List<Integer> ids);
}
......@@ -22,59 +22,79 @@ import java.math.BigDecimal;
@NoArgsConstructor
@Accessors(chain = true)
public class ForumDynamicDO extends BaseDO implements Serializable {
private static final long serialVersionUID = 570379773690905364L;
/** 版本字段 */
private Integer version;
/** 发布用户ID */
private Integer userAccountId;
/** 动态描述 */
private String description;
/** 发布动态具体位置 */
private String location;
/** 发布动态纬度 */
private BigDecimal lat;
/** 发布动态经度 */
private BigDecimal lon;
/** 点赞数 */
private Integer likesCount;
/** 评论数 */
private Integer commentsCount;
/** 记录父节点id */
private String rootPath;
private static final long serialVersionUID = 570379773690905364L;
/**
* 版本字段
*/
private Integer version;
/**
* 发布用户ID
*/
private Integer userAccountId;
/**
* 动态描述
*/
private String description;
/**
* 发布动态具体位置
*/
private String location;
/**
* 发布动态纬度
*/
private BigDecimal lat;
/**
* 发布动态经度
*/
private BigDecimal lon;
/**
* 点赞数
*/
private Integer likesCount;
/**
* 评论数
*/
private Integer commentsCount;
/**
* 记录父节点id
*/
private String rootPath;
public ForumDynamicDO(DynamicVO dynamicVO) {
this.description = dynamicVO.getDescription();
this.location = dynamicVO.getLocation();
this.lat = dynamicVO.getLat();
this.lon = dynamicVO.getLon();
}
private Integer checkStatus;
public DynamicVO buildDynamicVO() {
return DynamicVO.builder()
.id(this.getId())
.userAccountId(userAccountId)
.description(description)
.commentCount(commentsCount)
.likesCount(likesCount)
.lat(lat)
.lon(lon)
.location(location)
.dynamicPublishTime(this.getCreateTime())
.build();
}
public ForumDynamicDO(DynamicVO dynamicVO) {
this.description = dynamicVO.getDescription();
this.location = dynamicVO.getLocation();
this.lat = dynamicVO.getLat();
this.lon = dynamicVO.getLon();
}
public DynamicInfoDTO buildDynamicInfoDTO() {
return DynamicInfoDTO.builder()
.id(this.getId())
.userAccountId(userAccountId)
.description(description)
.show(this.getDeleted())
.build();
}
public DynamicVO buildDynamicVO() {
return DynamicVO.builder()
.id(this.getId())
.userAccountId(userAccountId)
.description(description)
.commentCount(commentsCount)
.likesCount(likesCount)
.lat(lat)
.lon(lon)
.location(location)
.dynamicPublishTime(this.getCreateTime())
.build();
}
public void defaultInfo() {
this.lon = null;
this.lat = null;
this.location = null;
}
public DynamicInfoDTO buildDynamicInfoDTO() {
return DynamicInfoDTO.builder()
.id(this.getId())
.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;
/**
* @Author LW 测试合并
*
* @date 2023/5/15 10:29 概要:动态信息service层
*/
public interface DynamicService {
/**
* 插入动态
*
* @param dynamicVO 动态
* @return {@link ResultBody}
*/
ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId);
/**
* 点赞动态
*
* @param userId 用户id
* @param dynamicId 动态id
* @return {@link ResultBody}
*/
ResultBody likeDynamic(Integer userId, Integer dynamicId);
/**
* 评论动态
*
* @param commentVO 评论信息
* @return {@link ResultBody}
*/
ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId);
/**
* 删除评论
*
* @param id id
* @return {@link ResultBody}
*/
ResultBody deleteComment(Integer id);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
PageResult dynamicList(
Integer pageNo, Integer pageSize, Integer userAccountId, HttpServletRequest request);
/**
* 插入动态
*
* @param dynamicVO 动态
* @return {@link ResultBody}
*/
ResultBody insertDynamic(DynamicVO dynamicVO, Integer userAccountId, HttpServletRequest request);
/**
* 点赞动态
*
* @param userId 用户id
* @param dynamicId 动态id
* @return {@link ResultBody}
*/
ResultBody likeDynamic(Integer userId, Integer dynamicId);
/**
* 评论动态
*
* @param commentVO 评论信息
* @return {@link ResultBody}
*/
ResultBody commentDynamic(CommentVO commentVO, Integer userAccountId);
/**
* 删除评论
*
* @param id id
* @return {@link ResultBody}
*/
ResultBody deleteComment(Integer id);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId, HttpServletRequest request);
PageResult dynamicList(
Integer pageNo, Integer pageSize, Integer userAccountId, HttpServletRequest request);
}
......@@ -2,8 +2,6 @@ package com.mmc.csf.release.service;
import com.mmc.csf.common.util.web.ResultBody;
import java.util.Map;
/**
* @Author LW
* @date 2023/7/12 13:44
......@@ -18,8 +16,4 @@ public interface WxApiService {
* @return
*/
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;
import com.mmc.csf.release.forum.vo.MediaVO;
import com.mmc.csf.release.forum.vo.UserBaseInfoVO;
import com.mmc.csf.release.service.DynamicService;
import com.mmc.csf.release.service.WxApiService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -45,22 +46,38 @@ public class DynamicServiceImpl implements DynamicService {
private CommentDAO commentDAO;
@Autowired
private UserAppApi userAppApi;
@Resource
private WxApiService wxApiService;
@Override
@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.setRootPath(null);
forumDynamicDO.setUserAccountId(userAccountId);
dynamicDAO.insertDynamic(forumDynamicDO);
// 插入动态资源
if (CollectionUtils.isNotEmpty(dynamicVO.getMediaVO())) {
forumDynamicDO.setCheckStatus(0);
dynamicDAO.insertDynamic(forumDynamicDO);
for (MediaVO mediaVO : dynamicVO.getMediaVO()) {
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
......@@ -84,16 +101,22 @@ public class DynamicServiceImpl implements DynamicService {
if (forumDynamicDO == null) {
return ResultBody.error("动态不存在或已删除");
}
// 新增评论
ForumDynamicDO comment = new ForumDynamicDO();
comment.setUserAccountId(userAccountId);
comment.setDescription(commentVO.getContent());
comment.defaultInfo();
comment.setRootPath(commentVO.getRootPath());
dynamicDAO.insertDynamic(comment);
// 修改评论数量
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getVersion());
return ResultBody.success();
// todo openid 需要获取
ResultBody resultBody = wxApiService.msgSecCheck("ohQPS5GV_ulnz4-PeftQlqktGLvw", commentVO.getContent());
if (resultBody.getCode().equals("200")) {
// 新增评论
ForumDynamicDO comment = new ForumDynamicDO();
comment.setUserAccountId(userAccountId);
comment.setDescription(commentVO.getContent());
comment.defaultInfo();
comment.setRootPath(commentVO.getRootPath());
dynamicDAO.insertDynamic(comment);
// 修改评论数量
dynamicDAO.updateDynamicCommentCount(commentVO.getDynamicId(), forumDynamicDO.getVersion());
return ResultBody.success();
} else {
return resultBody;
}
}
@Override
......@@ -181,6 +204,9 @@ public class DynamicServiceImpl implements DynamicService {
// 动态id集合
List<Integer> ids =
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集合查询图片
List<ForumResourceDO> forumImageList = dynamicDAO.listDynamicPicture(ids);
Map<Integer, List<ForumResourceDO>> ImageMap =
......@@ -203,12 +229,20 @@ public class DynamicServiceImpl implements DynamicService {
.map(
d -> {
DynamicVO dynamicVO = d.buildDynamicVO();
List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId());
if (CollectionUtils.isNotEmpty(forumResourceDOList)) {
dynamicVO.setMediaVO(
forumResourceDOList.stream()
.map(ForumResourceDO::buildMedia)
.collect(Collectors.toList()));
if (ImageMap != null) {
List<ForumResourceDO> forumResourceDOList = ImageMap.get(d.getId());
if (CollectionUtils.isNotEmpty(forumResourceDOList)) {
dynamicVO.setMediaVO(
forumResourceDOList.stream()
.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 =
userAccountInfoMap.get(d.getUserAccountId());
......
......@@ -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.ResultBody;
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.WxConstant;
import com.mmc.csf.release.service.WxApiService;
......@@ -50,7 +49,10 @@ public class WxApiServiceImpl implements WxApiService {
param.put("scene", 3);
param.put("openid", openid);
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);
}
} catch (Exception e) {
......@@ -59,43 +61,6 @@ public class WxApiServiceImpl implements WxApiService {
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
public String getStableAccessToken() {
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
......@@ -124,28 +89,4 @@ public class WxApiServiceImpl implements WxApiService {
}
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 @@
</insert>
<insert id="insertDynamic" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.csf.release.entity.forum.ForumDynamicDO">
INSERT INTO forum_dynamic(user_account_id, description, location, lat, lon, root_path)
VALUES (#{userAccountId}, #{description}, #{location}, #{lat}, #{lon}, #{rootPath})
INSERT INTO forum_dynamic(user_account_id, description, location, lat, lon, root_path, check_status)
VALUES (#{userAccountId}, #{description}, #{location}, #{lat}, #{lon}, #{rootPath}, #{checkStatus})
</insert>
<insert id="insertResource">
insert into forum_resource(dynamic_id, resource_url, `type`)
......@@ -45,10 +45,10 @@
<update id="hiddenDynamic">
update forum_dynamic
set is_deleted =
case is_deleted
when 0 then 1
when 1 then 0
end
case is_deleted
when 0 then 1
when 1 then 0
end
where id = #{dynamicId}
</update>
<delete id="deleteDynamic">
......@@ -193,4 +193,21 @@
from forum_dynamic
where id = #{dynamicId}
</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>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论