diff --git a/dsBase/src/main/java/com/dsideal/base/Model/TSysLoginperson.java b/dsBase/src/main/java/com/dsideal/base/Model/TSysLoginperson.java new file mode 100644 index 00000000..b5f943f3 --- /dev/null +++ b/dsBase/src/main/java/com/dsideal/base/Model/TSysLoginperson.java @@ -0,0 +1,203 @@ +package com.dsideal.base.Model; + +import lombok.Setter; +import lombok.Getter; +// +public class TSysLoginperson { + // 人员ID + @Getter + @Setter + private String person_id; + // 人员姓名 + @Getter + @Setter + private String person_name; + // 身份ID + @Getter + @Setter + private int identity_id; + // 登录名 + @Getter + @Setter + private String login_name; + // 密码 + @Getter + @Setter + private String pwd; + // 原始密码 + @Getter + @Setter + private String original_pwd; + // md5后的密码,用于CAS验证 + @Getter + @Setter + private String pwdmd5; + // 性别 + @Getter + @Setter + private int xb; + // 民族 + @Getter + @Setter + private String mz; + // 政治面貌 + @Getter + @Setter + private String zzmm; + // 身份证号 + @Getter + @Setter + private String idcard_code; + // 出生日期 + @Getter + @Setter + private java.util.Date birthday; + // 创建时间 + @Getter + @Setter + private java.util.Date create_time; + // 在单位内部的排序号 + @Getter + @Setter + private int sort_id; + // 手机号 + @Getter + @Setter + private String telephone; + // 绑定微信的openid + @Getter + @Setter + private String wx_openid; + // 绑定QQ的openid + @Getter + @Setter + private String qq_openid; + // 电子邮箱 + @Getter + @Setter + private String email; + // 人员状态 + @Getter + @Setter + private String status_code; + // 是不是可用 + @Getter + @Setter + private int b_use; + // 身份主键序列 + @Getter + @Setter + private int identity_pk_num; + // 市ID + @Getter + @Setter + private String city_id; + // 县区ID + @Getter + @Setter + private String area_id; + // 主校ID + @Getter + @Setter + private String main_school_id; + // 单位ID + @Getter + @Setter + private String bureau_id; + // 所在部门 + @Getter + @Setter + private String org_id; + // 学生所在班级 + @Getter + @Setter + private String s_class_id; + // 学籍号 规定为16位 + @Getter + @Setter + private String s_xjh; + // 学籍辅号 规定为13位 + @Getter + @Setter + private String s_xjfh; + // 学生来源 1:正常入学 2:借读 9:其他 + @Getter + @Setter + private int s_source; + // 学生是哪个学段的 + @Getter + @Setter + private int s_stage_id; + // 进城务工随迁子女 + @Getter + @Setter + private int s_suiqian; + // 是否留守儿童 + @Getter + @Setter + private int s_liushou; + // 是否孤儿 + @Getter + @Setter + private int s_guer; + // 是否残疾 + @Getter + @Setter + private int s_canji; + // 如果是家长,那么他是哪个孩子的家长 + @Getter + @Setter + private String p_child_id; + // 职务与分管,json形式 + @Getter + @Setter + private String t_duty_charge; + // 最高学历 字典表t_dm_xl + @Getter + @Setter + private String t_xl_id; + // 职称 + @Getter + @Setter + private String t_zc_id; + // 学段 + @Getter + @Setter + private int t_stage_id; + // 主教学科 + @Getter + @Setter + private int t_subject_id; + // 从教年月日 + @Getter + @Setter + private java.util.Date t_teaching_date; + // 是否骨干教师 + @Getter + @Setter + private int t_gugan; + // + @Getter + @Setter + private java.util.Date update_ts; + // 整数主键 + @Getter + @Setter + private int id_int; + // 操作人员 + @Getter + @Setter + private String operator; + // 操作者IP + @Getter + @Setter + private long ip_address; + // 微信小程序的openid + @Getter + @Setter + private String mini_openid; + + public String toString(){ + return "{ person_id: " + person_id +", person_name: " + person_name +", identity_id: " + identity_id +", login_name: " + login_name +", pwd: " + pwd +", original_pwd: " + original_pwd +", pwdmd5: " + pwdmd5 +", xb: " + xb +", mz: " + mz +", zzmm: " + zzmm +", idcard_code: " + idcard_code +", birthday: " + birthday +", create_time: " + create_time +", sort_id: " + sort_id +", telephone: " + telephone +", wx_openid: " + wx_openid +", qq_openid: " + qq_openid +", email: " + email +", status_code: " + status_code +", b_use: " + b_use +", identity_pk_num: " + identity_pk_num +", city_id: " + city_id +", area_id: " + area_id +", main_school_id: " + main_school_id +", bureau_id: " + bureau_id +", org_id: " + org_id +", s_class_id: " + s_class_id +", s_xjh: " + s_xjh +", s_xjfh: " + s_xjfh +", s_source: " + s_source +", s_stage_id: " + s_stage_id +", s_suiqian: " + s_suiqian +", s_liushou: " + s_liushou +", s_guer: " + s_guer +", s_canji: " + s_canji +", p_child_id: " + p_child_id +", t_duty_charge: " + t_duty_charge +", t_xl_id: " + t_xl_id +", t_zc_id: " + t_zc_id +", t_stage_id: " + t_stage_id +", t_subject_id: " + t_subject_id +", t_teaching_date: " + t_teaching_date +", t_gugan: " + t_gugan +", update_ts: " + update_ts +", id_int: " + id_int +", operator: " + operator +", ip_address: " + ip_address +", mini_openid: " + mini_openid +"}"; + } +} diff --git a/dsBase/src/main/java/com/dsideal/base/Teacher/Controller/TeacherController.java b/dsBase/src/main/java/com/dsideal/base/Teacher/Controller/TeacherController.java index 118b1549..4e402e95 100644 --- a/dsBase/src/main/java/com/dsideal/base/Teacher/Controller/TeacherController.java +++ b/dsBase/src/main/java/com/dsideal/base/Teacher/Controller/TeacherController.java @@ -433,7 +433,7 @@ public class TeacherController extends Controller { //客户端ip_address String ip_address = IpUtil.getIpAddr(getRequest()); - if (tm.updateTeacher(person_id, person_name, xb, mz, id_card, birthday, xl_id, stage_id, subject_id, zc_id, t_teaching_date, sort_id, t_duty_charge, org_id, zzmm, operator, ip_address,telephone)) { + if (tm.updateTeacher(person_id, person_name, xb, mz, id_card, birthday, xl_id, stage_id, subject_id, zc_id, t_teaching_date, sort_id, t_duty_charge, org_id, zzmm, operator, ip_address, telephone)) { resultJson.put("success", true); renderJson(resultJson); } else { @@ -532,7 +532,6 @@ public class TeacherController extends Controller { String filename = "教工导入.xls"; String TemplatePath = PathKit.getRootClassPath() + "/WEB-INF/classes/com/dsideal/dsBase/ExcelImportTemplate/Teacher.xls"; renderFile(new File(TemplatePath), filename); - return; } @@ -550,7 +549,6 @@ public class TeacherController extends Controller { String TemplatePath = basePath + "excelTemp/"; String templateXls = TemplatePath + uuidString + ".xls"; renderFile(new File(templateXls), "教工导入.xls"); - return; } /** @@ -676,6 +674,21 @@ public class TeacherController extends Controller { map.put("message", "导入成功!"); map.put("count", jo.getInteger("count")); renderJson(map); - return; + } + + /** + * 功能:清除人员的wx_openid + * + * @param person_id + */ + @Before({POST.class}) + @IsLoginInterface({}) + @IsSysAdminInterface({"1", "4"}) + public void clearWxOpenId(String person_id) { + tm.clearWxOpenId(person_id); + Map map = new HashMap(); + map.put("success", true); + map.put("message", "保存成功!"); + renderJson(map); } } diff --git a/dsBase/src/main/java/com/dsideal/base/Teacher/Model/TeacherModel.java b/dsBase/src/main/java/com/dsideal/base/Teacher/Model/TeacherModel.java index 039ca099..8fe7b74f 100644 --- a/dsBase/src/main/java/com/dsideal/base/Teacher/Model/TeacherModel.java +++ b/dsBase/src/main/java/com/dsideal/base/Teacher/Model/TeacherModel.java @@ -23,7 +23,7 @@ public class TeacherModel { * * @return */ - public boolean addTeacherInfo(String personId, String pwd, String person_name, String org_id, String xb, String mz, String id_card, String birthday, String original_pwd, String city_id, String area_id, String main_school_id, String bureau_id, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String zzmm, String operator, String ip_address,String telephone) { + public boolean addTeacherInfo(String personId, String pwd, String person_name, String org_id, String xb, String mz, String id_card, String birthday, String original_pwd, String city_id, String area_id, String main_school_id, String bureau_id, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String zzmm, String operator, String ip_address, String telephone) { boolean flag = false; try { long pk = PkUtil.GetPersonNumPk(5, 1); @@ -61,7 +61,7 @@ public class TeacherModel { record.set("t_teaching_date", t_teaching_date); record.set("operator", operator); record.set("ip_address", IpUtil.ipToLong(ip_address)); - record.set("telephone",telephone); + record.set("telephone", telephone); Db.save("t_sys_loginperson", record); //继续保存人员职务与分管工作 JSONArray jsonArray = JSONArray.parseArray(t_duty_charge); @@ -88,11 +88,11 @@ public class TeacherModel { return flag; } - public boolean addTeacherInfo(String pwd, String person_name, String org_id, String xb, String mz, String id_card, String birthday, String original_pwd, String city_id, String area_id, String main_school_id, String bureau_id, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String zzmm, String operator, String ip_address,String telephone) { + public boolean addTeacherInfo(String pwd, String person_name, String org_id, String xb, String mz, String id_card, String birthday, String original_pwd, String city_id, String area_id, String main_school_id, String bureau_id, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String zzmm, String operator, String ip_address, String telephone) { String personId = UUID.randomUUID().toString().toUpperCase(); return addTeacherInfo(personId, pwd, person_name, org_id, xb, mz, id_card, birthday, original_pwd, city_id, area_id, main_school_id, bureau_id, xl_id, stage_id, subject_id, zc_id, t_teaching_date, - sort_id, t_duty_charge, zzmm, operator, ip_address,telephone); + sort_id, t_duty_charge, zzmm, operator, ip_address, telephone); } /** @@ -108,7 +108,7 @@ public class TeacherModel { * @param birthday * @return */ - public boolean updateTeacher(String person_id, String person_name, String xb, String mz, String id_card, String birthday, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String org_id, String zzmm, String operator, String ip_address,String telephone) { + public boolean updateTeacher(String person_id, String person_name, String xb, String mz, String id_card, String birthday, String xl_id, int stage_id, int subject_id, String zc_id, String t_teaching_date, int sort_id, String t_duty_charge, String org_id, String zzmm, String operator, String ip_address, String telephone) { boolean flag = false; try { @@ -147,7 +147,7 @@ public class TeacherModel { record.set("zzmm", zzmm); record.set("operator", operator); record.set("ip_address", IpUtil.ipToLong(ip_address)); - record.set("telephone",telephone); + record.set("telephone", telephone); record.remove("update_ts"); Db.update("t_sys_loginperson", "person_id", record); //继续保存人员职务与分管工作 @@ -315,6 +315,7 @@ public class TeacherModel { /** * 功能:根据手机号获取人员信息 + * * @param telephone * @return */ @@ -322,4 +323,14 @@ public class TeacherModel { String sql = "select * from t_sys_loginperson where telephone=?"; return Db.findFirst(sql, telephone); } + + /** + * 功能:清除微信openid + * + * @param person_id + */ + public void clearWxOpenId(String person_id) { + String sql = "update t_sys_loginperson set wx_openid=null where person_id=?"; + Db.update(sql, person_id); + } } \ No newline at end of file diff --git a/dsBase/src/main/java/com/dsideal/base/Tools/getJavaBean.java b/dsBase/src/main/java/com/dsideal/base/Tools/getJavaBean.java new file mode 100644 index 00000000..c2bf23ec --- /dev/null +++ b/dsBase/src/main/java/com/dsideal/base/Tools/getJavaBean.java @@ -0,0 +1,237 @@ +package com.dsideal.base.Tools; + +import cn.hutool.core.io.FileUtil; +import com.jfinal.kit.PropKit; +import com.jfinal.plugin.activerecord.ActiveRecordPlugin; +import com.jfinal.plugin.hikaricp.HikariCpPlugin; +import lombok.Getter; +import lombok.Setter; + +import javax.sql.DataSource; +import java.io.File; +import java.sql.*; +import java.util.*; + +public class getJavaBean { + // 白名单 + public static Set whiteSet = new HashSet<>(); + // JavaBean保存的位置 + public static String beanPath = "Model"; + // JavaBean包名 + public static String beanPackage = "com.dsideal.base." + beanPath; + + // mysql与java的数据类型映射 + public static Map dataTypeMap = new HashMap<>(); + + //初始化 + static { + whiteSet.add("t_sys_loginperson");//目前只处理一张表 + + // 获取当前类的Class对象 + Class clazz = getJavaBean.class; + // 获取当前类所在文件的绝对路径 + String path = clazz.getResource("").getPath(); + // 转换为File对象 + File classFile = new File(path); + // 获取当前类所在的目录路径 + String classDir = classFile.getParentFile().getAbsolutePath(); + classDir = classDir.replace("\\target\\classes\\", "\\src\\main\\java\\"); + beanPath = classDir + File.separator + beanPath; + if (!FileUtil.exist(beanPath)) { + FileUtil.mkdir(beanPath); + } + + //mysql与java的数据类型映射 + dataTypeMap.put("INT", "int"); + dataTypeMap.put("BIGINT", "long"); + dataTypeMap.put("DOUBLE", "double"); + dataTypeMap.put("FLOAT", "float"); + dataTypeMap.put("TINYINT", "int"); + dataTypeMap.put("DATE", "java.util.Date"); + dataTypeMap.put("TIMESTAMP", "java.util.Date"); + dataTypeMap.put("BIGINT UNSIGNED", "long"); + dataTypeMap.put("INT UNSIGNED", "long"); + dataTypeMap.put("MEDIUMINT", "int"); + dataTypeMap.put("MEDIUMINT UNSIGNED", "long"); + dataTypeMap.put("SMALLINT", "int"); + dataTypeMap.put("SMALLINT UNSIGNED", "long"); + dataTypeMap.put("TINYINT UNSIGNED", "long"); + dataTypeMap.put("LONGTEXT", "String"); + dataTypeMap.put("VARCHAR", "String"); + dataTypeMap.put("CHAR", "String"); + dataTypeMap.put("TEXT", "String"); + dataTypeMap.put("DATETIME", "java.util.Date"); + dataTypeMap.put("DECIMAL", "BigDecimal"); + dataTypeMap.put("BOOLEAN", "boolean"); + } + + /** + * 获取当前数据库下的表 + * + * @return List + * @throws Exception + */ + public static List getTableNames(Connection conn) throws Exception { + List tables = new ArrayList<>(); + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery("show tables"); + while (rs.next()) { + String tableName = rs.getString(1); + if (whiteSet.isEmpty() || whiteSet.contains(tableName)) { + tables.add(tableName); + } + } + rs.close(); + stmt.close(); + return tables; + } + + + /** + * 获得某表的注释信息+列信息 + * + * @param table + * @return + * @throws Exception + */ + public static void getStructure(Connection conn, String table) throws Exception { + StringBuilder sb = new StringBuilder(); + + //表注释 + String comment = ""; + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery("show create table " + table); + if (rs != null && rs.next()) { + String createDDL = rs.getString(2); + int index = createDDL.indexOf("COMMENT='"); + if (index >= 0) { + comment = createDDL.substring(index + 9); + comment = comment.substring(0, comment.length() - 1); + } + } + //类名 + table = capitalizeFirstLetter(table); + String className = toCamelCase(table); + + //包名 + sb.append("package " + beanPackage + ";\n"); + sb.append("\n"); + + sb.append("import lombok.Setter;\n"); + sb.append("import lombok.Getter;\n"); + + //表描述 + sb.append("// " + comment + "\n"); + sb.append("public class " + className + " {\n"); + + List fields = new ArrayList<>(); + //字段信息 + rs = stmt.executeQuery("show full columns from " + table); + while (rs.next()) { + String Type = rs.getString("Type"); + String Field = rs.getString("Field"); + fields.add(Field); + + if (Type.contains("(")) { + Type = Type.substring(0, Type.indexOf("(")); + } + Type = Type.toUpperCase(); + +// System.out.println(rs.getString("Key"));//是不是主键 PRI是主键 + sb.append(" // " + rs.getString("Comment") + "\n"); + sb.append(" @Getter\n"); + sb.append(" @Setter\n"); + sb.append(" private " + dataTypeMap.get(Type) + " " + Field + ";\n"); + } + sb.append("\n"); + sb.append(" public String toString(){\n"); + sb.append(" return \"{"); + + for (int i = 0; i < fields.size(); i++) { + String field = fields.get(i); + sb.append(" "+field + ": \" + " + field+" +\""); + if (i < fields.size() - 1) { + sb.append(","); + } + } + sb.append("}\";\n"); + sb.append(" }\n"); + sb.append("}\n"); + String fileName = beanPath + File.separator + className + ".java"; + System.out.println(fileName); + FileUtil.writeUtf8String(sb.toString(), fileName); + //关闭连接 + rs.close(); + stmt.close(); + } + + + public static void main(String[] args) throws Exception { + // 配置Druid数据源插件 + HikariCpPlugin hpPlugin = new HikariCpPlugin( + "jdbc:mysql://10.10.14.210:22066/ds_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false", + "root", + "DsideaL147258369", + "com.mysql.cj.jdbc.Driver"); + + // 配置ActiveRecord插件 + ActiveRecordPlugin arp = new ActiveRecordPlugin(hpPlugin); + hpPlugin.start(); + arp.start(); + DataSource dataSource = hpPlugin.getDataSource(); + // 数据库连接 + Connection conn = dataSource.getConnection(); + + //开始生成 + List tables = getTableNames(conn); + + //表描述 + for (String table : tables) { + getStructure(conn, table); + } + + //关闭数据库 + conn.close(); + arp.stop(); + hpPlugin.stop(); + + System.out.println("恭喜,生成完成"); + } + + + /** + * 将表名转换为驼峰命名法 + */ + private static String toCamelCase(String tableName) { + StringBuilder sb = new StringBuilder(); + boolean upperCase = false; + + for (char c : tableName.toCharArray()) { + if (c == '_') { + upperCase = true; + } else if (upperCase) { + sb.append(Character.toUpperCase(c)); + upperCase = false; + } else { + sb.append(c); + } + } + return sb.toString(); + } + + /** + * 功能:首字母转大写 + * + * @param input + * @return + */ + public static String capitalizeFirstLetter(String input) { + // 检查输入是否为空或者null + if (input == null || input.isEmpty()) { + return input; + } + + // 将第一个字符转换为大写,然后与其余部分拼接 + return input.substring(0, 1).toUpperCase() + input.substring(1); + } +} diff --git a/dsBase/src/main/java/com/dsideal/base/Util/RecordUtils.java b/dsBase/src/main/java/com/dsideal/base/Util/RecordUtils.java new file mode 100644 index 00000000..58fee92b --- /dev/null +++ b/dsBase/src/main/java/com/dsideal/base/Util/RecordUtils.java @@ -0,0 +1,66 @@ +package com.dsideal.base.Util; + +import java.lang.reflect.Field; + +import com.jfinal.plugin.activerecord.Record; + +/** + * @ClassName: RecordUtils + * @Description: Record相关工具类 + */ +public class RecordUtils { + /** + * @param obj + * @return + * @throws IllegalArgumentException + * @throws IllegalAccessException Record + * @Title: ModelToRecord + * @Description: javaBean对象转Record对象; + */ + public static Record javaBeanToRecord(Object obj) throws IllegalArgumentException, IllegalAccessException { + if (obj != null) { + Record record = new Record(); + Class clazz = obj.getClass(); + Field[] fields = clazz.getDeclaredFields(); + for (int i = 0; i < fields.length; i++) { + Field field = fields[i]; + if (!field.isAccessible()) { + field.setAccessible(true); + } + record.set(field.getName(), field.get(obj)); + } + return record; + + } + return null; + } + + /** + * @param record + * @param clazz + * @return + * @throws InstantiationException + * @throws IllegalAccessException + * @throws NoSuchFieldException + * @throws SecurityException Object + * @Title: RecrodToModel + * @Description: Record对象转javaBean对象 + */ + public static Object recrodToJavaBean(Record record, Class clazz) throws InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException { + if (record != null) { + Object obj = clazz.newInstance(); + String[] columns = record.getColumnNames(); + for (String col : columns) { + Field field = clazz.getDeclaredField(col); + if (field != null) { + if (!field.isAccessible()) { + field.setAccessible(true); + } + field.set(obj, record.getObject(col)); + } + } + return obj; + } + return null; + } +} \ No newline at end of file diff --git a/dsBase/src/main/java/com/dsideal/base/model/TestHuanghai.java b/dsBase/src/main/java/com/dsideal/base/model/TestHuanghai.java deleted file mode 100644 index 94ceb06c..00000000 --- a/dsBase/src/main/java/com/dsideal/base/model/TestHuanghai.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.dsideal.base.model; - -import com.dsideal.base.model.base.BaseTestHuanghai; - -/** - * Generated by JFinal. - */ -@SuppressWarnings("serial") -public class TestHuanghai extends BaseTestHuanghai { - -} - diff --git a/dsBase/src/main/java/com/dsideal/base/model/_MappingKit.java b/dsBase/src/main/java/com/dsideal/base/model/_MappingKit.java deleted file mode 100644 index 88c9991b..00000000 --- a/dsBase/src/main/java/com/dsideal/base/model/_MappingKit.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dsideal.base.model; - -import com.jfinal.plugin.activerecord.ActiveRecordPlugin; - -/** - * Generated by JFinal, do not modify this file. - *
- * Example:
- * public void configPlugin(Plugins me) {
- *     ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
- *     _MappingKit.mapping(arp);
- *     me.add(arp);
- * }
- * 
- */ -public class _MappingKit { - public static void mapping(ActiveRecordPlugin arp) { - arp.addMapping("t_test_huanghai", "user_id", TestHuanghai.class); - } -} - - diff --git a/dsBase/src/main/java/com/dsideal/base/model/base/BaseTestHuanghai.java b/dsBase/src/main/java/com/dsideal/base/model/base/BaseTestHuanghai.java deleted file mode 100644 index 11d9ec55..00000000 --- a/dsBase/src/main/java/com/dsideal/base/model/base/BaseTestHuanghai.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dsideal.base.model.base; - -import com.jfinal.plugin.activerecord.Model; -import com.jfinal.plugin.activerecord.IBean; - -/** - * Generated by JFinal, do not modify this file. - */ -@SuppressWarnings("serial") -public abstract class BaseTestHuanghai> extends Model implements IBean { - - public void setUserId(java.lang.Integer userId) { - set("user_id", userId); - } - - public java.lang.Integer getUserId() { - return getInt("user_id"); - } - - public void setUserName(java.lang.String userName) { - set("user_name", userName); - } - - public java.lang.String getUserName() { - return getStr("user_name"); - } - - public void setXbId(java.lang.Integer xbId) { - set("xb_id", xbId); - } - - public java.lang.Integer getXbId() { - return getInt("xb_id"); - } - -} -