diff --git a/.vscode/settings.json b/.vscode/settings.json index e0f15db2..0be1c0c6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "java.configuration.updateBuildConfiguration": "automatic" + "java.configuration.updateBuildConfiguration": "automatic", + "java.compile.nullAnalysis.mode": "automatic" } \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/constant/EntityLinkConst.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/constant/EntityLinkConst.java index bc31381e..1bf7f462 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/constant/EntityLinkConst.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/constant/EntityLinkConst.java @@ -33,6 +33,16 @@ public final class EntityLinkConst { public static final String HOMEWORK = "homework"; // 考试(对应考试表) public static final String EXAM = "exam"; + // 课程 + public static final String COURSE = "course"; + } + + /** 资源类型 0:视频,1:图片,2:文档 */ + public static final class ResourceType { + private ResourceType() {} + public static final int VIDEO = 0; + public static final int IMAGE = 1; + public static final int DOCUMENT = 2; } } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ActivityBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ActivityBizController.java new file mode 100644 index 00000000..18017322 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ActivityBizController.java @@ -0,0 +1,33 @@ +package org.jeecg.modules.biz.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.config.shiro.IgnoreAuth; +import org.jeecg.modules.biz.service.ActivityBizService; +import org.jeecg.modules.gen.activity.entity.Activity; + +@RestController +@RequestMapping("/biz/activity") +@Tag(name = "活动") +@Slf4j +public class ActivityBizController { + + @Autowired + private ActivityBizService activityBizService; + + @GetMapping("/list") + @Operation(summary = "查询活动列表") + @IgnoreAuth + public Result> list() { + return Result.OK(activityBizService.getActivityList()); + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/CourseBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/CourseBizController.java index a1d00cf8..3e0fe24e 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/CourseBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/CourseBizController.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.jeecg.common.system.api.ISysBaseAPI; +import org.jeecg.modules.biz.dto.TeacherInfo; import org.jeecg.modules.biz.service.CourseBizService; import org.jeecg.modules.gen.course.entity.Course; import org.jeecg.modules.gen.coursecategory.entity.CourseCategory; @@ -110,6 +111,14 @@ public class CourseBizController { return Result.OK(list); } + @GetMapping("/{courseId}/teachers") + @Operation(summary = "查询课程的授课教师") + @IgnoreAuth + public Result> queryTeacherList(@PathVariable(value = "courseId") String courseId) { + List list = courseBizService.getCourseTeacherList(courseId); + return Result.OK(list); + } + @GetMapping("/test") @IgnoreAuth public Result test() { diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ResourceBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ResourceBizController.java index b812252f..e5791372 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ResourceBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/ResourceBizController.java @@ -5,10 +5,16 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import java.util.ArrayList; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import org.jeecg.common.api.vo.Result; @@ -16,7 +22,10 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.config.shiro.IgnoreAuth; +import org.jeecg.modules.biz.constant.EntityLinkConst; +import org.jeecg.modules.biz.service.EntityLinkBizService; import org.jeecg.modules.biz.service.ResourceBizService; +import org.jeecg.modules.gen.resource.entity.Resource; import io.swagger.v3.oas.annotations.Operation; @@ -29,6 +38,47 @@ public class ResourceBizController { @Autowired private ResourceBizService resourceBizService; + @Autowired + private EntityLinkBizService entityLinkBizService; + + @GetMapping("/feature") + @Operation(summary = "查询精品资源") + @IgnoreAuth + public Result> queryFeatureResource() { + List list = resourceBizService.list(new QueryWrapper().eq("iz_featured", 1)); + return Result.OK(list); + } + + @GetMapping("/video") + @Operation(summary = "按课程分类查询视频资源") + @IgnoreAuth + public Result> queryVideoResource(@RequestParam("categoryId") String courseCategoryId) { + List targetIds = entityLinkBizService.listTargetIds(EntityLinkConst.SourceType.COURSE_CATEGORY, courseCategoryId, EntityLinkConst.TargetType.RESOURCE); + List list = new ArrayList<>(); + for (String targetId : targetIds) { + Resource resource = resourceBizService.getById(targetId); + if (resource.getType() == EntityLinkConst.ResourceType.VIDEO) { + list.add(resource); + } + } + return Result.OK(list); + } + + @GetMapping("/image") + @Operation(summary = "按课程分类查询图片资源") + @IgnoreAuth + public Result> queryImageResource(@RequestParam("categoryId") String courseCategoryId) { + List targetIds = entityLinkBizService.listTargetIds(EntityLinkConst.SourceType.COURSE_CATEGORY, courseCategoryId, EntityLinkConst.TargetType.RESOURCE); + List list = new ArrayList<>(); + for (String targetId : targetIds) { + Resource resource = resourceBizService.getById(targetId); + if (resource.getType() == EntityLinkConst.ResourceType.IMAGE) { + list.add(resource); + } + } + return Result.OK(list); + } + @PostMapping("/upload") @Operation(summary = "课程视频文件上传", description = "课程视频文件上传,返回m3u8文件地址") @IgnoreAuth diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java index 1a2ba246..55cb299d 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java @@ -5,14 +5,19 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.jeecg.modules.biz.dto.TeacherInfo; +import org.jeecg.modules.biz.service.UserBizService; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.*; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -20,7 +25,6 @@ import javax.servlet.http.HttpServletRequest; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.util.JwtUtil; -import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.RedisUtil; @@ -38,6 +42,8 @@ public class UserBizController { private ISysUserService sysUserService; @Autowired private RedisUtil redisUtil; + @Autowired + private UserBizService userBizService; @PostMapping("/login") @Operation(summary = "用户登录") @@ -116,4 +122,12 @@ public class UserBizController { // 10分钟,一分钟为60s redisUtil.set(key, ++val, 600); } + + @GetMapping("/all_teachers") + @Operation(summary = "查询师资力量", description = "categoryId为all则查询全部") + @IgnoreAuth + public Result> queryAllTeachers(@RequestParam("categoryId") String categoryId) { + List list = userBizService.queryAllTeachers(categoryId); + return Result.OK(list); + } } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java new file mode 100644 index 00000000..e85afa3c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/dto/TeacherInfo.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.biz.dto; + +import lombok.Data; + +@Data +public class TeacherInfo { + private String id; + private String name; + private String avatar; + private String title; + private String tag; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/ActivityBizService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/ActivityBizService.java new file mode 100644 index 00000000..1a77d753 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/ActivityBizService.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.biz.service; + +import org.jeecg.modules.gen.activity.entity.Activity; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface ActivityBizService extends IService { + /** + * 查询活动列表 + * @return + */ + List getActivityList(); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/CourseBizService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/CourseBizService.java index 828bddc5..c16e726a 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/CourseBizService.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/CourseBizService.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; +import org.jeecg.modules.biz.dto.TeacherInfo; import org.jeecg.modules.gen.course.entity.Course; import org.jeecg.modules.gen.coursecategory.entity.CourseCategory; import org.jeecg.modules.gen.coursesection.entity.CourseSection; @@ -55,6 +56,13 @@ public interface CourseBizService extends IService { * @return 指定类型的列表 */ List getCourseSectionDetail(Integer type, String sectionId, Class clazz); + + /** + * 查询课程的授课教师 + * @param courseId + * @return + */ + List getCourseTeacherList(String courseId); } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/UserBizService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/UserBizService.java new file mode 100644 index 00000000..3b660ba2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/UserBizService.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.biz.service; + +import java.util.List; + +import org.jeecg.modules.biz.dto.TeacherInfo; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; + +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserBizService extends IService { + /** + * 师资力量 + * @return + */ + List queryAllTeachers(String categoryId); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/ActivityBizServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/ActivityBizServiceImpl.java new file mode 100644 index 00000000..af37e6c7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/ActivityBizServiceImpl.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.biz.service.impl; + +import java.util.List; + +import org.jeecg.modules.biz.service.ActivityBizService; +import org.jeecg.modules.gen.activity.entity.Activity; +import org.jeecg.modules.gen.activity.mapper.ActivityMapper; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +@Service +public class ActivityBizServiceImpl extends ServiceImpl implements ActivityBizService { + + @Override + public List getActivityList() { + return baseMapper.selectList(null); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/CourseBizServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/CourseBizServiceImpl.java index c88ac20b..3ec179c6 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/CourseBizServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/CourseBizServiceImpl.java @@ -6,6 +6,7 @@ import org.jeecg.common.util.MinioUtil; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oss.OssBootUtil; import org.jeecg.modules.biz.constant.EntityLinkConst; +import org.jeecg.modules.biz.dto.TeacherInfo; import org.jeecg.modules.biz.service.CourseBizService; import org.jeecg.modules.biz.service.EntityLinkBizService; import org.jeecg.modules.gen.course.entity.Course; @@ -14,7 +15,13 @@ import org.jeecg.modules.gen.coursecategory.entity.CourseCategory; import org.jeecg.modules.gen.coursecategory.mapper.CourseCategoryMapper; import org.jeecg.modules.gen.coursesection.entity.CourseSection; import org.jeecg.modules.gen.coursesection.mapper.CourseSectionMapper; +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import org.jeecg.modules.gen.courseteacher.mapper.CourseTeacherMapper; import org.jeecg.modules.gen.resource.mapper.ResourceMapper; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -51,6 +58,15 @@ public class CourseBizServiceImpl extends ServiceImpl impl @Autowired private ResourceMapper resourceMapper; + @Autowired + private CourseTeacherMapper courseTeacherMapper; + + @Autowired + private UserInfoMapper userInfoMapper; + + @Autowired + private SysUserMapper sysUserMapper; + @Override public List getCourseSectionDetail(Integer type, String sectionId, Class clazz) { // 1. 查询章节是否存在 @@ -223,6 +239,26 @@ public class CourseBizServiceImpl extends ServiceImpl impl file.delete(); } catch (Exception ignored) {} } + + @Override + public List getCourseTeacherList(String courseId) { + List list = courseTeacherMapper.selectList(new QueryWrapper().eq("course_id", courseId)); + + List result = new ArrayList<>(); + for (CourseTeacher item : list) { + UserInfo userInfo = userInfoMapper.selectOne(new QueryWrapper().eq("user_id", item.getTeacherId())); + SysUser sysUser = sysUserMapper.selectById(item.getTeacherId()); + + TeacherInfo teacherInfo = new TeacherInfo(); + teacherInfo.setId(item.getTeacherId()); + teacherInfo.setName(sysUser.getRealname()); + teacherInfo.setAvatar(sysUser.getAvatar()); + teacherInfo.setTitle(userInfo.getTitle()); + teacherInfo.setTag(userInfo.getTag()); + result.add(teacherInfo); + } + return result; + } } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/UserBizServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/UserBizServiceImpl.java new file mode 100644 index 00000000..783a155a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/service/impl/UserBizServiceImpl.java @@ -0,0 +1,92 @@ +package org.jeecg.modules.biz.service.impl; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.jeecg.modules.biz.constant.EntityLinkConst; +import org.jeecg.modules.biz.dto.TeacherInfo; +import org.jeecg.modules.biz.service.EntityLinkBizService; +import org.jeecg.modules.biz.service.UserBizService; +import org.jeecg.modules.gen.course.entity.Course; +import org.jeecg.modules.gen.course.mapper.CourseMapper; +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import org.jeecg.modules.gen.courseteacher.mapper.CourseTeacherMapper; +import org.jeecg.modules.gen.entitylink.mapper.EntityLinkMapper; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.mapper.SysUserMapper; +import org.springframework.beans.factory.annotation.Autowired; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class UserBizServiceImpl extends ServiceImpl implements UserBizService { + + @Autowired + private CourseMapper courseMapper; + @Autowired + private EntityLinkMapper entityLinkMapper; + @Autowired + private EntityLinkBizService entityLinkBizService; + @Autowired + private CourseTeacherMapper courseTeacherMapper; + @Autowired + private UserInfoMapper userInfoMapper; + @Autowired + private SysUserMapper sysUserMapper; + + @Override + public List queryAllTeachers(String categoryId) { + // categoryId为all则查询全部 + // TODO 存入redis缓存 + + // 1 根据课程分类,查询该分类下的课程; all 则查询全部课程 + // 2 遍历课程,根据课程id查询该课程的授课教师 + // 3 将授课教师信息封装成TeacherInfo对象 + // 4 返回授课教师列表(去重) + + // 1 根据课程分类,查询该分类下的课程 + List courseIds; + if ("all".equals(categoryId)) { + // 查询全部课程 + List courseList = courseMapper.selectList(null); + courseIds = courseList.stream().map(Course::getId).collect(Collectors.toList()); + } else { + courseIds = entityLinkBizService.listTargetIds(EntityLinkConst.SourceType.COURSE_CATEGORY, categoryId, EntityLinkConst.TargetType.COURSE); + } + Set teacherIds = new HashSet<>(); + List result = new ArrayList<>(); + for (String courseId : courseIds) { + // 2 根据课程id查询该课程的授课教师 + List courseTeachers = courseTeacherMapper.selectList(new LambdaQueryWrapper().eq(CourseTeacher::getCourseId, courseId)); + // 3 将授课教师信息封装成TeacherInfo对象 + for (CourseTeacher courseTeacher : courseTeachers) { + // 4 将授课教师信息封装成TeacherInfo对象,去重 + UserInfo userInfo = userInfoMapper.selectOne(new LambdaQueryWrapper().eq(UserInfo::getUserId, courseTeacher.getTeacherId())); + SysUser sysUser = sysUserMapper.selectById(courseTeacher.getTeacherId()); + TeacherInfo teacherInfo = new TeacherInfo(); + teacherInfo.setId(courseTeacher.getTeacherId()); + teacherInfo.setName(sysUser.getRealname()); + teacherInfo.setAvatar(sysUser.getAvatar()); + teacherInfo.setTitle(userInfo.getTitle()); + teacherInfo.setTag(userInfo.getTag()); + if (!teacherIds.contains(courseTeacher.getTeacherId())) { + result.add(teacherInfo); + teacherIds.add(courseTeacher.getTeacherId()); + } + } + } + + return result; + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/controller/ActivityController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/controller/ActivityController.java new file mode 100644 index 00000000..62d5e9c9 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/controller/ActivityController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.gen.activity.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.gen.activity.entity.Activity; +import org.jeecg.modules.gen.activity.service.IActivityService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 活动 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Tag(name="活动") +@RestController +@RequestMapping("/gen/activity/activity") +@Slf4j +public class ActivityController extends JeecgController { + @Autowired + private IActivityService activityService; + + /** + * 分页列表查询 + * + * @param activity + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "活动-分页列表查询") + @Operation(summary="活动-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(Activity activity, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(activity, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = activityService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param activity + * @return + */ + @AutoLog(value = "活动-添加") + @Operation(summary="活动-添加") + @RequiresPermissions("gen.activity:activity:add") + @PostMapping(value = "/add") + public Result add(@RequestBody Activity activity) { + activityService.save(activity); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param activity + * @return + */ + @AutoLog(value = "活动-编辑") + @Operation(summary="活动-编辑") + @RequiresPermissions("gen.activity:activity:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody Activity activity) { + activityService.updateById(activity); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "活动-通过id删除") + @Operation(summary="活动-通过id删除") + @RequiresPermissions("gen.activity:activity:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + activityService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "活动-批量删除") + @Operation(summary="活动-批量删除") + @RequiresPermissions("gen.activity:activity:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.activityService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "活动-通过id查询") + @Operation(summary="活动-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + Activity activity = activityService.getById(id); + if(activity==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(activity); + } + + /** + * 导出excel + * + * @param request + * @param activity + */ + @RequiresPermissions("gen.activity:activity:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, Activity activity) { + return super.exportXls(request, activity, Activity.class, "活动"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("gen.activity:activity:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, Activity.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/entity/Activity.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/entity/Activity.java new file mode 100644 index 00000000..889aa8c4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/entity/Activity.java @@ -0,0 +1,105 @@ +package org.jeecg.modules.gen.activity.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 活动 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Data +@TableName("activity") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="活动") +public class Activity implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**标题*/ + @Excel(name = "标题", width = 15) + @Schema(description = "标题") + private java.lang.String title; + /**介绍*/ + @Excel(name = "介绍", width = 15) + @Schema(description = "介绍") + private java.lang.String introduction; + /**说明图片*/ + @Excel(name = "说明图片", width = 15) + @Schema(description = "说明图片") + private java.lang.String imgs; + /**头图*/ + @Excel(name = "头图", width = 15) + @Schema(description = "头图") + private java.lang.String banner; + /**介绍视频*/ + @Excel(name = "介绍视频", width = 15) + @Schema(description = "介绍视频") + private java.lang.String video; + /**报名人数上限*/ + @Excel(name = "报名人数上限", width = 15) + @Schema(description = "报名人数上限") + private java.lang.Integer maxNum; + /**开始时间*/ + @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "开始时间") + private java.util.Date startTime; + /**结束时间*/ + @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "结束时间") + private java.util.Date endTime; + /**扩展字段*/ + @Excel(name = "扩展字段", width = 15) + @Schema(description = "扩展字段") + private java.lang.String extra; + /**附件*/ + @Excel(name = "附件", width = 15) + @Schema(description = "附件") + private java.lang.String attachment; + /**状态*/ + @Excel(name = "状态", width = 15, dicCode = "course_status") + @Dict(dicCode = "course_status") + @Schema(description = "状态") + private java.lang.String status; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/ActivityMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/ActivityMapper.java new file mode 100644 index 00000000..6b7a8d77 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/ActivityMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.gen.activity.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.gen.activity.entity.Activity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 活动 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface ActivityMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/xml/ActivityMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/xml/ActivityMapper.xml new file mode 100644 index 00000000..78f52b98 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/mapper/xml/ActivityMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/IActivityService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/IActivityService.java new file mode 100644 index 00000000..4e058e38 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/IActivityService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.gen.activity.service; + +import org.jeecg.modules.gen.activity.entity.Activity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 活动 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface IActivityService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/impl/ActivityServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/impl/ActivityServiceImpl.java new file mode 100644 index 00000000..737087a7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/activity/service/impl/ActivityServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.gen.activity.service.impl; + +import org.jeecg.modules.gen.activity.entity.Activity; +import org.jeecg.modules.gen.activity.mapper.ActivityMapper; +import org.jeecg.modules.gen.activity.service.IActivityService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 活动 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Service +public class ActivityServiceImpl extends ServiceImpl implements IActivityService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/controller/CourseTeacherController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/controller/CourseTeacherController.java new file mode 100644 index 00000000..8a4d22e9 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/controller/CourseTeacherController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.gen.courseteacher.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import org.jeecg.modules.gen.courseteacher.service.ICourseTeacherService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Tag(name="授课教师") +@RestController +@RequestMapping("/gen/courseteacher/courseTeacher") +@Slf4j +public class CourseTeacherController extends JeecgController { + @Autowired + private ICourseTeacherService courseTeacherService; + + /** + * 分页列表查询 + * + * @param courseTeacher + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "授课教师-分页列表查询") + @Operation(summary="授课教师-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CourseTeacher courseTeacher, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(courseTeacher, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = courseTeacherService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param courseTeacher + * @return + */ + @AutoLog(value = "授课教师-添加") + @Operation(summary="授课教师-添加") + @RequiresPermissions("gen.courseteacher:course_teacher:add") + @PostMapping(value = "/add") + public Result add(@RequestBody CourseTeacher courseTeacher) { + courseTeacherService.save(courseTeacher); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param courseTeacher + * @return + */ + @AutoLog(value = "授课教师-编辑") + @Operation(summary="授课教师-编辑") + @RequiresPermissions("gen.courseteacher:course_teacher:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CourseTeacher courseTeacher) { + courseTeacherService.updateById(courseTeacher); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "授课教师-通过id删除") + @Operation(summary="授课教师-通过id删除") + @RequiresPermissions("gen.courseteacher:course_teacher:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + courseTeacherService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "授课教师-批量删除") + @Operation(summary="授课教师-批量删除") + @RequiresPermissions("gen.courseteacher:course_teacher:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.courseTeacherService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "授课教师-通过id查询") + @Operation(summary="授课教师-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CourseTeacher courseTeacher = courseTeacherService.getById(id); + if(courseTeacher==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(courseTeacher); + } + + /** + * 导出excel + * + * @param request + * @param courseTeacher + */ + @RequiresPermissions("gen.courseteacher:course_teacher:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CourseTeacher courseTeacher) { + return super.exportXls(request, courseTeacher, CourseTeacher.class, "授课教师"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("gen.courseteacher:course_teacher:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CourseTeacher.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/entity/CourseTeacher.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/entity/CourseTeacher.java new file mode 100644 index 00000000..497763aa --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/entity/CourseTeacher.java @@ -0,0 +1,73 @@ +package org.jeecg.modules.gen.courseteacher.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Data +@TableName("course_teacher") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="授课教师") +public class CourseTeacher implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**课程id*/ + @Excel(name = "课程id", width = 15) + @Schema(description = "课程id") + private java.lang.String courseId; + /**教师id*/ + @Excel(name = "教师id", width = 15) + @Schema(description = "教师id") + private java.lang.String teacherId; + /**授课角色*/ + @Excel(name = "授课角色", width = 15, dicCode = "course_role") + @Dict(dicCode = "course_role") + @Schema(description = "授课角色") + private java.lang.String role; + /**显示顺序*/ + @Excel(name = "显示顺序", width = 15) + @Schema(description = "显示顺序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/CourseTeacherMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/CourseTeacherMapper.java new file mode 100644 index 00000000..82111bac --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/CourseTeacherMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.gen.courseteacher.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface CourseTeacherMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/xml/CourseTeacherMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/xml/CourseTeacherMapper.xml new file mode 100644 index 00000000..80794c6d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/mapper/xml/CourseTeacherMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/ICourseTeacherService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/ICourseTeacherService.java new file mode 100644 index 00000000..ec8e1697 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/ICourseTeacherService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.gen.courseteacher.service; + +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface ICourseTeacherService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/impl/CourseTeacherServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/impl/CourseTeacherServiceImpl.java new file mode 100644 index 00000000..e2bdfd4f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/courseteacher/service/impl/CourseTeacherServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.gen.courseteacher.service.impl; + +import org.jeecg.modules.gen.courseteacher.entity.CourseTeacher; +import org.jeecg.modules.gen.courseteacher.mapper.CourseTeacherMapper; +import org.jeecg.modules.gen.courseteacher.service.ICourseTeacherService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Service +public class CourseTeacherServiceImpl extends ServiceImpl implements ICourseTeacherService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/controller/UserInfoController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/controller/UserInfoController.java new file mode 100644 index 00000000..474e45bb --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/controller/UserInfoController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.gen.userinfo.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import org.jeecg.modules.gen.userinfo.service.IUserInfoService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Tag(name="用户信息") +@RestController +@RequestMapping("/gen/userinfo/userInfo") +@Slf4j +public class UserInfoController extends JeecgController { + @Autowired + private IUserInfoService userInfoService; + + /** + * 分页列表查询 + * + * @param userInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "用户信息-分页列表查询") + @Operation(summary="用户信息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(UserInfo userInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(userInfo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = userInfoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param userInfo + * @return + */ + @AutoLog(value = "用户信息-添加") + @Operation(summary="用户信息-添加") + @RequiresPermissions("gen.userinfo:user_info:add") + @PostMapping(value = "/add") + public Result add(@RequestBody UserInfo userInfo) { + userInfoService.save(userInfo); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param userInfo + * @return + */ + @AutoLog(value = "用户信息-编辑") + @Operation(summary="用户信息-编辑") + @RequiresPermissions("gen.userinfo:user_info:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody UserInfo userInfo) { + userInfoService.updateById(userInfo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "用户信息-通过id删除") + @Operation(summary="用户信息-通过id删除") + @RequiresPermissions("gen.userinfo:user_info:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + userInfoService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "用户信息-批量删除") + @Operation(summary="用户信息-批量删除") + @RequiresPermissions("gen.userinfo:user_info:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.userInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "用户信息-通过id查询") + @Operation(summary="用户信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + UserInfo userInfo = userInfoService.getById(id); + if(userInfo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(userInfo); + } + + /** + * 导出excel + * + * @param request + * @param userInfo + */ + @RequiresPermissions("gen.userinfo:user_info:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, UserInfo userInfo) { + return super.exportXls(request, userInfo, UserInfo.class, "用户信息"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("gen.userinfo:user_info:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, UserInfo.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/entity/UserInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/entity/UserInfo.java new file mode 100644 index 00000000..b8dd7bda --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/entity/UserInfo.java @@ -0,0 +1,84 @@ +package org.jeecg.modules.gen.userinfo.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Data +@TableName("user_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="用户信息") +public class UserInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**专业*/ + @Excel(name = "专业", width = 15) + @Schema(description = "专业") + private java.lang.String major; + /**学院*/ + @Excel(name = "学院", width = 15) + @Schema(description = "学院") + private java.lang.String college; + /**学历*/ + @Excel(name = "学历", width = 15) + @Schema(description = "学历") + private java.lang.String education; + /**职称*/ + @Excel(name = "职称", width = 15) + @Schema(description = "职称") + private java.lang.String title; + /**标签*/ + @Excel(name = "标签", width = 15) + @Schema(description = "标签") + private java.lang.String tag; + /**显示顺序*/ + @Excel(name = "显示顺序", width = 15) + @Schema(description = "显示顺序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/UserInfoMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/UserInfoMapper.java new file mode 100644 index 00000000..75b55654 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/UserInfoMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.gen.userinfo.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface UserInfoMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/xml/UserInfoMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/xml/UserInfoMapper.xml new file mode 100644 index 00000000..af1e4ea1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/mapper/xml/UserInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/IUserInfoService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/IUserInfoService.java new file mode 100644 index 00000000..554e0d77 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/IUserInfoService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.gen.userinfo.service; + +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +public interface IUserInfoService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/impl/UserInfoServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/impl/UserInfoServiceImpl.java new file mode 100644 index 00000000..618393ab --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/gen/userinfo/service/impl/UserInfoServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.gen.userinfo.service.impl; + +import org.jeecg.modules.gen.userinfo.entity.UserInfo; +import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; +import org.jeecg.modules.gen.userinfo.service.IUserInfoService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-14 + * @Version: V1.0 + */ +@Service +public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { + +} diff --git a/jeecgboot-vue3/src/views/gen/activity/Activity.api.ts b/jeecgboot-vue3/src/views/gen/activity/Activity.api.ts new file mode 100644 index 00000000..40b6fd40 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/activity/Activity.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/gen/activity/activity/list', + save='/gen/activity/activity/add', + edit='/gen/activity/activity/edit', + deleteOne = '/gen/activity/activity/delete', + deleteBatch = '/gen/activity/activity/deleteBatch', + importExcel = '/gen/activity/activity/importExcel', + exportXls = '/gen/activity/activity/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/gen/activity/Activity.data.ts b/jeecgboot-vue3/src/views/gen/activity/Activity.data.ts new file mode 100644 index 00000000..766b2385 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/activity/Activity.data.ts @@ -0,0 +1,179 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '介绍', + align:"center", + dataIndex: 'introduction', + }, + { + title: '说明图片', + align:"center", + dataIndex: 'imgs', + customRender:render.renderImage, + }, + { + title: '头图', + align:"center", + dataIndex: 'banner', + customRender:render.renderImage, + }, + { + title: '介绍视频', + align:"center", + dataIndex: 'video', + }, + { + title: '报名人数上限', + align:"center", + dataIndex: 'maxNum' + }, + { + title: '开始时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结束时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '扩展字段', + align:"center", + dataIndex: 'extra' + }, + { + title: '附件', + align:"center", + dataIndex: 'attachment', + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '标题', + field: 'title', + component: 'Input', + }, + { + label: '介绍', + field: 'introduction', + component: 'JEditor', + }, + { + label: '说明图片', + field: 'imgs', + component: 'JImageUpload', + componentProps:{ + fileMax: 0 + }, + }, + { + label: '头图', + field: 'banner', + component: 'JImageUpload', + componentProps:{ + fileMax: 0 + }, + }, + { + label: '介绍视频', + field: 'video', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '报名人数上限', + field: 'maxNum', + component: 'InputNumber', + }, + { + label: '开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '扩展字段', + field: 'extra', + component: 'Input', + }, + { + label: '附件', + field: 'attachment', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + title: {title: '标题',order: 0,view: 'text', type: 'string',}, + introduction: {title: '介绍',order: 1,view: 'umeditor', type: 'string',}, + imgs: {title: '说明图片',order: 2,view: 'image', type: 'string',}, + banner: {title: '头图',order: 3,view: 'image', type: 'string',}, + video: {title: '介绍视频',order: 4,view: 'file', type: 'string',}, + maxNum: {title: '报名人数上限',order: 5,view: 'number', type: 'number',}, + startTime: {title: '开始时间',order: 6,view: 'datetime', type: 'string',}, + endTime: {title: '结束时间',order: 7,view: 'datetime', type: 'string',}, + extra: {title: '扩展字段',order: 8,view: 'text', type: 'string',}, + attachment: {title: '附件',order: 9,view: 'file', type: 'string',}, + status: {title: '状态',order: 10,view: 'radio', type: 'string',dictCode: 'course_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/activity/ActivityList.vue b/jeecgboot-vue3/src/views/gen/activity/ActivityList.vue new file mode 100644 index 00000000..beffe3fd --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/activity/ActivityList.vue @@ -0,0 +1,220 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/activity/components/ActivityForm.vue b/jeecgboot-vue3/src/views/gen/activity/components/ActivityForm.vue new file mode 100644 index 00000000..4e8e6ece --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/activity/components/ActivityForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/activity/components/ActivityModal.vue b/jeecgboot-vue3/src/views/gen/activity/components/ActivityModal.vue new file mode 100644 index 00000000..8c776e0f --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/activity/components/ActivityModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.api.ts b/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.api.ts new file mode 100644 index 00000000..e7e0b63c --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/gen/userinfo/userInfo/list', + save='/gen/userinfo/userInfo/add', + edit='/gen/userinfo/userInfo/edit', + deleteOne = '/gen/userinfo/userInfo/delete', + deleteBatch = '/gen/userinfo/userInfo/deleteBatch', + importExcel = '/gen/userinfo/userInfo/importExcel', + exportXls = '/gen/userinfo/userInfo/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.data.ts b/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.data.ts new file mode 100644 index 00000000..a0ecfb73 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/userinfo/UserInfo.data.ts @@ -0,0 +1,111 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '专业', + align:"center", + dataIndex: 'major' + }, + { + title: '学院', + align:"center", + dataIndex: 'college' + }, + { + title: '学历', + align:"center", + dataIndex: 'education' + }, + { + title: '职称', + align:"center", + dataIndex: 'title' + }, + { + title: '标签', + align:"center", + dataIndex: 'tag' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '专业', + field: 'major', + component: 'Input', + }, + { + label: '学院', + field: 'college', + component: 'Input', + }, + { + label: '学历', + field: 'education', + component: 'Input', + }, + { + label: '职称', + field: 'title', + component: 'Input', + }, + { + label: '标签', + field: 'tag', + component: 'Input', + }, + { + label: '显示顺序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + major: {title: '专业',order: 1,view: 'text', type: 'string',}, + college: {title: '学院',order: 2,view: 'text', type: 'string',}, + education: {title: '学历',order: 3,view: 'text', type: 'string',}, + title: {title: '职称',order: 4,view: 'text', type: 'string',}, + tag: {title: '标签',order: 5,view: 'text', type: 'string',}, + sortOrder: {title: '显示顺序',order: 6,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/userinfo/UserInfoList.vue b/jeecgboot-vue3/src/views/gen/userinfo/UserInfoList.vue new file mode 100644 index 00000000..653fb727 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/userinfo/UserInfoList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoForm.vue b/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoForm.vue new file mode 100644 index 00000000..974e9984 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoModal.vue b/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoModal.vue new file mode 100644 index 00000000..2993e063 --- /dev/null +++ b/jeecgboot-vue3/src/views/gen/userinfo/components/UserInfoModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file