Browse Source

Merge remote-tracking branch 'remotes/origin/develop' into release_temp

master
jianjun 4 years ago
parent
commit
12053dbe17
  1. 30
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java
  2. 43
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java
  3. 27
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/SyncFootBar4CustomerFormDTO.java
  4. 10
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java
  5. 24
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java
  6. 3
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java
  7. 52
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java
  8. 42
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml

30
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/ApplicationReadyEventListener.java

@ -13,10 +13,7 @@ import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.taobao.api.ApiException;
import org.apache.logging.log4j.LogManager;
@ -47,36 +44,15 @@ public class ApplicationReadyEventListener implements ApplicationListener<Applic
EnvEnum currentEnv = EnvEnum.getCurrentEnv();
logger.info(currentEnv);
if (!EnvEnum.DEV.getCode().equals(currentEnv.getCode()) && !EnvEnum.LOCAL.getCode().equals(currentEnv.getCode())) {
//sendDingTextMsg();
sendDingMarkDownMsg();
}
}
private void sendDingTextMsg() {
//发送启动成功消息
InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class);
String serverIp = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
//开发小组 群机器人地址
String url = "https://oapi.dingtalk.com/robot/send?access_token=ffd7c972b0525e249283df1a16b65a8b9d0012601f3a458dfc588c2eac497bb5";
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(EnvEnum.getCurrentEnv().getName())
.append("【")
.append(appName)
.append("】")
.append("ip地址: ")
.append(serverIp)
.append("部署完毕!");
DingTalkTextMsg msg = new DingTalkTextMsg();
msg.setWebHook(url);
msg.setAtAll(true);
msg.setContent(stringBuilder.toString());
Result<String> stringResult = HttpClientManager.getInstance().sendPostByJSON(url, msg.getMsgContent());
logger.info(stringResult);
}
private String getServerIp() {
InetUtils inetUtils = SpringContextUtils.getBean(InetUtils.class);
if (inetUtils == null){
return null;
}
return inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
}

43
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java

