From 6a4b079181d22a54a11dfdafd5400b171a1f3fc4 Mon Sep 17 00:00:00 2001
From: lisy <java@lishouyideAir.lan>
Date: 星期三, 14 六月 2023 12:11:10 +0800
Subject: [PATCH] 开始上课:用户的学员信息主页查询接口(实体类,表的工具类)
---
cloud-server-account/src/main/java/com/dsh/account/util/CodeGeneration.java | 88 +
cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageDiscountMapper.java | 16
cloud-server-other/src/main/java/com/dsh/other/util/DateUtil.java | 33
cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java | 39
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/ExerciseVideo.java | 17
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/CourseVenue.java | 37
cloud-server-course/src/main/java/com/dsh/app/service/TCourseService.java | 16
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml | 29
cloud-server-account/src/main/java/com/dsh/app/mapper/TAppUserMapper.java | 16
cloud-server-course/src/main/resources/mapper/TCoursePackageTypeMapper.xml | 13
cloud-server-other/pom.xml | 38
cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackagePaymentMapper.java | 16
cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageService.java | 16
cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageType.java | 58
cloud-server-account/src/main/java/com/dsh/app/mapper/TStudentMapper.java | 16
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuDetailsReq.java | 36
cloud-server-other/src/main/java/com/dsh/other/util/CodeGeneration.java | 88 +
cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml | 38
cloud-server-account/src/main/java/com/dsh/account/util/ToolUtil.java | 544 ++++++++
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuPhysicalVo.java | 16
cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageDiscountService.java | 16
cloud-server-account/src/main/resources/mapper/TStudentMapper.xml | 24
cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java | 34
cloud-server-account/src/main/java/com/dsh/app/service/impl/TStudentServiceImpl.java | 20
cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageDiscountServiceImpl.java | 20
cloud-server-account/src/main/java/com/dsh/app/controller/ClassDetailsController.java | 135 +
cloud-server-course/src/main/java/com/dsh/app/service/impl/TCourseServiceImpl.java | 20
cloud-server-other/src/main/resources/mapper/TImgConfigMapper.xml | 12
cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageDiscount.java | 74 +
cloud-server-course/src/main/java/com/dsh/course/util/CodeGeneration.java | 88 +
cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageTypeServiceImpl.java | 20
cloud-server-account/src/main/java/com/dsh/app/feignclient/other/model/TImgConfig.java | 47
cloud-server-course/src/main/java/com/dsh/app/mapper/TCourseMapper.java | 16
cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackage.java | 158 ++
cloud-server-other/src/main/java/com/dsh/app/feignclient/ImgConfigClient.java | 14
cloud-server-account/src/main/java/com/dsh/app/feignclient/other/ImgConfigClient.java | 14
cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackagePaymentServiceImpl.java | 20
cloud-server-course/pom.xml | 39
cloud-server-account/src/main/java/com/dsh/app/entity/TAppUser.java | 142 ++
cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml | 17
cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageTypeService.java | 16
cloud-server-account/src/main/java/com/dsh/app/entity/TStudent.java | 98 +
cloud-server-account/src/main/java/com/dsh/app/service/impl/TAppUserServiceImpl.java | 56
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuListVo.java | 30
cloud-server-course/src/main/resources/mapper/TCourseMapper.xml | 18
cloud-server-account/src/main/java/com/dsh/app/service/TStudentService.java | 16
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/RegisteredCourse.java | 17
cloud-server-course/src/main/java/com/dsh/course/util/ToolUtil.java | 544 ++++++++
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/WeekedCourse.java | 23
cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/ClassInfoVo.java | 60
cloud-server-other/src/main/java/com/dsh/app/service/TImgConfigService.java | 16
cloud-server-other/src/main/java/com/dsh/app/entity/TImgConfig.java | 53
cloud-server-other/src/main/java/com/dsh/other/util/ToolUtil.java | 542 +++++++
cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageTypeMapper.java | 16
cloud-server-other/src/main/java/com/dsh/app/service/impl/TImgConfigServiceImpl.java | 20
cloud-server-account/pom.xml | 37
cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml | 34
cloud-server-other/src/main/java/com/dsh/app/controller/ImgConfigController.java | 45
cloud-server-other/src/main/java/com/dsh/app/mapper/TImgConfigMapper.java | 16
cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageMapper.java | 16
cloud-server-account/src/main/java/com/dsh/app/service/TAppUserService.java | 18
cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackagePaymentService.java | 16
cloud-server-course/src/main/java/com/dsh/app/entity/TCourse.java | 78 +
cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackagePayment.java | 123 +
cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageServiceImpl.java | 20
65 files changed, 4,028 insertions(+), 0 deletions(-)
diff --git a/cloud-server-account/pom.xml b/cloud-server-account/pom.xml
index bc84078..48b7de2 100644
--- a/cloud-server-account/pom.xml
+++ b/cloud-server-account/pom.xml
@@ -75,6 +75,43 @@
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
+
+ <!-- mybatis generertor-->
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatisplus-spring-boot-starter</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generate</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>1.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.30</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-jpa</artifactId>
+ <version>1.11.4.RELEASE</version>
+ </dependency>
+
</dependencies>
<build>
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/CodeGeneration.java b/cloud-server-account/src/main/java/com/dsh/account/util/CodeGeneration.java
new file mode 100644
index 0000000..9ab5dc2
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/CodeGeneration.java
@@ -0,0 +1,88 @@
+package com.dsh.account.util;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.DbType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+public class CodeGeneration {
+
+ public static void gen(String tableName){
+
+ //C:\Users\linla\Desktop\project02\guns-admin
+ //项目目录
+ ///Users/java/IdeaProjects/PlayPai_demo/cloud-server-account/src/main/java/com/dsh/app
+ String projectPath = "/Users/java/IdeaProjects/PlayPai_demo/cloud-server-account/src/main/java/"; //System.getProperty("user.dir");
+ //String projectPath =System.getProperty("user.dir");
+ AutoGenerator mpg = new AutoGenerator();
+ //全局配置
+ GlobalConfig gc = new GlobalConfig();
+ gc.setOutputDir(projectPath );
+ gc.setFileOverride(true);
+ gc.setActiveRecord(true);//不需要ActiveRecord特性的请改为false
+ gc.setEnableCache(false);//XML二级缓存
+ gc.setBaseResultMap(true);//XML ResultMap
+ gc.setBaseColumnList(false);//XML columList
+ gc.setIdType(IdType.UUID);
+ gc.setAuthor("administrator");//作者
+ gc.setOpen(false);//生成完成不打开文件夹
+
+ //自定义文件命名,注意%s 会自动填充表实体属性
+ gc.setServiceName("%sService");
+ gc.setServiceImplName("%sServiceImpl");
+ gc.setMapperName("%sMapper");
+ gc.setXmlName("%sMapper");
+ gc.setControllerName("%sController");
+ mpg.setGlobalConfig(gc);
+
+ //数据源配置
+ DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setDbType(DbType.MYSQL);
+// dsc.setUrl("jdbc:mysql://192.168.110.80:3306/playpai_account?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setUrl("jdbc:mysql://127.0.0.1:3306/playpai_account?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+ dsc.setUsername("root");
+ dsc.setPassword("earl9096");
+ mpg.setDataSource(dsc);
+
+ //数据库表配置
+ StrategyConfig strategy = new StrategyConfig();
+ strategy.setTablePrefix(new String[]{});//此处可以修改您的表前缀
+ strategy.setNaming(NamingStrategy.underline_to_camel);//表名生成策略
+ strategy.setInclude(new String[]{tableName});//需要生成的表
+ strategy.setRestControllerStyle(true);
+ strategy.setEntityLombokModel(true);
+ strategy.setSuperServiceClass(null);
+ strategy.setSuperServiceImplClass(null);
+ strategy.setSuperMapperClass(null);
+ mpg.setStrategy(strategy);
+
+ //模板配置
+ TemplateConfig template=new TemplateConfig();
+ //不生成controller
+ template.setController(null);
+ //不生成xml文件
+ //template.setXml(null);
+ mpg.setTemplate(template);
+ //包配置
+ PackageConfig pc = new PackageConfig();
+ pc.setParent("com.dsh.app");
+ pc.setEntity("entity");
+ pc.setService("service");
+ pc.setServiceImpl("service.impl");
+ pc.setMapper("mapper");
+
+ pc.setXml("mapper.xml");
+
+// pc.setController("controller.member");
+ mpg.setPackageInfo(pc);
+
+ //执行生成
+ mpg.execute();
+ }
+
+ public static void main(String[] args) {
+ gen("t_app_user");
+ }
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
index 605ec18..a546553 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
@@ -328,5 +328,44 @@
Date dt1 = rightNow.getTime();
return dt1.getTime();
}
+//
+// public static void main(String[] args) throws ParseException {
+// String big = "1997-08-16";
+// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+// int age = DateUtil.age(simpleDateFormat.parse(big));
+// System.out.println(age);
+// }
+
+ /**
+ * 计算年龄
+ * @param birthDate
+ * @return
+ */
+ public static int age(Date birthDate) {
+ // 当前日历
+ Calendar nowCalendar = Calendar.getInstance();
+ // 生日大于当前日期
+ if (nowCalendar.before(birthDate)) {
+ throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
+ }
+ // 当前年月日
+ int yearNow = nowCalendar.get(Calendar.YEAR);
+ int monthNow = nowCalendar.get(Calendar.MONTH);
+ int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
+ // 出生日期年月日
+ Calendar birthCalendar = Calendar.getInstance();
+ birthCalendar.setTime(birthDate);
+ int yearBirth = birthCalendar.get(Calendar.YEAR);
+ int monthBirth = birthCalendar.get(Calendar.MONTH);
+ int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
+ // 粗计算年龄
+ int age = yearNow - yearBirth;
+ // 当前月份小于出生月份年龄减一
+ if (monthNow < monthBirth) { age--; }
+ // 当前月份等于出生月份,日小于生日年龄减一
+ else if (monthNow == monthBirth && dayNow < dayBirth) { age--; }
+ // 返回年龄值
+ return age;
+ }
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/ToolUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/ToolUtil.java
new file mode 100644
index 0000000..d88461e
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/ToolUtil.java
@@ -0,0 +1,544 @@
+/**
+ * Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.dsh.account.util;
+
+
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Array;
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.util.*;
+import java.util.Map.Entry;
+
+/**
+ * 高频方法集合类
+ */
+public class ToolUtil {
+
+ /**
+ * 获取随机位数的字符串
+ *
+ * @author fengshuonan
+ * @Date 2017/8/24 14:09
+ */
+ public static String getRandomString(int length) {
+ String base = "abcdefghijklmnopqrstuvwxyz0123456789";
+ Random random = new Random();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 判断一个对象是否是时间类型
+ *
+ * @author stylefeng
+ * @Date 2017/4/18 12:55
+ */
+ public static String dateType(Object o) {
+ if (o instanceof Date) {
+ return DateUtil.getDay((Date) o);
+ } else {
+ return o.toString();
+ }
+ }
+
+ /**
+ * 获取异常的具体信息
+ *
+ * @author fengshuonan
+ * @Date 2017/3/30 9:21
+ * @version 2.0
+ */
+ public static String getExceptionMsg(Exception e) {
+ StringWriter sw = new StringWriter();
+ try {
+ e.printStackTrace(new PrintWriter(sw));
+ } finally {
+ try {
+ sw.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ return sw.getBuffer().toString().replaceAll("\\$", "T");
+ }
+
+ /**
+ * 比较两个对象是否相等。<br>
+ * 相同的条件有两个,满足其一即可:<br>
+ * 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
+ *
+ * @param obj1 对象1
+ * @param obj2 对象2
+ * @return 是否相等
+ */
+ public static boolean equals(Object obj1, Object obj2) {
+ return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
+ }
+
+ /**
+ * 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
+ *
+ * @param obj 被计算长度的对象
+ * @return 长度
+ */
+ public static int length(Object obj) {
+ if (obj == null) {
+ return 0;
+ }
+ if (obj instanceof CharSequence) {
+ return ((CharSequence) obj).length();
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).size();
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).size();
+ }
+
+ int count;
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ count = 0;
+ while (iter.hasNext()) {
+ count++;
+ iter.next();
+ }
+ return count;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ count = 0;
+ while (enumeration.hasMoreElements()) {
+ count++;
+ enumeration.nextElement();
+ }
+ return count;
+ }
+ if (obj.getClass().isArray() == true) {
+ return Array.getLength(obj);
+ }
+ return -1;
+ }
+
+ /**
+ * 对象中是否包含元素
+ *
+ * @param obj 对象
+ * @param element 元素
+ * @return 是否包含
+ */
+ public static boolean contains(Object obj, Object element) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj instanceof String) {
+ if (element == null) {
+ return false;
+ }
+ return ((String) obj).contains(element.toString());
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).contains(element);
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).values().contains(element);
+ }
+
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ while (enumeration.hasMoreElements()) {
+ Object o = enumeration.nextElement();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj.getClass().isArray() == true) {
+ int len = Array.getLength(obj);
+ for (int i = 0; i < len; i++) {
+ Object o = Array.get(obj, i);
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象是否不为空(新增)
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ public static boolean isNotEmpty(Object o) {
+ return !isEmpty(o);
+ }
+
+ /**
+ * 对象是否为空
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static boolean isEmpty(Object o) {
+ if (o == null) {
+ return true;
+ }
+ if (o instanceof String) {
+ if (o.toString().trim().equals("")) {
+ return true;
+ }
+ } else if (o instanceof List) {
+ if (((List) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Map) {
+ if (((Map) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Set) {
+ if (((Set) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Object[]) {
+ if (((Object[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof int[]) {
+ if (((int[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof long[]) {
+ if (((long[]) o).length == 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否存在 Empty Object
+ *
+ * @param os 对象组
+ * @return
+ */
+ public static boolean isOneEmpty(Object... os) {
+ for (Object o : os) {
+ if (isEmpty(o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否全是 Empty Object
+ *
+ * @param os
+ * @return
+ */
+ public static boolean isAllEmpty(Object... os) {
+ for (Object o : os) {
+ if (!isEmpty(o)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 是否为数字
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isNum(Object obj) {
+ try {
+ Integer.parseInt(obj.toString());
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 如果为空, 则调用默认值
+ *
+ * @param str
+ * @return
+ */
+ public static Object getValue(Object str, Object defaultValue) {
+ if (isEmpty(str)) {
+ return defaultValue;
+ }
+ return str;
+ }
+
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @return
+ */
+ public static String toStr(Object str) {
+ return toStr(str, "");
+ }
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @param defaultValue
+ * @return
+ */
+ public static String toStr(Object str, String defaultValue) {
+ if (null == str) {
+ return defaultValue;
+ }
+ return str.toString().trim();
+ }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @return
+ */
+// public static int toInt(Object value) {
+// return toInt(value, -1);
+// }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static int toInt(Object value, int defaultValue) {
+// return Convert.toInt(value, defaultValue);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @return
+ */
+// public static long toLong(Object value) {
+// return toLong(value, -1);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static long toLong(Object value, long defaultValue) {
+// return Convert.toLong(value, defaultValue);
+// }
+//
+// public static String encodeUrl(String url) {
+// return URLKit.encode(url, CharsetKit.UTF_8);
+// }
+//
+// public static String decodeUrl(String url) {
+// return URLKit.decode(url, CharsetKit.UTF_8);
+// }
+
+ /**
+ * map的key转为小写
+ *
+ * @param map
+ * @return Map<String , Object>
+ */
+ public static Map<String, Object> caseInsensitiveMap(Map<String, Object> map) {
+ Map<String, Object> tempMap = new HashMap<>();
+ for (String key : map.keySet()) {
+ tempMap.put(key.toLowerCase(), map.get(key));
+ }
+ return tempMap;
+ }
+
+ /**
+ * 获取map中第一个数据值
+ *
+ * @param <K> Key的类型
+ * @param <V> Value的类型
+ * @param map 数据源
+ * @return 返回的值
+ */
+ public static <K, V> V getFirstOrNull(Map<K, V> map) {
+ V obj = null;
+ for (Entry<K, V> entry : map.entrySet()) {
+ obj = entry.getValue();
+ if (obj != null) {
+ break;
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static StringBuilder builder(String... strs) {
+ final StringBuilder sb = new StringBuilder();
+ for (String str : strs) {
+ sb.append(str);
+ }
+ return sb;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static void builder(StringBuilder sb, String... strs) {
+ for (String str : strs) {
+ sb.append(str);
+ }
+ }
+
+ /**
+ * 去掉指定后缀
+ *
+ * @param str 字符串
+ * @param suffix 后缀
+ * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
+ */
+ public static String removeSuffix(String str, String suffix) {
+ if (isEmpty(str) || isEmpty(suffix)) {
+ return str;
+ }
+
+ if (str.endsWith(suffix)) {
+ return str.substring(0, str.length() - suffix.length());
+ }
+ return str;
+ }
+
+ /**
+ * 当前时间
+ *
+ * @author stylefeng
+ * @Date 2017/5/7 21:56
+ */
+ public static String currentTime() {
+ return DateUtil.getTime();
+ }
+
+
+
+ /**
+ * 判断是否是windows操作系统
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:34
+ */
+ public static Boolean isWinOs() {
+ String os = System.getProperty("os.name");
+ if (os.toLowerCase().startsWith("win")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 获取临时目录
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:35
+ */
+ public static String getTempPath() {
+ return System.getProperty("java.io.tmpdir");
+ }
+
+ /**
+ * 把一个数转化为int
+ *
+ * @author fengshuonan
+ * @Date 2017/11/15 下午11:10
+ */
+ public static Integer toInt(Object val) {
+ if (val instanceof Double) {
+ BigDecimal bigDecimal = new BigDecimal((Double) val);
+ return bigDecimal.intValue();
+ } else {
+ return Integer.valueOf(val.toString());
+ }
+
+ }
+
+ /**
+ * 获取项目路径
+ */
+ public static String getWebRootPath(String filePath) {
+ try {
+ String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
+ path = path.replace("/WEB-INF/classes/", "");
+ path = path.replace("/target/classes/", "");
+ path = path.replace("file:/", "");
+ if (ToolUtil.isEmpty(filePath)) {
+ return path;
+ } else {
+ return path + "/" + filePath;
+ }
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 获取文件后缀名 不包含点
+ */
+ public static String getFileSuffix(String fileWholeName) {
+ if (ToolUtil.isEmpty(fileWholeName)) {
+ return "none";
+ }
+ int lastIndexOf = fileWholeName.lastIndexOf(".");
+ return fileWholeName.substring(lastIndexOf + 1);
+ }
+}
\ No newline at end of file
diff --git a/cloud-server-account/src/main/java/com/dsh/app/controller/ClassDetailsController.java b/cloud-server-account/src/main/java/com/dsh/app/controller/ClassDetailsController.java
new file mode 100644
index 0000000..fb537ce
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/controller/ClassDetailsController.java
@@ -0,0 +1,135 @@
+package com.dsh.app.controller;
+
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.dsh.account.util.DateUtil;
+import com.dsh.app.entity.TStudent;
+import com.dsh.app.model.vo.classDetails.classInsVo.ClassInfoVo;
+import com.dsh.app.model.vo.classDetails.classInsVo.StuDetailsReq;
+import com.dsh.app.model.vo.classDetails.classInsVo.StuListVo;
+import com.dsh.app.model.vo.classDetails.classInsVo.StuPhysicalVo;
+import com.dsh.app.service.TAppUserService;
+import com.dsh.app.service.TStudentService;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 学员上课情况 接口
+ */
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("/startCource")
+public class ClassDetailsController {
+
+ private Logger logger = LoggerFactory.getLogger("business-log");
+
+ @Autowired
+ private TStudentService istuService;
+
+ @Autowired
+ private TAppUserService tappuService;
+
+
+
+ @ResponseBody
+ @PostMapping("/stu/queryStudentData")
+ @ApiOperation(value = "根据登录用户ID查询学员信息", tags = {"用户——学员信息"}, notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "用户id", name = "id", required = true, dataType = "int"),
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ClassInfoVo queryCouponRecord(@RequestBody Integer id){
+ try {
+ return tappuService.queryUserOfStus(id);
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 获取学员测试报告
+ */
+ @PostMapping("/stu/queryPhysical")
+ public StuPhysicalVo getStuPhysicalInfo(@RequestBody Integer stuID){
+ StuPhysicalVo vo = new StuPhysicalVo();
+ TStudent tStudent = istuService.selectById(stuID);
+ vo.setBmi(tStudent.getBmi());
+ vo.setUrl(tStudent.getLateralSurface());
+ vo.setHeight(tStudent.getHeight());
+ vo.setWeight(tStudent.getWeight());
+ return vo;
+ }
+
+ /**
+ * 添加学员信息
+ */
+ @PostMapping("/stu/addData")
+ public void addStu(@RequestBody StuDetailsReq stu){
+ TStudent student = new TStudent();
+ student.setAppUserId(stu.getUserID());
+ student.setName(stu.getName());
+ student.setHeadImg(stu.getHeadImg());
+ student.setPhone(stu.getPhone());
+ student.setSex(stu.getSex());
+ student.setIdCard(stu.getIdCard());
+ student.setBirthday(new Date(stu.getBirthday()));
+ student.setHeight(stu.getHeight());
+ student.setWeight(stu.getWeight());
+ BigDecimal bigDecimal = BigDecimal.valueOf(stu.getWeight());
+ BigDecimal multiply = bigDecimal.subtract(BigDecimal.valueOf(stu.getHeight())).multiply(bigDecimal.subtract(BigDecimal.valueOf(stu.getHeight())));
+ multiply.setScale(2);
+ student.setBmi(multiply.doubleValue());
+ student.setInsertTime(new Date());
+ student.setState(1);
+ istuService.insert(student);
+ }
+
+ /**
+ * 该APP用户下的学员列表
+ */
+ @PostMapping("/stu/listOfStu")
+ public List<StuListVo> queryStuList(@RequestBody Integer appUserID){
+ List<StuListVo> stuListVos = new ArrayList<>();
+ List<TStudent> tStudents = istuService.selectList(new EntityWrapper<TStudent>()
+ .eq("appUserId",appUserID));
+ if (tStudents.size() > 0){
+ tStudents.forEach(sts -> {
+ StuListVo vo = new StuListVo();
+ vo.setStuId(sts.getId());
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ vo.setBirthday(simpleDateFormat.format(sts.getBirthday()));
+ vo.setStuName(sts.getName());
+ vo.setStuAge(DateUtil.age(sts.getBirthday()));
+ vo.setStuHeight(sts.getHeight());
+ vo.setStuWeight(sts.getWeight());
+ vo.setIsNot(sts.getIsDefault());
+ });
+ }
+ return stuListVos;
+ }
+
+ /**
+ * 课时详情
+ */
+ @PostMapping("/stu/lessonDetails")
+ public void coursePackageDetails(@RequestBody Integer lessonId){
+
+ }
+
+
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/app/entity/TAppUser.java
new file mode 100644
index 0000000..d957625
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/entity/TAppUser.java
@@ -0,0 +1,142 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 用户信息
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_app_user")
+public class TAppUser extends Model<TAppUser> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 编号
+ */
+ private String code;
+ /**
+ * 姓名
+ */
+ private String name;
+ /**
+ * 电话
+ */
+ private String phone;
+ /**
+ * 密码
+ */
+ private String password;
+ /**
+ * 生日
+ */
+ private Date birthday;
+ /**
+ * 性别(1=男,2=女)
+ */
+ private Integer gender;
+ /**
+ * 身高
+ */
+ private Double height;
+ /**
+ * 体重
+ */
+ private Double weight;
+ /**
+ * bmi健康值
+ */
+ private Double bmi;
+ /**
+ * 身份证号
+ */
+ private String idCard;
+ /**
+ * 微信openid
+ */
+ private String openid;
+ /**
+ * 省
+ */
+ private String province;
+ /**
+ * 省编号
+ */
+ private String provinceCode;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 市编号
+ */
+ private String cityCode;
+ /**
+ * 是否是年度会员(0=否,1=是)
+ */
+ private Integer isVip;
+ /**
+ * 会员有效期
+ */
+ private Date vipEndTime;
+ /**
+ * 会员等级id
+ */
+ private Integer viplevelId;
+ /**
+ * 推荐用户id
+ */
+ private Integer referralUserId;
+ /**
+ * 销售员id
+ */
+ private Integer salesmanUserId;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 剩余积分
+ */
+ private Integer integral;
+ /**
+ * 玩湃币
+ */
+ private Integer playPaiCoins;
+ /**
+ * 用户头像
+ */
+ private String headImg;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/entity/TStudent.java b/cloud-server-account/src/main/java/com/dsh/app/entity/TStudent.java
new file mode 100644
index 0000000..4bbdde8
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/entity/TStudent.java
@@ -0,0 +1,98 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 学员信息
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_student")
+public class TStudent extends Model<TStudent> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 学员姓名
+ */
+ private String name;
+ /**
+ * 学员电话
+ */
+ private String phone;
+ /**
+ * 生日
+ */
+ private Date birthday;
+ /**
+ * 性别(1=男,2=女)
+ */
+ private Integer sex;
+ /**
+ * 身高
+ */
+ private Double height;
+ /**
+ * 体重
+ */
+ private Double weight;
+ /**
+ * bmi健康值
+ */
+ private Double bmi;
+ /**
+ * 身份证号
+ */
+ private String idCard;
+ /**
+ * 体侧表
+ */
+ private String lateralSurface;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+ /**
+ * 头像
+ */
+ private String headImg;
+ /**
+ * 是否默认 1默认 2不是默认
+ */
+ private Integer isDefault;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/ImgConfigClient.java b/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/ImgConfigClient.java
new file mode 100644
index 0000000..47db28d
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/ImgConfigClient.java
@@ -0,0 +1,14 @@
+package com.dsh.app.feignclient.other;
+
+import com.dsh.app.feignclient.other.model.TImgConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-other")
+public interface ImgConfigClient {
+
+ @PostMapping("/imgConfig/getNoneStu")
+ List<TImgConfig> getNoneStuImgs();
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/model/TImgConfig.java b/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/model/TImgConfig.java
new file mode 100644
index 0000000..e514176
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/feignclient/other/model/TImgConfig.java
@@ -0,0 +1,47 @@
+package com.dsh.app.feignclient.other.model;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 图片配置
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TImgConfig extends Model<TImgConfig> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 位置(1=无学员,2=成为会员,3=我的券包,4=线上商城,5=本周福利,6=今日免费)
+ */
+ private Integer position;
+ /**
+ * 图片配置JSON
+ */
+ private String content;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/app/mapper/TAppUserMapper.java
new file mode 100644
index 0000000..6498dd7
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/mapper/TAppUserMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TAppUser;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户信息 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TAppUserMapper extends BaseMapper<TAppUser> {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/mapper/TStudentMapper.java b/cloud-server-account/src/main/java/com/dsh/app/mapper/TStudentMapper.java
new file mode 100644
index 0000000..2c2e23f
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/mapper/TStudentMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TStudent;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 学员信息 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TStudentMapper extends BaseMapper<TStudent> {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/CourseVenue.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/CourseVenue.java
new file mode 100644
index 0000000..5f3f135
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/CourseVenue.java
@@ -0,0 +1,37 @@
+package com.dsh.app.model.vo.classDetails;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CourseVenue {
+
+ @ApiModelProperty(value = "门店名称")
+ private String areaName;
+
+ @ApiModelProperty(value = "门店距离当前位置的 距离")
+ private String siteDistance;
+
+ @ApiModelProperty(value = "课包列表")
+ private List<CouList> courses;
+
+ @Data
+ static class CouList{
+
+ @ApiModelProperty(value = "课包ID")
+ Integer courseID;
+
+ @ApiModelProperty(value = "课包名称")
+ String courseName;
+
+ @ApiModelProperty(value = "时间段")
+ String timeStr;
+
+ @ApiModelProperty(value = "详细说明")
+ String detail;
+
+ }
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/ExerciseVideo.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/ExerciseVideo.java
new file mode 100644
index 0000000..7eb041f
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/ExerciseVideo.java
@@ -0,0 +1,17 @@
+package com.dsh.app.model.vo.classDetails;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ExerciseVideo {
+
+ @ApiModelProperty(value = "课后视频封面图链接")
+ private String videoCoverImgUrl;
+
+ @ApiModelProperty(value = "课后视频链接")
+ private String videoUrl;
+
+ @ApiModelProperty(value = "课后视频标题")
+ private String videoName;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/RegisteredCourse.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/RegisteredCourse.java
new file mode 100644
index 0000000..338b467
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/RegisteredCourse.java
@@ -0,0 +1,17 @@
+package com.dsh.app.model.vo.classDetails;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RegisteredCourse {
+
+ @ApiModelProperty(value = "课程ID")
+ private Integer courseId;
+
+ @ApiModelProperty(value = "课程名称")
+ private String courseName;
+
+
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/WeekedCourse.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/WeekedCourse.java
new file mode 100644
index 0000000..cf0a1ea
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/WeekedCourse.java
@@ -0,0 +1,23 @@
+package com.dsh.app.model.vo.classDetails;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WeekedCourse {
+
+ @ApiModelProperty(value = "是否为当天")
+ private Integer isToday;
+
+ @ApiModelProperty(value = "星期缩写")
+ private String weekStr;
+
+ @ApiModelProperty(value = "日期")
+ private String dayStr;
+
+ @ApiModelProperty(value = "课包列表")
+ private List<CourseVenue> details;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/ClassInfoVo.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/ClassInfoVo.java
new file mode 100644
index 0000000..c1f8d3c
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/ClassInfoVo.java
@@ -0,0 +1,60 @@
+package com.dsh.app.model.vo.classDetails.classInsVo;
+
+
+import com.dsh.app.model.vo.classDetails.ExerciseVideo;
+import com.dsh.app.model.vo.classDetails.RegisteredCourse;
+import com.dsh.app.model.vo.classDetails.WeekedCourse;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ClassInfoVo {
+
+ @ApiModelProperty(value = "是否有学员信息 (1. 有学员信息 2.没有学员信息)")
+ private Integer isThere;
+
+ @ApiModelProperty(value = "没有学员信息 对应的banner图")
+ private String imgs;
+
+ @ApiModelProperty(value = "学员头像")
+ private String stuImg;
+
+ @ApiModelProperty(value = "学员性别 1:男 2:女")
+ private Integer stuSex;
+
+ @ApiModelProperty(value = "学员年龄")
+ private Integer stuAge;
+
+ @ApiModelProperty(value = "学员名")
+ private String stuName;
+
+ @ApiModelProperty(value = "身高")
+ private Double height;
+
+ @ApiModelProperty(value = "体重")
+ private Double weight;
+
+ @ApiModelProperty(value = "bmi指数")
+ private Double bmi;
+
+ @ApiModelProperty(value = "课包-已报名课程列表")
+ private List<RegisteredCourse> courseList;
+
+ @ApiModelProperty(value = "总学时数")
+ private Integer totalNums;
+
+ @ApiModelProperty(value = "已扣学时数")
+ private Integer deductedNums;
+
+ @ApiModelProperty(value = "剩余学时数")
+ private Integer remainingNums;
+
+ @ApiModelProperty(value = "课包-本周可预约课包列表")
+ private List<WeekedCourse> weekCourseList;
+
+ @ApiModelProperty(value = "课程-课后练习视频2个列表")
+ private List<ExerciseVideo> exerciseVideoList;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuDetailsReq.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuDetailsReq.java
new file mode 100644
index 0000000..5455c58
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuDetailsReq.java
@@ -0,0 +1,36 @@
+package com.dsh.app.model.vo.classDetails.classInsVo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StuDetailsReq {
+
+ @ApiModelProperty(value = "头像")
+ private String headImg;
+
+ @ApiModelProperty(value = "姓名")
+ private String name;
+
+ @ApiModelProperty(value = "联系方式")
+ private String phone;
+
+ @ApiModelProperty(value = "生日")
+ private String birthday;
+
+ @ApiModelProperty(value = "性别 (1 男 2 女)")
+ private Integer sex;
+
+ @ApiModelProperty(value = "身高")
+ private Double height;
+
+ @ApiModelProperty(value = "体重")
+ private Double weight;
+
+ @ApiModelProperty(value = "身份证号码")
+ private String idCard;
+
+ @ApiModelProperty(value = "用户id")
+ private Integer userID;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuListVo.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuListVo.java
new file mode 100644
index 0000000..1e061d4
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuListVo.java
@@ -0,0 +1,30 @@
+package com.dsh.app.model.vo.classDetails.classInsVo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StuListVo {
+
+ @ApiModelProperty(value = "学员id")
+ private Integer stuId;
+
+ @ApiModelProperty(value = "学员姓名")
+ private String stuName;
+
+ @ApiModelProperty(value = "学员年龄")
+ private Integer stuAge;
+
+ @ApiModelProperty(value = "学员身高")
+ private Double stuHeight;
+
+ @ApiModelProperty(value = "学员生日")
+ private String birthday;
+
+ @ApiModelProperty(value = "学员体重")
+ private Double stuWeight;
+
+ @ApiModelProperty(value = "是否默认(1. 是默认 2. 不是默认 )")
+ private Integer isNot;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuPhysicalVo.java b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuPhysicalVo.java
new file mode 100644
index 0000000..b7fa114
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/model/vo/classDetails/classInsVo/StuPhysicalVo.java
@@ -0,0 +1,16 @@
+package com.dsh.app.model.vo.classDetails.classInsVo;
+
+
+import lombok.Data;
+
+@Data
+public class StuPhysicalVo {
+
+ private Double height;
+
+ private Double weight;
+
+ private Double bmi;
+
+ private String url;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/app/service/TAppUserService.java
new file mode 100644
index 0000000..c36ed8a
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/service/TAppUserService.java
@@ -0,0 +1,18 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TAppUser;
+import com.baomidou.mybatisplus.service.IService;
+import com.dsh.app.model.vo.classDetails.classInsVo.ClassInfoVo;
+
+/**
+ * <p>
+ * 用户信息 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TAppUserService extends IService<TAppUser> {
+
+ ClassInfoVo queryUserOfStus(Integer id);
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/app/service/TStudentService.java
new file mode 100644
index 0000000..b118478
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/service/TStudentService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TStudent;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 学员信息 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TStudentService extends IService<TStudent> {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/app/service/impl/TAppUserServiceImpl.java
new file mode 100644
index 0000000..06ae43c
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/service/impl/TAppUserServiceImpl.java
@@ -0,0 +1,56 @@
+package com.dsh.app.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.dsh.app.entity.TAppUser;
+import com.dsh.app.entity.TStudent;
+import com.dsh.app.feignclient.other.ImgConfigClient;
+import com.dsh.app.feignclient.other.model.TImgConfig;
+import com.dsh.app.mapper.TAppUserMapper;
+import com.dsh.app.mapper.TStudentMapper;
+import com.dsh.app.model.vo.classDetails.classInsVo.ClassInfoVo;
+import com.dsh.app.service.TAppUserService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.dsh.account.util.ToolUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService {
+
+ @Autowired
+ private TStudentMapper tsmapper;
+
+ @Autowired
+ private ImgConfigClient configClient;
+
+ @Override
+ public ClassInfoVo queryUserOfStus(Integer id) {
+ TAppUser tAppUser = this.baseMapper.selectById(id);
+ if (ToolUtil.isNotEmpty(tAppUser)){
+ List<TStudent> tStudents = tsmapper.selectList(new EntityWrapper<TStudent>()
+ .eq("appUserId",tAppUser.getId())
+ .eq("state",1));
+ ClassInfoVo classInfoVo = new ClassInfoVo();
+ if (null != tStudents){
+
+ }else {
+ classInfoVo.setIsThere(2);
+ List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs();
+ if (tImgConfigs.size() > 0){
+ classInfoVo.setImgs(tImgConfigs.get(0).getContent());
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/app/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/app/service/impl/TStudentServiceImpl.java
new file mode 100644
index 0000000..a70a897
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/app/service/impl/TStudentServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TStudent;
+import com.dsh.app.mapper.TStudentMapper;
+import com.dsh.app.service.TStudentService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 学员信息 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TStudentServiceImpl extends ServiceImpl<TStudentMapper, TStudent> implements TStudentService {
+
+}
diff --git a/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
new file mode 100644
index 0000000..fe20ba7
--- /dev/null
+++ b/cloud-server-account/src/main/resources/mapper/TAppUserMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TAppUserMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TAppUser">
+ <id column="id" property="id" />
+ <result column="code" property="code" />
+ <result column="name" property="name" />
+ <result column="phone" property="phone" />
+ <result column="password" property="password" />
+ <result column="birthday" property="birthday" />
+ <result column="gender" property="gender" />
+ <result column="height" property="height" />
+ <result column="weight" property="weight" />
+ <result column="bmi" property="bmi" />
+ <result column="idCard" property="idCard" />
+ <result column="openid" property="openid" />
+ <result column="province" property="province" />
+ <result column="provinceCode" property="provinceCode" />
+ <result column="city" property="city" />
+ <result column="cityCode" property="cityCode" />
+ <result column="isVip" property="isVip" />
+ <result column="vipEndTime" property="vipEndTime" />
+ <result column="viplevelId" property="viplevelId" />
+ <result column="referralUserId" property="referralUserId" />
+ <result column="salesmanUserId" property="salesmanUserId" />
+ <result column="state" property="state" />
+ <result column="integral" property="integral" />
+ <result column="playPaiCoins" property="playPaiCoins" />
+ <result column="headImg" property="headImg" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
new file mode 100644
index 0000000..d41bb61
--- /dev/null
+++ b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TStudentMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TStudent">
+ <id column="id" property="id" />
+ <result column="appUserId" property="appUserId" />
+ <result column="name" property="name" />
+ <result column="phone" property="phone" />
+ <result column="birthday" property="birthday" />
+ <result column="sex" property="sex" />
+ <result column="height" property="height" />
+ <result column="weight" property="weight" />
+ <result column="bmi" property="bmi" />
+ <result column="idCard" property="idCard" />
+ <result column="lateralSurface" property="lateralSurface" />
+ <result column="state" property="state" />
+ <result column="insertTime" property="insertTime" />
+ <result column="headImg" property="headImg" />
+ <result column="isDefault" property="isDefault" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml
index 29ac811..24636df 100644
--- a/cloud-server-course/pom.xml
+++ b/cloud-server-course/pom.xml
@@ -50,6 +50,45 @@
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
+
+
+ <!-- mybatis generertor-->
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatisplus-spring-boot-starter</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generate</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>1.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.30</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-jpa</artifactId>
+ <version>1.11.4.RELEASE</version>
+ </dependency>
+
+
<dependency> <!--swagger2-->
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
diff --git a/cloud-server-course/src/main/java/com/dsh/app/entity/TCourse.java b/cloud-server-course/src/main/java/com/dsh/app/entity/TCourse.java
new file mode 100644
index 0000000..4c8c433
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/entity/TCourse.java
@@ -0,0 +1,78 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 课程
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course")
+public class TCourse extends Model<TCourse> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 课程名称
+ */
+ private String name;
+ /**
+ * 类型(1=课后练习,2=运动教学视频,3=器材教学视频)
+ */
+ private Integer type;
+ /**
+ * 介绍
+ */
+ private String introduce;
+ /**
+ * 封面图
+ */
+ private String coverDrawing;
+ /**
+ * 介绍图
+ */
+ private String introductionDrawing;
+ /**
+ * 课程视频
+ */
+ private String courseVideo;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackage.java b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackage.java
new file mode 100644
index 0000000..0b3e1d1
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackage.java
@@ -0,0 +1,158 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 课包
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package")
+public class TCoursePackage extends Model<TCoursePackage> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 省
+ */
+ private String province;
+ /**
+ * 省编号
+ */
+ private String provinceCode;
+ /**
+ * 市
+ */
+ private String city;
+ /**
+ * 市编号
+ */
+ private String cityCode;
+ /**
+ * 门店id
+ */
+ private Integer storeId;
+ /**
+ * 课包类型id
+ */
+ private Integer coursePackageTypeId;
+ /**
+ * 课包名称
+ */
+ private String name;
+ /**
+ * 上课场地id
+ */
+ private Integer siteId;
+ /**
+ * 教练id
+ */
+ private Integer coachId;
+ /**
+ * 最多预约人数
+ */
+ private Integer maxSubscribeNumber;
+ /**
+ * 上课开始时间
+ */
+ private String classStartTime;
+ /**
+ * 上课结束时段
+ */
+ private String classEndTime;
+ /**
+ * 上课周,多个分号分隔
+ */
+ private String classWeeks;
+ /**
+ * 封面图
+ */
+ private String coverDrawing;
+ /**
+ * 详情图
+ */
+ private String detailDrawing;
+ /**
+ * 介绍图
+ */
+ private String introduceDrawing;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 支付方式(1=现金,2=玩湃币)
+ */
+ private Integer payType;
+ /**
+ * 有效天数
+ */
+ private Integer validDays;
+ /**
+ * 课后练习课程id
+ */
+ private Integer courseId;
+ /**
+ * 课后练习视频介绍
+ */
+ private String introduce;
+ /**
+ * 完成课后练习获取积分
+ */
+ private Integer integral;
+ /**
+ * 课程状态(1=未开始,2=进行中,3=已结束,4=已取消)
+ */
+ private Integer status;
+ /**
+ * 审核状态(1=待审核,2=已同意,3=已拒绝)
+ */
+ private Integer auditStatus;
+ /**
+ * 审核人id
+ */
+ private Integer auditUserId;
+ /**
+ * 审核备注
+ */
+ private String authRemark;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageDiscount.java b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageDiscount.java
new file mode 100644
index 0000000..a166cea
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageDiscount.java
@@ -0,0 +1,74 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 课包折扣
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package_discount")
+public class TCoursePackageDiscount extends Model<TCoursePackageDiscount> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 课包id
+ */
+ private Integer coursePackageId;
+ /**
+ * 折扣类型(1=会员折扣,2=续课优惠,3=限时折扣,4=赠送课时)
+ */
+ private Integer type;
+ /**
+ * 折扣优惠规则JSON
+ */
+ private String content;
+ /**
+ * 审核状态(1=待审核,2=已通过,3=已拒绝)
+ */
+ private Integer auditStatus;
+ /**
+ * 审核人id
+ */
+ private Integer auditUserId;
+ /**
+ * 审核备注
+ */
+ private String auditRemark;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackagePayment.java
new file mode 100644
index 0000000..f518ce9
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackagePayment.java
@@ -0,0 +1,123 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.math.BigDecimal;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 用户课程包购买记录
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package_payment")
+public class TCoursePackagePayment extends Model<TCoursePackagePayment> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 学员id
+ */
+ private Integer studentId;
+ /**
+ * 课包id
+ */
+ private Integer coursePackageId;
+ /**
+ * 支付方式(1=现金,2=玩湃币)
+ */
+ private Integer payType;
+ /**
+ * 课时数
+ */
+ private Integer classHours;
+ /**
+ * 现金支付价格
+ */
+ private BigDecimal cashPayment;
+ /**
+ * 玩湃币价格
+ */
+ private Integer playPaiCoin;
+ /**
+ * 总课时
+ */
+ private Integer totalClassHours;
+ /**
+ * 剩余课时
+ */
+ private Integer laveClassHours;
+ /**
+ * 缺课次数
+ */
+ private Integer absencesNumber;
+ /**
+ * 支付用户类型(1=用户,2=管理员)
+ */
+ private Integer payUserType;
+ /**
+ * 支付状态(1=待支付,2=已支付)
+ */
+ private Integer payStatus;
+ /**
+ * 第三方支付流水号
+ */
+ private String orderNumber;
+ /**
+ * 支付用户id
+ */
+ private Integer payUserId;
+ /**
+ * 课程状态(1=正常,2=已退课)
+ */
+ private Integer status;
+ /**
+ * 退课时间
+ */
+ private Date withdrawalTime;
+ /**
+ * 退课凭证
+ */
+ private String certificate;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageType.java b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageType.java
new file mode 100644
index 0000000..aa9375d
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/entity/TCoursePackageType.java
@@ -0,0 +1,58 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 课程包类型
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package_type")
+public class TCoursePackageType extends Model<TCoursePackageType> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 类型名称
+ */
+ private String name;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/mapper/TCourseMapper.java b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCourseMapper.java
new file mode 100644
index 0000000..d99bd93
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCourseMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TCourse;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课程 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCourseMapper extends BaseMapper<TCourse> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageDiscountMapper.java b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageDiscountMapper.java
new file mode 100644
index 0000000..fa91c27
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageDiscountMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TCoursePackageDiscount;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课包折扣 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageDiscountMapper extends BaseMapper<TCoursePackageDiscount> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageMapper.java b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageMapper.java
new file mode 100644
index 0000000..d6d1c5b
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TCoursePackage;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课包 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageMapper extends BaseMapper<TCoursePackage> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackagePaymentMapper.java
new file mode 100644
index 0000000..1656921
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackagePaymentMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TCoursePackagePayment;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户课程包购买记录 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageTypeMapper.java b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageTypeMapper.java
new file mode 100644
index 0000000..2d5b3f9
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/mapper/TCoursePackageTypeMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TCoursePackageType;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 课程包类型 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageTypeMapper extends BaseMapper<TCoursePackageType> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageDiscountService.java b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageDiscountService.java
new file mode 100644
index 0000000..5544294
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageDiscountService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TCoursePackageDiscount;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 课包折扣 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageDiscountService extends IService<TCoursePackageDiscount> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackagePaymentService.java
new file mode 100644
index 0000000..baf5a4f
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackagePaymentService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TCoursePackagePayment;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 用户课程包购买记录 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageService.java b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageService.java
new file mode 100644
index 0000000..afbe346
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TCoursePackage;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 课包 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageService extends IService<TCoursePackage> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageTypeService.java b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageTypeService.java
new file mode 100644
index 0000000..39abdf8
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/TCoursePackageTypeService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TCoursePackageType;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 课程包类型 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCoursePackageTypeService extends IService<TCoursePackageType> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/TCourseService.java b/cloud-server-course/src/main/java/com/dsh/app/service/TCourseService.java
new file mode 100644
index 0000000..47a5da2
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/TCourseService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TCourse;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 课程 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TCourseService extends IService<TCourse> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageDiscountServiceImpl.java
new file mode 100644
index 0000000..1811eac
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TCoursePackageDiscount;
+import com.dsh.app.mapper.TCoursePackageDiscountMapper;
+import com.dsh.app.service.TCoursePackageDiscountService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课包折扣 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TCoursePackageDiscountServiceImpl extends ServiceImpl<TCoursePackageDiscountMapper, TCoursePackageDiscount> implements TCoursePackageDiscountService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackagePaymentServiceImpl.java
new file mode 100644
index 0000000..be2ebd4
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TCoursePackagePayment;
+import com.dsh.app.mapper.TCoursePackagePaymentMapper;
+import com.dsh.app.service.TCoursePackagePaymentService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户课程包购买记录 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageServiceImpl.java
new file mode 100644
index 0000000..d2dfc1e
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TCoursePackage;
+import com.dsh.app.mapper.TCoursePackageMapper;
+import com.dsh.app.service.TCoursePackageService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课包 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TCoursePackageServiceImpl extends ServiceImpl<TCoursePackageMapper, TCoursePackage> implements TCoursePackageService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageTypeServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageTypeServiceImpl.java
new file mode 100644
index 0000000..f84ed7f
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCoursePackageTypeServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TCoursePackageType;
+import com.dsh.app.mapper.TCoursePackageTypeMapper;
+import com.dsh.app.service.TCoursePackageTypeService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课程包类型 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TCoursePackageTypeServiceImpl extends ServiceImpl<TCoursePackageTypeMapper, TCoursePackageType> implements TCoursePackageTypeService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCourseServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCourseServiceImpl.java
new file mode 100644
index 0000000..6932e44
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/app/service/impl/TCourseServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TCourse;
+import com.dsh.app.mapper.TCourseMapper;
+import com.dsh.app.service.TCourseService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课程 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TCourseServiceImpl extends ServiceImpl<TCourseMapper, TCourse> implements TCourseService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/CodeGeneration.java b/cloud-server-course/src/main/java/com/dsh/course/util/CodeGeneration.java
new file mode 100644
index 0000000..67d4f03
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/CodeGeneration.java
@@ -0,0 +1,88 @@
+package com.dsh.course.util;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.DbType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+public class CodeGeneration {
+
+ public static void gen(String tableName){
+
+ //C:\Users\linla\Desktop\project02\guns-admin
+ //项目目录
+ ///Users/java/IdeaProjects/PlayPai_demo/cloud-server-account/src/main/java/com/dsh/app
+ String projectPath = "/Users/java/IdeaProjects/PlayPai_demo/cloud-server-course/src/main/java/"; //System.getProperty("user.dir");
+ //String projectPath =System.getProperty("user.dir");
+ AutoGenerator mpg = new AutoGenerator();
+ //全局配置
+ GlobalConfig gc = new GlobalConfig();
+ gc.setOutputDir(projectPath );
+ gc.setFileOverride(true);
+ gc.setActiveRecord(true);//不需要ActiveRecord特性的请改为false
+ gc.setEnableCache(false);//XML二级缓存
+ gc.setBaseResultMap(true);//XML ResultMap
+ gc.setBaseColumnList(false);//XML columList
+ gc.setIdType(IdType.UUID);
+ gc.setAuthor("administrator");//作者
+ gc.setOpen(false);//生成完成不打开文件夹
+
+ //自定义文件命名,注意%s 会自动填充表实体属性
+ gc.setServiceName("%sService");
+ gc.setServiceImplName("%sServiceImpl");
+ gc.setMapperName("%sMapper");
+ gc.setXmlName("%sMapper");
+ gc.setControllerName("%sController");
+ mpg.setGlobalConfig(gc);
+
+ //数据源配置
+ DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setDbType(DbType.MYSQL);
+// dsc.setUrl("jdbc:mysql://192.168.110.80:3306/playpai_account?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setUrl("jdbc:mysql://127.0.0.1:3306/playpai_course?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+ dsc.setUsername("root");
+ dsc.setPassword("earl9096");
+ mpg.setDataSource(dsc);
+
+ //数据库表配置
+ StrategyConfig strategy = new StrategyConfig();
+ strategy.setTablePrefix(new String[]{});//此处可以修改您的表前缀
+ strategy.setNaming(NamingStrategy.underline_to_camel);//表名生成策略
+ strategy.setInclude(new String[]{tableName});//需要生成的表
+ strategy.setRestControllerStyle(true);
+ strategy.setEntityLombokModel(true);
+ strategy.setSuperServiceClass(null);
+ strategy.setSuperServiceImplClass(null);
+ strategy.setSuperMapperClass(null);
+ mpg.setStrategy(strategy);
+
+ //模板配置
+ TemplateConfig template=new TemplateConfig();
+ //不生成controller
+ template.setController(null);
+ //不生成xml文件
+ //template.setXml(null);
+ mpg.setTemplate(template);
+ //包配置
+ PackageConfig pc = new PackageConfig();
+ pc.setParent("com.dsh.app");
+ pc.setEntity("entity");
+ pc.setService("service");
+ pc.setServiceImpl("service.impl");
+ pc.setMapper("mapper");
+
+ pc.setXml("mapper.xml");
+
+// pc.setController("controller.member");
+ mpg.setPackageInfo(pc);
+
+ //执行生成
+ mpg.execute();
+ }
+
+ public static void main(String[] args) {
+ gen("t_course_package_discount");
+ }
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
index f9e576f..b4de802 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
@@ -329,4 +329,38 @@
return dt1.getTime();
}
+
+ /**
+ * 计算年龄
+ * @param birthDate
+ * @return
+ */
+ public static int age(Date birthDate) {
+ // 当前日历
+ Calendar nowCalendar = Calendar.getInstance();
+ // 生日大于当前日期
+ if (nowCalendar.before(birthDate)) {
+ throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
+ }
+ // 当前年月日
+ int yearNow = nowCalendar.get(Calendar.YEAR);
+ int monthNow = nowCalendar.get(Calendar.MONTH);
+ int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
+ // 出生日期年月日
+ Calendar birthCalendar = Calendar.getInstance();
+ birthCalendar.setTime(birthDate);
+ int yearBirth = birthCalendar.get(Calendar.YEAR);
+ int monthBirth = birthCalendar.get(Calendar.MONTH);
+ int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
+ // 粗计算年龄
+ int age = yearNow - yearBirth;
+ // 当前月份小于出生月份年龄减一
+ if (monthNow < monthBirth) { age--; }
+ // 当前月份等于出生月份,日小于生日年龄减一
+ else if (monthNow == monthBirth && dayNow < dayBirth) { age--; }
+ // 返回年龄值
+ return age;
+ }
+
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/ToolUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/ToolUtil.java
new file mode 100644
index 0000000..1202cfd
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/ToolUtil.java
@@ -0,0 +1,544 @@
+/**
+ * Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.dsh.course.util;
+
+
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Array;
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.util.*;
+import java.util.Map.Entry;
+
+/**
+ * 高频方法集合类
+ */
+public class ToolUtil {
+
+ /**
+ * 获取随机位数的字符串
+ *
+ * @author fengshuonan
+ * @Date 2017/8/24 14:09
+ */
+ public static String getRandomString(int length) {
+ String base = "abcdefghijklmnopqrstuvwxyz0123456789";
+ Random random = new Random();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 判断一个对象是否是时间类型
+ *
+ * @author stylefeng
+ * @Date 2017/4/18 12:55
+ */
+ public static String dateType(Object o) {
+ if (o instanceof Date) {
+ return DateUtil.getDay((Date) o);
+ } else {
+ return o.toString();
+ }
+ }
+
+ /**
+ * 获取异常的具体信息
+ *
+ * @author fengshuonan
+ * @Date 2017/3/30 9:21
+ * @version 2.0
+ */
+ public static String getExceptionMsg(Exception e) {
+ StringWriter sw = new StringWriter();
+ try {
+ e.printStackTrace(new PrintWriter(sw));
+ } finally {
+ try {
+ sw.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ return sw.getBuffer().toString().replaceAll("\\$", "T");
+ }
+
+ /**
+ * 比较两个对象是否相等。<br>
+ * 相同的条件有两个,满足其一即可:<br>
+ * 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
+ *
+ * @param obj1 对象1
+ * @param obj2 对象2
+ * @return 是否相等
+ */
+ public static boolean equals(Object obj1, Object obj2) {
+ return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
+ }
+
+ /**
+ * 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
+ *
+ * @param obj 被计算长度的对象
+ * @return 长度
+ */
+ public static int length(Object obj) {
+ if (obj == null) {
+ return 0;
+ }
+ if (obj instanceof CharSequence) {
+ return ((CharSequence) obj).length();
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).size();
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).size();
+ }
+
+ int count;
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ count = 0;
+ while (iter.hasNext()) {
+ count++;
+ iter.next();
+ }
+ return count;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ count = 0;
+ while (enumeration.hasMoreElements()) {
+ count++;
+ enumeration.nextElement();
+ }
+ return count;
+ }
+ if (obj.getClass().isArray() == true) {
+ return Array.getLength(obj);
+ }
+ return -1;
+ }
+
+ /**
+ * 对象中是否包含元素
+ *
+ * @param obj 对象
+ * @param element 元素
+ * @return 是否包含
+ */
+ public static boolean contains(Object obj, Object element) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj instanceof String) {
+ if (element == null) {
+ return false;
+ }
+ return ((String) obj).contains(element.toString());
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).contains(element);
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).values().contains(element);
+ }
+
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ while (enumeration.hasMoreElements()) {
+ Object o = enumeration.nextElement();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj.getClass().isArray() == true) {
+ int len = Array.getLength(obj);
+ for (int i = 0; i < len; i++) {
+ Object o = Array.get(obj, i);
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象是否不为空(新增)
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ public static boolean isNotEmpty(Object o) {
+ return !isEmpty(o);
+ }
+
+ /**
+ * 对象是否为空
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static boolean isEmpty(Object o) {
+ if (o == null) {
+ return true;
+ }
+ if (o instanceof String) {
+ if (o.toString().trim().equals("")) {
+ return true;
+ }
+ } else if (o instanceof List) {
+ if (((List) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Map) {
+ if (((Map) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Set) {
+ if (((Set) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Object[]) {
+ if (((Object[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof int[]) {
+ if (((int[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof long[]) {
+ if (((long[]) o).length == 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否存在 Empty Object
+ *
+ * @param os 对象组
+ * @return
+ */
+ public static boolean isOneEmpty(Object... os) {
+ for (Object o : os) {
+ if (isEmpty(o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否全是 Empty Object
+ *
+ * @param os
+ * @return
+ */
+ public static boolean isAllEmpty(Object... os) {
+ for (Object o : os) {
+ if (!isEmpty(o)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 是否为数字
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isNum(Object obj) {
+ try {
+ Integer.parseInt(obj.toString());
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 如果为空, 则调用默认值
+ *
+ * @param str
+ * @return
+ */
+ public static Object getValue(Object str, Object defaultValue) {
+ if (isEmpty(str)) {
+ return defaultValue;
+ }
+ return str;
+ }
+
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @return
+ */
+ public static String toStr(Object str) {
+ return toStr(str, "");
+ }
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @param defaultValue
+ * @return
+ */
+ public static String toStr(Object str, String defaultValue) {
+ if (null == str) {
+ return defaultValue;
+ }
+ return str.toString().trim();
+ }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @return
+ */
+// public static int toInt(Object value) {
+// return toInt(value, -1);
+// }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static int toInt(Object value, int defaultValue) {
+// return Convert.toInt(value, defaultValue);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @return
+ */
+// public static long toLong(Object value) {
+// return toLong(value, -1);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static long toLong(Object value, long defaultValue) {
+// return Convert.toLong(value, defaultValue);
+// }
+//
+// public static String encodeUrl(String url) {
+// return URLKit.encode(url, CharsetKit.UTF_8);
+// }
+//
+// public static String decodeUrl(String url) {
+// return URLKit.decode(url, CharsetKit.UTF_8);
+// }
+
+ /**
+ * map的key转为小写
+ *
+ * @param map
+ * @return Map<String , Object>
+ */
+ public static Map<String, Object> caseInsensitiveMap(Map<String, Object> map) {
+ Map<String, Object> tempMap = new HashMap<>();
+ for (String key : map.keySet()) {
+ tempMap.put(key.toLowerCase(), map.get(key));
+ }
+ return tempMap;
+ }
+
+ /**
+ * 获取map中第一个数据值
+ *
+ * @param <K> Key的类型
+ * @param <V> Value的类型
+ * @param map 数据源
+ * @return 返回的值
+ */
+ public static <K, V> V getFirstOrNull(Map<K, V> map) {
+ V obj = null;
+ for (Entry<K, V> entry : map.entrySet()) {
+ obj = entry.getValue();
+ if (obj != null) {
+ break;
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static StringBuilder builder(String... strs) {
+ final StringBuilder sb = new StringBuilder();
+ for (String str : strs) {
+ sb.append(str);
+ }
+ return sb;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static void builder(StringBuilder sb, String... strs) {
+ for (String str : strs) {
+ sb.append(str);
+ }
+ }
+
+ /**
+ * 去掉指定后缀
+ *
+ * @param str 字符串
+ * @param suffix 后缀
+ * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
+ */
+ public static String removeSuffix(String str, String suffix) {
+ if (isEmpty(str) || isEmpty(suffix)) {
+ return str;
+ }
+
+ if (str.endsWith(suffix)) {
+ return str.substring(0, str.length() - suffix.length());
+ }
+ return str;
+ }
+
+ /**
+ * 当前时间
+ *
+ * @author stylefeng
+ * @Date 2017/5/7 21:56
+ */
+ public static String currentTime() {
+ return DateUtil.getTime();
+ }
+
+
+
+ /**
+ * 判断是否是windows操作系统
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:34
+ */
+ public static Boolean isWinOs() {
+ String os = System.getProperty("os.name");
+ if (os.toLowerCase().startsWith("win")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 获取临时目录
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:35
+ */
+ public static String getTempPath() {
+ return System.getProperty("java.io.tmpdir");
+ }
+
+ /**
+ * 把一个数转化为int
+ *
+ * @author fengshuonan
+ * @Date 2017/11/15 下午11:10
+ */
+ public static Integer toInt(Object val) {
+ if (val instanceof Double) {
+ BigDecimal bigDecimal = new BigDecimal((Double) val);
+ return bigDecimal.intValue();
+ } else {
+ return Integer.valueOf(val.toString());
+ }
+
+ }
+
+ /**
+ * 获取项目路径
+ */
+ public static String getWebRootPath(String filePath) {
+ try {
+ String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
+ path = path.replace("/WEB-INF/classes/", "");
+ path = path.replace("/target/classes/", "");
+ path = path.replace("file:/", "");
+ if (ToolUtil.isEmpty(filePath)) {
+ return path;
+ } else {
+ return path + "/" + filePath;
+ }
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 获取文件后缀名 不包含点
+ */
+ public static String getFileSuffix(String fileWholeName) {
+ if (ToolUtil.isEmpty(fileWholeName)) {
+ return "none";
+ }
+ int lastIndexOf = fileWholeName.lastIndexOf(".");
+ return fileWholeName.substring(lastIndexOf + 1);
+ }
+}
\ No newline at end of file
diff --git a/cloud-server-course/src/main/resources/mapper/TCourseMapper.xml b/cloud-server-course/src/main/resources/mapper/TCourseMapper.xml
new file mode 100644
index 0000000..c5ebed2
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/TCourseMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TCourseMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TCourse">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="type" property="type" />
+ <result column="introduce" property="introduce" />
+ <result column="coverDrawing" property="coverDrawing" />
+ <result column="introductionDrawing" property="introductionDrawing" />
+ <result column="courseVideo" property="courseVideo" />
+ <result column="state" property="state" />
+ <result column="insertTime" property="insertTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml
new file mode 100644
index 0000000..44f2b90
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TCoursePackageDiscountMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TCoursePackageDiscount">
+ <id column="id" property="id" />
+ <result column="coursePackageId" property="coursePackageId" />
+ <result column="type" property="type" />
+ <result column="content" property="content" />
+ <result column="auditStatus" property="auditStatus" />
+ <result column="auditUserId" property="auditUserId" />
+ <result column="auditRemark" property="auditRemark" />
+ <result column="insertTime" property="insertTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
new file mode 100644
index 0000000..068aba2
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TCoursePackageMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TCoursePackage">
+ <id column="id" property="id" />
+ <result column="province" property="province" />
+ <result column="provinceCode" property="provinceCode" />
+ <result column="city" property="city" />
+ <result column="cityCode" property="cityCode" />
+ <result column="storeId" property="storeId" />
+ <result column="coursePackageTypeId" property="coursePackageTypeId" />
+ <result column="name" property="name" />
+ <result column="siteId" property="siteId" />
+ <result column="coachId" property="coachId" />
+ <result column="maxSubscribeNumber" property="maxSubscribeNumber" />
+ <result column="classStartTime" property="classStartTime" />
+ <result column="classEndTime" property="classEndTime" />
+ <result column="classWeeks" property="classWeeks" />
+ <result column="coverDrawing" property="coverDrawing" />
+ <result column="detailDrawing" property="detailDrawing" />
+ <result column="introduceDrawing" property="introduceDrawing" />
+ <result column="sort" property="sort" />
+ <result column="payType" property="payType" />
+ <result column="validDays" property="validDays" />
+ <result column="courseId" property="courseId" />
+ <result column="introduce" property="introduce" />
+ <result column="integral" property="integral" />
+ <result column="status" property="status" />
+ <result column="auditStatus" property="auditStatus" />
+ <result column="auditUserId" property="auditUserId" />
+ <result column="authRemark" property="authRemark" />
+ <result column="state" property="state" />
+ <result column="insertTime" property="insertTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
new file mode 100644
index 0000000..fa1aab4
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TCoursePackagePaymentMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TCoursePackagePayment">
+ <id column="id" property="id" />
+ <result column="appUserId" property="appUserId" />
+ <result column="studentId" property="studentId" />
+ <result column="coursePackageId" property="coursePackageId" />
+ <result column="payType" property="payType" />
+ <result column="classHours" property="classHours" />
+ <result column="cashPayment" property="cashPayment" />
+ <result column="playPaiCoin" property="playPaiCoin" />
+ <result column="totalClassHours" property="totalClassHours" />
+ <result column="laveClassHours" property="laveClassHours" />
+ <result column="absencesNumber" property="absencesNumber" />
+ <result column="payUserType" property="payUserType" />
+ <result column="payStatus" property="payStatus" />
+ <result column="orderNumber" property="orderNumber" />
+ <result column="payUserId" property="payUserId" />
+ <result column="status" property="status" />
+ <result column="withdrawalTime" property="withdrawalTime" />
+ <result column="certificate" property="certificate" />
+ <result column="state" property="state" />
+ <result column="insertTime" property="insertTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageTypeMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageTypeMapper.xml
new file mode 100644
index 0000000..77a8d6a
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageTypeMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TCoursePackageTypeMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TCoursePackageType">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="state" property="state" />
+ <result column="insertTime" property="insertTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cloud-server-other/pom.xml b/cloud-server-other/pom.xml
index fa1bdef..92e86ad 100644
--- a/cloud-server-other/pom.xml
+++ b/cloud-server-other/pom.xml
@@ -75,6 +75,44 @@
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
+
+
+ <!-- mybatis generertor-->
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatisplus-spring-boot-starter</artifactId>
+ <version>1.0.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus</artifactId>
+ <version>3.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.baomidou</groupId>
+ <artifactId>mybatis-plus-generate</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>1.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.30</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-jpa</artifactId>
+ <version>1.11.4.RELEASE</version>
+ </dependency>
+
</dependencies>
<build>
diff --git a/cloud-server-other/src/main/java/com/dsh/app/controller/ImgConfigController.java b/cloud-server-other/src/main/java/com/dsh/app/controller/ImgConfigController.java
new file mode 100644
index 0000000..942f910
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/controller/ImgConfigController.java
@@ -0,0 +1,45 @@
+package com.dsh.app.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.dsh.app.entity.TImgConfig;
+import com.dsh.app.service.TImgConfigService;
+import com.dsh.other.util.ResultUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 图片配置控制器
+ */
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("")
+public class ImgConfigController {
+
+ private Logger logger = LoggerFactory.getLogger("business-log");
+
+
+ @Autowired
+ private TImgConfigService imgConfigService;
+
+
+ /**
+ * 获取 没有学员信息的图片配置
+ */
+ @PostMapping("/imgConfig/getNoneStu")
+ public List<TImgConfig> getDriver(){
+ return imgConfigService.selectList(new EntityWrapper<TImgConfig>()
+ .eq("position", 1));
+ }
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/app/entity/TImgConfig.java b/cloud-server-other/src/main/java/com/dsh/app/entity/TImgConfig.java
new file mode 100644
index 0000000..b86c73c
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/entity/TImgConfig.java
@@ -0,0 +1,53 @@
+package com.dsh.app.entity;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.Version;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 图片配置
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_img_config")
+public class TImgConfig extends Model<TImgConfig> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 位置(1=无学员,2=成为会员,3=我的券包,4=线上商城,5=本周福利,6=今日免费)
+ */
+ private Integer position;
+ /**
+ * 图片配置JSON
+ */
+ private String content;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/app/feignclient/ImgConfigClient.java b/cloud-server-other/src/main/java/com/dsh/app/feignclient/ImgConfigClient.java
new file mode 100644
index 0000000..be547e7
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/feignclient/ImgConfigClient.java
@@ -0,0 +1,14 @@
+package com.dsh.app.feignclient;
+
+import com.dsh.app.entity.TImgConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-other")
+public interface ImgConfigClient {
+
+ @PostMapping("/imgConfig/getNoneStu")
+ List<TImgConfig> getNoneStuImgs();
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/app/mapper/TImgConfigMapper.java b/cloud-server-other/src/main/java/com/dsh/app/mapper/TImgConfigMapper.java
new file mode 100644
index 0000000..485819f
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/mapper/TImgConfigMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.app.mapper;
+
+import com.dsh.app.entity.TImgConfig;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 图片配置 Mapper 接口
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TImgConfigMapper extends BaseMapper<TImgConfig> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/app/service/TImgConfigService.java b/cloud-server-other/src/main/java/com/dsh/app/service/TImgConfigService.java
new file mode 100644
index 0000000..58a02e2
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/service/TImgConfigService.java
@@ -0,0 +1,16 @@
+package com.dsh.app.service;
+
+import com.dsh.app.entity.TImgConfig;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ * 图片配置 服务类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+public interface TImgConfigService extends IService<TImgConfig> {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/app/service/impl/TImgConfigServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/app/service/impl/TImgConfigServiceImpl.java
new file mode 100644
index 0000000..a200e01
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/app/service/impl/TImgConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.app.service.impl;
+
+import com.dsh.app.entity.TImgConfig;
+import com.dsh.app.mapper.TImgConfigMapper;
+import com.dsh.app.service.TImgConfigService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 图片配置 服务实现类
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Service
+public class TImgConfigServiceImpl extends ServiceImpl<TImgConfigMapper, TImgConfig> implements TImgConfigService {
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/CodeGeneration.java b/cloud-server-other/src/main/java/com/dsh/other/util/CodeGeneration.java
new file mode 100644
index 0000000..07ab976
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/CodeGeneration.java
@@ -0,0 +1,88 @@
+package com.dsh.other.util;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.DbType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+public class CodeGeneration {
+
+ public static void gen(String tableName){
+
+ //C:\Users\linla\Desktop\project02\guns-admin
+ //项目目录
+ //
+ String projectPath = "/Users/java/IdeaProjects/PlayPai_demo/cloud-server-other/src/main/java/"; //System.getProperty("user.dir");
+ //String projectPath =System.getProperty("user.dir");
+ AutoGenerator mpg = new AutoGenerator();
+ //全局配置
+ GlobalConfig gc = new GlobalConfig();
+ gc.setOutputDir(projectPath );
+ gc.setFileOverride(true);
+ gc.setActiveRecord(true);//不需要ActiveRecord特性的请改为false
+ gc.setEnableCache(false);//XML二级缓存
+ gc.setBaseResultMap(true);//XML ResultMap
+ gc.setBaseColumnList(false);//XML columList
+ gc.setIdType(IdType.UUID);
+ gc.setAuthor("administrator");//作者
+ gc.setOpen(false);//生成完成不打开文件夹
+
+ //自定义文件命名,注意%s 会自动填充表实体属性
+ gc.setServiceName("%sService");
+ gc.setServiceImplName("%sServiceImpl");
+ gc.setMapperName("%sMapper");
+ gc.setXmlName("%sMapper");
+ gc.setControllerName("%sController");
+ mpg.setGlobalConfig(gc);
+
+ //数据源配置
+ DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setDbType(DbType.MYSQL);
+// dsc.setUrl("jdbc:mysql://192.168.110.80:3306/playpai_account?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setUrl("jdbc:mysql://127.0.0.1:3306/playpai_other?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+ dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+ dsc.setUsername("root");
+ dsc.setPassword("earl9096");
+ mpg.setDataSource(dsc);
+
+ //数据库表配置
+ StrategyConfig strategy = new StrategyConfig();
+ strategy.setTablePrefix(new String[]{});//此处可以修改您的表前缀
+ strategy.setNaming(NamingStrategy.underline_to_camel);//表名生成策略
+ strategy.setInclude(new String[]{tableName});//需要生成的表
+ strategy.setRestControllerStyle(true);
+ strategy.setEntityLombokModel(true);
+ strategy.setSuperServiceClass(null);
+ strategy.setSuperServiceImplClass(null);
+ strategy.setSuperMapperClass(null);
+ mpg.setStrategy(strategy);
+
+ //模板配置
+ TemplateConfig template=new TemplateConfig();
+ //不生成controller
+ template.setController(null);
+ //不生成xml文件
+ //template.setXml(null);
+ mpg.setTemplate(template);
+ //包配置
+ PackageConfig pc = new PackageConfig();
+ pc.setParent("com.dsh.app");
+ pc.setEntity("entity");
+ pc.setService("service");
+ pc.setServiceImpl("service.impl");
+ pc.setMapper("mapper");
+
+ pc.setXml("mapper.xml");
+
+// pc.setController("controller.member");
+ mpg.setPackageInfo(pc);
+
+ //执行生成
+ mpg.execute();
+ }
+
+ public static void main(String[] args) {
+ gen("t_img_config");
+ }
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/DateUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/DateUtil.java
index d23cc1b..38365c2 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/DateUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/DateUtil.java
@@ -329,4 +329,37 @@
return dt1.getTime();
}
+
+ /**
+ * 计算年龄
+ * @param birthDate
+ * @return
+ */
+ public static int age(Date birthDate) {
+ // 当前日历
+ Calendar nowCalendar = Calendar.getInstance();
+ // 生日大于当前日期
+ if (nowCalendar.before(birthDate)) {
+ throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
+ }
+ // 当前年月日
+ int yearNow = nowCalendar.get(Calendar.YEAR);
+ int monthNow = nowCalendar.get(Calendar.MONTH);
+ int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
+ // 出生日期年月日
+ Calendar birthCalendar = Calendar.getInstance();
+ birthCalendar.setTime(birthDate);
+ int yearBirth = birthCalendar.get(Calendar.YEAR);
+ int monthBirth = birthCalendar.get(Calendar.MONTH);
+ int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
+ // 粗计算年龄
+ int age = yearNow - yearBirth;
+ // 当前月份小于出生月份年龄减一
+ if (monthNow < monthBirth) { age--; }
+ // 当前月份等于出生月份,日小于生日年龄减一
+ else if (monthNow == monthBirth && dayNow < dayBirth) { age--; }
+ // 返回年龄值
+ return age;
+ }
+
}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/ToolUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/ToolUtil.java
new file mode 100644
index 0000000..d52d319
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/ToolUtil.java
@@ -0,0 +1,542 @@
+/**
+ * Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.dsh.other.util;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Array;
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.util.*;
+import java.util.Map.Entry;
+
+/**
+ * 高频方法集合类
+ */
+public class ToolUtil {
+
+ /**
+ * 获取随机位数的字符串
+ *
+ * @author fengshuonan
+ * @Date 2017/8/24 14:09
+ */
+ public static String getRandomString(int length) {
+ String base = "abcdefghijklmnopqrstuvwxyz0123456789";
+ Random random = new Random();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 判断一个对象是否是时间类型
+ *
+ * @author stylefeng
+ * @Date 2017/4/18 12:55
+ */
+ public static String dateType(Object o) {
+ if (o instanceof Date) {
+ return DateUtil.getDay((Date) o);
+ } else {
+ return o.toString();
+ }
+ }
+
+ /**
+ * 获取异常的具体信息
+ *
+ * @author fengshuonan
+ * @Date 2017/3/30 9:21
+ * @version 2.0
+ */
+ public static String getExceptionMsg(Exception e) {
+ StringWriter sw = new StringWriter();
+ try {
+ e.printStackTrace(new PrintWriter(sw));
+ } finally {
+ try {
+ sw.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ return sw.getBuffer().toString().replaceAll("\\$", "T");
+ }
+
+ /**
+ * 比较两个对象是否相等。<br>
+ * 相同的条件有两个,满足其一即可:<br>
+ * 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
+ *
+ * @param obj1 对象1
+ * @param obj2 对象2
+ * @return 是否相等
+ */
+ public static boolean equals(Object obj1, Object obj2) {
+ return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
+ }
+
+ /**
+ * 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
+ *
+ * @param obj 被计算长度的对象
+ * @return 长度
+ */
+ public static int length(Object obj) {
+ if (obj == null) {
+ return 0;
+ }
+ if (obj instanceof CharSequence) {
+ return ((CharSequence) obj).length();
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).size();
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).size();
+ }
+
+ int count;
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ count = 0;
+ while (iter.hasNext()) {
+ count++;
+ iter.next();
+ }
+ return count;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ count = 0;
+ while (enumeration.hasMoreElements()) {
+ count++;
+ enumeration.nextElement();
+ }
+ return count;
+ }
+ if (obj.getClass().isArray() == true) {
+ return Array.getLength(obj);
+ }
+ return -1;
+ }
+
+ /**
+ * 对象中是否包含元素
+ *
+ * @param obj 对象
+ * @param element 元素
+ * @return 是否包含
+ */
+ public static boolean contains(Object obj, Object element) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj instanceof String) {
+ if (element == null) {
+ return false;
+ }
+ return ((String) obj).contains(element.toString());
+ }
+ if (obj instanceof Collection) {
+ return ((Collection<?>) obj).contains(element);
+ }
+ if (obj instanceof Map) {
+ return ((Map<?, ?>) obj).values().contains(element);
+ }
+
+ if (obj instanceof Iterator) {
+ Iterator<?> iter = (Iterator<?>) obj;
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj instanceof Enumeration) {
+ Enumeration<?> enumeration = (Enumeration<?>) obj;
+ while (enumeration.hasMoreElements()) {
+ Object o = enumeration.nextElement();
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ if (obj.getClass().isArray() == true) {
+ int len = Array.getLength(obj);
+ for (int i = 0; i < len; i++) {
+ Object o = Array.get(obj, i);
+ if (equals(o, element)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象是否不为空(新增)
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ public static boolean isNotEmpty(Object o) {
+ return !isEmpty(o);
+ }
+
+ /**
+ * 对象是否为空
+ *
+ * @param o String,List,Map,Object[],int[],long[]
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static boolean isEmpty(Object o) {
+ if (o == null) {
+ return true;
+ }
+ if (o instanceof String) {
+ if (o.toString().trim().equals("")) {
+ return true;
+ }
+ } else if (o instanceof List) {
+ if (((List) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Map) {
+ if (((Map) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Set) {
+ if (((Set) o).size() == 0) {
+ return true;
+ }
+ } else if (o instanceof Object[]) {
+ if (((Object[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof int[]) {
+ if (((int[]) o).length == 0) {
+ return true;
+ }
+ } else if (o instanceof long[]) {
+ if (((long[]) o).length == 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否存在 Empty Object
+ *
+ * @param os 对象组
+ * @return
+ */
+ public static boolean isOneEmpty(Object... os) {
+ for (Object o : os) {
+ if (isEmpty(o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 对象组中是否全是 Empty Object
+ *
+ * @param os
+ * @return
+ */
+ public static boolean isAllEmpty(Object... os) {
+ for (Object o : os) {
+ if (!isEmpty(o)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 是否为数字
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isNum(Object obj) {
+ try {
+ Integer.parseInt(obj.toString());
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * 如果为空, 则调用默认值
+ *
+ * @param str
+ * @return
+ */
+ public static Object getValue(Object str, Object defaultValue) {
+ if (isEmpty(str)) {
+ return defaultValue;
+ }
+ return str;
+ }
+
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @return
+ */
+ public static String toStr(Object str) {
+ return toStr(str, "");
+ }
+
+ /**
+ * 强转->string,并去掉多余空格
+ *
+ * @param str
+ * @param defaultValue
+ * @return
+ */
+ public static String toStr(Object str, String defaultValue) {
+ if (null == str) {
+ return defaultValue;
+ }
+ return str.toString().trim();
+ }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @return
+ */
+// public static int toInt(Object value) {
+// return toInt(value, -1);
+// }
+
+ /**
+ * 强转->int
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static int toInt(Object value, int defaultValue) {
+// return Convert.toInt(value, defaultValue);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @return
+ */
+// public static long toLong(Object value) {
+// return toLong(value, -1);
+// }
+
+ /**
+ * 强转->long
+ *
+ * @param obj
+ * @param defaultValue
+ * @return
+ */
+// public static long toLong(Object value, long defaultValue) {
+// return Convert.toLong(value, defaultValue);
+// }
+//
+// public static String encodeUrl(String url) {
+// return URLKit.encode(url, CharsetKit.UTF_8);
+// }
+//
+// public static String decodeUrl(String url) {
+// return URLKit.decode(url, CharsetKit.UTF_8);
+// }
+
+ /**
+ * map的key转为小写
+ *
+ * @param map
+ * @return Map<String , Object>
+ */
+ public static Map<String, Object> caseInsensitiveMap(Map<String, Object> map) {
+ Map<String, Object> tempMap = new HashMap<>();
+ for (String key : map.keySet()) {
+ tempMap.put(key.toLowerCase(), map.get(key));
+ }
+ return tempMap;
+ }
+
+ /**
+ * 获取map中第一个数据值
+ *
+ * @param <K> Key的类型
+ * @param <V> Value的类型
+ * @param map 数据源
+ * @return 返回的值
+ */
+ public static <K, V> V getFirstOrNull(Map<K, V> map) {
+ V obj = null;
+ for (Entry<K, V> entry : map.entrySet()) {
+ obj = entry.getValue();
+ if (obj != null) {
+ break;
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static StringBuilder builder(String... strs) {
+ final StringBuilder sb = new StringBuilder();
+ for (String str : strs) {
+ sb.append(str);
+ }
+ return sb;
+ }
+
+ /**
+ * 创建StringBuilder对象
+ *
+ * @return StringBuilder对象
+ */
+ public static void builder(StringBuilder sb, String... strs) {
+ for (String str : strs) {
+ sb.append(str);
+ }
+ }
+
+ /**
+ * 去掉指定后缀
+ *
+ * @param str 字符串
+ * @param suffix 后缀
+ * @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
+ */
+ public static String removeSuffix(String str, String suffix) {
+ if (isEmpty(str) || isEmpty(suffix)) {
+ return str;
+ }
+
+ if (str.endsWith(suffix)) {
+ return str.substring(0, str.length() - suffix.length());
+ }
+ return str;
+ }
+
+ /**
+ * 当前时间
+ *
+ * @author stylefeng
+ * @Date 2017/5/7 21:56
+ */
+ public static String currentTime() {
+ return DateUtil.getTime();
+ }
+
+
+
+ /**
+ * 判断是否是windows操作系统
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:34
+ */
+ public static Boolean isWinOs() {
+ String os = System.getProperty("os.name");
+ if (os.toLowerCase().startsWith("win")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 获取临时目录
+ *
+ * @author stylefeng
+ * @Date 2017/5/24 22:35
+ */
+ public static String getTempPath() {
+ return System.getProperty("java.io.tmpdir");
+ }
+
+ /**
+ * 把一个数转化为int
+ *
+ * @author fengshuonan
+ * @Date 2017/11/15 下午11:10
+ */
+ public static Integer toInt(Object val) {
+ if (val instanceof Double) {
+ BigDecimal bigDecimal = new BigDecimal((Double) val);
+ return bigDecimal.intValue();
+ } else {
+ return Integer.valueOf(val.toString());
+ }
+
+ }
+
+ /**
+ * 获取项目路径
+ */
+ public static String getWebRootPath(String filePath) {
+ try {
+ String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
+ path = path.replace("/WEB-INF/classes/", "");
+ path = path.replace("/target/classes/", "");
+ path = path.replace("file:/", "");
+ if (ToolUtil.isEmpty(filePath)) {
+ return path;
+ } else {
+ return path + "/" + filePath;
+ }
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 获取文件后缀名 不包含点
+ */
+ public static String getFileSuffix(String fileWholeName) {
+ if (ToolUtil.isEmpty(fileWholeName)) {
+ return "none";
+ }
+ int lastIndexOf = fileWholeName.lastIndexOf(".");
+ return fileWholeName.substring(lastIndexOf + 1);
+ }
+}
\ No newline at end of file
diff --git a/cloud-server-other/src/main/resources/mapper/TImgConfigMapper.xml b/cloud-server-other/src/main/resources/mapper/TImgConfigMapper.xml
new file mode 100644
index 0000000..5a0a7c2
--- /dev/null
+++ b/cloud-server-other/src/main/resources/mapper/TImgConfigMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.app.mapper.TImgConfigMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.dsh.app.entity.TImgConfig">
+ <id column="id" property="id" />
+ <result column="position" property="position" />
+ <result column="content" property="content" />
+ </resultMap>
+
+</mapper>
--
Gitblit v1.7.1