提交 cb43e08b 作者: zhenjie

Merge branch 'develop' of ssh://git.mmcuav.cn:8222/iuav/ims into develop

...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -25,11 +26,13 @@ public class CommentAndReplyVO implements Serializable { ...@@ -25,11 +26,13 @@ public class CommentAndReplyVO implements Serializable {
private Integer dynamicId; private Integer dynamicId;
@ApiModelProperty(value = "父级评论id") @ApiModelProperty(value = "父级评论id")
private Integer parentId; private Integer parentId;
@ApiModelProperty(value = "模拟用户id") @ApiModelProperty(value = "动态发布人的id(后期返回用户头像昵称信息)")
private Integer userId; private Integer userId;
@ApiModelProperty(value = "评论内容") @ApiModelProperty(value = "评论内容")
private String content; private String content;
@ApiModelProperty(value = "评论点赞数") @ApiModelProperty(value = "评论点赞数")
private Integer likesCount; private Integer likesCount;
@ApiModelProperty(value = "评论时间")
private Date createTime;
private List<CommentAndReplyVO> children; private List<CommentAndReplyVO> children;
} }
...@@ -8,6 +8,9 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,9 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/5/15 10:29 * @date 2023/5/15 10:29
...@@ -40,4 +43,8 @@ public class DynamicVO implements Serializable { ...@@ -40,4 +43,8 @@ public class DynamicVO implements Serializable {
private Integer commentCount; private Integer commentCount;
@ApiModelProperty(value = "是否点赞") @ApiModelProperty(value = "是否点赞")
private Boolean likes; private Boolean likes;
@ApiModelProperty(value = "动态发布时间")
private Date dynamicPublishTime;
@ApiModelProperty(value = "评论信息")
private List<CommentAndReplyVO> commentAndReplyVO;
} }
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: default
spec:
type: ExternalName
externalName: rm-wz9dd796t4j1giz6t.mysql.rds.aliyuncs.com
ports:
- port: 3306
\ No newline at end of file
...@@ -17,4 +17,4 @@ patches: ...@@ -17,4 +17,4 @@ patches:
images: images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG - name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims
newTag: da09788efcd48cb9187d187d23890d1c063e3b48 newTag: 64cf35a576d62acfef1db0799fda87bcf64a0118
...@@ -3,4 +3,4 @@ kind: ConfigMap ...@@ -3,4 +3,4 @@ kind: ConfigMap
metadata: metadata:
name: ims-map name: ims-map
data: data:
SPRING_PROFILES_ACTIVE: dev SPRING_PROFILES_ACTIVE: prod
\ No newline at end of file \ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
name: ims-deployment
spec:
replicas: 2
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1 apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
resources: resources:
- ../../base - ../../base
namespace: prod namespace: prod
#namePrefix: prod- #namePrefix: prod-
commonLabels: commonLabels:
...@@ -9,12 +9,13 @@ commonLabels: ...@@ -9,12 +9,13 @@ commonLabels:
commonAnnotations: commonAnnotations:
note: This is prod! note: This is prod!
patches: patches:
- path: configMap.yaml - path: increase_replicas.yaml
- path: service-patch.yaml - path: configMap.yaml
target: - path: service-patch.yaml
kind: Service target:
name: ims-svc kind: Service
name: ims-svc
images: images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG - name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly/ims newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly/ims
newTag: d39b5a94225527270920384fde1448bbe58a61c3 newTag: d39b5a94225527270920384fde1448bbe58a61c3
\ No newline at end of file
package com.mmc.csf.release.config;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//Converter<S,T> S: 代表的是源,将要转换的数据类型 T:目标类型,将会转成什么数据类型
@Component
public class GlobalFormDateConvert implements Converter<String, Date> {
// 静态初始化定义日期字符串参数列表(需要转换的)
private static final List<String> paramList = new ArrayList<>();
// 静态初始化可能初夏你的日期格式
private static final String param1 = "yyyy-MM";
private static final String param2 = "yyyy-MM-dd";
private static final String param3 = "yyyy-MM-dd HH:mm";
private static final String param4 = "yyyy-MM-dd HH:mm:ss";
// 静态代码块,将日期参数加入到列表中
static {
paramList.add(param1);
paramList.add(param2);
paramList.add(param3);
paramList.add(param4);
}
// 自定义函数,将字符串转Date 参1:传入的日期字符串 参2:格式参数
public Date parseDate(String source, String format) {
System.out.println("parseDate转换日期");
Date date = null;
try {
// 日期格式转换器
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(source);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
// convert转换方法 ,s是将会传递过来的日期的字符串
@Override
public Date convert(String source) {
System.out.println("convert日期格式转换器");
if (StringUtils.isEmpty(source)) {
return null;
}
source = source.trim(); // 去除首尾空格
// 正则表达式判断是哪一种格式参数
if (source.matches("^\\d{4}-\\d{1,2}$")) {
return parseDate(source, paramList.get(0));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
return parseDate(source, paramList.get(1));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, paramList.get(2));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, paramList.get(3));
} else {
throw new IllegalArgumentException("还未定义该种字符串转Date的日期转换格式 --> 【日期格式】:" + source);
}
}
}
package com.mmc.csf.release.config;
import com.fasterxml.jackson.databind.util.StdDateFormat;
import org.springframework.util.StringUtils;
import java.text.FieldPosition;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class GlobalJsonDateConvert extends StdDateFormat {
private static final long serialVersionUID = -6738131740618766141L;
// 静态初始化final,共享
public static final GlobalJsonDateConvert instance = new GlobalJsonDateConvert();
// 覆盖parse(String)这个方法即可实现
@Override
public Date parse(String dateStr, ParsePosition pos) {
return getDate(dateStr, pos);
}
@Override
public Date parse(String dateStr) {
ParsePosition pos = new ParsePosition(0);
return getDate(dateStr, pos);
}
private Date getDate(String dateStr, ParsePosition pos) {
SimpleDateFormat sdf = null;
if (StringUtils.isEmpty(dateStr)) {
return null;
} else if (dateStr.matches("^\\d{4}-\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.parse(dateStr, pos);
} else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(dateStr, pos);
} else if (dateStr.length() == 23) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return sdf.parse(dateStr, pos);
}
return super.parse(dateStr, pos);
}
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date, toAppendTo, fieldPosition);
}
@Override
public GlobalJsonDateConvert clone() {
return new GlobalJsonDateConvert();
}
}
...@@ -58,10 +58,17 @@ public class DynamicController { ...@@ -58,10 +58,17 @@ public class DynamicController {
return ResultBody.success(dynamicService.getCommentAndReply(dynamicId)); return ResultBody.success(dynamicService.getCommentAndReply(dynamicId));
} }
@ApiOperation(value = "动态详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicDetails")
public ResultBody dynamicDetails(@RequestParam Integer dynamicId,@RequestParam Integer userId) {
return ResultBody.success(dynamicService.dynamicDetails(dynamicId,userId));
}
@ApiOperation(value = "动态列表") @ApiOperation(value = "动态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = DynamicVO.class)})
@GetMapping("/dynamicList") @GetMapping("/dynamicList")
public ResultBody dynamicList(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Integer userId) { public ResultBody dynamicList(@RequestParam Integer pageNo, @RequestParam Integer pageSize, @RequestParam Integer userId) {
return ResultBody.success(dynamicService.dynamicList(pageNo, pageSize,userId)); return ResultBody.success(dynamicService.dynamicList(pageNo, pageSize, userId));
} }
} }
...@@ -7,8 +7,6 @@ import com.mmc.csf.release.service.FlyerTrainingService; ...@@ -7,8 +7,6 @@ import com.mmc.csf.release.service.FlyerTrainingService;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO; import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.vo.FlightSkillsVO; import com.mmc.csf.release.flyer.vo.FlightSkillsVO;
import com.mmc.csf.release.flyer.vo.RegistrationVO; import com.mmc.csf.release.flyer.vo.RegistrationVO;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
......
...@@ -103,4 +103,20 @@ public interface DynamicDAO { ...@@ -103,4 +103,20 @@ public interface DynamicDAO {
* @return {@link List}<{@link ForumVideoDO}> * @return {@link List}<{@link ForumVideoDO}>
*/ */
List<ForumVideoDO> listDynamicVideo(List<Integer> ids); List<ForumVideoDO> listDynamicVideo(List<Integer> ids);
/**
* 动态图片
*
* @param dynamicId 动态id
* @return {@link List}<{@link ForumImageDO}>
*/
List<ForumImageDO> dynamicPicture(Integer dynamicId);
/**
* 动态视频
*
* @param dynamicId 动态id
* @return {@link ForumVideoDO}
*/
ForumVideoDO dynamicVideo(Integer dynamicId);
} }
...@@ -88,7 +88,7 @@ public class ForumDynamicDO implements Serializable { ...@@ -88,7 +88,7 @@ public class ForumDynamicDO implements Serializable {
return DynamicVO.builder().id(id).description(description) return DynamicVO.builder().id(id).description(description)
.commentCount(commentsCount).likesCount(likesCount) .commentCount(commentsCount).likesCount(likesCount)
.lat(lat).lon(lon).location(location).title(title) .lat(lat).lon(lon).location(location).title(title)
.userId(userId).build(); .userId(userId).dynamicPublishTime(createTime).build();
} }
} }
...@@ -53,7 +53,7 @@ public interface DynamicService { ...@@ -53,7 +53,7 @@ public interface DynamicService {
* @param dynamicId 动态id * @param dynamicId 动态id
* @return {@link List}<{@link CommentVO}> * @return {@link List}<{@link CommentVO}>
*/ */
List<CommentAndReplyVO> getCommentAndReply(int dynamicId); List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId);
/** /**
* 动态列表 * 动态列表
...@@ -64,4 +64,13 @@ public interface DynamicService { ...@@ -64,4 +64,13 @@ public interface DynamicService {
* @return {@link List}<{@link DynamicVO}> * @return {@link List}<{@link DynamicVO}>
*/ */
PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId); PageResult dynamicList(Integer pageNo, Integer pageSize, Integer userId);
/**
* 动态细节
*
* @param dynamicId 动态id
* @param userId 用户id
* @return {@link ResultBody}
*/
ResultBody dynamicDetails(Integer dynamicId, Integer userId);
} }
...@@ -97,7 +97,7 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -97,7 +97,7 @@ public class DynamicServiceImpl implements DynamicService {
} }
@Override @Override
public List<CommentAndReplyVO> getCommentAndReply(int dynamicId) { public List<CommentAndReplyVO> getCommentAndReply(Integer dynamicId) {
// 获取评论列表 // 获取评论列表
List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId); List<CommentAndReplyVO> commentList = commentDAO.selectCommentList(dynamicId);
List<CommentAndReplyVO> topLevelComment = new ArrayList<>(); List<CommentAndReplyVO> topLevelComment = new ArrayList<>();
...@@ -155,4 +155,31 @@ public class DynamicServiceImpl implements DynamicService { ...@@ -155,4 +155,31 @@ public class DynamicServiceImpl implements DynamicService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList); return PageResult.buildPage(pageNo, pageSize, count, dynamicVOList);
} }
@Override
public ResultBody dynamicDetails(Integer dynamicId, Integer userId) {
// 判断此动态是否还存在
ForumDynamicDO dynamicInfo = dynamicDAO.getDynamicInfo(dynamicId);
if (dynamicInfo == null) {
return ResultBody.error("动态不存在或已删除!");
}
// 获取图片视频
List<ForumImageDO> forumImage = dynamicDAO.dynamicPicture(dynamicId);
ForumVideoDO forumVideoDO = dynamicDAO.dynamicVideo(dynamicId);
MediaVO mediaVO = new MediaVO();
if (forumVideoDO != null) {
mediaVO.setVideoUrl(forumVideoDO.getUrl());
}
if (CollectionUtils.isNotEmpty(forumImage)) {
mediaVO.setPicture(forumImage.stream().map(ForumImageDO::getUrl).collect(Collectors.toList()));
}
DynamicVO dynamicVO = dynamicInfo.buildDynamicVO();
// 设置是否点赞
boolean liked = likeDAO.isLiked(userId, dynamicId);
dynamicVO.setLikes(liked);
// 设置评论信息
dynamicVO.setCommentAndReplyVO(this.getCommentAndReply(dynamicId));
dynamicVO.setMediaVO(mediaVO);
return ResultBody.success(dynamicVO);
}
} }
#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
...@@ -10,40 +10,39 @@ spring: ...@@ -10,40 +10,39 @@ spring:
#Database #Database
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver 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 url: jdbc:mysql://mysql.default:3306/iuav_ims?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: tmj username: tmj
password: MMC@2022&MYSQL password: MMC@2022&MYSQL
# Druid数据源配置 # Druid数据源配置
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
druid: # druid:
initial-size: 1 #初始化连接池大小 # initial-size: 1 #初始化连接池大小
min-idle: 1 #最小大小 # min-idle: 1 #最小大小
max-active: 1 #最大大小 # max-active: 1 #最大大小
max-wait: 60000 #获取连接时最大等待时间,单位毫秒 # max-wait: 60000 #获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 # time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒 # min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql # validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性 # test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能 # testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能
testOnReturn: false #归还连接时执行检测,建议关闭,影响性能 # testOnReturn: false #归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭 # pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入 # filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter: # filter:
wall: # wall:
config: # config:
multi-statement-allow: true # multi-statement-allow: true
db-type: mysql # db-type: mysql
enabled: true # enabled: true
connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间 # connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间
web-stat-filter: # web-stat-filter:
url-pattern: /* # url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled: true # enabled: true
stat-view-servlet: # stat-view-servlet:
enabled: true # enabled: true
login-username: druid # login-username: druid
login-password: druid # login-password: druid
#cloud
cloud: cloud:
loadbalancer: loadbalancer:
retry: retry:
...@@ -81,7 +80,7 @@ spring: ...@@ -81,7 +80,7 @@ spring:
concurrency: 3 #消费者最小数量 concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量 max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置 # 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry: retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试) enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数 max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒) initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
......
...@@ -10,7 +10,7 @@ spring: ...@@ -10,7 +10,7 @@ spring:
#Database #Database
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://rm-wz9dd796t4j1giz6t.mysql.rds.aliyuncs.com:3306/iuav_ims?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 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 username: tmj
password: MMC@2022&MYSQL password: MMC@2022&MYSQL
# Druid数据源配置 # Druid数据源配置
...@@ -117,7 +117,7 @@ mybatis: ...@@ -117,7 +117,7 @@ mybatis:
iuav: iuav:
userapp: userapp:
url: http://cms-svc:30150 url: http://localhost:30151
##feign ##feign
#feign: #feign:
......
#Application #Application
server: server:
port: 50002 port: 10001
servlet: servlet:
context-path: /uavgoods context-path: /release
#spring #spring
spring: spring:
application: application:
name: uavgoods name: release
#Database #Database
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver 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 url: jdbc:mysql://mysql.default:3306/iuav_ims?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: csfmysql username: tmj
password: csf-DB-m1200 password: MMC@2022&MYSQL
# Druid数据源配置 # Druid数据源配置
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
druid: # druid:
initial-size: 10 #初始化连接池大小 # initial-size: 1 #初始化连接池大小
min-idle: 10 #最小大小 # min-idle: 1 #最小大小
max-active: 50 #最大大小 # max-active: 1 #最大大小
max-wait: 60000 #获取连接时最大等待时间,单位毫秒 # max-wait: 60000 #获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 # time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒 # min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql # validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性 # test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能 # testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能
testOnReturn: false #归还连接时执行检测,建议关闭,影响性能 # testOnReturn: false #归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭 # pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入 # filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter: # filter:
wall: # wall:
config: # config:
multi-statement-allow: true # multi-statement-allow: true
db-type: mysql # db-type: mysql
enabled: true # enabled: true
connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间 # connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间
web-stat-filter: # web-stat-filter:
url-pattern: /* # url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled: true # enabled: true
stat-view-servlet: # stat-view-servlet:
enabled: true # enabled: true
login-username: druid # login-username: druid
login-password: druid # login-password: druid
#cloud
cloud: cloud:
loadbalancer: loadbalancer:
retry: retry:
...@@ -53,8 +52,8 @@ spring: ...@@ -53,8 +52,8 @@ spring:
#Redis #Redis
redis: redis:
database: 0 database: 0
host: redis host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password: mmc@redis123 password: MMC@2022&REDIS
port: 6379 port: 6379
#连接池 #连接池
lettuce: lettuce:
...@@ -70,7 +69,7 @@ spring: ...@@ -70,7 +69,7 @@ spring:
min-idle: 1 min-idle: 1
#rabbitMQ #rabbitMQ
rabbitmq: rabbitmq:
host: 120.25.213.190 host: 119.23.248.181
port: 5672 port: 5672
username: admin username: admin
password: mmc123456 password: mmc123456
...@@ -81,7 +80,7 @@ spring: ...@@ -81,7 +80,7 @@ spring:
concurrency: 3 #消费者最小数量 concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量 max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置 # 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry: retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试) enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数 max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒) initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
...@@ -91,12 +90,13 @@ spring: ...@@ -91,12 +90,13 @@ spring:
eureka: eureka:
instance: instance:
prefer-ip-address: true prefer-ip-address: true
ip-address: mgoods ip-address: 127.0.0.1
instance-id: ${eureka.instance.ip-address}:${server.port}@${random.int} 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: client:
fetch-registry: true fetch-registry: true
service-url: service-url:
defaultZone: http://edmin:sharefly1200@eureka:20080/eureka/ defaultZone: http://edmin:sharefly1200@127.0.0.1:20080/eureka/
#logging #logging
...@@ -143,19 +143,32 @@ ribbon: ...@@ -143,19 +143,32 @@ ribbon:
iuav: iuav:
userapp: userapp:
url: http://cms-svc:30150 url: http://127.0.0.1:35150
mmc:
appid: 80001
url: http://121.37.224.147
companycode: MMC
wechat:
sub:
appid: wx5c6a105a0ddca4c5
secret: 96c75255dd26f82f8d55e15b59e101c7
rabbitmq: #mmc:
enabled: true # appid: 80001
exchange: REPOORDER_WX_API_DIRECT_PROD # 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
spring: spring:
profiles: profiles:
active: dev active: local
--- ---
...@@ -10,9 +10,9 @@ spring: ...@@ -10,9 +10,9 @@ spring:
--- ---
spring: spring:
profiles: beta profiles: local
--- ---
spring: spring:
profiles: product profiles: prod
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
user_id, user_id,
dynamic_id, dynamic_id,
content, content,
likes_count likes_count,
create_time
from forum_comment from forum_comment
where dynamic_id = #{dynamicId} and is_deleted = 0 where dynamic_id = #{dynamicId} and is_deleted = 0
</select> </select>
......
...@@ -47,9 +47,11 @@ ...@@ -47,9 +47,11 @@
lat, lat,
lon, lon,
likes_count, likes_count,
comments_count comments_count,
create_time
from forum_dynamic from forum_dynamic
where id = #{dynamicId} where id = #{dynamicId}
and is_deleted = 0
</select> </select>
<select id="countDynamicList" resultType="java.lang.Integer"> <select id="countDynamicList" resultType="java.lang.Integer">
select count(*) select count(*)
...@@ -91,4 +93,20 @@ ...@@ -91,4 +93,20 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="dynamicPicture" resultType="com.mmc.csf.release.entity.ForumImageDO">
select id,
dynamic_id,
url
from forum_image
where dynamic_id = #{dynamicId}
and is_deleted = 0
</select>
<select id="dynamicVideo" resultType="com.mmc.csf.release.entity.ForumVideoDO">
select id,
dynamic_id,
url
from forum_video
where dynamic_id = #{dynamicId}
and is_deleted = 0
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论