@ -9,19 +9,18 @@ import ch.qos.logback.core.spi.FilterReply;
import com.epmet.commons.tools.constant.ThreadLocalConstant;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.DingdingMsgSender;
import com.epmet.commons.tools.utils.SpringContextUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.core.env.Environment;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -47,40 +46,42 @@ public class LogMsgSendFilter extends LevelFilter {
//如果日志级别等于设置的日志级别 则发送消息
if (event.getLevel().isGreaterOrEqual(Level.ERROR)) {
try {
getServerInfo();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("【日志告警】\n");
stringBuilder.append("\n");
stringBuilder.append("告警级别:" + event.getLevel());
stringBuilder.append("告警级别:").append(event.getLevel());
stringBuilder.append("\n");
if (StringUtils.isNotBlank(appName)) {
stringBuilder.append("服务名称:" + appName);
stringBuilder.append("服务名称:").append(appName);
stringBuilder.append("\n");
}
getServerInfo();
if (StringUtils.isNotBlank(activeEnv)) {
stringBuilder.append("告警环境:" + EnvEnum.getEnum(activeEnv).getName());
stringBuilder.append("告警环境:").append(activeEnv);
stringBuilder.append("\n");
}
if (StringUtils.isNotBlank(serverIp)) {
stringBuilder.append("IP地址:" + serverIp);
stringBuilder.append("IP地址:").append(serverIp);
stringBuilder.append("\n");
}
stringBuilder.append("故障时间:" + formatLongTime2Str(event.getTimeStamp()));
stringBuilder.append("故障时间:").append(DateUtils.formatTimestamp(event.getTimeStamp(),DateUtils.DATE_TIME_PATTERN));
stringBuilder.append("\n");
stringBuilder.append("TraceId:" + Thread.currentThread().getName());
stringBuilder.append("TraceId:").append(Thread.currentThread().getName());
stringBuilder.append("\n");
HttpServletRequest request = getRequest();
if (request != null) {
String requestURI = request.getRequestURI();
stringBuilder.append("请求路径:" + requestURI);
stringBuilder.append("请求路径:").append(requestURI);
stringBuilder.append("\n");
stringBuilder.append("请求参数:" + ThreadLocalConstant.requestParam.get());
stringBuilder.append("请求参数:").append(ThreadLocalConstant.requestParam.get());
stringBuilder.append("\n");
}
@ -89,7 +90,7 @@ public class LogMsgSendFilter extends LevelFilter {
if (throwableProxy == null && formattedMessage.length() > 1000) {
formattedMessage = formattedMessage.substring(0, getCharacterPosition(formattedMessage, baseProjectPackage, 5));
}
stringBuilder.append("告警信息:" + formattedMessage);
stringBuilder.append("告警信息:").append(formattedMessage);
stringBuilder.append("\n");
@ -134,12 +135,8 @@ public class LogMsgSendFilter extends LevelFilter {
}
try {
if (activeEnv == null) {
Environment environment = SpringContextUtils.getBean(Environment.class);
String[] activeProfiles = environment.getActiveProfiles();
if (activeProfiles != null && activeProfiles.length > 0) {
logger.info("activeProfiles:{}", activeProfiles);
activeEnv = activeProfiles[0];
}
EnvEnum currentEnv = EnvEnum.getCurrentEnv();
activeEnv = currentEnv.getName();
}
} catch (Exception e) {
logger.warn("getServerInfo get bean Environment exception", e);
@ -212,16 +209,6 @@ public class LogMsgSendFilter extends LevelFilter {
}
}
private String formatLongTime2Str(long timestamp) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return dateFormat.format(timestamp);
}
public void setActiveEnv(String activeEnv) {
this.activeEnv = activeEnv;
}
public void setAppName(String appName) {
this.appName = appName;
}

27
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/SyncFootBar4CustomerFormDTO.java

@ -0,0 +1,27 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* 客户定制化-同步footbar
*
* @author yinzuomei@elink-cn.com
* @date 2021/7/28 15:21
*/
@Data
public class SyncFootBar4CustomerFormDTO implements Serializable {
private static final long serialVersionUID = 8879950597580438204L;
@NotBlank(message = "customerId不能为空")
private String customerId;
@NotBlank(message = "appType不能为空")
private String appType;
private List<String> syncBarKeyList;
private List<String> addBarKeyList;
@NotBlank(message = "操作用户不能为空")
private String userId;
}

10
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/CustomerFootBarController.java

@ -17,10 +17,12 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
@ -33,6 +35,7 @@ import com.epmet.dto.CustomerFootBarDTO;
import com.epmet.dto.form.CheckFloatFootBarFormDTO;
import com.epmet.dto.form.CustomerFootBarFormDTO;
import com.epmet.dto.form.NotOnlineFootBarFormDTO;
import com.epmet.dto.form.SyncFootBar4CustomerFormDTO;
import com.epmet.dto.result.CheckFloatFootBarResultDTO;
import com.epmet.dto.result.CustomerFootBarResultDTO;
import com.epmet.entity.CustomerFootBarEntity;
@ -281,9 +284,10 @@ public class CustomerFootBarController {
* @author yinzuomei
* @date 2021/7/28 10:01
*/
@PostMapping("createfootbar-customer")
public Result createFootBarCustomer(@RequestBody CustomerFootBarFormDTO form) {
ValidatorUtils.validateEntity(form, CustomerFootBarFormDTO.CreateFootBarGroup.class);
@PostMapping("syncfootbar4customer")
public Result createFootBarCustomer(@LoginUser TokenDto tokenDto, @RequestBody SyncFootBar4CustomerFormDTO form) {
form.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(form);
customerFootBarService.createFootBarCustomer(form);
return new Result();
}

24
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/CustomerFootBarDao.java

@ -95,4 +95,28 @@ public interface CustomerFootBarDao extends BaseDao<CustomerFootBarEntity> {
* @date 2021/7/28 9:49
*/
List<CustomerFootBarEntity> selectNotOnlineFootBars(@Param("customerId") String customerId, @Param("appType")String appType);
/**
* 根据key查询
*
* @param customerId
* @param appType
* @param barKeyList
* @return com.epmet.entity.CustomerFootBarEntity
* @author yinzuomei
* @date 2021/7/28 15:27
*/
List<CustomerFootBarEntity> selectListByKey(@Param("customerId")String customerId,
@Param("appType")String appType,
@Param("barKeyList")List<String> barKeyList);
int updateCustomerFootBarByKey(@Param("customerId")String customerId,
@Param("appType")String appType,
@Param("barKey")String barKey,
@Param("userId")String userId,
@Param("pageTitle")String pageTitle,
@Param("barName")String barName,
@Param("iconPath")String iconPath,
@Param("selectedIconPath")String selectedIconPath,
@Param("floatIconPath")String floatIconPath);
}

3
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/CustomerFootBarService.java

@ -24,6 +24,7 @@ import com.epmet.dto.CustomerFootBarDTO;
import com.epmet.dto.form.CheckFloatFootBarFormDTO;
import com.epmet.dto.form.CustomerFootBarFormDTO;
import com.epmet.dto.form.NotOnlineFootBarFormDTO;
import com.epmet.dto.form.SyncFootBar4CustomerFormDTO;
import com.epmet.dto.result.CheckFloatFootBarResultDTO;
import com.epmet.dto.result.CustomerFootBarResultDTO;
import com.epmet.entity.CustomerFootBarEntity;
@ -138,7 +139,7 @@ public interface CustomerFootBarService extends BaseService<CustomerFootBarEntit
* @author yinzuomei
* @date 2021/7/28 10:01
*/
void createFootBarCustomer(CustomerFootBarFormDTO form);
void createFootBarCustomer(SyncFootBar4CustomerFormDTO form);
/**
* 客户定制化-FootBar配置获取当前客户未上线的

52
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/CustomerFootBarServiceImpl.java

@ -20,6 +20,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -33,6 +34,7 @@ import com.epmet.dto.CustomerFootBarDTO;
import com.epmet.dto.form.CheckFloatFootBarFormDTO;
import com.epmet.dto.form.CustomerFootBarFormDTO;
import com.epmet.dto.form.NotOnlineFootBarFormDTO;
import com.epmet.dto.form.SyncFootBar4CustomerFormDTO;
import com.epmet.dto.result.CheckFloatFootBarResultDTO;
import com.epmet.dto.result.CustomerFootBarResultDTO;
import com.epmet.entity.CustomerFootBarEntity;
@ -344,23 +346,41 @@ public class CustomerFootBarServiceImpl extends BaseServiceImpl<CustomerFootBarD
* @author yinzuomei
* @date 2021/7/28 10:01
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void createFootBarCustomer(CustomerFootBarFormDTO form) {
validateBeforeCreate(form);
CustomerFootBarEntity entity = new CustomerFootBarEntity();
entity.setAppType(form.getAppType());
entity.setCustomerId(form.getCustomerId());
entity.setBarKey(form.getBarKey());
entity.setBarName(form.getBarName());
entity.setIconPath(form.getIconPath());
entity.setPageTitle(form.getPageTitle());
entity.setSelectedIconPath(form.getSelectedIconPath());
entity.setOrderIndex(baseDao.fetchNextOrder(form.getCustomerId(), form.getAppType()));
entity.setDisplay(true);
entity.setFloatIconPath(form.getFloatIconPath());
baseDao.insert(entity);
public void createFootBarCustomer(SyncFootBar4CustomerFormDTO form) {
if (!CollectionUtils.isEmpty(form.getSyncBarKeyList())) {
List<CustomerFootBarEntity> syncList = baseDao.selectListByKey(Constant.DEFAULT_CUSTOMER, form.getAppType(), form.getSyncBarKeyList());
syncList.forEach(syncEntity -> {
baseDao.updateCustomerFootBarByKey(form.getCustomerId(),
form.getAppType(),
syncEntity.getBarKey(),
form.getUserId(),
syncEntity.getPageTitle(),
syncEntity.getBarName(),
syncEntity.getIconPath(),
syncEntity.getSelectedIconPath(),
syncEntity.getFloatIconPath()
);
});
}
if (!CollectionUtils.isEmpty(form.getAddBarKeyList())) {
List<CustomerFootBarEntity> addList = baseDao.selectListByKey(Constant.DEFAULT_CUSTOMER, form.getAppType(), form.getAddBarKeyList());
addList.forEach(addEntity -> {
CustomerFootBarFormDTO footBarFormDTO = new CustomerFootBarFormDTO();
footBarFormDTO.setCustomerId(form.getCustomerId());
footBarFormDTO.setAppType(form.getAppType());
footBarFormDTO.setBarKey(addEntity.getBarKey());
footBarFormDTO.setBarName(addEntity.getBarName());
validateBeforeCreate(footBarFormDTO);
CustomerFootBarEntity entity = ConvertUtils.sourceToTarget(addEntity, CustomerFootBarEntity.class);
entity.setCustomerId(form.getCustomerId());
entity.setOrderIndex(baseDao.fetchNextOrder(form.getCustomerId(), form.getAppType()));
entity.setDisplay(true);
baseDao.insert(entity);
});
}
}
/**

42
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/CustomerFootBarDao.xml

@ -171,6 +171,7 @@
page_title,
icon_path,
selected_icon_path,
FLOAT_ICON_PATH as floatIconPath,
display,
order_index,
del_flag,
@ -200,6 +201,7 @@
page_title,
icon_path,
selected_icon_path,
FLOAT_ICON_PATH as floatIconPath,
display,
order_index,
del_flag,
@ -221,7 +223,8 @@
m.app_type as appType,
m.PAGE_TITLE as pageTitle,
m.ICON_PATH as iconPath,
m.SELECTED_ICON_PATH as selectedIconPath
m.SELECTED_ICON_PATH as selectedIconPath,
m.FLOAT_ICON_PATH as floatIconPath
from customer_foot_bar m
where m.DEL_FLAG='0'
and m.CUSTOMER_ID='default'
@ -235,4 +238,41 @@
and cfb.app_type=#{appType}
)order by m.ORDER_INDEX asc
</select>
<!-- 根据key查询 -->
<select id="selectListByKey" parameterType="map" resultType="com.epmet.entity.CustomerFootBarEntity">
select
m.BAR_NAME as barName,
m.BAR_KEY as barKey,
m.app_type as appType,
m.PAGE_TITLE as pageTitle,
m.ICON_PATH as iconPath,
m.SELECTED_ICON_PATH as selectedIconPath,
m.FLOAT_ICON_PATH as floatIconPath
from customer_foot_bar m
where m.DEL_FLAG='0'
and m.CUSTOMER_ID=#{customerId}
and m.app_type=#{appType}
and m.DISPLAY='1'
and m.BAR_KEY in
<foreach collection="barKeyList" item="barKey" open="( " separator=" , " index="index" close=")">
#{barKey}
</foreach>
</select>
<update id="updateCustomerFootBarByKey" parameterType="map">
UPDATE customer_foot_bar
SET BAR_NAME = #{barName},
PAGE_TITLE = #{pageTitle},
ICON_PATH = #{iconPath},
SELECTED_ICON_PATH = #{selectedIconPath},
FLOAT_ICON_PATH = #{floatIconPath},
UPDATED_BY = #{userId},
UPDATED_TIME = NOW()
WHERE
CUSTOMER_ID = #{customerId}
AND app_type = #{appType}
AND BAR_KEY = #{barKey}
AND DEL_FLAG = '0'
</update>
</mapper>
Loading…
Cancel
Save