Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
ims-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
ims-ci-test
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论