Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
ims
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
ims
Commits
81f80204
提交
81f80204
authored
5月 16, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
论坛社区
上级
5ae1e0be
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
1822 行增加
和
0 行删除
+1822
-0
CommentAndReplyVO.java
...src/main/java/com/mmc/csf/forum/vo/CommentAndReplyVO.java
+35
-0
CommentVO.java
...n-model/src/main/java/com/mmc/csf/forum/vo/CommentVO.java
+31
-0
DynamicVO.java
...n-model/src/main/java/com/mmc/csf/forum/vo/DynamicVO.java
+44
-0
MediaVO.java
...mon-model/src/main/java/com/mmc/csf/forum/vo/MediaVO.java
+25
-0
pom.xml
forum-service/pom.xml
+144
-0
ForumApplication.java
...ice/src/main/java/com/mmc/csf/forum/ForumApplication.java
+18
-0
DynamicController.java
.../java/com/mmc/csf/forum/controller/DynamicController.java
+70
-0
CommentDAO.java
...rvice/src/main/java/com/mmc/csf/forum/dao/CommentDAO.java
+61
-0
DynamicDAO.java
...rvice/src/main/java/com/mmc/csf/forum/dao/DynamicDAO.java
+107
-0
LikeDAO.java
...-service/src/main/java/com/mmc/csf/forum/dao/LikeDAO.java
+49
-0
ForumCommentDO.java
...rc/main/java/com/mmc/csf/forum/entity/ForumCommentDO.java
+56
-0
ForumDynamicDO.java
...rc/main/java/com/mmc/csf/forum/entity/ForumDynamicDO.java
+94
-0
ForumImageDO.java
.../src/main/java/com/mmc/csf/forum/entity/ForumImageDO.java
+49
-0
ForumLikeDO.java
...e/src/main/java/com/mmc/csf/forum/entity/ForumLikeDO.java
+41
-0
ForumVideoDO.java
.../src/main/java/com/mmc/csf/forum/entity/ForumVideoDO.java
+49
-0
DynamicService.java
...c/main/java/com/mmc/csf/forum/service/DynamicService.java
+67
-0
DynamicServiceImpl.java
...va/com/mmc/csf/forum/service/impl/DynamicServiceImpl.java
+158
-0
application-beta.yml
forum-service/src/main/resources/application-beta.yml
+162
-0
application-dev.yml
forum-service/src/main/resources/application-dev.yml
+170
-0
application-product.yml
forum-service/src/main/resources/application-product.yml
+155
-0
application.yml
forum-service/src/main/resources/application.yml
+18
-0
banner.txt
forum-service/src/main/resources/banner.txt
+9
-0
logback-spring.xml
forum-service/src/main/resources/logback-spring.xml
+35
-0
CommentMapper.xml
forum-service/src/main/resources/mapper/CommentMapper.xml
+49
-0
DynamicMapper.xml
forum-service/src/main/resources/mapper/DynamicMapper.xml
+95
-0
LikeMapper.xml
forum-service/src/main/resources/mapper/LikeMapper.xml
+29
-0
pom.xml
pom.xml
+2
-0
没有找到文件。
csf-common/csf-common-model/src/main/java/com/mmc/csf/forum/vo/CommentAndReplyVO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:评论信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
CommentAndReplyVO
implements
Serializable
{
@ApiModelProperty
(
value
=
"评论id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"动态id"
)
private
Integer
dynamicId
;
@ApiModelProperty
(
value
=
"父级评论id"
)
private
Integer
parentId
;
@ApiModelProperty
(
value
=
"模拟用户id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"评论内容"
)
private
String
content
;
@ApiModelProperty
(
value
=
"评论点赞数"
)
private
Integer
likesCount
;
private
List
<
CommentAndReplyVO
>
children
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/forum/vo/CommentVO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:评论信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
CommentVO
implements
Serializable
{
@ApiModelProperty
(
value
=
"评论id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"动态id"
)
private
Integer
dynamicId
;
@ApiModelProperty
(
value
=
"父级评论id(不传则是评论动态 传了则是回复评论)"
)
private
Integer
parentId
;
@ApiModelProperty
(
value
=
"模拟用户id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"评论内容"
)
private
String
content
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/forum/vo/DynamicVO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiParam
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息参数
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
DynamicVO
implements
Serializable
{
@ApiModelProperty
(
value
=
"模拟用户id"
)
private
Integer
userId
;
@ApiModelProperty
(
value
=
"动态id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"动态标题"
)
private
String
title
;
@ApiModelProperty
(
value
=
"动态描述"
)
private
String
description
;
@ApiModelProperty
(
value
=
"位置信息"
)
private
String
location
;
@ApiModelProperty
(
value
=
"纬度"
)
private
BigDecimal
lat
;
@ApiModelProperty
(
value
=
"经度"
)
private
BigDecimal
lon
;
@ApiModelProperty
(
value
=
"图片/视频"
)
private
MediaVO
mediaVO
;
@ApiModelProperty
(
value
=
"点赞数"
)
private
Integer
likesCount
;
@ApiModelProperty
(
value
=
"评论数"
)
private
Integer
commentCount
;
@ApiModelProperty
(
value
=
"是否点赞"
)
private
Boolean
likes
;
}
csf-common/csf-common-model/src/main/java/com/mmc/csf/forum/vo/MediaVO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/16 10:42
* 概要:图片或影像
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
MediaVO
implements
Serializable
{
@ApiModelProperty
(
"图片"
)
private
List
<
String
>
picture
;
@ApiModelProperty
(
"视频"
)
private
String
videoUrl
;
}
forum-service/pom.xml
0 → 100644
浏览文件 @
81f80204
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.mmc.csf
</groupId>
<artifactId>
iuav-ims
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>
forum-service
</artifactId>
<dependencies>
<!-- 引入 Web 功能 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<!-- 健康监控 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
</dependency>
<!-- Eureka 客户端, 客户端向 Eureka Server 注册的时候会提供一系列的元数据信息, 例如: 主机, 端口, 健康检查url等
Eureka Server 接受每个客户端发送的心跳信息, 如果在某个配置的超时时间内未接收到心跳信息, 实例会被从注册列表中移除 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
<exclusions>
<exclusion>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入 Feign, 可以以声明的方式调用微服务 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-openfeign
</artifactId>
</dependency>
<!-- 使用okhttp-feign-连接池技术 -->
<dependency>
<groupId>
io.github.openfeign
</groupId>
<artifactId>
feign-okhttp
</artifactId>
</dependency>
<!-- 引入服务容错 Hystrix 的依赖 -->
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-hystrix
</artifactId>
<exclusions>
<exclusion>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- mybatis驱动&Druid数据源-start -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<!-- mybatis驱动&Druid数据源-end -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
com.mmc.csf.common
</groupId>
<artifactId>
csf-common-model
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.mmc.csf.common
</groupId>
<artifactId>
csf-common-util
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<!-- easypoi导出 -->
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-base
</artifactId>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-web
</artifactId>
</dependency>
<dependency>
<groupId>
cn.afterturn
</groupId>
<artifactId>
easypoi-annotation
</artifactId>
</dependency>
</dependencies>
<!-- SpringBoot的Maven插件, 能够以Maven的方式为应用提供SpringBoot的支持,可以将 SpringBoot应用打包为可执行的jar或war文件,
然后以通常的方式运行SpringBoot应用 -->
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
<resources>
<!--需要动态添加的资源 -->
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<includes>
<!--读取打包命令中指定的环境 -->
<include>
**/*.yml
</include>
<include>
**/*.xml
</include>
<include>
**/*.properties
</include>
</includes>
</resource>
</resources>
</build>
</project>
\ No newline at end of file
forum-service/src/main/java/com/mmc/csf/forum/ForumApplication.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
/**
* @Author LW
* @date 2023/5/13 10:39
* 概要:
// */
//@EnableFeignClients(basePackages = "com.mmc.csf.starter.client") // 所有FeignClient放在client-feign-springboot-starter里面进行管理
//@EnableCircuitBreaker
//@EnableEurekaClient
@SpringBootApplication
public
class
ForumApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
ForumApplication
.
class
,
args
);
}
}
forum-service/src/main/java/com/mmc/csf/forum/controller/DynamicController.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
controller
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.forum.service.DynamicService
;
import
com.mmc.csf.forum.vo.CommentAndReplyVO
;
import
com.mmc.csf.forum.vo.CommentVO
;
import
com.mmc.csf.forum.vo.DynamicVO
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息控制层
*/
@RestController
@RequestMapping
(
"/dynamic"
)
public
class
DynamicController
{
@Resource
private
DynamicService
dynamicService
;
@ApiOperation
(
value
=
"动态发布"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"/publish"
)
public
ResultBody
publishDynamic
(
@RequestBody
DynamicVO
dynamicVO
)
{
return
dynamicService
.
insertDynamic
(
dynamicVO
);
}
@ApiOperation
(
value
=
"点赞或取消点赞"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"/likeOrCancel"
)
public
ResultBody
likeOrCancel
(
@ApiParam
(
value
=
"模拟用户id"
)
@RequestParam
Integer
userId
,
@ApiParam
(
value
=
"动态id"
)
@RequestParam
Integer
dynamicId
)
{
return
dynamicService
.
likeDynamic
(
userId
,
dynamicId
);
}
@ApiOperation
(
value
=
"评论动态或回复评论"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"/comment"
)
public
ResultBody
commentDynamic
(
@RequestBody
CommentVO
commentVO
)
{
return
dynamicService
.
commentDynamic
(
commentVO
);
}
@ApiOperation
(
value
=
"删除评论"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@DeleteMapping
(
"/removeComment"
)
public
ResultBody
removeComment
(
@RequestParam
Integer
id
)
{
return
dynamicService
.
deleteComment
(
id
);
}
@ApiOperation
(
value
=
"根据动态查看评论"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CommentAndReplyVO
.
class
)})
@GetMapping
(
"/byDynamic"
)
public
ResultBody
getCommentsByDynamic
(
@RequestParam
Integer
dynamicId
)
{
return
ResultBody
.
success
(
dynamicService
.
getCommentAndReply
(
dynamicId
));
}
@ApiOperation
(
value
=
"动态列表"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
DynamicVO
.
class
)})
@GetMapping
(
"/dynamicList"
)
public
ResultBody
dynamicList
(
@RequestParam
Integer
pageNo
,
@RequestParam
Integer
pageSize
,
@RequestParam
Integer
userId
)
{
return
ResultBody
.
success
(
dynamicService
.
dynamicList
(
pageNo
,
pageSize
,
userId
));
}
}
forum-service/src/main/java/com/mmc/csf/forum/dao/CommentDAO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
dao
;
import
com.mmc.csf.forum.entity.ForumCommentDO
;
import
com.mmc.csf.forum.vo.CommentAndReplyVO
;
import
com.mmc.csf.forum.vo.CommentVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态评论数据访问层
*/
@Mapper
public
interface
CommentDAO
{
/**
* 插入评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
*/
void
insertComment
(
@Param
(
"userId"
)
int
userId
,
@Param
(
"dynamicId"
)
int
dynamicId
,
@Param
(
"content"
)
String
content
);
/**
* 删除评论
*
* @param id id
* @return int
*/
int
deleteComment
(
int
id
);
/**
* 插入回复评论
*
* @param userId 用户id
* @param dynamicId 动态id
* @param content 内容
* @param parentId 父id
*/
void
insertReplyComment
(
@Param
(
"userId"
)
int
userId
,
@Param
(
"dynamicId"
)
int
dynamicId
,
@Param
(
"content"
)
String
content
,
@Param
(
"parentId"
)
Integer
parentId
);
/**
* 查询评论列表
*
* @param dynamicId 动态id
* @return {@link List}<{@link CommentAndReplyVO}>
*/
List
<
CommentAndReplyVO
>
selectCommentList
(
@Param
(
"dynamicId"
)
Integer
dynamicId
);
/**
* 查询子评论列表
*
* @param parentIds 父id
* @return {@link List}<{@link CommentVO}>
*/
List
<
CommentVO
>
selectSubCommentList
(
List
<
Integer
>
parentIds
);
}
forum-service/src/main/java/com/mmc/csf/forum/dao/DynamicDAO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
dao
;
import
com.mmc.csf.forum.entity.ForumDynamicDO
;
import
com.mmc.csf.forum.entity.ForumImageDO
;
import
com.mmc.csf.forum.entity.ForumVideoDO
;
import
com.mmc.csf.forum.vo.DynamicVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
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 pid pid
*/
void
updateDynamicLikeCount
(
@Param
(
"dynamicId"
)
Integer
dynamicId
,
@Param
(
"pid"
)
Integer
pid
);
/**
* 得到动态信息
*
* @param dynamicId 动态id
* @return {@link ForumDynamicDO}
*/
ForumDynamicDO
getDynamicInfo
(
Integer
dynamicId
);
/**
* 动态点赞数减
*
* @param dynamicId 动态id
* @param pid pid
*/
void
updateSubDynamicLikeCount
(
Integer
dynamicId
,
Integer
pid
);
/**
* 更新动态评论数
*
* @param dynamicId 动态id
* @param pid pid
*/
void
updateDynamicCommentCount
(
Integer
dynamicId
,
Integer
pid
);
/**
* 动态列表计数
*
* @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 ForumImageDO}>
*/
List
<
ForumImageDO
>
listDynamicPicture
(
List
<
Integer
>
ids
);
/**
* 动态视频列表
*
* @param ids id
* @return {@link List}<{@link ForumVideoDO}>
*/
List
<
ForumVideoDO
>
listDynamicVideo
(
List
<
Integer
>
ids
);
}
forum-service/src/main/java/com/mmc/csf/forum/dao/LikeDAO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
dao
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:点赞信息数据访问层
*/
@Mapper
public
interface
LikeDAO
{
/**
* 插入点赞信息
*
* @param userId 用户id
* @param dynamicId 动态id
*/
void
insertLike
(
@Param
(
"userId"
)
int
userId
,
@Param
(
"dynamicId"
)
int
dynamicId
);
/**
* 删除点赞信息
*
* @param userId 用户id
* @param dynamicId 动态id
* @return int
*/
int
deleteLike
(
@Param
(
"userId"
)
int
userId
,
@Param
(
"dynamicId"
)
int
dynamicId
);
/**
* 是否是点赞过的
*
* @param userId 用户id
* @param dynamicId 动态id
* @return boolean
*/
boolean
isLiked
(
@Param
(
"userId"
)
int
userId
,
@Param
(
"dynamicId"
)
int
dynamicId
);
/**
* 点赞数
*
* @param dynamicId 动态id
* @return int
*/
int
getLikesCount
(
int
dynamicId
);
}
forum-service/src/main/java/com/mmc/csf/forum/entity/ForumCommentDO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.io.Serializable
;
/**
* 评论表(ForumCommentDO)实体类
*
* @author lw
* @since 2023-05-16 09:54:25
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
ForumCommentDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
768897358613182410L
;
/**
* 评论id
*/
private
Integer
id
;
/**
* 用户id,外键,关联user表
*/
private
Integer
userId
;
/**
* 动态id,外键,关联dynamic表
*/
private
Integer
dynamicId
;
/**
* 评论内容
*/
private
String
content
;
/**
* 点赞数量
*/
private
Integer
likesCount
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 是否删除,0表示未删除,1表示已删除
*/
private
Integer
deleted
;
}
forum-service/src/main/java/com/mmc/csf/forum/entity/ForumDynamicDO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
entity
;
import
com.mmc.csf.forum.vo.DynamicVO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.io.Serializable
;
/**
* 动态信息表(ForumDynamicDO)实体类
*
* @author lw
* @since 2023-05-16 09:50:39
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
ForumDynamicDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
570379773690905364L
;
/**
* 主键,自增长
*/
private
Integer
id
;
/**
* 版本字段pid
*/
private
Integer
pid
;
/**
* 动态标题
*/
private
String
title
;
/**
* 发布用户ID
*/
private
Integer
userId
;
/**
* 动态描述
*/
private
String
description
;
/**
* 发布动态具体位置
*/
private
String
location
;
/**
* 发布动态纬度
*/
private
BigDecimal
lat
;
/**
* 发布动态经度
*/
private
BigDecimal
lon
;
/**
* 点赞数
*/
private
Integer
likesCount
;
/**
* 评论数
*/
private
Integer
commentsCount
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 是否删除,默认为0表示未删除
*/
private
Integer
deleted
;
public
ForumDynamicDO
(
DynamicVO
dynamicVO
)
{
this
.
title
=
dynamicVO
.
getTitle
();
this
.
description
=
dynamicVO
.
getDescription
();
this
.
userId
=
dynamicVO
.
getUserId
();
this
.
location
=
dynamicVO
.
getLocation
();
this
.
lat
=
dynamicVO
.
getLat
();
this
.
lon
=
dynamicVO
.
getLon
();
}
public
DynamicVO
buildDynamicVO
()
{
return
DynamicVO
.
builder
().
id
(
id
).
description
(
description
)
.
commentCount
(
commentsCount
).
likesCount
(
likesCount
)
.
lat
(
lat
).
lon
(
lon
).
location
(
location
).
title
(
title
)
.
userId
(
userId
).
build
();
}
}
forum-service/src/main/java/com/mmc/csf/forum/entity/ForumImageDO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.io.Serializable
;
/**
* 动态图片表(ForumImageDO)实体类
*
* @author lw
* @since 2023-05-16 09:57:50
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
ForumImageDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
678578415154893126L
;
/**
* 主键,自增长
*/
private
Integer
id
;
/**
* 动态ID,必填
*/
private
Integer
dynamicId
;
/**
* 图片URL,必填
*/
private
String
url
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 是否删除,默认为0表示未删除
*/
private
Integer
deleted
;
}
forum-service/src/main/java/com/mmc/csf/forum/entity/ForumLikeDO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.io.Serializable
;
/**
* 点赞表(ForumLikeDO)实体类
*
* @author lw
* @since 2023-05-16 09:58:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
ForumLikeDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
980171641026737097L
;
/**
* 点赞id
*/
private
Integer
id
;
/**
* 用户id,外键,关联user表
*/
private
Integer
userId
;
/**
* 动态id,外键,关联dynamic表
*/
private
Integer
dynamicId
;
/**
* 创建时间
*/
private
Date
createTime
;
}
forum-service/src/main/java/com/mmc/csf/forum/entity/ForumVideoDO.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
import
java.io.Serializable
;
/**
* 动态视频表(ForumVideoDO)实体类
*
* @author lw
* @since 2023-05-16 09:58:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
ForumVideoDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
50745508548714291L
;
/**
* 主键,自增长
*/
private
Integer
id
;
/**
* 动态ID,必填
*/
private
Integer
dynamicId
;
/**
* 视频URL,必填
*/
private
String
url
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 是否删除,默认为0表示未删除
*/
private
Integer
deleted
;
}
forum-service/src/main/java/com/mmc/csf/forum/service/DynamicService.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
service
;
import
com.mmc.csf.common.util.page.PageResult
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.forum.vo.CommentAndReplyVO
;
import
com.mmc.csf.forum.vo.CommentVO
;
import
com.mmc.csf.forum.vo.DynamicVO
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息service层
*/
public
interface
DynamicService
{
/**
* 插入动态
*
* @param dynamicVO 动态
* @return {@link ResultBody}
*/
ResultBody
insertDynamic
(
DynamicVO
dynamicVO
);
/**
* 点赞动态
*
* @param userId 用户id
* @param dynamicId 动态id
* @return {@link ResultBody}
*/
ResultBody
likeDynamic
(
Integer
userId
,
Integer
dynamicId
);
/**
* 评论动态
*
* @param commentVO 评论信息
* @return {@link ResultBody}
*/
ResultBody
commentDynamic
(
CommentVO
commentVO
);
/**
* 删除评论
*
* @param id id
* @return {@link ResultBody}
*/
ResultBody
deleteComment
(
Integer
id
);
/**
* 根据动态查看评论
*
* @param dynamicId 动态id
* @return {@link List}<{@link CommentVO}>
*/
List
<
CommentAndReplyVO
>
getCommentAndReply
(
int
dynamicId
);
/**
* 动态列表
*
* @param pageNo 页面
* @param pageSize 页面大小
* @param userId
* @return {@link List}<{@link DynamicVO}>
*/
PageResult
dynamicList
(
Integer
pageNo
,
Integer
pageSize
,
Integer
userId
);
}
forum-service/src/main/java/com/mmc/csf/forum/service/impl/DynamicServiceImpl.java
0 → 100644
浏览文件 @
81f80204
package
com
.
mmc
.
csf
.
forum
.
service
.
impl
;
import
com.mmc.csf.common.util.page.PageResult
;
import
com.mmc.csf.common.util.web.ResultBody
;
import
com.mmc.csf.forum.dao.CommentDAO
;
import
com.mmc.csf.forum.dao.DynamicDAO
;
import
com.mmc.csf.forum.dao.LikeDAO
;
import
com.mmc.csf.forum.entity.ForumDynamicDO
;
import
com.mmc.csf.forum.entity.ForumImageDO
;
import
com.mmc.csf.forum.entity.ForumVideoDO
;
import
com.mmc.csf.forum.service.DynamicService
;
import
com.mmc.csf.forum.vo.CommentAndReplyVO
;
import
com.mmc.csf.forum.vo.CommentVO
;
import
com.mmc.csf.forum.vo.DynamicVO
;
import
com.mmc.csf.forum.vo.MediaVO
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @Author LW
* @date 2023/5/15 10:29
* 概要:动态信息实现层
*/
@Service
public
class
DynamicServiceImpl
implements
DynamicService
{
@Resource
private
DynamicDAO
dynamicDAO
;
@Resource
private
LikeDAO
likeDAO
;
@Resource
private
CommentDAO
commentDAO
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResultBody
insertDynamic
(
DynamicVO
dynamicVO
)
{
// 插入动态基本信息
ForumDynamicDO
forumDynamicDO
=
new
ForumDynamicDO
(
dynamicVO
);
dynamicDAO
.
insertDynamic
(
forumDynamicDO
);
// 插入动态图片或视频
MediaVO
mediaVO
=
dynamicVO
.
getMediaVO
();
// 插入图片
if
(
CollectionUtils
.
isNotEmpty
(
mediaVO
.
getPicture
()))
{
for
(
String
url
:
mediaVO
.
getPicture
())
{
dynamicDAO
.
insertPicture
(
forumDynamicDO
.
getId
(),
url
);
}
}
// 插入视频
if
(
mediaVO
.
getVideoUrl
()
!=
null
)
{
dynamicDAO
.
insertVideo
(
forumDynamicDO
.
getId
(),
mediaVO
.
getVideoUrl
());
}
return
ResultBody
.
success
(
"动态发布成功"
);
}
@Override
public
ResultBody
likeDynamic
(
Integer
userId
,
Integer
dynamicId
)
{
// 获取动态信息
ForumDynamicDO
forumDynamicDO
=
dynamicDAO
.
getDynamicInfo
(
dynamicId
);
if
(!
likeDAO
.
isLiked
(
userId
,
dynamicId
))
{
likeDAO
.
insertLike
(
userId
,
dynamicId
);
dynamicDAO
.
updateDynamicLikeCount
(
dynamicId
,
forumDynamicDO
.
getPid
());
}
else
{
likeDAO
.
deleteLike
(
userId
,
dynamicId
);
dynamicDAO
.
updateSubDynamicLikeCount
(
dynamicId
,
forumDynamicDO
.
getPid
());
}
return
ResultBody
.
success
();
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResultBody
commentDynamic
(
CommentVO
commentVO
)
{
ForumDynamicDO
forumDynamicDO
=
dynamicDAO
.
getDynamicInfo
(
commentVO
.
getDynamicId
());
if
(
forumDynamicDO
==
null
)
{
return
ResultBody
.
error
(
"动态不存在或已删除"
);
}
if
(
commentVO
.
getParentId
()
==
null
)
{
commentDAO
.
insertComment
(
commentVO
.
getUserId
(),
commentVO
.
getDynamicId
(),
commentVO
.
getContent
());
}
else
{
commentDAO
.
insertReplyComment
(
commentVO
.
getUserId
(),
commentVO
.
getDynamicId
(),
commentVO
.
getContent
(),
commentVO
.
getParentId
());
}
dynamicDAO
.
updateDynamicCommentCount
(
commentVO
.
getDynamicId
(),
forumDynamicDO
.
getPid
());
return
ResultBody
.
success
();
}
@Override
public
ResultBody
deleteComment
(
Integer
id
)
{
commentDAO
.
deleteComment
(
id
);
return
ResultBody
.
success
();
}
@Override
public
List
<
CommentAndReplyVO
>
getCommentAndReply
(
int
dynamicId
)
{
// 获取评论列表
List
<
CommentAndReplyVO
>
commentList
=
commentDAO
.
selectCommentList
(
dynamicId
);
List
<
CommentAndReplyVO
>
topLevelComment
=
new
ArrayList
<>();
Map
<
Integer
,
CommentAndReplyVO
>
commentMap
=
new
HashMap
<>();
// 将每个数据模型对象添加到Map中,以便在递归过程中查找它们的父母
for
(
CommentAndReplyVO
comment
:
commentList
)
{
comment
.
setChildren
(
new
ArrayList
<>());
commentMap
.
put
(
comment
.
getId
(),
comment
);
}
// 构建树结构
for
(
CommentAndReplyVO
comment
:
commentList
)
{
if
(
comment
.
getParentId
()
==
0
)
{
topLevelComment
.
add
(
comment
);
}
else
{
CommentAndReplyVO
parent
=
commentMap
.
get
(
comment
.
getParentId
());
parent
.
getChildren
().
add
(
comment
);
}
}
return
topLevelComment
;
}
@Override
public
PageResult
dynamicList
(
Integer
pageNo
,
Integer
pageSize
,
Integer
userId
)
{
int
count
=
dynamicDAO
.
countDynamicList
();
if
(
count
==
0
)
{
return
PageResult
.
buildPage
(
pageNo
,
pageSize
,
0
);
}
int
itemIndex
=
(
pageNo
-
1
)
*
pageSize
;
List
<
ForumDynamicDO
>
forumDynamicList
=
dynamicDAO
.
dynamicList
(
itemIndex
,
pageSize
);
// 动态id集合
List
<
Integer
>
ids
=
forumDynamicList
.
stream
().
map
(
ForumDynamicDO:
:
getId
).
collect
(
Collectors
.
toList
());
// 根据id集合查询图片
List
<
ForumImageDO
>
forumImageList
=
dynamicDAO
.
listDynamicPicture
(
ids
);
Map
<
Integer
,
List
<
ForumImageDO
>>
ImageMap
=
forumImageList
.
stream
().
collect
(
Collectors
.
groupingBy
(
ForumImageDO:
:
getDynamicId
));
// 获取视频信息
List
<
ForumVideoDO
>
forumVideoList
=
dynamicDAO
.
listDynamicVideo
(
ids
);
List
<
DynamicVO
>
dynamicVOList
=
forumDynamicList
.
stream
()
.
map
(
d
->
{
MediaVO
mediaVO
=
new
MediaVO
();
if
(
CollectionUtils
.
isNotEmpty
(
ImageMap
.
get
(
d
.
getId
())))
{
mediaVO
.
setPicture
(
ImageMap
.
get
(
d
.
getId
()).
stream
().
map
(
ForumImageDO:
:
getUrl
).
collect
(
Collectors
.
toList
()));
}
for
(
ForumVideoDO
forumVideoDO
:
forumVideoList
)
{
if
(
forumVideoDO
.
getDynamicId
().
equals
(
d
.
getId
()))
{
mediaVO
.
setVideoUrl
(
forumVideoDO
.
getUrl
());
break
;
}
}
DynamicVO
dynamicVO
=
d
.
buildDynamicVO
();
dynamicVO
.
setMediaVO
(
mediaVO
);
// 设置是否点赞
boolean
liked
=
likeDAO
.
isLiked
(
userId
,
d
.
getId
());
dynamicVO
.
setLikes
(
liked
);
return
dynamicVO
;
}).
collect
(
Collectors
.
toList
());
return
PageResult
.
buildPage
(
pageNo
,
pageSize
,
count
,
dynamicVOList
);
}
}
forum-service/src/main/resources/application-beta.yml
0 → 100644
浏览文件 @
81f80204
#Application
server
:
port
:
50002
servlet
:
context-path
:
/uavgoods
#spring
spring
:
application
:
name
:
uavgoods
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://mysql:3306/uav_mall_goods?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username
:
csftester
password
:
csf-TEST-m1200
# Druid数据源配置
type
:
com.alibaba.druid.pool.DruidDataSource
druid
:
initial-size
:
10
#初始化连接池大小
min-idle
:
10
#最小大小
max-active
:
50
#最大大小
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#配置一个连接在池中最小生存的时间,单位是毫秒
validation-query
:
SELECT 1 FROM DUAL
#用来检测连接是否有效的sql
test-while-idle
:
true
#申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow
:
false
#获取连接时执行检测,建议关闭,影响性能
testOnReturn
:
false
#归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements
:
false
#是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters
:
stat,wall
#配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter
:
wall
:
config
:
multi-statement-allow
:
true
db-type
:
mysql
enabled
:
true
connection-properties
:
druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
#打开慢sql记录和延迟时间
web-stat-filter
:
url-pattern
:
/*
exclusions
:
"
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled
:
true
stat-view-servlet
:
enabled
:
true
login-username
:
druid
login-password
:
druid
#cloud
cloud
:
loadbalancer
:
retry
:
enabled
:
true
#Redis
redis
:
database
:
0
host
:
redis
password
:
mmc@redis123
port
:
6379
#连接池
lettuce
:
shutdown-timeout
:
1000
# 关闭超时时间-ms
pool
:
#最大连接个数
max-active
:
30
#等待时间-ms
max-wait
:
1000ms
#最大空闲
max-idle
:
8
#初始化最小
min-idle
:
1
#rabbitMQ
rabbitmq
:
host
:
rabbitmq
port
:
5672
username
:
admin
password
:
mmc123456
virtual-host
:
/
listener
:
simple
:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency
:
3
#消费者最小数量
max-concurrency
:
10
# 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry
:
enabled
:
true
#是否开启消费者重试(为false时关闭消费者重试)
max-attempts
:
3
# 最大重试重新投递消息次数
initial-interval
:
900s
#重试重新投递消息间隔时间(单位秒)
default-requeue-rejected
:
false
#重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true
eureka
:
instance
:
prefer-ip-address
:
true
ip-address
:
mgoods
instance-id
:
${eureka.instance.ip-address}:${server.port}@${random.int}
status-page-url
:
https://testapi.sharefly.mmcuav.cn/${server.servlet.context-path}/swagger-ui.html
client
:
fetch-registry
:
true
service-url
:
defaultZone
:
http://edmin:sharefly1200@eureka:20080/eureka/
#logging
logging
:
level
:
com
:
mmc
:
csf
:
DEBUG
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.csf
configuration
:
map-underscore-to-camel-case
:
true
#feign
feign
:
client
:
config
:
default
:
connect-timeout
:
3000
read-timeout
:
6000
#Okhttp参数配置
httpclient
:
enabled
:
false
okhttp
:
enabled
:
true
hystrix
:
enabled
:
true
hystrix
:
command
:
default
:
execution
:
isolation
:
thread
:
# hystrix 超时时间
timeoutInMilliseconds
:
9000
#ribbon-ribbo和hystrix时间取最小的生效,feign和ribbon的超时时间只能选其一生效feign优先级高于ribbon
ribbon
:
okhttp
:
enabled
:
true
mmc
:
appid
:
80001
url
:
http://121.37.224.147
companycode
:
MMC
#logstash服务器地址
logstash
:
host
:
10.86.210.18
#logstash端口
port
:
8084
wechat
:
sub
:
appid
:
wx5c6a105a0ddca4c5
secret
:
96c75255dd26f82f8d55e15b59e101c7
rabbitmq
:
enabled
:
true
exchange
:
REPOORDER_WX_API_DIRECT_TEST
forum-service/src/main/resources/application-dev.yml
0 → 100644
浏览文件 @
81f80204
#Application
server
:
port
:
20001
servlet
:
context-path
:
/forum
#spring
spring
:
application
:
name
:
forum
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://rm-wz9dd796t4j1giz6t2o.mysql.rds.aliyuncs.com:3306/iuav_ims?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username
:
tmj
password
:
MMC@2022&MYSQL
# Druid数据源配置
type
:
com.alibaba.druid.pool.DruidDataSource
druid
:
initial-size
:
1
#初始化连接池大小
min-idle
:
1
#最小大小
max-active
:
1
#最大大小
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#配置一个连接在池中最小生存的时间,单位是毫秒
validation-query
:
SELECT 1 FROM DUAL
#用来检测连接是否有效的sql
test-while-idle
:
true
#申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow
:
false
#获取连接时执行检测,建议关闭,影响性能
testOnReturn
:
false
#归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements
:
false
#是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters
:
stat,wall
#配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter
:
wall
:
config
:
multi-statement-allow
:
true
db-type
:
mysql
enabled
:
true
connection-properties
:
druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
#打开慢sql记录和延迟时间
web-stat-filter
:
url-pattern
:
/*
exclusions
:
"
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled
:
true
stat-view-servlet
:
enabled
:
true
login-username
:
druid
login-password
:
druid
#cloud
cloud
:
loadbalancer
:
retry
:
enabled
:
true
#Redis
redis
:
database
:
0
host
:
119.23.248.181
password
:
mmc@redis123
port
:
6379
#连接池
lettuce
:
shutdown-timeout
:
1000
# 关闭超时时间-ms
pool
:
#最大连接个数
max-active
:
30
#等待时间-ms
max-wait
:
1000ms
#最大空闲
max-idle
:
8
#初始化最小
min-idle
:
1
#rabbitMQ
rabbitmq
:
host
:
119.23.248.181
port
:
5672
username
:
admin
password
:
mmc123456
virtual-host
:
/
listener
:
simple
:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency
:
3
#消费者最小数量
max-concurrency
:
10
# 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry
:
enabled
:
true
#是否开启消费者重试(为false时关闭消费者重试)
max-attempts
:
3
# 最大重试重新投递消息次数
initial-interval
:
900s
#重试重新投递消息间隔时间(单位秒)
default-requeue-rejected
:
false
#重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true
eureka
:
instance
:
prefer-ip-address
:
true
ip-address
:
127.0.0.1
instance-id
:
${eureka.instance.ip-address}:${server.port}@${random.int}
status-page-url
:
http://${eureka.instance.ip-address}:${server.port}${server.servlet.context-path}/swagger-ui.html
client
:
fetch-registry
:
true
service-url
:
defaultZone
:
http://edmin:sharefly1200@127.0.0.1:20080/eureka/
#logging
logging
:
level
:
com
:
mmc
:
csf
:
DEBUG
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.csf
configuration
:
map-underscore-to-camel-case
:
true
##feign
#feign:
# client:
# config:
# default:
# connect-timeout: 3000
# read-timeout: 6000
# #Okhttp参数配置
# httpclient:
# enabled: false
# okhttp:
# enabled: true
# hystrix:
# enabled: true
#hystrix:
# command:
# default:
# execution:
# isolation:
# thread:
# # hystrix 超时时间
# timeoutInMilliseconds: 9000
##ribbon-ribbo和hystrix时间取最小的生效,feign和ribbon的超时时间只能选其一生效feign优先级高于ribbon
#ribbon:
# okhttp:
# enabled: true
#mmc:
# appid: 80001
# url: http://121.37.224.147
# companycode: MMC
#
##logstash服务器地址
#logstash:
# host: 10.86.210.18
##logstash端口
# port: 8084
#
#
#wechat:
# sub:
# appid: wx5c6a105a0ddca4c5
# secret: 96c75255dd26f82f8d55e15b59e101c7
#
#rabbitmq:
# enabled: false
# exchange: REPOORDER_WX_API_DIRECT_DEV
#
## 查看健康情况-开发分支配置则可-其余分支请勿配置
#management:
# endpoints:
# web:
# exposure:
# include: "*"
\ No newline at end of file
forum-service/src/main/resources/application-product.yml
0 → 100644
浏览文件 @
81f80204
#Application
server
:
port
:
50002
servlet
:
context-path
:
/uavgoods
#spring
spring
:
application
:
name
:
uavgoods
#Database
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://mysql:3306/uav_mall_goods?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username
:
csfmysql
password
:
csf-DB-m1200
# Druid数据源配置
type
:
com.alibaba.druid.pool.DruidDataSource
druid
:
initial-size
:
10
#初始化连接池大小
min-idle
:
10
#最小大小
max-active
:
50
#最大大小
max-wait
:
60000
#获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis
:
60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis
:
300000
#配置一个连接在池中最小生存的时间,单位是毫秒
validation-query
:
SELECT 1 FROM DUAL
#用来检测连接是否有效的sql
test-while-idle
:
true
#申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow
:
false
#获取连接时执行检测,建议关闭,影响性能
testOnReturn
:
false
#归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements
:
false
#是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters
:
stat,wall
#配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter
:
wall
:
config
:
multi-statement-allow
:
true
db-type
:
mysql
enabled
:
true
connection-properties
:
druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
#打开慢sql记录和延迟时间
web-stat-filter
:
url-pattern
:
/*
exclusions
:
"
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled
:
true
stat-view-servlet
:
enabled
:
true
login-username
:
druid
login-password
:
druid
#cloud
cloud
:
loadbalancer
:
retry
:
enabled
:
true
#Redis
redis
:
database
:
0
host
:
redis
password
:
mmc@redis123
port
:
6379
#连接池
lettuce
:
shutdown-timeout
:
1000
# 关闭超时时间-ms
pool
:
#最大连接个数
max-active
:
30
#等待时间-ms
max-wait
:
1000ms
#最大空闲
max-idle
:
8
#初始化最小
min-idle
:
1
#rabbitMQ
rabbitmq
:
host
:
120.25.213.190
port
:
5672
username
:
admin
password
:
mmc123456
virtual-host
:
/
listener
:
simple
:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency
:
3
#消费者最小数量
max-concurrency
:
10
# 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry
:
enabled
:
true
#是否开启消费者重试(为false时关闭消费者重试)
max-attempts
:
3
# 最大重试重新投递消息次数
initial-interval
:
900s
#重试重新投递消息间隔时间(单位秒)
default-requeue-rejected
:
false
#重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true
eureka
:
instance
:
prefer-ip-address
:
true
ip-address
:
mgoods
instance-id
:
${eureka.instance.ip-address}:${server.port}@${random.int}
client
:
fetch-registry
:
true
service-url
:
defaultZone
:
http://edmin:sharefly1200@eureka:20080/eureka/
#logging
logging
:
level
:
com
:
mmc
:
csf
:
DEBUG
#mybatis
mybatis
:
executor-type
:
simple
mapper-locations
:
classpath:mapper/**/*.xml
type-aliases-package
:
com.mmc.csf
configuration
:
map-underscore-to-camel-case
:
true
#feign
feign
:
client
:
config
:
default
:
connect-timeout
:
3000
read-timeout
:
6000
#Okhttp参数配置
httpclient
:
enabled
:
false
okhttp
:
enabled
:
true
hystrix
:
enabled
:
true
hystrix
:
command
:
default
:
execution
:
isolation
:
thread
:
# hystrix 超时时间
timeoutInMilliseconds
:
9000
#ribbon-ribbo和hystrix时间取最小的生效,feign和ribbon的超时时间只能选其一生效feign优先级高于ribbon
ribbon
:
okhttp
:
enabled
:
true
mmc
:
appid
:
80001
url
:
http://121.37.224.147
companycode
:
MMC
wechat
:
sub
:
appid
:
wx5c6a105a0ddca4c5
secret
:
96c75255dd26f82f8d55e15b59e101c7
rabbitmq
:
enabled
:
true
exchange
:
REPOORDER_WX_API_DIRECT_PROD
forum-service/src/main/resources/application.yml
0 → 100644
浏览文件 @
81f80204
spring
:
profiles
:
active
:
dev
---
spring
:
profiles
:
dev
---
spring
:
profiles
:
beta
---
spring
:
profiles
:
product
forum-service/src/main/resources/banner.txt
0 → 100644
浏览文件 @
81f80204
_____ _ __ _
/ ____| | / _| |
| (___ | |__ __ _ _ __ ___ | |_| |_ _
\___ \| '_ \ / _` | '__/ _ \ | _| | | | |
____) | | | | (_| | | | __/ | | | | |_| |
|_____/|_| |_|\__,_|_| \___| |_| |_|\__, |
__/ |
|___/
\ No newline at end of file
forum-service/src/main/resources/logback-spring.xml
0 → 100644
浏览文件 @
81f80204
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include
resource=
"org/springframework/boot/logging/logback/base.xml"
/>
<appender
name=
"LOGSTASH"
class=
"net.logstash.logback.appender.LogstashTcpSocketAppender"
>
<destination>
139.159.142.254:6003
</destination>
<!-- 日志输出编码 -->
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"
>
<providers>
<timestamp>
<timeZone>
UTC
</timeZone>
</timestamp>
<pattern>
<pattern>
{
"logLevel": "%level",
"serviceName": "${springAppName:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"LOGSTASH"
/>
<appender-ref
ref=
"CONSOLE"
/>
</root>
</configuration>
forum-service/src/main/resources/mapper/CommentMapper.xml
0 → 100644
浏览文件 @
81f80204
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.csf.forum.dao.CommentDAO"
>
<insert
id=
"insertComment"
parameterType=
"com.mmc.csf.forum.vo.CommentVO"
>
INSERT INTO forum_comment(user_id, dynamic_id, content)
VALUES (#{userId}, #{dynamicId}, #{content})
</insert>
<insert
id=
"insertReplyComment"
>
INSERT INTO forum_comment(user_id, dynamic_id, content,parent_id)
VALUES (#{userId}, #{dynamicId}, #{content},#{parentId})
</insert>
<update
id=
"deleteComment"
parameterType=
"int"
>
update forum_comment
set is_deleted = 1
where id = #{id}
</update>
<delete
id=
"deleteCommentsByDynamic"
parameterType=
"int"
>
DELETE FROM forum_comment WHERE dynamic_id = #{dynamicId}
</delete>
<select
id=
"selectCommentList"
resultType=
"com.mmc.csf.forum.vo.CommentAndReplyVO"
>
select id,
parent_id,
user_id,
dynamic_id,
content,
likes_count
from forum_comment
where dynamic_id = #{dynamicId} and is_deleted = 0
</select>
<select
id=
"selectSubCommentList"
resultType=
"com.mmc.csf.forum.vo.CommentVO"
>
select id,
parent_id,
user_id,
dynamic_id,
content,
likes_count
from forum_comment
where parent_id in
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</select>
</mapper>
\ No newline at end of file
forum-service/src/main/resources/mapper/DynamicMapper.xml
0 → 100644
浏览文件 @
81f80204
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.csf.forum.dao.DynamicDAO"
>
<insert
id=
"insertPicture"
>
insert into forum_image(dynamic_id, url)
values (#{dynamicId}, #{url})
</insert>
<insert
id=
"insertVideo"
>
insert into forum_video(dynamic_id, url)
values (#{dynamicId}, #{videoUrl})
</insert>
<insert
id=
"insertDynamic"
keyProperty=
"id"
useGeneratedKeys=
"true"
parameterType=
"com.mmc.csf.forum.entity.ForumDynamicDO"
>
INSERT INTO forum_dynamic(title, user_id, description, location, lat, lon)
VALUES (#{title}, #{userId}, #{description}, #{location}, #{lat}, #{lon})
</insert>
<update
id=
"updateDynamicLikeCount"
>
update forum_dynamic
set likes_count = likes_count + 1,
pid = pid + 1
where id = #{dynamicId}
and pid = #{pid};
</update>
<update
id=
"updateSubDynamicLikeCount"
>
update forum_dynamic
set likes_count = likes_count - 1,
pid = pid + 1
where id = #{dynamicId}
and pid = #{pid};
</update>
<update
id=
"updateDynamicCommentCount"
>
update forum_dynamic
set comments_count = comments_count + 1,
pid = pid + 1
where id = #{dynamicId}
and pid = #{pid};
</update>
<select
id=
"getDynamicInfo"
resultType=
"com.mmc.csf.forum.entity.ForumDynamicDO"
>
select id,
pid,
title,
user_id,
description,
location,
lat,
lon,
likes_count,
comments_count
from forum_dynamic
where id = #{dynamicId}
</select>
<select
id=
"countDynamicList"
resultType=
"java.lang.Integer"
>
select count(*)
from forum_dynamic where is_deleted = 0
</select>
<select
id=
"dynamicList"
resultType=
"com.mmc.csf.forum.entity.ForumDynamicDO"
>
select id,
pid,
title,
user_id,
description,
location,
lat,
lon,
likes_count,
comments_count,
create_time
from forum_dynamic
where is_deleted = 0
order by create_time desc
LIMIT #{itemIndex}, #{pageSize}
</select>
<select
id=
"listDynamicPicture"
resultType=
"com.mmc.csf.forum.entity.ForumImageDO"
>
select id, url , dynamic_id
from forum_image
where
is_deleted = 0 and dynamic_id in
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</select>
<select
id=
"listDynamicVideo"
resultType=
"com.mmc.csf.forum.entity.ForumVideoDO"
>
select id, url , dynamic_id
from forum_video
where
is_deleted = 0 and dynamic_id in
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</select>
</mapper>
\ No newline at end of file
forum-service/src/main/resources/mapper/LikeMapper.xml
0 → 100644
浏览文件 @
81f80204
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.csf.forum.dao.LikeDAO"
>
<insert
id=
"insertLike"
>
INSERT INTO forum_like(user_id, dynamic_id)
VALUES (#{userId}, #{dynamicId})
</insert>
<delete
id=
"deleteLike"
>
DELETE
FROM forum_like
WHERE user_id = #{userId}
AND dynamic_id = #{dynamicId}
</delete>
<select
id=
"isLiked"
resultType=
"java.lang.Boolean"
>
SELECT COUNT(*) > 0
FROM forum_like
WHERE user_id = #{userId}
AND dynamic_id = #{dynamicId}
</select>
<select
id=
"getLikesCount"
resultType=
"java.lang.Integer"
>
SELECT COUNT(*)
FROM forum_like
WHERE dynamic_id = #{dynamicId}
</select>
</mapper>
\ No newline at end of file
pom.xml
浏览文件 @
81f80204
...
...
@@ -199,5 +199,6 @@
<modules>
<module>
flyer-service
</module>
<module>
csf-common
</module>
<module>
forum-service
</module>
</modules>
</project>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论