--修改了启用和做法逻辑,将代码处理添加到了后台中
This commit is contained in:
@ -0,0 +1,43 @@
|
|||||||
|
#FROM --platform=linux/arm64 docker.ges.bjgastx.com/openjdk-arm64:8-jre
|
||||||
|
FROM jdk8u112:v1
|
||||||
|
|
||||||
|
|
||||||
|
RUN mkdir -p /root/logs/java/ \
|
||||||
|
&& mkdir -p /scm/logs/ \
|
||||||
|
&& mkdir -p /opt/app/ \
|
||||||
|
&& mkdir -p /uploadFile/ \
|
||||||
|
&& mkdir -p /opt/libs/ \
|
||||||
|
&& mkdir -p /var/log/app \
|
||||||
|
&& mkdir -p /opt/app/logs \
|
||||||
|
&& mkdir -p /opt/agent/config
|
||||||
|
|
||||||
|
ENV TZ "Asia/Shanghai"
|
||||||
|
|
||||||
|
ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar
|
||||||
|
ADD ./agent.config /opt/agent/config/agent.config
|
||||||
|
|
||||||
|
RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc
|
||||||
|
|
||||||
|
|
||||||
|
ARG JAR_FILE
|
||||||
|
ARG PRO_FILE
|
||||||
|
ARG SOURCE_NAME
|
||||||
|
|
||||||
|
ADD ./startApp.sh /opt/app/
|
||||||
|
RUN chmod u+x /opt/app/startApp.sh
|
||||||
|
ADD ./${SOURCE_NAME} /opt/app/app.jar
|
||||||
|
#RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; }
|
||||||
|
|
||||||
|
#应用名称
|
||||||
|
ENV APP_NAME=itc-pcitc-mdm
|
||||||
|
#skywalking-oap-server地址
|
||||||
|
ENV SKYWALKING_SERVER=10.10.2.102:11800
|
||||||
|
ENV ENV_APP_FILE_PATH=/opt/app/app.jar
|
||||||
|
ENV ENV_APP_PRO_FILE=local
|
||||||
|
ENV LIB_SERVER_ADDR=http://10.10.2.102:9500/
|
||||||
|
ENV LIB_SERVER_USER=pcitc
|
||||||
|
ENV LIB_SERVER_PWD=K9$pQ3!zX7@rT2&w
|
||||||
|
|
||||||
|
EXPOSE 8096 5005
|
||||||
|
|
||||||
|
ENTRYPOINT ["/opt/app/startApp.sh"]
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-pcitc-mdm"
|
||||||
|
IMAGE_NAME="10.10.2.102/itc-pcitc-mdm"
|
||||||
|
IMAGE_VERSION="2025-10-22-0851"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=8096 # 服务暴露端口
|
||||||
|
CONTAINER_PORT=8096 # 服务暴露端口
|
||||||
|
TZ="Asia/Shanghai" # 时区设置
|
||||||
|
# 环境变量配置
|
||||||
|
ENV_APP_PRO_FILE="local"
|
||||||
|
file="$CONTAINER_NAME-version.txt"
|
||||||
|
|
||||||
|
# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义)
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "文件 $file 不存在"
|
||||||
|
touch "$file" # 变量加引号,处理含空格的文件名
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 检查参数数量(建议移到脚本开头统一检查)
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$2"
|
||||||
|
echo "$IMAGE_FULL" >> "$file"
|
||||||
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
||||||
|
else
|
||||||
|
# 修正赋值语法:等号两侧无空格
|
||||||
|
last_version=$(tail -n 1 "$file")
|
||||||
|
IMAGE_FULL="$last_version"
|
||||||
|
# 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动服务容器"
|
||||||
|
echo " remove - 停止并删除容器及数据/日志目录"
|
||||||
|
echo " logs - 查看容器日志"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 部署服务
|
||||||
|
deploy_service() {
|
||||||
|
echo "部署镜像【$IMAGE_FULL】"
|
||||||
|
# 检查容器是否已存在,存在则停止并删除
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动服务容器
|
||||||
|
echo "启动服务容器..."
|
||||||
|
docker run -d --privileged --restart always \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
-p $PORT:$CONTAINER_PORT \
|
||||||
|
-e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \
|
||||||
|
$IMAGE_FULL
|
||||||
|
|
||||||
|
# 检查启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "服务启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE"
|
||||||
|
else
|
||||||
|
echo "服务启动失败,日志如下:"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除服务
|
||||||
|
remove_service() {
|
||||||
|
# 检查容器是否存在
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME >/dev/null
|
||||||
|
|
||||||
|
echo "删除容器: $CONTAINER_NAME"
|
||||||
|
docker rm $CONTAINER_NAME >/dev/null
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
show_logs() {
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_service
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_service
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的操作类型: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.xjrsoft;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ClassUtil;
|
||||||
|
|
||||||
|
public class ClassTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<Object> list = java.util.Collections.synchronizedList(new java.util.ArrayList<>());
|
||||||
|
try {
|
||||||
|
boolean isNorm = ClassUtil.isNormalClass(list.getClass());
|
||||||
|
System.out.println("Class isNormalClass: " + isNorm);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -136,6 +136,15 @@ public class LogTableInfo {
|
|||||||
return YesOrNoEnum.NO.getTextCode().equals(val);
|
return YesOrNoEnum.NO.getTextCode().equals(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEnable(Object entity) {
|
||||||
|
if(entity==null) return;
|
||||||
|
setFieldValue(entity,GlobalConstant.VALID_PROPERTY,YesOrNoEnum.YES.getTextCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisable(Object entity) {
|
||||||
|
if(entity==null) return;
|
||||||
|
setFieldValue(entity,GlobalConstant.VALID_PROPERTY,YesOrNoEnum.NO.getTextCode());
|
||||||
|
}
|
||||||
|
|
||||||
public Object getFieldValue(Object entity,String field) {
|
public Object getFieldValue(Object entity,String field) {
|
||||||
if(entity==null) return null;
|
if(entity==null) return null;
|
||||||
|
|||||||
@ -399,6 +399,7 @@ public class DataLogTools {
|
|||||||
T old = findById(klazz, id);
|
T old = findById(klazz, id);
|
||||||
if(old==null || tabInfo.isEnable(old)) return null;
|
if(old==null || tabInfo.isEnable(old)) return null;
|
||||||
DataOperationContent<T> content = null;
|
DataOperationContent<T> content = null;
|
||||||
|
//具体的数据修改是通过函数去处理的后台不用单独处理
|
||||||
if(listener!=null) {
|
if(listener!=null) {
|
||||||
content = DataOperationContent.of(tabInfo,OperationType.ENABLE,old,old);
|
content = DataOperationContent.of(tabInfo,OperationType.ENABLE,old,old);
|
||||||
listener.before(content);
|
listener.before(content);
|
||||||
@ -410,6 +411,8 @@ public class DataLogTools {
|
|||||||
content.setObj(entity);
|
content.setObj(entity);
|
||||||
DataChangeLog datalog = createLog(klazz,OperationType.ENABLE);
|
DataChangeLog datalog = createLog(klazz,OperationType.ENABLE);
|
||||||
datalog.setEntityId(id);
|
datalog.setEntityId(id);
|
||||||
|
tabInfo.setEnable(entity);
|
||||||
|
mapper.updateById(tabInfo.toEntity(entity));
|
||||||
buildFields(datalog,tabInfo,entity,old);
|
buildFields(datalog,tabInfo,entity,old);
|
||||||
logs.add(datalog);
|
logs.add(datalog);
|
||||||
if(listener!=null) {
|
if(listener!=null) {
|
||||||
@ -448,6 +451,7 @@ public class DataLogTools {
|
|||||||
T old = findById(klazz, id);
|
T old = findById(klazz, id);
|
||||||
if(old==null || tabInfo.isDisable(old)) return null;
|
if(old==null || tabInfo.isDisable(old)) return null;
|
||||||
DataOperationContent<T> content = null;
|
DataOperationContent<T> content = null;
|
||||||
|
//具体的数据修改是通过函数去处理的后台不用单独处理
|
||||||
if(listener!=null) {
|
if(listener!=null) {
|
||||||
content = DataOperationContent.of(tabInfo,OperationType.DISABLE,old,old);
|
content = DataOperationContent.of(tabInfo,OperationType.DISABLE,old,old);
|
||||||
listener.before(content);
|
listener.before(content);
|
||||||
@ -460,6 +464,8 @@ public class DataLogTools {
|
|||||||
content.setObj(entity);
|
content.setObj(entity);
|
||||||
DataChangeLog datalog = createLog(klazz,OperationType.DISABLE);
|
DataChangeLog datalog = createLog(klazz,OperationType.DISABLE);
|
||||||
datalog.setEntityId(id);
|
datalog.setEntityId(id);
|
||||||
|
tabInfo.setDisable(entity);
|
||||||
|
mapper.updateById(tabInfo.toEntity(entity));
|
||||||
buildFields(datalog,tabInfo,entity,old);
|
buildFields(datalog,tabInfo,entity,old);
|
||||||
logs.add(datalog);
|
logs.add(datalog);
|
||||||
if(listener!=null) {
|
if(listener!=null) {
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import com.pictc.annotations.datalog.LogJoinColumn;
|
|||||||
import com.pictc.annotations.datalog.JoinCaseType;
|
import com.pictc.annotations.datalog.JoinCaseType;
|
||||||
import com.pictc.annotations.datalog.JoinType;
|
import com.pictc.annotations.datalog.JoinType;
|
||||||
import com.pictc.annotations.datalog.ValueDirectionType;
|
import com.pictc.annotations.datalog.ValueDirectionType;
|
||||||
|
import com.xjrsoft.common.model.base.BaseModel;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ import com.pictc.annotations.datalog.ValueDirectionType;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@LogTable(source="lng_b_fee",name="费用名称")
|
@LogTable(source="lng_b_fee",name="费用名称")
|
||||||
public class UpdateLngBFeeDto implements Serializable {
|
public class UpdateLngBFeeDto extends BaseModel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|||||||
@ -1,17 +1,15 @@
|
|||||||
package com.xjrsoft.module.mdm.entity;
|
package com.xjrsoft.module.mdm.entity;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.xjrsoft.common.model.base.BaseModel;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -20,10 +18,13 @@ import lombok.Data;
|
|||||||
* @Date: 2025-10-22
|
* @Date: 2025-10-22
|
||||||
* @Version 1.0
|
* @Version 1.0
|
||||||
*/
|
*/
|
||||||
@Data
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
@Accessors(chain = true)
|
||||||
@TableName("lng_b_bank")
|
@TableName("lng_b_bank")
|
||||||
@ApiModel(value = "银行对象", description = "银行")
|
@ApiModel(value = "银行对象", description = "银行")
|
||||||
public class LngBBank implements Serializable {
|
public class LngBBank extends BaseModel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -106,61 +107,7 @@ public class LngBBank implements Serializable {
|
|||||||
@ApiModelProperty("备注")
|
@ApiModelProperty("备注")
|
||||||
private String note;
|
private String note;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建人id
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("创建人id")
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Long createUserId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("创建时间")
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private LocalDateTime createDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改人id
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("修改人id")
|
|
||||||
@TableField(fill = FieldFill.UPDATE)
|
|
||||||
private Long modifyUserId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改时间
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("修改时间")
|
|
||||||
@TableField(fill = FieldFill.UPDATE)
|
|
||||||
private LocalDateTime modifyDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 逻辑删除
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("逻辑删除")
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
@TableLogic
|
|
||||||
private Integer deleteMark;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 租户id
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("租户id")
|
|
||||||
private Long tenantId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门id
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("部门id")
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Long deptId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据权限id
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("数据权限id")
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Long ruleUserId;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user