Parcourir la source

1、修改业务id字段名称

rayson il y a 1 an
Parent
commit
f7c1bfd4b1

+ 223 - 0
citu-module-member/citu-module-member-biz/src/main/java/com/citu/module/member/dal/dataobject/BeanToGenerateTable.java

@@ -0,0 +1,223 @@
+package com.citu.module.member.dal.dataobject;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.List;
+
+/**
+ * @author rayson
+ * @description generateTable
+ * @create 2024/5/11 下午3:10
+ **/
+public class BeanToGenerateTable {
+
+
+    public static void main(String[] args) {
+
+        String sql = generateTableMysql("com.citu.module.member.dal.dataobject.address.MemberAddressDO", true);
+        System.out.println(sql);
+
+        String sql2 = generateTableMysql("com.citu.module.member.dal.dataobject.config.MemberConfigDO", true);
+        System.out.println(sql2);
+
+        String sql3 = generateTableMysql("com.citu.module.member.dal.dataobject.group.MemberGroupDO", true);
+        System.out.println(sql3);
+
+        String sql4 = generateTableMysql("com.citu.module.member.dal.dataobject.level.MemberExperienceRecordDO", true);
+        System.out.println(sql4);
+
+        String sql5 = generateTableMysql("com.citu.module.member.dal.dataobject.level.MemberLevelDO", true);
+        System.out.println(sql5);
+
+        String sql6 = generateTableMysql("com.citu.module.member.dal.dataobject.level.MemberLevelRecordDO", true);
+        System.out.println(sql6);
+
+        String sql7 = generateTableMysql("com.citu.module.member.dal.dataobject.point.MemberPointRecordDO", true);
+        System.out.println(sql7);
+
+        String sql8 = generateTableMysql("com.citu.module.member.dal.dataobject.signin.MemberSignInConfigDO", true);
+        System.out.println(sql8);
+
+        String sql9 = generateTableMysql("com.citu.module.member.dal.dataobject.signin.MemberSignInRecordDO", true);
+        System.out.println(sql9);
+
+        String sql10 = generateTableMysql("com.citu.module.member.dal.dataobject.tag.MemberTagDO", true);
+        System.out.println(sql10);
+
+        String sql11 = generateTableMysql("com.citu.module.member.dal.dataobject.user.MemberUserDO", true);
+        System.out.println(sql11);
+
+    }
+
+    /***
+     * 根据实体类自动生成Mysql建表sql
+     * @param beanName  实体类路径
+     * @param isConvert  是否需要转换驼峰格式
+     * @return
+     */
+    public static String generateTableMysql(String beanName, boolean isConvert) {
+        StringBuilder sqlSb = new StringBuilder();
+
+        if (null != beanName && !"".equals(beanName)) {
+            Object obj = null;
+            try {
+                obj = Class.forName(beanName).newInstance();
+            } catch (InstantiationException e) {
+                e.printStackTrace();
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            } catch (ClassNotFoundException e) {
+                e.printStackTrace();
+            }
+            // 拿到该类
+            Class<?> clz = obj.getClass();
+            // 获取实体类的所有属性,返回Field数组
+            Field[] fields = clz.getDeclaredFields();
+            if (fields != null) {
+
+                //获取实体类的Table注解表名(导入persistence包)
+                TableName tableClass = clz.getAnnotation(TableName.class);
+                String tableName = "";
+                if (tableClass != null) {
+                    tableName = tableClass.value();
+                }
+                sqlSb.append("drop table if exists " + tableName + "; \n");
+
+                sqlSb.append("create table " + tableName + "( \n");
+
+                String idKey = "";
+
+                for (Field field : fields) {
+                    if (!field.isAccessible()) {
+                        field.setAccessible(true);
+                    }
+                    String type = field.getGenericType().toString();
+                    if (type.indexOf(".") == -1 || type.indexOf("java.") != -1) {//过滤实体对象
+                        //截取最后一个.后面的字符
+                        type = type.substring(type.lastIndexOf(".") + 1);
+                        if (!field.getType().equals(List.class)) {// 不匹配list类型
+                            //字段名称
+                            String name = field.getName();
+
+                            Method doSomeMethod = null;
+                            try {
+                                //获取get方法
+                                doSomeMethod = clz.getDeclaredMethod("get" + name.substring(0, 1).toUpperCase() + name.substring(1));
+                            } catch (NoSuchMethodException e) {
+                                e.printStackTrace();
+                            }
+                            boolean isExist = true;
+                            //属于表字段
+                            if (isExist) {
+                                StringBuilder convertName = new StringBuilder();
+                                convertName.append(name);
+                                //如果需要转换驼峰格式
+                                if (isConvert) {
+                                    convertName = new StringBuilder();
+                                    for (int i = 0; i < name.length(); i++) {
+                                        //如果是大写前面先加一个_
+                                        if (isUpperCase(name.charAt(i))) {
+                                            convertName.append("_");
+                                        }
+                                        convertName.append(name.charAt(i));
+                                    }
+                                }
+                                name = convertName.toString();
+                                sqlSb.append("    `" + name.toLowerCase() + "` ");
+                                //java 数据类型转换成 Oracle 字段数据类型
+                                sqlSb.append(" " + societyMysql(type));
+                                //判断该字段是否是Id主键(导入persistence包)
+                                if (field.isAnnotationPresent(TableId.class)) {
+                                    TableId id = field.getAnnotation(TableId.class);
+                                    idKey = name.toLowerCase();//id主键字段
+                                    sqlSb.append("  NOT NULL  ");
+                                }
+                                sqlSb.append(" comment ");
+                                //字段属性说明(没有ApiModelProperty包的把这段代码注释掉)
+//                                if(field.isAnnotationPresent(ApiModelProperty.class)){
+//                                    ApiModelProperty explain = field.getAnnotation(ApiModelProperty.class);
+//                                    System.out.println("字段说明:"+explain.value());
+//                                    sqlSb.append(" '"+explain.value()+"',\n" );
+//                                }else{
+                                sqlSb.append(" '',\n");
+//                                }
+
+                                /**
+                                 * 字段属性说明
+                                 * 没有ApiModelProperty包的把上面那段代码注释掉,用这个
+                                 */
+                                /*
+                                sqlSb.append(" '',\n" );
+                                */
+
+                            }
+
+                        }
+                    }
+
+                }
+                sqlSb.append("    `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',\n" +
+                        "    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" +
+                        "    `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',\n" +
+                        "    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',\n" +
+                        "    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',\n" +
+                        "    `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',");
+                if (null != idKey && !"".equals(idKey)) {
+                    sqlSb.append(" primary key (" + idKey + ") \n");
+                } else {
+                    String lastStr = sqlSb.substring(0, sqlSb.length() - 1);
+                    //如果最后一个字符是逗号结尾
+                    if (lastStr.equals(",")) {
+                        //删除最后一个字符
+                        sqlSb = sqlSb.deleteCharAt(sqlSb.length() - 1);
+                    }
+                }
+                sqlSb.append(" ); \n");
+
+            }
+        }
+
+        return sqlSb.toString();
+    }
+
+    //字母是否是大写
+    public static boolean isUpperCase(char c) {
+        return c >= 65 && c <= 90;
+    }
+
+    public static String societyMysql(String javaType) {
+        String oracleType = "";
+        if (javaType.equals("String")) {
+            oracleType = "varchar(255)";
+        }
+        //不区分大小写
+        else if (javaType.equalsIgnoreCase("BigDecimal")) {
+            oracleType = "decimal(6)";
+        } else if (javaType.equals("Date")) {
+            oracleType = "date";
+        } else if (javaType.equals("LocalDateTime")) {
+            oracleType = "datetime";
+        } else if (javaType.equals("Boolean") || javaType.equals("boolean")) {
+            oracleType = "bit(1)";
+        } else if (javaType.equalsIgnoreCase("Timestamp")) {
+            oracleType = "datetime";
+        } else if (javaType.equals("byte[]")) {
+            oracleType = "blob";
+        } else if (javaType.equals("int")) {
+            oracleType = "tinyint";
+        } else if (javaType.equals("Integer")) {
+            oracleType = "tinyint";
+        } else if (javaType.equals("Long") || javaType.equals("long")) {
+            oracleType = "bigint";
+        } else if (javaType.equalsIgnoreCase("double")) {
+            oracleType = "double";
+        } else if (javaType.equalsIgnoreCase("float")) {
+            oracleType = "float";
+        }
+        return oracleType;
+    }
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsPageReqVO.java

@@ -21,7 +21,7 @@ public class MdeVisitsPageReqVO extends PageParam {
     private Integer type;
 
     @Schema(description = "业务id")
-    private Long businessId;
+    private Long bizId;
 
     @Schema(description = "用户id")
     private Long userId;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsRespVO.java

@@ -29,7 +29,7 @@ public class MdeVisitsRespVO {
 
     @Schema(description = "业务id")
     @ExcelProperty("业务id")
-    private Long businessId;
+    private Long bizId;
 
     @Schema(description = "用户id")
     @ExcelProperty("用户id")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsSaveReqVO.java

@@ -25,7 +25,7 @@ public class MdeVisitsSaveReqVO {
     private Integer type;
 
     @Schema(description = "业务id")
-    private Long businessId;
+    private Long bizId;
 
     @Schema(description = "用户id")
     private Long userId;

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/visits/MdeVisitsDO.java

@@ -37,7 +37,7 @@ public class MdeVisitsDO extends BaseDO {
     /**
      * 业务id
      */
-    private Long businessId;
+    private Long bizId;
 
     /**
      * 用户id

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/message/MdeVisitsSendMessage.java

@@ -26,7 +26,7 @@ public class MdeVisitsSendMessage {
 
     @NotNull(message = "业务id不能为空")
     @Schema(description = "业务id")
-    private Long businessId;
+    private Long bizId;
 
     @NotNull(message = "访问日期不能为空")
     @Schema(description = "访问日期")

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/mq/producer/MdeVisitsProducer.java

@@ -23,16 +23,16 @@ public class MdeVisitsProducer {
 
     /**
      * @param type       业务类型
-     * @param businessId 业务id
+     * @param bizId 业务id
      * @return void
      * @description 发送记录访问消息
      * @author rayson
      * @date 2024/5/14 下午3:31
      **/
-    public void sendVisitsSendMessage(Integer type, Long businessId) {
+    public void sendVisitsSendMessage(Integer type, Long bizId) {
         applicationContext.publishEvent(MdeVisitsSendMessage.builder()
                 .type(type)
-                .businessId(businessId)
+                .bizId(bizId)
                 .date(LocalDateTime.now())
                 .build());
     }