From 09131d9d48892a0c557ff9199347fd64ffb513df Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Sun, 21 Apr 2024 16:18:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8A=A5=E8=AF=BE=E5=AD=90?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CategoryController.java | 115 +++++++++ .../booking/controller/LessonController.java | 115 +++++++++ .../booking/controller/TeacherController.java | 115 +++++++++ .../gxwebsoft/booking/entity/Category.java | 92 +++++++ .../com/gxwebsoft/booking/entity/Lesson.java | 69 ++++++ .../com/gxwebsoft/booking/entity/Teacher.java | 57 +++++ .../booking/mapper/CategoryMapper.java | 37 +++ .../booking/mapper/LessonMapper.java | 37 +++ .../booking/mapper/TeacherMapper.java | 37 +++ .../booking/mapper/xml/CategoryMapper.xml | 90 +++++++ .../booking/mapper/xml/LessonMapper.xml | 69 ++++++ .../booking/mapper/xml/TeacherMapper.xml | 57 +++++ .../booking/param/CategoryParam.java | 92 +++++++ .../gxwebsoft/booking/param/LessonParam.java | 69 ++++++ .../gxwebsoft/booking/param/TeacherParam.java | 50 ++++ .../booking/service/CategoryService.java | 42 ++++ .../booking/service/LessonService.java | 42 ++++ .../booking/service/TeacherService.java | 42 ++++ .../service/impl/CategoryServiceImpl.java | 47 ++++ .../service/impl/LessonServiceImpl.java | 47 ++++ .../service/impl/TeacherServiceImpl.java | 47 ++++ .../common/core/config/MybatisPlusConfig.java | 3 +- .../shop/controller/GoodsController.java | 7 +- .../shop/mapper/xml/MerchantAccountMapper.xml | 2 +- .../shop/param/MerchantAccountParam.java | 1 + src/test/java/com/gxwebsoft/generator.zip | Bin 0 -> 27785 bytes .../gxwebsoft/generator/BookingGenerator.java | 229 ++++++++++++++++++ .../generator/templates/controller.java.btl | 7 + .../generator/templates/index.ts.btl | 14 +- 29 files changed, 1621 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/gxwebsoft/booking/controller/CategoryController.java create mode 100644 src/main/java/com/gxwebsoft/booking/controller/LessonController.java create mode 100644 src/main/java/com/gxwebsoft/booking/controller/TeacherController.java create mode 100644 src/main/java/com/gxwebsoft/booking/entity/Category.java create mode 100644 src/main/java/com/gxwebsoft/booking/entity/Lesson.java create mode 100644 src/main/java/com/gxwebsoft/booking/entity/Teacher.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/CategoryMapper.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/LessonMapper.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/TeacherMapper.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/xml/CategoryMapper.xml create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/xml/LessonMapper.xml create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/xml/TeacherMapper.xml create mode 100644 src/main/java/com/gxwebsoft/booking/param/CategoryParam.java create mode 100644 src/main/java/com/gxwebsoft/booking/param/LessonParam.java create mode 100644 src/main/java/com/gxwebsoft/booking/param/TeacherParam.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/CategoryService.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/LessonService.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/TeacherService.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/impl/CategoryServiceImpl.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/impl/LessonServiceImpl.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/impl/TeacherServiceImpl.java create mode 100644 src/test/java/com/gxwebsoft/generator.zip create mode 100644 src/test/java/com/gxwebsoft/generator/BookingGenerator.java diff --git a/src/main/java/com/gxwebsoft/booking/controller/CategoryController.java b/src/main/java/com/gxwebsoft/booking/controller/CategoryController.java new file mode 100644 index 0000000..7d8a614 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/controller/CategoryController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.booking.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.booking.service.CategoryService; +import com.gxwebsoft.booking.entity.Category; +import com.gxwebsoft.booking.param.CategoryParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 课程分类控制器 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Api(tags = "课程分类管理") +@RestController +@RequestMapping("/api/booking/category") +public class CategoryController extends BaseController { + @Resource + private CategoryService categoryService; + + @ApiOperation("分页查询课程分类") + @GetMapping("/page") + public ApiResult> page(CategoryParam param) { + // 使用关联查询 + return success(categoryService.pageRel(param)); + } + + @ApiOperation("查询全部课程分类") + @GetMapping() + public ApiResult> list(CategoryParam param) { + // 使用关联查询 + return success(categoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('booking:category:list')") + @ApiOperation("根据id查询课程分类") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(categoryService.getByIdRel(id)); + } + + @ApiOperation("添加课程分类") + @PostMapping() + public ApiResult save(@RequestBody Category category) { + // 记录当前登录用户id + // User loginUser = getLoginUser(); + // if (loginUser != null) { + // category.setUserId(loginUser.getUserId()); + // } + if (categoryService.save(category)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改课程分类") + @PutMapping() + public ApiResult update(@RequestBody Category category) { + if (categoryService.updateById(category)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除课程分类") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (categoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加课程分类") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (categoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改课程分类") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(categoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除课程分类") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (categoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/controller/LessonController.java b/src/main/java/com/gxwebsoft/booking/controller/LessonController.java new file mode 100644 index 0000000..04b6220 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/controller/LessonController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.booking.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.booking.service.LessonService; +import com.gxwebsoft.booking.entity.Lesson; +import com.gxwebsoft.booking.param.LessonParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 课程管理控制器 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Api(tags = "课程管理管理") +@RestController +@RequestMapping("/api/booking/lesson") +public class LessonController extends BaseController { + @Resource + private LessonService lessonService; + + @ApiOperation("分页查询课程管理") + @GetMapping("/page") + public ApiResult> page(LessonParam param) { + // 使用关联查询 + return success(lessonService.pageRel(param)); + } + + @ApiOperation("查询全部课程管理") + @GetMapping() + public ApiResult> list(LessonParam param) { + // 使用关联查询 + return success(lessonService.listRel(param)); + } + + @PreAuthorize("hasAuthority('booking:lesson:list')") + @ApiOperation("根据id查询课程管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(lessonService.getByIdRel(id)); + } + + @ApiOperation("添加课程管理") + @PostMapping() + public ApiResult save(@RequestBody Lesson lesson) { + // 记录当前登录用户id + // User loginUser = getLoginUser(); + // if (loginUser != null) { + // lesson.setUserId(loginUser.getUserId()); + // } + if (lessonService.save(lesson)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改课程管理") + @PutMapping() + public ApiResult update(@RequestBody Lesson lesson) { + if (lessonService.updateById(lesson)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除课程管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (lessonService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加课程管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (lessonService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改课程管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(lessonService, "lesson_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除课程管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (lessonService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/controller/TeacherController.java b/src/main/java/com/gxwebsoft/booking/controller/TeacherController.java new file mode 100644 index 0000000..c9ec93d --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/controller/TeacherController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.booking.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.booking.service.TeacherService; +import com.gxwebsoft.booking.entity.Teacher; +import com.gxwebsoft.booking.param.TeacherParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 老师管理控制器 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Api(tags = "老师管理管理") +@RestController +@RequestMapping("/api/booking/teacher") +public class TeacherController extends BaseController { + @Resource + private TeacherService teacherService; + + @ApiOperation("分页查询老师管理") + @GetMapping("/page") + public ApiResult> page(TeacherParam param) { + // 使用关联查询 + return success(teacherService.pageRel(param)); + } + + @ApiOperation("查询全部老师管理") + @GetMapping() + public ApiResult> list(TeacherParam param) { + // 使用关联查询 + return success(teacherService.listRel(param)); + } + + @PreAuthorize("hasAuthority('booking:teacher:list')") + @ApiOperation("根据id查询老师管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(teacherService.getByIdRel(id)); + } + + @ApiOperation("添加老师管理") + @PostMapping() + public ApiResult save(@RequestBody Teacher teacher) { + // 记录当前登录用户id + // User loginUser = getLoginUser(); + // if (loginUser != null) { + // teacher.setUserId(loginUser.getUserId()); + // } + if (teacherService.save(teacher)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改老师管理") + @PutMapping() + public ApiResult update(@RequestBody Teacher teacher) { + if (teacherService.updateById(teacher)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除老师管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (teacherService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加老师管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (teacherService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改老师管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(teacherService, "teacher_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除老师管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (teacherService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/entity/Category.java b/src/main/java/com/gxwebsoft/booking/entity/Category.java new file mode 100644 index 0000000..7332469 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/entity/Category.java @@ -0,0 +1,92 @@ +package com.gxwebsoft.booking.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 课程分类 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Category对象", description = "课程分类") +@TableName("booking_category") +public class Category implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0列表 1单页 2外链") + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商品数量") + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + private Integer showIndex; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/booking/entity/Lesson.java b/src/main/java/com/gxwebsoft/booking/entity/Lesson.java new file mode 100644 index 0000000..77d7085 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/entity/Lesson.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.booking.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 课程管理 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Lesson对象", description = "课程管理") +@TableName("booking_lesson") +public class Lesson implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "lesson_id", type = IdType.AUTO) + private Integer lessonId; + + @ApiModelProperty(value = "课程名称") + private String lessonName; + + @ApiModelProperty(value = "图标") + private String image; + + @ApiModelProperty(value = "分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "老师ID") + private Integer teacherId; + + @ApiModelProperty(value = "商户ID") + private Integer merchantId; + + @ApiModelProperty(value = "上课时间") + private LocalDateTime startTime; + + @ApiModelProperty(value = "报名人数上限") + private Integer maxNumber; + + @ApiModelProperty(value = "上课地点") + private String address; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/booking/entity/Teacher.java b/src/main/java/com/gxwebsoft/booking/entity/Teacher.java new file mode 100644 index 0000000..210a3dd --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/entity/Teacher.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.booking.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 老师管理 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Teacher对象", description = "老师管理") +@TableName("booking_teacher") +public class Teacher implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "teacher_id", type = IdType.AUTO) + private Integer teacherId; + + @ApiModelProperty(value = "老师姓名") + private String teacherName; + + @ApiModelProperty(value = "老师照片") + private String image; + + @ApiModelProperty(value = "老师介绍") + private String content; + + @ApiModelProperty(value = "商户ID") + private Integer merchantId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/CategoryMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/CategoryMapper.java new file mode 100644 index 0000000..f763d0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/CategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.booking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.booking.entity.Category; +import com.gxwebsoft.booking.param.CategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 课程分类Mapper + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface CategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/LessonMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/LessonMapper.java new file mode 100644 index 0000000..cff4a03 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/LessonMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.booking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.booking.entity.Lesson; +import com.gxwebsoft.booking.param.LessonParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 课程管理Mapper + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface LessonMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") LessonParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") LessonParam param); + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/TeacherMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/TeacherMapper.java new file mode 100644 index 0000000..fd89c97 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/TeacherMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.booking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.booking.entity.Teacher; +import com.gxwebsoft.booking.param.TeacherParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 老师管理Mapper + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface TeacherMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TeacherParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TeacherParam param); + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/CategoryMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/CategoryMapper.xml new file mode 100644 index 0000000..a26648e --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/CategoryMapper.xml @@ -0,0 +1,90 @@ + + + + + + + SELECT a.* + FROM booking_category a + + + AND a.category_id = #{param.categoryId} + + + AND a.category_code LIKE CONCAT('%', #{param.categoryCode}, '%') + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.user_id = #{param.userId} + + + AND a.count = #{param.count} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.hide = #{param.hide} + + + AND a.recommend = #{param.recommend} + + + AND a.show_index = #{param.showIndex} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/LessonMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/LessonMapper.xml new file mode 100644 index 0000000..ca5bb0d --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/LessonMapper.xml @@ -0,0 +1,69 @@ + + + + + + + SELECT a.* + FROM booking_lesson a + + + AND a.lesson_id = #{param.lessonId} + + + AND a.lesson_name LIKE CONCAT('%', #{param.lessonName}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.teacher_id = #{param.teacherId} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.max_number = #{param.maxNumber} + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/TeacherMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/TeacherMapper.xml new file mode 100644 index 0000000..7aa0b98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/TeacherMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM booking_teacher a + + + AND a.teacher_id = #{param.teacherId} + + + AND a.teacher_name LIKE CONCAT('%', #{param.teacherName}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/booking/param/CategoryParam.java b/src/main/java/com/gxwebsoft/booking/param/CategoryParam.java new file mode 100644 index 0000000..ff6c805 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/param/CategoryParam.java @@ -0,0 +1,92 @@ +package com.gxwebsoft.booking.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 课程分类查询参数 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CategoryParam对象", description = "课程分类查询参数") +public class CategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0列表 1单页 2外链") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商品数量") + @QueryField(type = QueryType.EQ) + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + @QueryField(type = QueryType.EQ) + private Integer showIndex; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/booking/param/LessonParam.java b/src/main/java/com/gxwebsoft/booking/param/LessonParam.java new file mode 100644 index 0000000..c8f25f4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/param/LessonParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.booking.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 课程管理查询参数 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "LessonParam对象", description = "课程管理查询参数") +public class LessonParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer lessonId; + + @ApiModelProperty(value = "课程名称") + private String lessonName; + + @ApiModelProperty(value = "图标") + private String image; + + @ApiModelProperty(value = "分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "老师ID") + @QueryField(type = QueryType.EQ) + private Integer teacherId; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Integer merchantId; + + @ApiModelProperty(value = "上课时间") + private String startTime; + + @ApiModelProperty(value = "报名人数上限") + @QueryField(type = QueryType.EQ) + private Integer maxNumber; + + @ApiModelProperty(value = "上课地点") + private String address; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/booking/param/TeacherParam.java b/src/main/java/com/gxwebsoft/booking/param/TeacherParam.java new file mode 100644 index 0000000..bafa109 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/param/TeacherParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.booking.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 老师管理查询参数 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TeacherParam对象", description = "老师管理查询参数") +public class TeacherParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer teacherId; + + @ApiModelProperty(value = "老师姓名") + private String teacherName; + + @ApiModelProperty(value = "老师照片") + private String image; + + @ApiModelProperty(value = "老师介绍") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/CategoryService.java b/src/main/java/com/gxwebsoft/booking/service/CategoryService.java new file mode 100644 index 0000000..e901660 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/CategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.booking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.booking.entity.Category; +import com.gxwebsoft.booking.param.CategoryParam; + +import java.util.List; + +/** + * 课程分类Service + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface CategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CategoryParam param); + + /** + * 根据id查询 + * + * @param categoryId 商品分类ID + * @return Category + */ + Category getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/LessonService.java b/src/main/java/com/gxwebsoft/booking/service/LessonService.java new file mode 100644 index 0000000..c3dd27a --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/LessonService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.booking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.booking.entity.Lesson; +import com.gxwebsoft.booking.param.LessonParam; + +import java.util.List; + +/** + * 课程管理Service + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface LessonService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(LessonParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(LessonParam param); + + /** + * 根据id查询 + * + * @param lessonId ID + * @return Lesson + */ + Lesson getByIdRel(Integer lessonId); + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/TeacherService.java b/src/main/java/com/gxwebsoft/booking/service/TeacherService.java new file mode 100644 index 0000000..a58525d --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/TeacherService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.booking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.booking.entity.Teacher; +import com.gxwebsoft.booking.param.TeacherParam; + +import java.util.List; + +/** + * 老师管理Service + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +public interface TeacherService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TeacherParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TeacherParam param); + + /** + * 根据id查询 + * + * @param teacherId ID + * @return Teacher + */ + Teacher getByIdRel(Integer teacherId); + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/CategoryServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..19632ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/impl/CategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.booking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.booking.mapper.CategoryMapper; +import com.gxwebsoft.booking.service.CategoryService; +import com.gxwebsoft.booking.entity.Category; +import com.gxwebsoft.booking.param.CategoryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 课程分类Service实现 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + + @Override + public PageResult pageRel(CategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Category getByIdRel(Integer categoryId) { + CategoryParam param = new CategoryParam(); + param.setCategoryId(categoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/LessonServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/LessonServiceImpl.java new file mode 100644 index 0000000..cb29815 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/impl/LessonServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.booking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.booking.mapper.LessonMapper; +import com.gxwebsoft.booking.service.LessonService; +import com.gxwebsoft.booking.entity.Lesson; +import com.gxwebsoft.booking.param.LessonParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 课程管理Service实现 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Service +public class LessonServiceImpl extends ServiceImpl implements LessonService { + + @Override + public PageResult pageRel(LessonParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(LessonParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Lesson getByIdRel(Integer lessonId) { + LessonParam param = new LessonParam(); + param.setLessonId(lessonId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/TeacherServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/TeacherServiceImpl.java new file mode 100644 index 0000000..f2d7d77 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/impl/TeacherServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.booking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.booking.mapper.TeacherMapper; +import com.gxwebsoft.booking.service.TeacherService; +import com.gxwebsoft.booking.entity.Teacher; +import com.gxwebsoft.booking.param.TeacherParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 老师管理Service实现 + * + * @author 科技小王子 + * @since 2024-04-21 14:31:15 + */ +@Service +public class TeacherServiceImpl extends ServiceImpl implements TeacherService { + + @Override + public PageResult pageRel(TeacherParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(TeacherParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Teacher getByIdRel(Integer teacherId) { + TeacherParam param = new TeacherParam(); + param.setTeacherId(teacherId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java index f9d893a..6dc0ce3 100644 --- a/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java +++ b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java @@ -63,7 +63,8 @@ public class MybatisPlusConfig { "sys_tenant", "sys_dictionary", "sys_dictionary_data", - "apps_test_data" + "apps_test_data", + "shop_merchant_account" ).contains(tableName); } }; diff --git a/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java index f5ba63c..6606396 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java @@ -59,7 +59,6 @@ public class GoodsController extends BaseController { return success(goodsService.listRel(param)); } - @Transactional(rollbackFor = {Exception.class}) @ApiOperation("根据id查询商品记录表") @GetMapping("/{id}") @@ -77,6 +76,7 @@ public class GoodsController extends BaseController { return success(goods); } + @PreAuthorize("hasAuthority('shop:goods:save')") @ApiOperation("添加商品记录表") @PostMapping() public ApiResult save(@RequestBody Goods goods) { @@ -93,6 +93,7 @@ public class GoodsController extends BaseController { return fail("添加失败"); } + @PreAuthorize("hasAuthority('shop:goods:update')") @ApiOperation("修改商品记录表") @PutMapping() public ApiResult update(@RequestBody Goods goods) { @@ -107,6 +108,7 @@ public class GoodsController extends BaseController { return fail("修改失败"); } + @PreAuthorize("hasAuthority('shop:goods:remove')") @ApiOperation("删除商品记录表") @DeleteMapping("/{id}") public ApiResult remove(@PathVariable("id") Integer id) { @@ -116,6 +118,7 @@ public class GoodsController extends BaseController { return fail("删除失败"); } + @PreAuthorize("hasAuthority('shop:goods:save')") @ApiOperation("批量添加商品记录表") @PostMapping("/batch") public ApiResult saveBatch(@RequestBody List list) { @@ -125,6 +128,7 @@ public class GoodsController extends BaseController { return fail("添加失败"); } + @PreAuthorize("hasAuthority('shop:goods:update')") @ApiOperation("批量修改商品记录表") @PutMapping("/batch") public ApiResult removeBatch(@RequestBody BatchParam batchParam) { @@ -134,6 +138,7 @@ public class GoodsController extends BaseController { return fail("修改失败"); } + @PreAuthorize("hasAuthority('shop:goods:remove')") @ApiOperation("批量删除商品记录表") @DeleteMapping("/batch") public ApiResult removeBatch(@RequestBody List ids) { diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantAccountMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantAccountMapper.xml index 11cffc0..3d1939c 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantAccountMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantAccountMapper.xml @@ -12,7 +12,7 @@ AND a.id = #{param.id} - AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + AND a.phone = #{param.phone} AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') diff --git a/src/main/java/com/gxwebsoft/shop/param/MerchantAccountParam.java b/src/main/java/com/gxwebsoft/shop/param/MerchantAccountParam.java index bc05702..9b0c29b 100644 --- a/src/main/java/com/gxwebsoft/shop/param/MerchantAccountParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/MerchantAccountParam.java @@ -28,6 +28,7 @@ public class MerchantAccountParam extends BaseParam { private Integer id; @ApiModelProperty(value = "商户手机号") + @QueryField(type = QueryType.EQ) private String phone; @ApiModelProperty(value = "真实姓名") diff --git a/src/test/java/com/gxwebsoft/generator.zip b/src/test/java/com/gxwebsoft/generator.zip new file mode 100644 index 0000000000000000000000000000000000000000..b19e3d1fe9147a02920addc6fb0d2f0f6dfc75a1 GIT binary patch literal 27785 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 V=)T#4g2KQ5v%EK-Ks5!Q{TD)Gsr~=} literal 0 HcmV?d00001 diff --git a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java new file mode 100644 index 0000000..eb4230a --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java @@ -0,0 +1,229 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class BookingGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/com.gxwebsoft.core-web"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "FYJGx7s8yt7K8xDH"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "booking"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "booking_lesson", + "booking_teacher", + "booking_category" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "booking_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = false; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = false; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl index 4de4d52..4a68f75 100644 --- a/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl +++ b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl @@ -64,6 +64,9 @@ public class ${table.controllerName} { * 分页查询${table.comment!} */ <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> <% if(swagger2) { %> @ApiOperation("分页查询${table.comment!}") <% } %> @@ -81,6 +84,9 @@ public class ${table.controllerName} { * 查询全部${table.comment!} */ <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> <% if(swagger2) { %> @ApiOperation("查询全部${table.comment!}") <% } %> @@ -98,6 +104,7 @@ public class ${table.controllerName} { * 根据id查询${table.comment!} */ <% } %> + @PreAuthorize("hasAuthority('${authPre}:list')") @ApiOperation("根据id查询${table.comment!}") @GetMapping("/{id}") public ApiResult<${entity}> get(@PathVariable("id") Integer id) { diff --git a/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl b/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl index 9d0b5e9..9cd968d 100644 --- a/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl +++ b/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl @@ -8,7 +8,7 @@ import { MODULES_API_URL } from '@/config/setting'; */ export async function page${entity}(params: ${entity}Param) { const res = await request.get>>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}/page', + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/page', { params } @@ -24,7 +24,7 @@ export async function page${entity}(params: ${entity}Param) { */ export async function list${entity}(params?: ${entity}Param) { const res = await request.get>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}', + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', { params } @@ -40,7 +40,7 @@ export async function list${entity}(params?: ${entity}Param) { */ export async function add${entity}(data: ${entity}) { const res = await request.post>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}', + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', data ); if (res.data.code === 0) { @@ -54,7 +54,7 @@ export async function add${entity}(data: ${entity}) { */ export async function update${entity}(data: ${entity}) { const res = await request.put>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}', + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', data ); if (res.data.code === 0) { @@ -68,7 +68,7 @@ export async function update${entity}(data: ${entity}) { */ export async function remove${entity}(id?: number) { const res = await request.delete>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}/' + id + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/' + id ); if (res.data.code === 0) { return res.data.message; @@ -81,7 +81,7 @@ export async function remove${entity}(id?: number) { */ export async function removeBatch${entity}(data: (number | undefined)[]) { const res = await request.delete>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}/batch', + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/batch', { data } @@ -97,7 +97,7 @@ export async function removeBatch${entity}(data: (number | undefined)[]) { */ export async function get${entity}(id: number) { const res = await request.get>( - MODULES_API_URL + '/shop/${controllerMappingHyphen}/' + id + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/' + id ); if (res.data.code === 0 && res.data.data) { return res.data.data;