diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/report/analysis/controller/AnalysisReportController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/report/analysis/controller/AnalysisReportController.java index 8bf8196..135a890 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/report/analysis/controller/AnalysisReportController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/report/analysis/controller/AnalysisReportController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.report.analysis.controller; import cn.xluobo.business.report.analysis.domain.resp.RespMonthCourseOrderFee; import cn.xluobo.business.report.analysis.service.AnalysisReportService; import cn.xluobo.business.sc.order.domain.req.ReqReportMonthCourseIncome; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/service/DashboardService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/service/DashboardService.java deleted file mode 100644 index b71266f..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/service/DashboardService.java +++ /dev/null @@ -1,98 +0,0 @@ -package cn.xluobo.business.report.dashboard.service; - -import cn.xluobo.business.report.dashboard.domain.resp.DashboardData; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeAttendStatusEnums; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.IScClaTimeAttendService; -import cn.xluobo.business.sc.course.service.IScClaTimeService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.business.sc.order.enums.OrderTypeEnum; -import cn.xluobo.business.sc.order.service.IScOrderService; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sc.student.service.IScStudentService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.ruoyi.common.utils.SecurityUtils; -import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; - -/** - * @author :zhangbaoyu - * @date :Created in 2020/10/18 15:34 - */ -@Service -@Transactional -public class DashboardService { - - @Autowired - private IScCourseClaService claService; - @Autowired - private IScCourseService courseService; - @Autowired - private IScStudentService studentService; - @Autowired - private IScClaTimeAttendService attendService; - @Autowired - private IScOrderService orderService; - @Autowired - private IScClaTimeService claTimeService; - @Autowired - private IScStudentCourseService studentCourseService; - - /** - * 首页各项数据 - * - * @return - */ - public DashboardData dashboardData() { - String todayDate = DateTime.now().toString("yyyy-MM-dd"); - String thisMonthBegin = DateTime.now().withDayOfMonth(1).toString("yyyy-MM-dd"); - String thisMonthEnd = DateTime.now().plusMonths(1).withDayOfMonth(1).minusDays(1).toString("yyyy-MM-dd"); - String tenantId=SecurityUtils.getLoginUser().getNowTenantId(); - int claCnt = claService.count(new QueryWrapper().eq("tenant_id",tenantId)); - int courseCnt = courseService.count(new QueryWrapper().eq("tenant_id",tenantId)); - int studentCnt = studentService.count(new QueryWrapper().eq("tenant_id",tenantId)); - - ReqClaTimeCount reqClaTimeCount = ReqClaTimeCount.builder().beginDate(todayDate).endDate(todayDate).hadBegin(null).tenantId(tenantId).build(); - Integer todayClaTimeCnt = claTimeService.claTimeCount(reqClaTimeCount); - - reqClaTimeCount.setHadBegin(true); - Integer completeTodayClaTimeCnt = claTimeService.claTimeCount(reqClaTimeCount); - - Integer todayOrderCnt = orderService.orderCount(todayDate, todayDate, OrderTypeEnum.SIGN_UP.getOrderType()); - Integer thisMonthOrderCnt = orderService.orderCount(thisMonthBegin, thisMonthEnd, OrderTypeEnum.SIGN_UP.getOrderType()); - Integer todayNeedAttendCnt = attendService.getNeedAttendCount(todayDate, todayDate); - Integer todayRealAttendCnt = attendService.getAttendCount(todayDate, todayDate, - new String[]{ClaTimeAttendStatusEnums.AT_CLASS.getAttendStatus()}); - BigDecimal todayNeedCostHour = attendService.getAttendCostHour(todayDate, todayDate, true); - BigDecimal todayRealCostHour = attendService.getAttendCostHour(todayDate, todayDate, false); - Integer arrearsStudentCnt = orderService.arrearsStudentCount(); - Integer dateWillExpireCnt = studentCourseService.getWillExpireDateCount(10); - Integer hourWillExpireCnt = studentCourseService.getWillExpireHourCount(5); - - return DashboardData.builder() - .todayClaTimeCnt(todayClaTimeCnt) - .completeTodayClaTimeCnt(completeTodayClaTimeCnt) - .todayOrderCnt(todayOrderCnt) - .thisMonthOrderCnt(thisMonthOrderCnt) - .todayRealAttendCnt(todayRealAttendCnt) - .todayNeedAttendCnt(todayNeedAttendCnt) - .todayNeedCostHour(todayNeedCostHour) - .todayRealCostHour(todayRealCostHour) - .studentCnt(studentCnt) - .claCnt(claCnt) - .courseCnt(courseCnt) - .arrearsStudentCnt(arrearsStudentCnt) - .dateWillExpireCnt(dateWillExpireCnt) - .hourWillExpireCnt(hourWillExpireCnt) - .build(); - } - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseTypeController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseTypeController.java deleted file mode 100644 index a3bd231..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseTypeController.java +++ /dev/null @@ -1,93 +0,0 @@ -package cn.xluobo.business.sc.course.controller; - -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseType; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; -import cn.xluobo.business.sc.course.service.BusinessScCourseTypeService; -import cn.xluobo.core.api.APIResponse; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -/** - *

- * 课程类型 Controller - *

- * - * @author zhangby - * @since 2020-07-09 08:10:25 - */ -@RestController -@RequestMapping("/api/sc/course/type") -public class ScCourseTypeController { - @Autowired - private BusinessScCourseTypeService scCourseTypeService; - - /** - * 列表 - * - * @param reqSearchScCourseType - * @return - */ - @GetMapping("/list/searchList") - public APIResponse searchList(ReqSearchScCourseType reqSearchScCourseType) { - return scCourseTypeService.searchList(reqSearchScCourseType); - } - - /** - * select - * - * @param reqSearchScCourseType - * @return - */ - @GetMapping("/list/select") - public APIResponse select(ReqSearchScCourseType reqSearchScCourseType) { - return scCourseTypeService.select(reqSearchScCourseType); - } - - /** - * 详情 - * - * @param courseTypeId - * @return - */ - @GetMapping("/info/detailById/{courseTypeId}") - public APIResponse detailById(@PathVariable("courseTypeId") Long courseTypeId) { - return scCourseTypeService.detailById(courseTypeId); - } - - /** - * 添加 - * - * @param scCourseType - * @return - */ - @PostMapping("/add/addScCourseType") - public APIResponse addScCourseType(@RequestBody ScCourseType scCourseType) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - scCourseType.setTenantId(loginUser.getNowTenantId()); - return scCourseTypeService.addScCourseType(scCourseType); - } - - /** - * 修改 - * - * @param scCourseType - * @return - */ - @PutMapping("/update/updateScCourseType") - public APIResponse updateScCourseType(@RequestBody ScCourseType scCourseType) { - return scCourseTypeService.updateScCourseType(scCourseType); - } - - /** - * 删除 - * - * @param courseTypeIds - * @return - */ - @DeleteMapping("/delete/deleteById/{courseTypeIds}") - public APIResponse deleteById(@PathVariable("courseTypeIds") Long[] courseTypeIds) { - return scCourseTypeService.deleteById(courseTypeIds); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddMemberChargeItem.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddMemberChargeItem.java new file mode 100644 index 0000000..73f0607 --- /dev/null +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddMemberChargeItem.java @@ -0,0 +1,13 @@ +package cn.xluobo.business.sc.course.domain.req; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReqAddMemberChargeItem{ + private Long courseTypeId;//课程类型 + private BigDecimal cnt;//扣课时次数 + private BigDecimal totalFee;//扣费金额 + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourse.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourse.java deleted file mode 100644 index 6b1f447..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourse.java +++ /dev/null @@ -1,160 +0,0 @@ -package cn.xluobo.business.sc.course.domain.req.course; - -import cn.xluobo.core.api.APIBaseResponse; -import lombok.Data; -import org.apache.commons.lang3.StringUtils; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 录入课程 - * - * @author :zhangbaoyu - * @date :Created in 2020/7/8 20:34 - */ -@Data -public class ReqAddScCourse { - - /** - * 课程名 - */ - private String courseName; - - /** - * 课程类型 - */ - private Long courseTypeId; - - /** - * 教学模式 - */ - private String teachingMode; - - /** - * 课程简介 - */ - private String courseIntro; - - /** - * 上课校区 所有 或 部分 all part - */ - private String courseCampus; - - /** - * 上课校区 - */ - private String[] partCampus; - - /** - * 收费模式 - */ - private boolean feeModeHour; - - /** - * 收费模式 - */ - private boolean feeModeDate; - - /** - * 收费模式 - */ - private boolean feeModeCycle; - - /** - * 教练课时费 - */ - private BigDecimal claFee; - - private List feeModeHourList; - - private List feeModeDateList; - - private List feeModeCycleList; - - /** - * 参数校验 - * - * @return - */ - public APIBaseResponse checkParam() { - if (StringUtils.isEmpty(courseName)) { - return APIBaseResponse.fail("请输入课程名称"); - } else if (StringUtils.isEmpty(teachingMode)) { - return APIBaseResponse.fail("请选择教学模式"); - } - - if (StringUtils.isEmpty(courseCampus)) { - return APIBaseResponse.fail("请选择上课校区"); - } - if ("部分校区".equals(courseCampus) && null == partCampus) { - return APIBaseResponse.fail("请选择上课校区"); - } - if ("部分校区".equals(courseCampus) && partCampus.length == 0) { - return APIBaseResponse.fail("请选择上课校区"); - } - - if (!feeModeHour && !feeModeDate && !feeModeCycle) { - return APIBaseResponse.fail("请配置收费模式"); - } - - if (feeModeHour && (null == feeModeHourList || feeModeHourList.isEmpty())) { - return APIBaseResponse.fail("请配置课时收费模式"); - } - if (feeModeDate && (null == feeModeDateList || feeModeDateList.isEmpty())) { - return APIBaseResponse.fail("请配置时间收费模式"); - } - if (feeModeCycle && (null == feeModeCycleList || feeModeCycleList.isEmpty())) { - return APIBaseResponse.fail("请配置周期收费模式"); - } - - BigDecimal zero = BigDecimal.ZERO; - if (feeModeHour) { - for (ReqAddScCourseChargeItem item : feeModeHourList) { - BigDecimal cnt = item.getCnt(); - BigDecimal totalFee = item.getTotalFee(); - String campusName = item.getCampusName(); - if(null == cnt || cnt.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按课时收费 数量"); - } - if(null == totalFee || totalFee.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按课时收费 金额"); - } - } - } - - if (feeModeDate) { - for (ReqAddScCourseChargeItem item : feeModeDateList) { - BigDecimal cnt = item.getCnt(); - BigDecimal totalFee = item.getTotalFee(); - String dateType = item.getDateType(); - String campusName = item.getCampusName(); - if(null == cnt || cnt.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按时间收费 数量"); - } - if(null == totalFee || totalFee.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按时间收费 金额"); - } - if(StringUtils.isEmpty(dateType)){ - return APIBaseResponse.fail("请填写"+campusName+"按时间收费 时间段"); - } - } - } - - if(feeModeCycle) { - for (ReqAddScCourseChargeItem item : feeModeCycleList) { - BigDecimal cnt = item.getCnt(); - BigDecimal totalFee = item.getTotalFee(); - String campusName = item.getCampusName(); - if(null == cnt || cnt.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按期收费 数量"); - } - if(null == totalFee || totalFee.compareTo(zero)==0){ - return APIBaseResponse.fail("请填写"+campusName+"按期收费 金额"); - } - } - } - - return APIBaseResponse.success(); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessClaStudent.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessClaStudent.java index d81d71f..83c3f51 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessClaStudent.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessClaStudent.java @@ -1,7 +1,7 @@ package cn.xluobo.business.sc.course.domain.resp; import lombok.Data; - +import com.ruoyi.school.course.domain.resp.course.RespBusinessCourseInfo; import java.io.Serializable; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessStudentCla.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessStudentCla.java index dd9c9d3..c0460ed 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessStudentCla.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessStudentCla.java @@ -1,6 +1,6 @@ package cn.xluobo.business.sc.course.domain.resp; -import cn.xluobo.business.sc.student.repo.model.ScStudent; +import com.ruoyi.school.member.domain.ScStudent; import lombok.Data; import java.io.Serializable; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseChargeMapper.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseChargeMapper.java deleted file mode 100644 index d3e4d29..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseChargeMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.xluobo.business.sc.course.repo.mapper; - -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 课程收费模式 Mapper 接口 - *

- * - * @author zhangby - * @since 2020-07-08 - */ -public interface ScCourseChargeMapper extends BaseMapper { - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseMapper.xml b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseMapper.xml deleted file mode 100644 index 5f0932c..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseMapper.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseService.java deleted file mode 100644 index 3325333..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseService.java +++ /dev/null @@ -1,544 +0,0 @@ -package cn.xluobo.business.sc.course.service; - -import cn.xluobo.business.sc.course.domain.export.ExpCourse; -import cn.xluobo.business.sc.course.domain.req.ReqBusinessOrderCourseDetail; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.req.ReqSelect; -import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourse; -import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourseChargeItem; -import cn.xluobo.business.sc.course.domain.req.course.ReqChangeScCourse; -import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseCharge; -import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseInfo; -import cn.xluobo.business.sc.course.domain.resp.course.RespScCourseDetail; -import cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.business.sys.admin.service.ISysDeptService; -import cn.xluobo.business.tool.export.strategy.CourseExportMergeStrategy; -import cn.xluobo.config.properties.UploadConfigProperties; -import cn.xluobo.core.api.APIBaseResponse; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author :zhangbaoyu - * @date :Created in 2020-01-14 17:24 - */ -@Service -@Transactional -public class BusinessScCourseService { - - @Autowired - private IScCourseService scCourseService; - @Autowired - private IScCourseClaService courseClaService; - @Autowired - private ScCourseMapper courseMapper; - @Autowired - private IScCourseChargeService courseChargeService; - @Autowired - private BusinessSysDeptService deptService; - @Autowired - private ISysDeptService sysDeptService; - @Autowired - private UploadConfigProperties uploadConfigProperties; - @Autowired - private BusinessSysDictDataService dictDataService; - @Autowired - private IScStudentCourseService studentCourseService; - @Autowired - private IScCourseTypeService courseTypeService; - - /** - * 查询 - * - * @param reqSearchScCourse - * @return - */ - public APIResponse searchList(ReqSearchScCourse reqSearchScCourse) { - RespPage searchCourseRespPage = scCourseService.searchCourse(reqSearchScCourse); - return APIResponse.toAPIResponse(searchCourseRespPage); - } - - /** - * 查询课程列表 - * 含有学生报读状态 - * - * @param reqSearchScCourse - * @return - */ - public APIResponse selectCourseListWithStudentCourse(ReqSearchScCourse reqSearchScCourse) { - RespPage respPage = new RespPage(reqSearchScCourse.getPageNum(), reqSearchScCourse.getPageSize()); - List courseList = courseMapper.selectCourseListWithStudentCourse(reqSearchScCourse, respPage,SecurityUtils.getLoginUser().getNowTenantId()); - respPage.setRows(courseList); - return APIResponse.toAPIResponse(respPage); - } - - /** - * 前端select - * - * @return - */ - public APIResponse select(ReqSelect reqSelect) { - QueryWrapper qw = new QueryWrapper(); - qw.select("course_name", "course_id"); - - if (StringUtils.isNotEmpty(reqSelect.getSearch())) { - qw.like("course_name", reqSelect.getSearch()); - } - qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); - qw.orderByDesc("create_time"); - List list = scCourseService.list(qw); - return APIResponse.toAPIResponse(list); - } - - /** - * 详情 - * - * @param courseId - * @return - */ - public APIResponse detailById(Long courseId) { - if (null == courseId) { - return APIResponse.toAPIResponse(ApiResEnums.PARAM_FAIL); - } - - // 课程详情 - ScCourse detailInfo = scCourseService.getById(courseId); - - - RespScCourseDetail respScCourseDetail = new RespScCourseDetail(); - respScCourseDetail.setCourseId(detailInfo.getCourseId()+""); - respScCourseDetail.setCourseName(detailInfo.getCourseName()); - respScCourseDetail.setCourseTypeId(detailInfo.getCourseTypeId()); - respScCourseDetail.setTeachingMode(detailInfo.getTeachingMode()); - respScCourseDetail.setCourseIntro(detailInfo.getCourseIntro()); - respScCourseDetail.setClaFee(detailInfo.getClaFee()); - respScCourseDetail.setCourseCampus("部分校区"); - respScCourseDetail.setPartCampus(new String[]{}); - - if(null != detailInfo.getCourseTypeId()) { - ScCourseType courseType = courseTypeService.getById(detailInfo.getCourseTypeId()); - Optional.ofNullable(courseType).ifPresent(item->{ - respScCourseDetail.setCourseTypeName(item.getCourseType()); - }); - } - - List feeModeHourList = Lists.newArrayList(); - List feeModeDateList = Lists.newArrayList(); - List feeModeCycleList = Lists.newArrayList(); - - // 上课校区 - List partCampusList = Lists.newArrayList(); - - // 所有校区id 对应名称 map - Map campusMap = Maps.newHashMap(); - List campusList = deptService.campusList(); - for (RespTreeSelect respTreeSelect : campusList) { - campusMap.put(respTreeSelect.getId(), respTreeSelect.getLabel()); - } - campusMap.put(-1L, "全部校区"); - - // 课程收费配置信息 - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("course_id", detailInfo.getCourseId()); - List courseChargeList = courseChargeService.list(qw); - for (ScCourseCharge courseCharge : courseChargeList) { - ReqAddScCourseChargeItem chargeItem = new ReqAddScCourseChargeItem(); - Long departId = courseCharge.getDepartId(); - if (!partCampusList.contains(departId.toString()) && departId.compareTo(-1L) != 0) { - partCampusList.add(departId.toString()); - } - String chargeType = courseCharge.getChargeType(); - chargeItem.setChargeId(courseCharge.getChargeId()+""); - chargeItem.setCampusId(courseCharge.getDepartId()); - chargeItem.setCampusName(campusMap.get(courseCharge.getDepartId())); - if ("hour".equals(chargeType)) { - chargeItem.setCnt(courseCharge.getCount()); - chargeItem.setTotalFee(courseCharge.getTotalFee()); - feeModeHourList.add(chargeItem); - } else if ("date".equals(chargeType)) { - chargeItem.setCnt(courseCharge.getCount()); - chargeItem.setTotalFee(courseCharge.getTotalFee()); - chargeItem.setDateType(courseCharge.getDateUnit()); - feeModeDateList.add(chargeItem); - } else if ("cycle".equals(chargeType)) { - chargeItem.setCnt(courseCharge.getCount()); - chargeItem.setTotalFee(courseCharge.getTotalFee()); - feeModeCycleList.add(chargeItem); - } - } - - // 上课校区 所有或部分校区 - if (partCampusList.size() == 0) { - respScCourseDetail.setCourseCampus("全部校区"); - } else { - respScCourseDetail.setCourseCampus("部分校区"); - respScCourseDetail.setPartCampus(partCampusList.toArray(new String[partCampusList.size()])); - } - - respScCourseDetail.setFeeModeHourList(feeModeHourList); - respScCourseDetail.setFeeModeDateList(feeModeDateList); - respScCourseDetail.setFeeModeCycleList(feeModeCycleList); - if (!feeModeHourList.isEmpty()) { - respScCourseDetail.setFeeModeHour(true); - } - if (!feeModeDateList.isEmpty()) { - respScCourseDetail.setFeeModeDate(true); - } - if (!feeModeCycleList.isEmpty()) { - respScCourseDetail.setFeeModeCycle(true); - } - - return APIResponse.toAPIResponse(respScCourseDetail); - } - - /** - * 添加课程 - * - * @param reqAddScCourse - * @return - */ - public APIResponse addScCourse(ReqAddScCourse reqAddScCourse) { - APIBaseResponse checkParam = reqAddScCourse.checkParam(); - if (!checkParam.isSuccess()) { - return APIResponse.toExceptionResponse(checkParam.getRespMsg()); - } - LoginUser loginUser = SecurityUtils.getLoginUser(); - - // course 表保存 - ScCourse scCourse = new ScCourse(); - scCourse.setCourseName(reqAddScCourse.getCourseName()); - scCourse.setCourseTypeId(reqAddScCourse.getCourseTypeId()); - scCourse.setTeachingMode(reqAddScCourse.getTeachingMode()); - scCourse.setCourseIntro(reqAddScCourse.getCourseIntro()); - scCourse.setCreateUser(loginUser.getUserId()); - scCourse.setLastUpdateUser(loginUser.getUserId()); - scCourse.setTenantId(loginUser.getNowTenantId()); - scCourse.setClaFee(reqAddScCourse.getClaFee()); - boolean addScCourse = scCourseService.save(scCourse); - - // course_charge保存 - - // 按课时收费 - if (reqAddScCourse.isFeeModeHour()) { - List feeModeHourList = reqAddScCourse.getFeeModeHourList(); - feeModeHourList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(scCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("hour"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseChargeService.save(courseCharge); - }); - } - - // 按时间收费 - if (reqAddScCourse.isFeeModeDate()) { - List feeModeDateList = reqAddScCourse.getFeeModeDateList(); - feeModeDateList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(scCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("date"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseCharge.setDateUnit(item.getDateType()); - courseChargeService.save(courseCharge); - }); - } - - // 按期收费 - if (reqAddScCourse.isFeeModeCycle()) { - List feeModeCycleList = reqAddScCourse.getFeeModeCycleList(); - feeModeCycleList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(scCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("cycle"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseChargeService.save(courseCharge); - }); - } - - return APIResponse.toOkResponse(); - } - - /** - * 更新 - * - * @param reqChangeScCourse - * @return - */ - public APIResponse updateScCourse(ReqChangeScCourse reqChangeScCourse) { - APIBaseResponse checkParam = reqChangeScCourse.checkParam(); - if (!checkParam.isSuccess()) { - return APIResponse.toExceptionResponse(checkParam.getRespMsg()); - } - LoginUser loginUser = SecurityUtils.getLoginUser(); - - // 更新课程信息 - ScCourse updateCourse = new ScCourse(); - updateCourse.setCourseId(reqChangeScCourse.getCourseId()); - updateCourse.setCourseName(reqChangeScCourse.getCourseName()); - updateCourse.setCourseTypeId(reqChangeScCourse.getCourseTypeId()); - updateCourse.setTeachingMode(reqChangeScCourse.getTeachingMode()); - updateCourse.setCourseIntro(reqChangeScCourse.getCourseIntro()); - updateCourse.setClaFee(reqChangeScCourse.getClaFee()); - updateCourse.setLastUpdateUser(loginUser.getUserId()); - updateCourse.setLastUpdateTime(new Date()); - updateCourse.setTenantId(loginUser.getNowTenantId()); - updateCourse.setSale("1"); - updateCourse.setImportId(-1L); - boolean updateScCourse = scCourseService.updateById(updateCourse); - - // course_charge 删除 - UpdateWrapper uw = new UpdateWrapper(); - uw.eq("course_id", updateCourse.getCourseId()); - courseChargeService.remove(uw); - - // course_charge 新增 - - // 按课时收费 - if (reqChangeScCourse.isFeeModeHour()) { - List feeModeHourList = reqChangeScCourse.getFeeModeHourList(); - feeModeHourList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(updateCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("hour"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseChargeService.save(courseCharge); - }); - } - - // 按时间收费 - if (reqChangeScCourse.isFeeModeDate()) { - List feeModeDateList = reqChangeScCourse.getFeeModeDateList(); - feeModeDateList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(updateCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("date"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseCharge.setDateUnit(item.getDateType()); - courseChargeService.save(courseCharge); - }); - } - - // 按期收费 - if (reqChangeScCourse.isFeeModeCycle()) { - List feeModeCycleList = reqChangeScCourse.getFeeModeCycleList(); - feeModeCycleList.forEach(item -> { - ScCourseCharge courseCharge = new ScCourseCharge(); - courseCharge.setCourseId(updateCourse.getCourseId()); - courseCharge.setDepartId(item.getCampusId()); - courseCharge.setChargeType("cycle"); - courseCharge.setCount(item.getCnt()); - courseCharge.setTotalFee(item.getTotalFee()); - courseChargeService.save(courseCharge); - }); - } - - return APIResponse.toOkResponse(); - } - - /** - * 删除 - * - * @param courseIds - * @return - */ - public APIResponse deleteById(List courseIds) { - if (null == courseIds || courseIds.isEmpty()) { - return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); - } - - // 如课程对应在用班级,不允许删除 - QueryWrapper qw = new QueryWrapper<>(); - qw.in("course_id", courseIds); - int courseClaCount = courseClaService.count(qw); - if (courseClaCount != 0) { - return APIResponse.toExceptionResponse("该课程下存在在用班级,无法删除课程"); - } - - // 有报读记录 不允许删除 - QueryWrapper qwSc = new QueryWrapper<>(); - qwSc.in("course_id", courseIds); - int studentCourseCount = studentCourseService.count(qwSc); - if (studentCourseCount != 0) { - return APIResponse.toExceptionResponse("该课程已报读,无法删除课程"); - } - - boolean deleteScCourse = scCourseService.removeByIds(courseIds); - if (deleteScCourse) { - return APIResponse.toOkResponse(); - } else { - return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); - } - } - - /** - * 变更是否开售 - * - * @param scCourse - * @return - */ - public APIResponse changeCourseSale(ScCourse scCourse) { - if (null == scCourse.getCourseId()) { - return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); - } - if (StringUtils.isEmpty(scCourse.getSale())) { - return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); - } - UpdateWrapper uw = new UpdateWrapper(); - uw.set("sale", scCourse.getSale()); - uw.eq("course_id", scCourse.getCourseId()); - boolean updateScCourse = scCourseService.update(uw); - if (updateScCourse) { - return APIResponse.toOkResponse(); - } else { - return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); - } - } - - /** - * 导出课程 - * - * @param reqSearchScCourse - * @return - */ - public APIResponse exportCourse(ReqSearchScCourse reqSearchScCourse) { - try { - List courseList = courseMapper.selectCourseForExport(reqSearchScCourse); - String fileName = "exportCourse_" + System.currentTimeMillis() + UUID.randomUUID().toString(); - String fullPath = uploadConfigProperties.getTempSaveExportPath() + "/" + fileName + ".xlsx"; - CourseExportMergeStrategy mergeStrategy = new CourseExportMergeStrategy<>(courseList, 0, 6); - EasyExcel.write(fullPath, ExpCourse.class) - .registerWriteHandler(mergeStrategy) - .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) - .sheet("课程列表").doWrite(courseList); - return APIResponse.toAPIResponse(fileName); - } catch (Exception e) { - return APIResponse.toExceptionResponse("下载文件失败" + e.getMessage()); - } - } - - /** - * 报名-课程详情 - * - * @param orderCourseDetail - * @return - */ - public APIResponse orderCourseDetail(ReqBusinessOrderCourseDetail orderCourseDetail) { - Long[] courseIds = orderCourseDetail.getCourseIds(); - Long deptId = orderCourseDetail.getDeptId(); - Long studentId = orderCourseDetail.getStudentId(); - - if (null == courseIds || courseIds.length == 0) { - return APIResponse.toExceptionResponse("请选择课程"); - } - - if (null == deptId) { - return APIResponse.toExceptionResponse("请选择校区"); - } - - // 校验学生是否可报读 课程 - APIBaseResponse studentCanSignUpCourse = studentCourseService.checkStudentCanSignUpCourse(studentId, courseIds, deptId); - if (!studentCanSignUpCourse.isSuccess()) { - return APIResponse.toExceptionResponse(studentCanSignUpCourse.getRespMsg()); - } - - // 学生已报名课程收费模式 - Map studentCourseChargeTypeMap = Maps.newHashMap(); - if (null != studentId) { - QueryWrapper qw = new QueryWrapper(); - qw.select("course_id", "charge_type"); - qw.eq("student_id", studentId); - List studentCourseList = studentCourseService.list(qw); - studentCourseChargeTypeMap = studentCourseList.stream().collect(Collectors.toMap(ScStudentCourse::getCourseId, ScStudentCourse::getChargeType)); - } - - // 部门信息 - SysDept sysDept = sysDeptService.getById(deptId); - - List courseInfoList = Lists.newArrayList(); - for (Long courseId : courseIds) { - ScCourse scCourse = scCourseService.getById(courseId); - if (null == scCourse) { - continue; - } - RespBusinessChooseCourseInfo chooseCourseInfo = RespBusinessChooseCourseInfo.builder() - .courseId(scCourse.getCourseId()) - .courseName(scCourse.getCourseName()) - .deptId(sysDept.getDeptId()) - .deptName(sysDept.getDeptName()) - .teachingMode(scCourse.getTeachingMode()) - .build(); - - // 已报读的 收费方式 - String studentCourseChargeType = studentCourseChargeTypeMap.get(courseId); - - // 转换对象 - List chooseCourseChargeList = courseChargeService.courseChargeList(courseId, studentCourseChargeType); - - chooseCourseInfo.setCourseChargeList(chooseCourseChargeList); - // 是否为续报 - chooseCourseInfo.setContinueCourse(StringUtils.isNotEmpty(studentCourseChargeType)); - courseInfoList.add(chooseCourseInfo); - } - return APIResponse.toAPIResponse(courseInfoList); - } - - /** - * 学生是否可报名 课程 - * - * @param orderCourseDetail - * @return - */ - public APIResponse studentCanSignUpCourse(ReqBusinessOrderCourseDetail orderCourseDetail) { - Long[] courseIds = orderCourseDetail.getCourseIds(); - Long studentId = orderCourseDetail.getStudentId(); - if (null == studentId) { - return APIResponse.toExceptionResponse("studentId 不能为空"); - } - if (null == courseIds || courseIds.length == 0) { - return APIResponse.toOkResponse(); - } - APIBaseResponse studentCanSignUpCourse = studentCourseService.checkStudentCanSignUpCourse(studentId, courseIds, null); - if (!studentCanSignUpCourse.isSuccess()) { - return APIResponse.toExceptionResponse(studentCanSignUpCourse.getRespMsg()); - } - - return APIResponse.toOkResponse(); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseClaServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseClaServiceImpl.java deleted file mode 100644 index d3699d4..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseClaServiceImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.xluobo.business.sc.course.service.impl; - -import cn.xluobo.business.sc.course.repo.enums.ClaTimeStatusEnums; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseClaMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.IScClaTimeService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.core.api.APIBaseResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - *

- * 课程班级信息 服务实现类 - *

- * - * @author zhangby - * @since 2020-03-17 01:11:06 - */ -@Service -public class ScCourseClaServiceImpl extends ServiceImpl implements IScCourseClaService { - - @Autowired - private IScStudentCourseService studentCourseService; - @Autowired - private IScClaTimeService claTimeService; - - @Override - public Integer selectStudentCnt(Long claId) { - return baseMapper.selectStudentCnt(claId); - } - - @Override - public APIBaseResponse canChangeCourse(Long claId) { - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("cla_id", claId); - int count = studentCourseService.count(qw); - if (count != 0) { - return APIBaseResponse.fail("当前班级有报读学员,无法变更所属课程."); - } - - QueryWrapper qwClaTime = new QueryWrapper<>(); - qwClaTime.eq("cla_id", claId); - qwClaTime.eq("status", ClaTimeStatusEnums.HAD_CLASS.getStatus()); - int hadClaTimeCount = claTimeService.count(qwClaTime); - if (hadClaTimeCount != 0) { - return APIBaseResponse.fail("当前班级已有上课记录,无法变更所属课程."); - } - return APIBaseResponse.success(); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/controller/ScStudentCourseLogController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/controller/ScStudentCourseLogController.java index 9beca78..af2be8e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/controller/ScStudentCourseLogController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/controller/ScStudentCourseLogController.java @@ -2,7 +2,7 @@ package cn.xluobo.business.sc.log.controller; import cn.xluobo.business.sc.log.domain.req.ReqSearchStuCourseLog; import cn.xluobo.business.sc.log.service.BusinessScStudentCourseLogService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/service/BusinessScStudentCourseLogService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/service/BusinessScStudentCourseLogService.java index fe07564..ee30d70 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/service/BusinessScStudentCourseLogService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/log/service/BusinessScStudentCourseLogService.java @@ -3,7 +3,7 @@ package cn.xluobo.business.sc.log.service; import cn.xluobo.business.sc.log.domain.req.ReqSearchStuCourseLog; import cn.xluobo.business.sc.log.repo.mapper.ScStudentCourseLogMapper; import cn.xluobo.business.sc.log.repo.model.ScStudentCourseLog; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.page.RespPage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqBusinessSignUp.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqBusinessSignUp.java index 4bee154..1d14a44 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqBusinessSignUp.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqBusinessSignUp.java @@ -1,6 +1,6 @@ package cn.xluobo.business.sc.order.domain.req; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import lombok.Data; import org.apache.commons.lang3.StringUtils; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapper/ScOrderMapper.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapper/ScOrderMapper.java deleted file mode 100644 index 39ca6ca..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapper/ScOrderMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.xluobo.business.sc.order.repo.mapper; - -import cn.xluobo.business.sc.order.domain.req.ReqSearchScOrder; -import cn.xluobo.business.sc.order.domain.resp.RespOrder; -import cn.xluobo.business.sc.order.repo.model.ScOrder; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - *

- * 订单 Mapper 接口 - *

- * - * @author zhangby - * @since 2020-08-24 10:22:19 - */ -public interface ScOrderMapper extends com.baomidou.mybatisplus.core.mapper.BaseMapper { - - List selectFroSearchTable(@Param("reqSearchScOrder")ReqSearchScOrder reqSearchScOrder, @Param("page")Page page); - - /** - * 获取欠费学员数量 - * @return - */ - Integer selectArrearsStudentCount(@Param("tenantId") String tenantId); -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapping/ScOrderMapper.xml b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapping/ScOrderMapper.xml deleted file mode 100644 index 8e30c25..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/mapping/ScOrderMapper.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/BusinessScOrderService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/BusinessScOrderService.java index 16641b9..f037fab 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/BusinessScOrderService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/BusinessScOrderService.java @@ -1,66 +1,39 @@ package cn.xluobo.business.sc.order.service; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.IScClaTimeAttendService; -import cn.xluobo.business.sc.course.service.IScCourseChargeService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.business.sc.log.enums.LogTypeEnum; -import cn.xluobo.business.sc.log.repo.model.ScStudentCourseLog; import cn.xluobo.business.sc.log.service.IScStudentCourseLogService; -import cn.xluobo.business.sc.order.domain.req.ReqBusinessSignUp; -import cn.xluobo.business.sc.order.domain.req.ReqBusinessSignUpItem; -import cn.xluobo.business.sc.order.domain.req.ReqBusinessSignUpReceipt; -import cn.xluobo.business.sc.order.domain.req.ReqSearchScOrder; -import cn.xluobo.business.sc.order.domain.resp.RespOrder; -import cn.xluobo.business.sc.order.enums.OrderStatusEnum; -import cn.xluobo.business.sc.order.repo.mapper.ScOrderMapper; -import cn.xluobo.business.sc.order.repo.model.ScOrder; -import cn.xluobo.business.sc.order.repo.model.ScOrderAccount; -import cn.xluobo.business.sc.order.repo.model.ScOrderDetail; -import cn.xluobo.business.sc.salary.repo.model.ScCommissionPlans; -import cn.xluobo.business.sc.salary.service.ScCommissionPlansService; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import cn.xluobo.business.sc.student.service.IScStudentAccountService; -import cn.xluobo.business.sc.student.service.IScStudentCourseOrderService; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sc.student.service.IScStudentService; import cn.xluobo.business.sys.admin.service.ISysDeptService; import cn.xluobo.business.sys.admin.service.ISysUserService; import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; import cn.xluobo.business.sys.receipt.service.ISysReceiptAccountService; import cn.xluobo.business.sys.tag.service.ISysTagService; -import cn.xluobo.config.exception.BusinessException; -import cn.xluobo.core.api.APIBaseResponse; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; -import cn.xluobo.core.utils.DateUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.service.IScClaTimeAttendService; +import com.ruoyi.school.course.service.IScCourseChargeService; +import com.ruoyi.school.course.service.IScCourseClaService; +import com.ruoyi.school.course.service.IScCourseService; +import com.ruoyi.school.member.domain.resp.MemberCardVO; +import com.ruoyi.school.member.service.IScMemberCardService; +import com.ruoyi.school.order.domain.ScOrder; +import com.ruoyi.school.order.domain.req.ReqSearchScOrder; +import com.ruoyi.school.order.domain.resp.RespOrder; +import com.ruoyi.school.order.enums.OrderStatusEnum; +import com.ruoyi.school.order.mapper.ScOrderMapper; +import com.ruoyi.school.order.service.IScOrderService; +import com.ruoyi.school.salary.service.ScCommissionPlansService; +import com.ruoyi.school.student.service.IScStudentAccountService; +import com.ruoyi.school.student.service.IScStudentService; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; -import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @author :zhangbaoyu @@ -79,10 +52,7 @@ public class BusinessScOrderService { private ISysReceiptAccountService receiptAccountService; @Autowired private IScOrderAccountService orderAccountService; - @Autowired - private IScStudentCourseService studentCourseService; - @Autowired - private IScStudentCourseOrderService courseOrderService; + @Autowired private IScCourseService scCourseService; @Autowired @@ -109,6 +79,11 @@ public class BusinessScOrderService { @Autowired private IScStudentCourseLogService scStudentCourseLogService; + @Autowired + private IScMemberCardService memberCardService; + @Autowired + private ISysReceiptAccountService accountService; + /** * 查询 * @@ -136,433 +111,19 @@ public class BusinessScOrderService { // 订单信息 ScOrder order = scOrderService.getById(orderId); - // 经办人姓名 - if (null != order.getCreateUser()) { - SysUser user = userService.getOne(new QueryWrapper().select("nick_name").eq("user_id",order.getCreateUser())); - order.setHandleStaffName(user.getNickName()); - } detailMap.put("orderInfo", order); - // 订单明细 - List orderDetail = orderDetailService.getByOrderDetail(orderId); - detailMap.put("orderDetail", orderDetail); + // 会员卡详情 + MemberCardVO memberCardVO=memberCardService.getByCardNo(order.getCardNo()); + detailMap.put("orderDetail", memberCardVO); // 收款账户 - List orderAccountList = orderAccountService.getOrderAccountList(orderId); - detailMap.put("orderAccountList", orderAccountList); + SysReceiptAccount account = accountService.getById(order.getAccountId()); + detailMap.put("orderAccount", account); return APIResponse.toAPIResponse(detailMap); } - /** - * 新办 - * - * @param reqBusinessSignUp - * @return - */ - public APIResponse signUp(ReqBusinessSignUp reqBusinessSignUp) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - //校验参数 - APIResponse checkParam = reqBusinessSignUp.checkParam(); - if (!checkParam.isSuccess()) { - return checkParam; - } - - Long studentId = reqBusinessSignUp.getStudentId(); - Long handleDepartId = reqBusinessSignUp.getHandleDepartId(); - - ScStudent student = studentService.getById(studentId); - if (null == student) { - return APIResponse.toExceptionResponse("无法获取学生信息,请重试!"); - } - SysDept handleDept = deptService.getById(handleDepartId); - if (null == handleDept) { - return APIResponse.toExceptionResponse("无法获取经办校区信息,请重试!"); - } - ScCommissionPlans commissionPlans= commissionPlansService.getById(reqBusinessSignUp.getCommissionPlansId()); - if (null == commissionPlans) { - return APIResponse.toExceptionResponse("无法获取经佣金信息,请重试!"); - } - BigDecimal reqReceiptWaySumMoney = reqBusinessSignUp.getReceiptWaySumMoney(); - List signUpReceiptList = reqBusinessSignUp.getSignUpReceiptList(); - List signUpItemList = reqBusinessSignUp.getSignUpItemList(); - for (ReqBusinessSignUpItem signUpItem : signUpItemList) { - // 校验学生是否可报读 课程 - APIBaseResponse studentCanSignUpCourse = studentCourseService.checkStudentCanSignUpCourse(studentId, signUpItem.getCourseId(), signUpItem.getDepartId(), null); - if (!studentCanSignUpCourse.isSuccess()) { - return APIResponse.toExceptionResponse(studentCanSignUpCourse.getRespMsg()); - } - } - - // 原价 - BigDecimal originalTotalFee = BigDecimal.ZERO; - // 实际价格 - BigDecimal actualTotalFee = BigDecimal.ZERO; - // 应收 - BigDecimal needReceiptFee = BigDecimal.ZERO; - // 实收 - BigDecimal receiptWaySumMoney = BigDecimal.ZERO; - - // 计算实收 - for (ReqBusinessSignUpReceipt signUpReceipt : signUpReceiptList) { - receiptWaySumMoney = receiptWaySumMoney.add(signUpReceipt.getReceiptMoney()); - } - if (reqReceiptWaySumMoney.compareTo(receiptWaySumMoney) != 0) { - return APIResponse.toExceptionResponse("实收金额不一致,请重试"); - } - - // 课程信息、收费模式缓存 - Map courseCacheMap = Maps.newHashMap(); - Map chargeCacheMap = Maps.newHashMap(); - - // 计算原价 实际价格 应收 - for (ReqBusinessSignUpItem signUpItem : signUpItemList) { - Long courseId = signUpItem.getCourseId(); - Long chargeId = signUpItem.getChargeId(); - boolean openDiscount = signUpItem.isOpenDiscount(); - boolean openDiscountFee = signUpItem.isOpenDiscountFee(); - ScCourse scCourse = scCourseService.getById(courseId); - ScCourseCharge courseCharge = courseChargeService.getById(chargeId); - if (!signUpItem.getChargeType().equals(courseCharge.getChargeType())) { - throw new BusinessException(scCourse.getCourseName() + "收费方式不一致,请重试"); - } - - courseCacheMap.put(courseId, scCourse); - chargeCacheMap.put(chargeId, courseCharge); - - Integer buyCount = signUpItem.getBuyCount(); - BigDecimal chargeTotalFee = courseCharge.getTotalFee(); - BigDecimal courseOriginalTotalFee = chargeTotalFee.multiply(new BigDecimal(buyCount)); - BigDecimal courseActualTotalFee = courseOriginalTotalFee; - - // 折扣 - if (openDiscount) { - // 实际价格= 实际价格 * 折扣(9.8/10) - courseActualTotalFee = courseActualTotalFee.multiply(signUpItem.getDiscount()).divide(new BigDecimal(10)); - } - // 优惠金额 - if (openDiscountFee) { - courseActualTotalFee = courseActualTotalFee.subtract(signUpItem.getDiscountFee()); - } - - // 原价 - originalTotalFee = originalTotalFee.add(courseOriginalTotalFee); - actualTotalFee = actualTotalFee.add(courseActualTotalFee); - } - // 实收 = 应收 - 余额支付 - needReceiptFee = actualTotalFee.subtract(reqBusinessSignUp.getBalancePayValue()); - if (needReceiptFee.compareTo(reqBusinessSignUp.getNeedReceiptFee()) != 0) { - throw new BusinessException("应收金额不一致,请重试"); - } - - // 入 sc_order 表 - Long orderId = null; - { - ScOrder order = ScOrder.builder() - .studentId(studentId) - .studentName(student.getStudentName()) - .phone(student.getPhone()) - .orderType("1") - .originalTotalFee(originalTotalFee) - .actualTotalFee(actualTotalFee) - .receiptFee(receiptWaySumMoney) - .balanceFee(reqBusinessSignUp.getBalancePayValue()) - .orderStatus(OrderStatusEnum.HAD_PAY.getOrderStatus()) - .memo(reqBusinessSignUp.getMemo()) - .handleDeptId(handleDept.getDeptId()) - .handleDeptName(handleDept.getDeptName()) - .handleDate(reqBusinessSignUp.getHandleDate()) - .createUser(loginUser.getUserId()) - .lastUpdateUser(loginUser.getUserId()) - .commissionPlansId(reqBusinessSignUp.getCommissionPlansId()) - .build(); - - if (null != reqBusinessSignUp.getOrderTag()) { - order.setOrderTag(String.join(",", reqBusinessSignUp.getOrderTag())); - } - if (null != reqBusinessSignUp.getSaleSourceTag()) { - order.setSaleSourceTag(String.join(",", reqBusinessSignUp.getSaleSourceTag())); - } - if (null != reqBusinessSignUp.getSaleStaffId()) { - SysUser saleStaff = userService.getOne(new QueryWrapper().select("user_id","nick_name").eq("user_id",reqBusinessSignUp.getSaleStaffId())); - if (null == saleStaff) { - throw new BusinessException("无法获取销售员工信息"); - } - order.setSaleStaffId(saleStaff.getUserId()); - order.setSaleStaffName(saleStaff.getNickName()); - } - order.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); - scOrderService.save(order); - orderId = order.getOrderId(); - log.info("save order success,orderId={}", orderId); - - if (null != reqBusinessSignUp.getOrderTag()) { - tagService.autoCreateTag(reqBusinessSignUp.getOrderTag(), "2", loginUser.getNowTenantId(), loginUser.getUserId()); - } - if (null != reqBusinessSignUp.getSaleSourceTag()) { - tagService.autoCreateTag(reqBusinessSignUp.getSaleSourceTag(), "1", loginUser.getNowTenantId(), loginUser.getUserId()); - } - } - - // 入sc_order_account - for (ReqBusinessSignUpReceipt signUpReceipt : signUpReceiptList) { - SysReceiptAccount receiptAccount = receiptAccountService.getById(signUpReceipt.getAccountId()); - if (null == receiptAccount) { - throw new BusinessException("无法获取收款账户,请核查后重试!"); - } - ScOrderAccount orderAccount = new ScOrderAccount(); - orderAccount.setOrderId(orderId); - orderAccount.setAccountId(signUpReceipt.getAccountId()); - orderAccount.setAccountName(receiptAccount.getAccountName()); - orderAccount.setFee(signUpReceipt.getReceiptMoney()); - orderAccountService.save(orderAccount); - } - - // 报读课程 - for (ReqBusinessSignUpItem signUpItem : signUpItemList) { - Long courseId = signUpItem.getCourseId(); - Long departId = signUpItem.getDepartId(); - Long claId = signUpItem.getClaId(); - Long chargeId = signUpItem.getChargeId(); - boolean openDiscount = signUpItem.isOpenDiscount(); - boolean openDiscountFee = signUpItem.isOpenDiscountFee(); - ScCourse scCourse = courseCacheMap.get(courseId); - ScCourseCla scCourseCla = new ScCourseCla(); - if (null != claId) { - scCourseCla = courseClaService.getById(claId); - if (null == scCourseCla) { - throw new BusinessException("无法获取" + scCourse.getCourseName() + "对应的班级,请重试"); - } - } - ScCourseCharge courseCharge = chargeCacheMap.get(chargeId); - if (!signUpItem.getChargeType().equals(courseCharge.getChargeType())) { - throw new BusinessException(scCourse.getCourseName() + "收费方式不一致,请重试"); - } - - Integer buyCount = signUpItem.getBuyCount(); - BigDecimal chargeTotalFee = courseCharge.getTotalFee(); - BigDecimal courseOriginalTotalFee = chargeTotalFee.multiply(new BigDecimal(buyCount)); - BigDecimal courseActualTotalFee = courseOriginalTotalFee; - - // 折扣 - if (openDiscount) { - // 实际价格= 实际价格 * 折扣(9.8/10) - courseActualTotalFee = courseActualTotalFee.multiply(signUpItem.getDiscount()).divide(new BigDecimal(10)); - } - // 优惠金额 - if (openDiscountFee) { - courseActualTotalFee = courseActualTotalFee.subtract(signUpItem.getDiscountFee()); - } - - // 已报读本课程信息 - ScStudentCourse dbStudentCourse = studentCourseService.selectByStudentIdCourseId(studentId, courseId); - - BigDecimal addedHour = BigDecimal.ZERO; - int addedDays = 0; - - if (CourseChargeTypeEnum.HOUR.getChargeType().equals(courseCharge.getChargeType())) { - // 新增课时 - addedHour = courseCharge.getCount().multiply(new BigDecimal(buyCount)); - } else if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - // 校验报读时间段是否重复 - boolean checkDateCover = courseOrderService.checkDateCover(studentId, courseId, signUpItem.getBeginDate(), signUpItem.getEndDate()); - if (checkDateCover) { - throw new BusinessException(scCourse.getCourseName() + "报读日期存在覆盖,请重新选择报读日期范围!"); - } - // 新增天数 - DateTime beginDate = DateUtil.yyyMMddDayBegin(signUpItem.getBeginDate()); - DateTime endDate = DateUtil.yyyMMddDayBegin(signUpItem.getEndDate()); - Period period = new Period(beginDate, endDate, PeriodType.days()); - addedDays = period.getDays() + 1; - } else if (CourseChargeTypeEnum.CYCLE.getChargeType().equals(courseCharge.getChargeType())) { - // 新增课时 - addedHour = courseCharge.getCount().multiply(new BigDecimal(buyCount)); - } - - // 插入 sc_order_detail - Long orderDetailId = null; - { - SysDept dept = deptService.getById(departId); - ScOrderDetail orderDetail = ScOrderDetail.builder() - .orderId(orderId) - .courseId(courseId) - .courseName(scCourse.getCourseName()) - .claId(claId) - .claName(scCourseCla.getClaName()) - .deptId(dept.getDeptId()) - .deptName(dept.getDeptName()) - .detailTag(signUpItem.getDetailTag()) - .chargeName(courseCharge.getChargeName()) - .chargeType(courseCharge.getChargeType()) - .chargeCount(courseCharge.getCount()) - .chargeFee(courseCharge.getTotalFee()) - .dateUnit(courseCharge.getDateUnit()) - .buyCount(new BigDecimal(buyCount)) - .originalFee(courseOriginalTotalFee) - .actualFee(courseActualTotalFee) - .insideMemo(signUpItem.getInsideMemo()) - .outsideMemo(signUpItem.getOutsideMemo()) - .orderDetailStatus(OrderStatusEnum.HAD_PAY.getOrderStatus()) - .createUser(loginUser.getUserId()) - .lastUpdateUser(loginUser.getUserId()) - .build(); - if (openDiscount) { - orderDetail.setDirectDiscount(signUpItem.getDiscount()); - } - if (openDiscountFee) { - orderDetail.setDirectReduceFee(signUpItem.getDiscountFee()); - } - if (signUpItem.isOpenExpire()) { - orderDetail.setExpireDate(signUpItem.getExpireDate()); - } - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - orderDetail.setBeginDate(signUpItem.getBeginDate()); - orderDetail.setEndDate(signUpItem.getEndDate()); - } - orderDetailService.save(orderDetail); - orderDetailId = orderDetail.getOrderDetailId(); - } - - // 插入/更新 sc_student_course表 - Long studentCourseId = null; - { - // db中包含 - if (null != dbStudentCourse) { - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("student_course_id", dbStudentCourse.getStudentCourseId()); - uw.eq("total_fee", dbStudentCourse.getTotalFee()); - - if (CourseChargeTypeEnum.HOUR.getChargeType().equals(courseCharge.getChargeType())) { - uw.eq("balance_hour", dbStudentCourse.getBalanceHour()); - uw.eq("total_hour", dbStudentCourse.getTotalHour()); - uw.set("balance_hour", dbStudentCourse.getBalanceHour().add(addedHour)); - uw.set("total_hour", dbStudentCourse.getTotalHour().add(addedHour)); - } else if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - uw.eq("total_day", dbStudentCourse.getTotalDay()); - uw.set("total_day", dbStudentCourse.getTotalDay().add(new BigDecimal(addedDays))); - } else if (CourseChargeTypeEnum.CYCLE.getChargeType().equals(courseCharge.getChargeType())) { - uw.eq("balance_hour", dbStudentCourse.getBalanceHour()); - uw.eq("total_hour", dbStudentCourse.getTotalHour()); - uw.set("balance_hour", dbStudentCourse.getBalanceHour().add(addedHour)); - uw.set("total_hour", dbStudentCourse.getTotalHour().add(addedHour)); - } - uw.set("total_fee", dbStudentCourse.getTotalFee().add(courseActualTotalFee)); - uw.set("last_update_user", loginUser.getUserId()); - uw.set("last_update_time", new Date()); - - boolean update = studentCourseService.update(uw); - if (!update) { - throw new BusinessException("学员新增课时失败,请稍后重试"); - } - studentCourseId = dbStudentCourse.getStudentCourseId(); - } else { - ScStudentCourse addStudentCourse = new ScStudentCourse(); - addStudentCourse.setStudentId(studentId); - addStudentCourse.setCourseId(courseId); - addStudentCourse.setCourseName(scCourse.getCourseName()); - addStudentCourse.setDeptId(departId); - if (null != claId) { - addStudentCourse.setClaId(scCourseCla.getClaId()); - addStudentCourse.setClaName(scCourseCla.getClaName()); - } - addStudentCourse.setChargeType(courseCharge.getChargeType()); - if (CourseChargeTypeEnum.HOUR.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalHour(addedHour); - addStudentCourse.setBalanceHour(addedHour); - } else if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalDay(new BigDecimal(addedDays)); - } else if (CourseChargeTypeEnum.CYCLE.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalHour(addedHour); - addStudentCourse.setBalanceHour(addedHour); - } - addStudentCourse.setTotalFee(courseActualTotalFee); - addStudentCourse.setStatus("1"); - addStudentCourse.setCreateUser(loginUser.getUserId()); - addStudentCourse.setLastUpdateUser(loginUser.getUserId()); - addStudentCourse.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); - studentCourseService.save(addStudentCourse); - studentCourseId = addStudentCourse.getStudentCourseId(); - } - } - - // 插入sc_student_course_order - { - ScStudentCourseOrder studentCourseOrder = ScStudentCourseOrder.builder() - .studentCourseId(studentCourseId) - .orderId(orderId) - .orderDetailId(orderDetailId) - .totalHour(addedHour) - .balanceHour(addedHour) - .totalDay(new BigDecimal(addedDays)) - .totalFee(courseActualTotalFee) - .createUser(loginUser.getUserId()) - .lastUpdateUser(loginUser.getUserId()) - .build(); - if (signUpItem.isOpenExpire()) { - studentCourseOrder.setExpireDate(signUpItem.getExpireDate()); - } - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - studentCourseOrder.setBeginDate(signUpItem.getBeginDate()); - studentCourseOrder.setEndDate(signUpItem.getEndDate()); - - // 单价 = 总价/天 - studentCourseOrder.setUnitFee(courseActualTotalFee.divide(new BigDecimal(addedDays), 2, BigDecimal.ROUND_HALF_UP)); - } else { - // 单价 = 总价/课时数 - studentCourseOrder.setUnitFee(courseActualTotalFee.divide(addedHour, 2, BigDecimal.ROUND_HALF_UP)); - } - courseOrderService.save(studentCourseOrder); - } - - // 学生报读 日志 - StringBuffer sb = new StringBuffer(""); - if ("1".equals(signUpItem.getDetailTag())) { - sb.append("新报,"); - } else if ("2".equals(signUpItem.getDetailTag())) { - sb.append("续报,"); - } - sb.append("课程'").append(scCourse.getCourseName()).append("',"); - sb.append("金额").append(courseActualTotalFee.toString()).append("元,"); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(studentId) - .logType(LogTypeEnum.PAY_FEE.getLogType()) - .courseId(courseId) - .courseName(scCourse.getCourseName()) - .claId(claId) - .claName(scCourseCla.getClaName()) - .deptName(handleDept.getDeptName()) - .changeFee(courseActualTotalFee) - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .createTime(new Date()) - .build(); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - sb.append("增加'").append(addedDays).append("'天"); - sb.append("(").append(signUpItem.getBeginDate()).append("~").append(signUpItem.getEndDate()).append(")."); - } else { - sb.append("增加'").append(addedHour.toString()).append("'课时,"); - studentCourseLog.setChangeHour(addedHour); - // 增加后剩余 - if (null != dbStudentCourse) { - studentCourseLog.setAfterBalanceHour(dbStudentCourse.getBalanceHour().add(addedHour)); - sb.append("增加后剩余").append(dbStudentCourse.getBalanceHour().add(addedHour).toString()).append("'课时").append("."); - } else { - studentCourseLog.setAfterBalanceHour(addedHour); - sb.append("增加后剩余").append(addedHour.toString()).append("'课时").append("."); - } - } - studentCourseLog.setMemo(sb.toString()); - scStudentCourseLogService.save(studentCourseLog); - } - - // 实收 > 应收, 增加 学生账户余额 - if (receiptWaySumMoney.compareTo(needReceiptFee) > 0) { - BigDecimal addBalanceFee = receiptWaySumMoney.subtract(needReceiptFee); - studentAccountService.addBalance(studentId, addBalanceFee, loginUser.getUserId()); - } - - return APIResponse.toOkResponse(); - } /** * 作废订单 @@ -570,6 +131,7 @@ public class BusinessScOrderService { * @param orderIds * @return */ + @Transactional public APIResponse invalidById(Long[] orderIds) { if (null == orderIds || orderIds.length == 0) { return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); @@ -595,163 +157,36 @@ public class BusinessScOrderService { dealFailCnt++; continue; } - - // 所有未作废的订单明细 - List orderDetailList = orderDetailService.getByOrderDetail(orderId, new String[]{OrderStatusEnum.INVALID.getOrderStatus()}); - - // 订单明细map - Map orderDetailMap = Maps.newHashMap(); - for (ScOrderDetail orderDetail : orderDetailList) { - orderDetailMap.put(orderDetail.getOrderDetailId(), orderDetail); - } - - // 所有关联的课程订单 - List orderDetailIdList = orderDetailList.stream().map(ScOrderDetail::getOrderDetailId).collect(Collectors.toList()); - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("order_id", orderId); - qw.in("order_detail_id", orderDetailIdList); - List courseOrderList = courseOrderService.list(qw); - - // 校验 如果消耗课时 不允许作废 - for (ScStudentCourseOrder courseOrder : courseOrderList) { - ScOrderDetail orderDetail = orderDetailMap.get(courseOrder.getOrderDetailId()); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(orderDetail.getChargeType())) { - String beginDate = courseOrder.getBeginDate(); - String endDate = courseOrder.getEndDate(); - Long studentCourseId = courseOrder.getStudentCourseId(); - int studentCourseAttendCount = claTimeAttendService.studentCourseAttendCount(studentCourseId, beginDate, endDate); - if (0 != studentCourseAttendCount) { - // 订单日期范围内 有上课记录,不允许作废 - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - ScCourse scCourse = scCourseService.getById(studentCourse.getCourseId()); - errorSb.append("订单'").append(order.getOrderId()).append("',"); - errorSb.append(scCourse.getCourseName()).append(",在").append(beginDate).append("~").append(endDate).append(",有上课记录(").append(studentCourseAttendCount).append("次),无发作废;"); - dealFailCnt++; - continue; - } - } else { - if (null != courseOrder.getBalanceHour() && courseOrder.getBalanceHour().compareTo(courseOrder.getTotalHour()) < 0) { - // 按课时收费 并且 剩余课时<总课时 已消耗,不允许作废 - ScStudentCourse studentCourse = studentCourseService.getById(courseOrder.getStudentCourseId()); - ScCourse scCourse = scCourseService.getById(studentCourse.getCourseId()); - errorSb.append("订单:").append(order.getOrderId()).append(","); - errorSb.append(scCourse.getCourseName()).append(",已消耗课时,无法作废;"); - dealFailCnt++; - continue; - } else if (null != courseOrder.getBalanceHour() && courseOrder.getBalanceHour().compareTo(courseOrder.getTotalHour()) > 0) { - // 按课时收费 并且 剩余课时>总课时 删除上课记录 恢复课时后,剩余课时>总课时,不允许作废 - ScStudentCourse studentCourse = studentCourseService.getById(courseOrder.getStudentCourseId()); - ScCourse scCourse = scCourseService.getById(studentCourse.getCourseId()); - errorSb.append("订单:").append(order.getOrderId()).append(","); - errorSb.append(scCourse.getCourseName()).append(",剩余课时大于总课时,无法作废"); - dealFailCnt++; - continue; - } +// 相关会员卡 + MemberCardVO memberCardVO=memberCardService.getByCardNo(order.getCardNo()); + if(memberCardVO.getChargeType().equals("count") ){ + if (memberCardVO.getTotalCount().compareTo(memberCardVO.getRemainingCount())!=0) + { errorSb.append("订单'").append(orderId).append("',"); + errorSb.append("订单中的会员卡已经开始使用,无法作废;"); + dealFailCnt++; + continue; } - dealSuccessCnt++; } + if (memberCardVO.getChargeType().equals("days") ){ + if (!memberCardVO.getTotalDays().equals(memberCardVO.getRemainingDays())){ + errorSb.append("订单'").append(orderId).append("',"); + errorSb.append("订单中的会员卡已经开始使用,无法作废;"); + dealFailCnt++; + continue; + } - if(dealFailCnt != 0) { - return APIResponse.toExceptionResponse("操作失败,成功:" + dealSuccessCnt + ",失败:" + dealFailCnt + ",原因如下:" + errorSb.toString()); } - - // 订单作废、订单明细作废 - scOrderService.invalidOrder(orderId); - orderDetailService.invalidOrder(orderId, orderDetailIdList); - - // 课程订单 失效、 剩余课时、时间 作废 - for (ScStudentCourseOrder courseOrder : courseOrderList) { - // 课程订单 失效 - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("course_order_id", courseOrder.getCourseOrderId()); - uw.set("valid", false); - courseOrderService.update(uw); - - // 学生课程信息 - ScStudentCourse studentCourse = studentCourseService.getById(courseOrder.getStudentCourseId()); - - ScOrderDetail orderDetail = orderDetailMap.get(courseOrder.getOrderDetailId()); - // 收费方式 - String chargeType = orderDetail.getChargeType(); - // 实际价格 - BigDecimal actualFee = orderDetail.getActualFee(); - - Long studentCourseId = courseOrder.getStudentCourseId(); - BigDecimal totalDay = courseOrder.getTotalDay(); - BigDecimal totalHour = courseOrder.getTotalHour(); - - // 学生日志 - StringBuffer sb = new StringBuffer("作废订单,"); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(order.getStudentId()) - .logType(LogTypeEnum.INVALID_ORDER.getLogType()) - .courseId(orderDetail.getCourseId()) - .courseName(orderDetail.getCourseName()) - .claId(orderDetail.getClaId()) - .claName(orderDetail.getClaName()) - .deptName(orderDetail.getDeptName()) - .changeFee(actualFee.negate()) - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .createTime(new Date()) - .build(); - - if (CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { - - // 总天数 = 总天数 - 作废天数 - // 总学费 = 总学费 - 作废学费 - UpdateWrapper uwStudentCourse = new UpdateWrapper<>(); - uwStudentCourse - .eq("student_course_id", studentCourseId) - .eq("total_day", studentCourse.getTotalDay()) - .eq("total_fee", studentCourse.getTotalFee()) - .eq("charge_type", "date") - .set("total_day", studentCourse.getTotalDay().subtract(totalDay)) - .set("total_fee", studentCourse.getTotalFee().subtract(actualFee)) - .set("last_update_user", loginUser.getUserId()) - .set("last_update_time", new Date()); - boolean update = studentCourseService.update(uwStudentCourse); - if (!update) { - throw new BusinessException("学员报读恢复失败,请重试!"); - } - - // 当总天数、总费用为0时,删除报读 - studentCourseService.deleteWhenTotalDayZeroForInvalid(studentCourseId); - - sb.append("作废").append(totalDay.toString()).append("天,") - .append(actualFee.toString()).append("元"); - } else { - - // 剩余课时 = 剩余课时 - 作废课时 - // 总学费 = 总学费 - 作废学费 - UpdateWrapper uwStudentCourse = new UpdateWrapper<>(); - uwStudentCourse - .eq("student_course_id", studentCourseId) - .eq("total_hour", studentCourse.getTotalHour()) - .eq("balance_hour", studentCourse.getBalanceHour()) - .eq("total_fee", studentCourse.getTotalFee()) - .ne("charge_type", "date") - .set("total_hour", studentCourse.getTotalHour().subtract(totalHour)) - .set("balance_hour", studentCourse.getBalanceHour().subtract(totalHour)) - .set("total_fee", studentCourse.getTotalFee().subtract(actualFee)) - .set("last_update_user", loginUser.getUserId()) - .set("last_update_time", new Date()); - boolean update = studentCourseService.update(uwStudentCourse); - if (!update) { - throw new BusinessException("学员报读恢复失败,请重试!"); - } - - // 当总课时、总费用为0时,删除报读 - studentCourseService.deleteWhenTotalHourZeroForInvalid(studentCourseId); - - studentCourseLog.setChangeHour(totalHour.negate()); - studentCourseLog.setAfterBalanceHour(studentCourse.getBalanceHour().subtract(totalHour)); - sb.append("作废").append(totalHour.toString()).append("课时,") - .append(actualFee.toString()).append("元"); + if (memberCardVO.getChargeType().equals("total_fee")){ + if (memberCardVO.getTotalFee().compareTo(memberCardVO.getRemainingTotalFee())!=0){ + errorSb.append("订单'").append(orderId).append("',"); + errorSb.append("订单中的会员卡已经开始使用,无法作废;"); + dealFailCnt++; + continue; } - studentCourseLog.setMemo(sb.toString()); - scStudentCourseLogService.save(studentCourseLog); } +// // 订单作废 + scOrderService.invalidOrder(orderId); + memberCardService.suspendCard(memberCardVO.getId()); } if (dealFailCnt == 0) { diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderDetailServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderDetailServiceImpl.java index 2bf5bc1..0e84c90 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderDetailServiceImpl.java @@ -1,6 +1,6 @@ package cn.xluobo.business.sc.order.service.impl; -import cn.xluobo.business.sc.order.enums.OrderStatusEnum; +import com.ruoyi.school.order.enums.OrderStatusEnum; import cn.xluobo.business.sc.order.repo.mapper.ScOrderDetailMapper; import cn.xluobo.business.sc.order.repo.model.ScOrderDetail; import cn.xluobo.business.sc.order.service.IScOrderDetailService; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentCourseController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentCourseController.java deleted file mode 100644 index 1ed3d92..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentCourseController.java +++ /dev/null @@ -1,119 +0,0 @@ -package cn.xluobo.business.sc.student.controller; - -import cn.xluobo.business.sc.student.domain.req.*; -import cn.xluobo.business.sc.student.domain.resp.RespCourseClaStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStuCourseSignUpStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStudentCourse; -import cn.xluobo.business.sc.student.service.BusinessScStudentCourseService; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.page.RespPage; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 学生课程 - * - * @author :zhangbaoyu - * @date :Created in 2020/9/2 15:05 - */ -@RestController -@RequestMapping("/api/sc/studentCourse") -public class ScStudentCourseController { - - @Autowired - private BusinessScStudentCourseService studentCourseService; - - /** - * 学生课程相关信息 - * @param studentId - * @return 报读课程、校区、联系人信息 - */ - @GetMapping("/info/studentCourseInfo/{studentId}") - public APIResponse studentCourseInfo(@PathVariable("studentId") Long studentId){ - return studentCourseService.studentCourseInfo(studentId); - } - - /** - * 课程、班级 学生列表 - * @param reqSearchStudentCourseCla - * @return - */ - @GetMapping("/list/searchCourseClaStudent") - public APIResponse searchCourseClaStudent(ReqSearchStudentCourseCla reqSearchStudentCourseCla){ - RespPage respPage = studentCourseService.searchCourseClaStudent(reqSearchStudentCourseCla); - return APIResponse.toAPIResponse(respPage); - } - - /** - * 已报名未选择班级 选择班级 - * @return - */ -// @PostMapping("/update/studentCourseChooseCla") -// public APIResponse studentCourseChooseCla(@RequestBody ReqStudentCourseChooseCla studentCourseChooseCla){ -// return studentCourseService.studentCourseChooseCla(studentCourseChooseCla); -// } - - /** - * 记上课 - * @param reqClaTimeAttend - * @return - */ - @PostMapping("/update/claTimeAttend") - public APIResponse claTimeAttend(@RequestBody ReqClaTimeAttend reqClaTimeAttend){ - return studentCourseService.claTimeAttend(reqClaTimeAttend); - } - - /** - * 学生停课 - * @param studentCourseId - * @return - */ - @PostMapping("/update/stopStudentCourseStatus/{studentCourseId}") - public APIResponse stopStudentCourseStatus(@PathVariable("studentCourseId") Long studentCourseId) { - return studentCourseService.stopStudentCourseStatus(studentCourseId); - } - - /** - * 变更学生状态为在读 - * @param studentCourseId - * @return - */ - @PostMapping("/update/atClaStudentCourseStatus/{studentCourseId}") - public APIResponse atClaStudentCourseStatus(@PathVariable("studentCourseId") Long studentCourseId) { - return studentCourseService.atClaStudentCourseStatus(studentCourseId); - } - - /** - * 学生报读课程列表 - * @param reqSearchStudentCourse - * @return - */ - @GetMapping("/list/searchStudentCourse") - public APIResponse searchStudentCourse(ReqSearchStudentCourse reqSearchStudentCourse){ - List respStudentCourses = studentCourseService.searchStudentCourse(reqSearchStudentCourse); - return APIResponse.toAPIResponse(respStudentCourses); - } - - /** - * 报读列表 - * @param reqSearchStuCourseSignUp - * @return - */ - @GetMapping("/list/searchStuCourseSignUpList") - public APIResponse searchStuCourseSignUpList(ReqSearchStuCourseSignUp reqSearchStuCourseSignUp){ - RespPage respPage = studentCourseService.searchStuCourseSignUpList(reqSearchStuCourseSignUp); - return APIResponse.toAPIResponse(respPage); - } - - /** - * 报读信息中 将学员从班级中移除 - * @param studentCourseId - * @return - */ -// @PostMapping("/update/removeStuFromCla/{studentCourseId}") -// public APIResponse removeStuFromCla(@PathVariable("studentCourseId") Long studentCourseId) { -// return studentCourseService.removeStuFromCla(studentCourseId); -// } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttend.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttend.java deleted file mode 100644 index cf2ff1f..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttend.java +++ /dev/null @@ -1,106 +0,0 @@ -package cn.xluobo.business.sc.student.domain.req; - -import cn.xluobo.core.api.APIResponse; -import lombok.Data; -import org.apache.commons.lang3.StringUtils; - -import java.util.List; - -/** - * 记上课请求参数 - * 修改上课记录请求参数 - * @author :zhangbaoyu - * @date :Created in 2020/10/1 19:44 - */ -@Data -public class ReqClaTimeAttend { - - // 上课方式 排课记上课rule、自定义上课custom - private String attendType; - - // 排课编号 - private Long courseTimeId; - - private Long claId; - - private Long teacherId; - - private Long roomId; - - private String claDate; - - private String startTime; - - private String endTime; - - private String classTheme; - - private String memo; - - List studentAttendList; - - /** - * 参数校验 - * @return - */ - public APIResponse checkParam() { - if(null == studentAttendList || studentAttendList.size() ==0) { - return APIResponse.toExceptionResponse("排课记上课,请选择上课学生"); - } - for (ReqClaTimeAttendItem attendItem : studentAttendList) { - if(StringUtils.isAnyEmpty(attendItem.getAttendStatus())) { - return APIResponse.toExceptionResponse("请选择学员到课状态"); - } else if(null == attendItem.getStudentCourseId()) { - return APIResponse.toExceptionResponse("请选择学员"); - } else if(null == attendItem.getStuLoseHour()) { - return APIResponse.toExceptionResponse("请选择扣减课时"); - } - } - if("rule".equals(attendType)) { - // 排课记上课 - if(null == courseTimeId) { - return APIResponse.toExceptionResponse("排课记上课,未选择上课日期!"); - } else if(StringUtils.isAnyEmpty(startTime,endTime)) { - return APIResponse.toExceptionResponse("排课记上课,未选择上下课时间!"); - } - - } else if ("custom".equals(attendType)) { - // 自定义记上课 - if(StringUtils.isAnyEmpty(claDate,startTime,endTime)) { - return APIResponse.toExceptionResponse("自定义记上课,未选择上课日期,上下课时间!"); - } else if( null == teacherId) { - return APIResponse.toExceptionResponse("自定义记上课,请选择上课教师!"); - } - } - return APIResponse.toOkResponse(); - } - - /** - * 已上课修改 - * 参数校验 - * @return - */ - public APIResponse checkParamForUpdateHadClaTime() { - if(null == studentAttendList || studentAttendList.size() ==0) { - return APIResponse.toExceptionResponse("排课记上课,请选择上课学生"); - } - for (ReqClaTimeAttendItem attendItem : studentAttendList) { - if(StringUtils.isAnyEmpty(attendItem.getAttendStatus())) { - return APIResponse.toExceptionResponse("请选择学员到课状态"); - } else if(null == attendItem.getStudentCourseId()) { - return APIResponse.toExceptionResponse("请选择学员"); - } else if(null == attendItem.getStuLoseHour()) { - return APIResponse.toExceptionResponse("请选择扣减课时"); - } - } - - // 自定义记上课 - if(StringUtils.isAnyEmpty(claDate,startTime,endTime)) { - return APIResponse.toExceptionResponse("自定义记上课,未选择上课日期,上下课时间!"); - } else if( null == teacherId) { - return APIResponse.toExceptionResponse("自定义记上课,请选择上课教师!"); - } - return APIResponse.toOkResponse(); - } - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespCourseClaStudent.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespCourseClaStudent.java deleted file mode 100644 index 3855fb4..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespCourseClaStudent.java +++ /dev/null @@ -1,113 +0,0 @@ -package cn.xluobo.business.sc.student.domain.resp; - -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import lombok.Data; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 班级学员 - * 用于 班级下学生列表 - * @author :zhangbaoyu - * @date :Created in 2020/9/28 16:51 - */ -@Data -public class RespCourseClaStudent { - - private Long studentCourseId; - - private Long claId; - - private Long courseId; - - // 报读校区 - private String deptName; - - private Long studentId; - - private String studentName; - - private String sex; - - private String phone; - - // 联系人信息 - private String contactInfo; - - private String chargeType; - - private BigDecimal totalDay; - private BigDecimal totalHour; - private BigDecimal balanceHour; - // 过期课时 - private BigDecimal expireHour; - - // 即将生效的 总天数 - private BigDecimal comingEffectDay; - - /** - * 按时间收费 当期 到期时间 - * 当前生效周期到期时间 - */ - private Date endDate; - - // 状态 - private String status; - - // 首次报名时间 - private Date firstSignTime; - - // 最后一次续费时间 - private Date lastSignTime; - - /** - * 获取剩余天数 - * @return - */ - public BigDecimal getBalanceDays() { - try { - if(CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { - if(null == this.endDate) { - // 无生效周期 - return comingEffectDay; - } else { - // 有生效周期 - Period period = new Period(DateTime.now(), new DateTime(this.endDate), PeriodType.days()); - return new BigDecimal(period.getDays() + 1).add(comingEffectDay); - } - } else { - return BigDecimal.ZERO; - } - } catch (Exception e) { - e.printStackTrace(); - return BigDecimal.ZERO; - } - } - - /** - * 按时间收费 当前时间 是否在缴费周期内(是否有效) - * @return - */ - public boolean isEffect() { - try{ - if(CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { - if(null == this.endDate) { - // 未生效 - return false; - } else { - return true; - } - } else { - return true; - } - } catch (Exception e) { - e.printStackTrace(); - return false; - } - } - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentContactMapper.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentContactMapper.java deleted file mode 100644 index 9a87bd1..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentContactMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.xluobo.business.sc.student.repo.mapper; - -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 联系人 Mapper 接口 - *

- * - * @author zhangby - * @since 2020-09-27 - */ -public interface ScStudentContactMapper extends BaseMapper { - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseMapper.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseMapper.java deleted file mode 100644 index 30ee3ac..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseMapper.java +++ /dev/null @@ -1,101 +0,0 @@ -package cn.xluobo.business.sc.student.repo.mapper; - -import cn.xluobo.business.sc.student.domain.req.ReqSearchStuCourseSignUp; -import cn.xluobo.business.sc.student.domain.req.ReqSearchStudentCourse; -import cn.xluobo.business.sc.student.domain.req.ReqSearchStudentCourseCla; -import cn.xluobo.business.sc.student.domain.resp.RespCourseClaStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStuCourseSignUpStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStudentCourse; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - *

- * 学生课程 Mapper 接口 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -public interface ScStudentCourseMapper extends BaseMapper { - - /** - * 学生在读课程名称 - * @param studentId - * @return - */ - List selectStudentCourseNameList(Long studentId); - - /** - * 学生报读校区 - * @param studentId - * @return - */ - List selectStudentDeptNameList(Long studentId); - - /** - * 课程、班级 学生列表 - * - * @param reqSearchStudentCourseCla - * @param page - * @return - */ - List selectStudentList(@Param("reqSearchStudentCourseCla")ReqSearchStudentCourseCla reqSearchStudentCourseCla, @Param("page")Page page); - - /** - * 应到人数 - * @param claId - * @return - */ - int selectClaNeedAttendCnt(Long claId); - - /** - * 学生报读课程列表 - * @param searchStudentCourse - * @return - */ - List selectStudentCourseList(ReqSearchStudentCourse searchStudentCourse); - - /** - * 当报读课程总课时、总费用 为0时,删除报读 - * @param studentCourseId - * @return - */ - int deleteWhenTotalHourZeroForInvalid(Long studentCourseId); - - /** - * 当报读课程总天数、总费用 为0时,删除报读 - * @param studentCourseId - * @return - */ - int deleteWhenTotalDayZeroForInvalid(Long studentCourseId); - - /** - * 在读学生 剩余天数 小于 minBalanceDay 的数量 - * 未生效天数 + 生效剩余天数 < minBalanceDay - * @param minBalanceDay 最小剩余天数 - * @return - */ - Integer selectWillExpireDateCount( @Param("minBalanceDay") Integer minBalanceDay, @Param("tenantId") String tenantId); - - /** - * 在读学生 剩余课时 小于 minBalanceHour 的数量 - * 剩余课时 - 过期课时 < minBalanceHour - * @param minBalanceHour 最小剩余课时数 - * @return - */ - Integer selectWillExpireHourCount(@Param("minBalanceHour")Integer minBalanceHour, @Param("tenantId") String tenantId); - - /** - * 学生报读列表 - * - * @param reqSearchStuCourseSignUp - * @param page - * @return - */ - List selectStudentSignUpList(@Param("reqSearchStuCourseSignUp") ReqSearchStuCourseSignUp reqSearchStuCourseSignUp, @Param("page")Page page); -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseOrderMapper.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseOrderMapper.java deleted file mode 100644 index 05e9fbf..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentCourseOrderMapper.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.xluobo.business.sc.student.repo.mapper; - -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; - -import java.math.BigDecimal; -import java.util.List; - -/** - *

- * 学生课程关联订单 Mapper 接口 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -public interface ScStudentCourseOrderMapper extends BaseMapper { - - - /** - * 校验按时间收费 收费日期是否存在覆盖 - * - * @param studentId - * @param courseId - * @param beginDate - * @param endDate - * @return - */ - int checkDateCover(@Param("studentId") Long studentId, @Param("courseId") Long courseId, - @Param("beginDate") String beginDate, @Param("endDate") String endDate); - - /** - * 获取需扣减课时的订单 - * @param studentCourseId - * @return - */ - ScStudentCourseOrder selectSubtractHourOrder(Long studentCourseId); - - /** - * 当前生效 按时间 缴费订单 - * @param studentCourseId - * @return - */ - ScStudentCourseOrder selectNowValidDateOrder(Long studentCourseId); - - /** - * 获取可扣减课时的订单列表 - * @param studentCourseId - * @return - */ - List selectSubtractHourOrderList(Long studentCourseId); - - /** - * 按课时收费 订单列表,按时间倒叙 - * @param studentCourseId - * @return - */ - List selectRecoverHourOrderList(Long studentCourseId); - - /** - * 扣减课时 - * @param courseOrderId - * @param newHour - * @param oldHour - * @return - */ - int updateSubtractHour(@Param("courseOrderId") Long courseOrderId, - @Param("newHour") BigDecimal newHour, - @Param("oldHour") BigDecimal oldHour); -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountLogMapper.xml b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountLogMapper.xml deleted file mode 100644 index 2f1b247..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountLogMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseMapper.xml b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseMapper.xml deleted file mode 100644 index e81bba0..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseMapper.xml +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - delete from sc_student_course where student_course_id=#{studentCourseId} and charge_type ]]> 'date' and total_hour=0 and total_fee=0 - - - delete from sc_student_course where student_course_id=#{studentCourseId} and charge_type = 'date' and total_day=0 and total_fee=0 - - - - - diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseOrderMapper.xml b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseOrderMapper.xml deleted file mode 100644 index d033202..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentCourseOrderMapper.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - update sc_student_course_order set balance_hour = #{newHour} where course_order_id=#{courseOrderId} and balance_hour = #{oldHour} - - diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentContact.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentContact.java deleted file mode 100644 index 98957b3..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentContact.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.xluobo.business.sc.student.repo.model; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 联系人 - *

- * - * @author zhangby - * @since 2020-09-27 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("sc_student_contact") -public class ScStudentContact implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 联系人编号 - */ - @TableId(value = "contact_id", type = IdType.ASSIGN_ID) - private Long contactId; - - /** - * 学生 - */ - @TableField("student_id") - private Long studentId; - - /** - * 联系人称呼 - */ - @TableField("contact_nick") - private String contactNick; - - /** - * 与学生关系 - */ - @TableField("contact_relation") - private String contactRelation; - - /** - * 联系电话 - */ - @TableField("contact_phone") - private String contactPhone; - - /** - * 创建者 - */ - @TableField("create_user") - private Long createUser; - - /** - * 创建时间 - */ - @TableField("create_time") - private Date createTime; -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourse.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourse.java deleted file mode 100644 index 104143e..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourse.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.xluobo.business.sc.student.repo.model; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** - *

- * 学生课程 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("sc_student_course") -public class ScStudentCourse implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "student_course_id", type = IdType.ASSIGN_ID) - private Long studentCourseId; - - /** - * 学生 - */ - @TableField("student_id") - private Long studentId; - - /** - * 课程 - */ - @TableField("course_id") - private Long courseId; - - /** - * 课程 - */ - @TableField("course_name") - private String courseName; - - /** - * 报读校区 - */ - @TableField("dept_id") - private Long deptId; - - /** - * 班级 - */ - @TableField("cla_id") - private Long claId; - - /** - * 班级 - */ - @TableField("cla_name") - private String claName; - - /** - * 收费模式 hour:课时 date:时间 cycle:期 - */ - @TableField("charge_type") - private String chargeType; - - /** - * 总天数 - */ - @TableField("total_day") - private BigDecimal totalDay; - - /** - * 总课时 - */ - @TableField("total_hour") - private BigDecimal totalHour; - - /** - * 剩余课时 - */ - @TableField("balance_hour") - private BigDecimal balanceHour; - - /** - * 总学费 - */ - @TableField("total_fee") - private BigDecimal totalFee; - - /** - * 状态 1在读 2停课 - */ - @TableField("status") - private String status; - - /** - * 创建者 - */ - @TableField("create_user") - private Long createUser; - - /** - * 创建时间 - */ - @TableField("create_time") - private Date createTime; - - /** - * 更新者 - */ - @TableField("last_update_user") - private Long lastUpdateUser; - - /** - * 更新时间 - */ - @TableField("last_update_time") - private Date lastUpdateTime; - - private String tenantId; -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourseOrder.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourseOrder.java deleted file mode 100644 index d1ec09e..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentCourseOrder.java +++ /dev/null @@ -1,133 +0,0 @@ -package cn.xluobo.business.sc.student.repo.model; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** - *

- * 学生课程关联订单 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -@Data -@Builder -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("sc_student_course_order") -public class ScStudentCourseOrder implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "course_order_id", type = IdType.ASSIGN_ID) - private Long courseOrderId; - - @TableField("student_course_id") - private Long studentCourseId; - - /** - * 订单 - */ - @TableField("order_id") - private Long orderId; - - /** - * 购买课程订单 - */ - @TableField("order_detail_id") - private Long orderDetailId; - - /** - * 购买课时数量 - */ - @TableField("total_hour") - private BigDecimal totalHour; - - /** - * 剩余课时数量 - */ - @TableField("balance_hour") - private BigDecimal balanceHour; - - /** - * 购买天数 - */ - @TableField("total_day") - private BigDecimal totalDay; - - /** - * 开始时间 按时间收费 - */ - @TableField("begin_date") - private String beginDate; - - /** - * 结束时间 按时间收费 - */ - @TableField("end_date") - private String endDate; - - /** - * 失效时间 - */ - @TableField("expire_date") - private String expireDate; - - /** - * 总金额 - */ - @TableField("total_fee") - private BigDecimal totalFee; - - /** - * 单价 - */ - @TableField("unit_fee") - private BigDecimal unitFee; - - /** - * 是否有效 1有效 0失效 - */ - @TableField("valid") - private Boolean valid; - - /** - * 创建者 - */ - @TableField("create_user") - private Long createUser; - - /** - * 创建时间 - */ - @TableField("create_time") - private Date createTime; - - /** - * 更新者 - */ - @TableField("last_update_user") - private Long lastUpdateUser; - - /** - * 更新时间 - */ - @TableField("last_update_time") - private Date lastUpdateTime; - - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentCourseService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentCourseService.java deleted file mode 100644 index 4c39143..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentCourseService.java +++ /dev/null @@ -1,583 +0,0 @@ -package cn.xluobo.business.sc.student.service; - -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.base.service.IScRoomService; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeAttendStatusEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeSourceEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeStatusEnums; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.IScClaTimeAttendService; -import cn.xluobo.business.sc.course.service.IScClaTimeService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.business.sc.log.enums.LogTypeEnum; -import cn.xluobo.business.sc.log.repo.model.ScStudentCourseLog; -import cn.xluobo.business.sc.log.service.IScStudentCourseLogService; -import cn.xluobo.business.sc.student.domain.req.*; -import cn.xluobo.business.sc.student.domain.resp.RespBusinessStudentCourseInfo; -import cn.xluobo.business.sc.student.domain.resp.RespCourseClaStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStuCourseSignUpStudent; -import cn.xluobo.business.sc.student.domain.resp.RespStudentCourse; -import cn.xluobo.business.sc.student.enums.StudentCourseStatusEnum; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentCourseMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import cn.xluobo.business.sys.admin.service.ISysDeptService; -import cn.xluobo.config.exception.BusinessException; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.google.common.collect.Lists; -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author :zhangbaoyu - * @date :Created in 2020/9/2 15:06 - */ -@Service -@Transactional -public class BusinessScStudentCourseService { - - @Autowired - private ScStudentCourseMapper studentCourseMapper; - @Autowired - private IScStudentService studentService; - @Autowired - private IScStudentContactService contactService; - @Autowired - private IScCourseClaService claService; - @Autowired - private IScCourseService courseService; - @Autowired - private IScStudentCourseService studentCourseService; - @Autowired - private IScClaTimeService claTimeService; - @Autowired - private ISysDeptService deptService; - @Autowired - private IScRoomService roomService; - @Autowired - private IScClaTimeAttendService attendService; - @Autowired - private ISysUserService staffService; - @Autowired - private IScStudentCourseOrderService courseOrderService; - @Autowired - private IScStudentCourseLogService scStudentCourseLogService; - - /** - * 学生课程信息 - * - * @param studentId - * @return - */ - public APIResponse studentCourseInfo(Long studentId) { - if (null == studentId) { - return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); - } - ScStudent student = studentService.getById(studentId); - // 联系人信息 - List contactList = contactService.getStudentContactList(studentId); - List contactPhoneList = contactList.stream().map(item -> item.getContactPhone() + "(" + item.getContactNick() + ")").collect(Collectors.toList()); - // 报读课程 - List courseNameList = studentCourseMapper.selectStudentCourseNameList(studentId); - // 报读校区 - List deptNameList = studentCourseMapper.selectStudentDeptNameList(studentId); - RespBusinessStudentCourseInfo studentCourseInfo = RespBusinessStudentCourseInfo.builder() - .contactPhone(student.getPhone()) - .contactPhoneDetail(String.join(",", contactPhoneList)) - .courseNames(String.join(",", courseNameList)) - .deptNames(String.join(",", deptNameList)) - .build(); - return APIResponse.toAPIResponse(studentCourseInfo); - } - - /** - * 课程、班级 学生列表 - * - * @param reqSearchStudentCourseCla - * @return - */ - public RespPage searchCourseClaStudent(ReqSearchStudentCourseCla reqSearchStudentCourseCla) { - RespPage page = new RespPage<>(reqSearchStudentCourseCla.getPageNum(), reqSearchStudentCourseCla.getPageSize()); - List claStudentList = studentCourseMapper.selectStudentList(reqSearchStudentCourseCla, page); - page.setRows(claStudentList); - return page; - } - - /** - * 已报名未选择班级 选择班级 - * - * @param studentCourseChooseCla - * @return - */ - public APIResponse studentCourseChooseCla(ReqStudentCourseChooseCla studentCourseChooseCla) { - if (!studentCourseChooseCla.checkParam()) { - return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); - } - Long courseId = studentCourseChooseCla.getCourseId(); - Long claId = studentCourseChooseCla.getClaId(); - Long[] studentCourseIds = studentCourseChooseCla.getChooseStudentCourseIds(); - if (null == studentCourseIds || studentCourseIds.length == 0) { - return APIResponse.toExceptionResponse("未选择学生,请稍后重试"); - } - ScCourseCla courseCla = claService.getById(claId); - if (null == courseCla) { - return APIResponse.toExceptionResponse("无法获取班级,请稍后重试"); - } - - // 更新 - UpdateWrapper uw = new UpdateWrapper<>(); - uw.set("cla_id", claId); - uw.set("cla_name", courseCla.getClaName()); - - uw.in("student_course_id", studentCourseIds); - uw.isNull("cla_id"); - uw.eq("course_id", courseId); - studentCourseService.update(uw); - - - // 日志 - LoginUser loginUser = SecurityUtils.getLoginUser(); - SysDept sysDept = deptService.getById(courseCla.getDepartId()); - - List courseLogList = Lists.newArrayList(); - for (Long studentCourseId : studentCourseIds) { - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(studentCourse.getStudentId()) - .logType(LogTypeEnum.IN_CLA.getLogType()) - .courseId(studentCourse.getCourseId()) - .courseName(studentCourse.getCourseName()) - .claId(courseCla.getClaId()) - .claName(courseCla.getClaName()) - .deptName(sysDept.getDeptName()) - .memo("进入班级,进入班级'" + studentCourse.getClaName() + "'") - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .build(); - courseLogList.add(studentCourseLog); - } - scStudentCourseLogService.saveBatch(courseLogList); - - return APIResponse.toOkResponse(); - } - - /** - * 记上课 - * - * @param reqClaTimeAttend - * @return - */ - public APIResponse claTimeAttend(ReqClaTimeAttend reqClaTimeAttend) { - APIResponse checkParam = reqClaTimeAttend.checkParam(); - if (!checkParam.isSuccess()) { - return checkParam; - } - LoginUser loginUser = SecurityUtils.getLoginUser(); - String attendType = reqClaTimeAttend.getAttendType(); - String startTime = reqClaTimeAttend.getStartTime(); - String endTime = reqClaTimeAttend.getEndTime(); - Long teacherId = reqClaTimeAttend.getTeacherId(); - Long courseTimeId = reqClaTimeAttend.getCourseTimeId(); - Long claId = reqClaTimeAttend.getClaId(); - ScCourseCla dbCla = claService.getById(claId); - if (null == dbCla) { - return APIResponse.toExceptionResponse("无法获取班级信息,请稍后重试"); - } - Long courseId = dbCla.getCourseId(); - ScCourse scCourse = courseService.getById(courseId); - if (null == scCourse) { - return APIResponse.toExceptionResponse("无法获取班级信息,请稍后重试"); - } - - Long departId = dbCla.getDepartId(); - SysDept sysDept = deptService.getById(departId); - if (null == sysDept) { - return APIResponse.toExceptionResponse("无法获取校区信息,请稍后重试"); - } - - List studentAttendList = reqClaTimeAttend.getStudentAttendList(); - - // 总消耗课时金额 - BigDecimal totalPayFee = BigDecimal.ZERO; - // 可课时消耗 - BigDecimal totalPayHour = BigDecimal.ZERO; - // 实到人数 - Long realAttendCnt = studentAttendList.stream().filter(item -> item.getAttendStatus().equals(ClaTimeAttendStatusEnums.AT_CLASS.getAttendStatus())).count(); - // 请假人数 - Long leaveCnt = studentAttendList.stream().filter(item -> item.getAttendStatus().equals(ClaTimeAttendStatusEnums.LEAVE_CLASS.getAttendStatus())).count(); - // 旷课人数 - Long outCnt = studentAttendList.stream().filter(item -> item.getAttendStatus().equals(ClaTimeAttendStatusEnums.OUT_CLASS.getAttendStatus())).count(); - // 应到人数 - int needAttendCnt = studentCourseMapper.selectClaNeedAttendCnt(dbCla.getClaId()); - - - if ("rule".equals(attendType)) { - // 排课记上课 - - ScClaTime claTime = claTimeService.getById(courseTimeId); - if (!ClaTimeStatusEnums.WAIT_CLASS.getStatus().equals(claTime.getStatus())) { - return APIResponse.toExceptionResponse("选择计划上课日期,非待上课状态,无法重复上课!"); - } - teacherId = claTime.getTeacherId(); - // 变更状态为已上课 - ScClaTime updateClaTime = new ScClaTime(); - updateClaTime.setCourseTimeId(courseTimeId); - updateClaTime.setRealClaDate(claTime.getClaDate()); - updateClaTime.setRealStartTime(startTime); - updateClaTime.setRealEndTime(endTime); - updateClaTime.setStatus(ClaTimeStatusEnums.HAD_CLASS.getStatus()); - updateClaTime.setBookAttendCnt(needAttendCnt); - updateClaTime.setRealAttendCnt(realAttendCnt.intValue()); - updateClaTime.setMemo(reqClaTimeAttend.getMemo()); - updateClaTime.setLastUpdateUser(loginUser.getUserId()); - updateClaTime.setLastUpdateTime(new Date()); - claTimeService.updateById(updateClaTime); - } else if ("change".equals(attendType)) { - // 变更上课记录 - - ScClaTime claTime = claTimeService.getById(courseTimeId); - if (!ClaTimeStatusEnums.WAIT_CLASS.getStatus().equals(claTime.getStatus())) { - return APIResponse.toExceptionResponse("选择计划上课日期,非待上课状态,无法重复上课!"); - } - // 变更状态为已上课 - ScClaTime updateClaTime = new ScClaTime(); - updateClaTime.setCourseTimeId(courseTimeId); - updateClaTime.setRealClaDate(reqClaTimeAttend.getClaDate()); - updateClaTime.setTeacherId(reqClaTimeAttend.getTeacherId()); - updateClaTime.setClassTheme(reqClaTimeAttend.getClassTheme()); - updateClaTime.setRealStartTime(startTime); - updateClaTime.setRealEndTime(endTime); - updateClaTime.setStatus(ClaTimeStatusEnums.HAD_CLASS.getStatus()); - updateClaTime.setBookAttendCnt(needAttendCnt); - updateClaTime.setRealAttendCnt(realAttendCnt.intValue()); - updateClaTime.setMemo(reqClaTimeAttend.getMemo()); - updateClaTime.setLastUpdateUser(loginUser.getUserId()); - updateClaTime.setLastUpdateTime(new Date()); - claTimeService.updateById(updateClaTime); - } else if ("custom".equals(attendType)) { - // 记录自定义上课信息 - - ScClaTime addClaTime = new ScClaTime(); - addClaTime.setClaId(reqClaTimeAttend.getClaId()); - addClaTime.setClaDate(reqClaTimeAttend.getClaDate()); - addClaTime.setTeacherId(reqClaTimeAttend.getTeacherId()); - addClaTime.setClassTheme(reqClaTimeAttend.getClassTheme()); - addClaTime.setStartTime(reqClaTimeAttend.getStartTime()); - addClaTime.setEndTime(reqClaTimeAttend.getEndTime()); - addClaTime.setRealClaDate(reqClaTimeAttend.getClaDate()); - addClaTime.setRealStartTime(reqClaTimeAttend.getStartTime()); - addClaTime.setRealEndTime(reqClaTimeAttend.getEndTime()); - addClaTime.setSource(ClaTimeSourceEnums.UN_PLAN_CLA_TIME.getSource()); - addClaTime.setStatus(ClaTimeStatusEnums.HAD_CLASS.getStatus()); - addClaTime.setPayHour(dbCla.getEveryStuLoseHour()); - addClaTime.setBookAttendCnt(needAttendCnt); - addClaTime.setRealAttendCnt(realAttendCnt.intValue()); - addClaTime.setMemo(reqClaTimeAttend.getMemo()); - addClaTime.setCreateUser(loginUser.getUserId()); - addClaTime.setCreateTime(new Date()); - addClaTime.setLastUpdateUser(loginUser.getUserId()); - addClaTime.setLastUpdateTime(new Date()); - - // 教室不为空 设置教室 - if (null != reqClaTimeAttend.getRoomId()) { - ScRoom room = roomService.getById(reqClaTimeAttend.getRoomId()); - addClaTime.setRoomId(reqClaTimeAttend.getRoomId()); - addClaTime.setRoomName(room.getRoomName()); - } - - claTimeService.save(addClaTime); - courseTimeId = addClaTime.getCourseTimeId(); - } - - // 教师信息 - SysUser sysStaff = staffService.selectUserById(teacherId); - - // 保存上课记录 - List saveAttendList = Lists.newArrayList(); - // 保存学生日志 - List studentCourseLogList = Lists.newArrayList(); - - for (ReqClaTimeAttendItem attendItem : studentAttendList) { - Long studentCourseId = attendItem.getStudentCourseId(); - String attendStatus = attendItem.getAttendStatus(); - String memo = attendItem.getMemo(); - BigDecimal stuLoseHour = attendItem.getStuLoseHour(); - - // 如果是请假,消耗课时0 - if (ClaTimeAttendStatusEnums.LEAVE_CLASS.getAttendStatus().equals(attendStatus)) { - stuLoseHour = BigDecimal.ZERO; - } - - // 获取学生报读班级信息 - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - String studentDbChargeType = studentCourse.getChargeType(); - - // 消耗金额 - BigDecimal payFee; - // 上课后剩余课时 - BigDecimal changeAfterBalanceHour = null; - // 本次上课对应的订单 - Long courseOrderId = null; - - if (CourseChargeTypeEnum.DATE.getChargeType().equals(studentDbChargeType)) { - // 按时间上课,不扣减课时 - - // 获取 消耗金额 - ScStudentCourseOrder courseOrder = courseOrderService.getNowValidDateOrder(studentCourseId); - payFee = courseOrder.getUnitFee(); - courseOrderId = courseOrder.getCourseOrderId(); - - } else { - // 本次上课对应的订单 - ScStudentCourseOrder courseOrder = courseOrderService.getSubtractHourOrder(studentCourseId); - if (null == courseOrder) { - throw new BusinessException("无法获取对应课时订单,无法扣减课时,id=" + studentCourseId); - } - courseOrderId = courseOrder.getCourseOrderId(); - - BigDecimal balanceHour = studentCourse.getBalanceHour(); - balanceHour = balanceHour.subtract(stuLoseHour); - - changeAfterBalanceHour = balanceHour; - - // 课时不足 不允许上课 - if (balanceHour.compareTo(BigDecimal.ZERO) < 0) { - throw new BusinessException("学员课时不足,不允许上课!"); - } - - // 更新剩余课时 cas - UpdateWrapper uwStudentCourse = new UpdateWrapper<>(); - uwStudentCourse - .eq("student_course_id", studentCourseId) - .eq("balance_hour", studentCourse.getBalanceHour()) - .set("balance_hour", balanceHour) - .set("last_update_user", loginUser.getUserId()) - .set("last_update_time", new Date()); - boolean update = studentCourseService.update(uwStudentCourse); - if (!update) { - throw new BusinessException("学员课时余额扣减失败,请重试!"); - } - - // 订单扣减课时,获取 消耗金额 - payFee = courseOrderService.subtractCourseOrderBalanceHour(studentCourseId, stuLoseHour); - } - - // 消耗总金额 - totalPayFee = totalPayFee.add(payFee); - - // 每个上课记录 - ScClaTimeAttend addClaTimeAttend = new ScClaTimeAttend(); - addClaTimeAttend.setStudentCourseId(studentCourseId); - addClaTimeAttend.setCourseOrderId(courseOrderId); - addClaTimeAttend.setCourseTimeId(courseTimeId); - addClaTimeAttend.setStudentId(studentCourse.getStudentId()); - addClaTimeAttend.setClaId(studentCourse.getClaId()); - addClaTimeAttend.setCourseId(studentCourse.getCourseId()); - addClaTimeAttend.setTeacherId(teacherId); - addClaTimeAttend.setTeacherName(sysStaff.getNickName()); - addClaTimeAttend.setChargeType(studentDbChargeType); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(studentDbChargeType)) { - addClaTimeAttend.setTeacherGetHour(null); - addClaTimeAttend.setPayHour(null); - } else { - addClaTimeAttend.setTeacherGetHour(stuLoseHour); - addClaTimeAttend.setPayHour(stuLoseHour); - totalPayHour = totalPayHour.add(stuLoseHour); - } - addClaTimeAttend.setAttendStatus(attendStatus); - addClaTimeAttend.setMemo(memo); - addClaTimeAttend.setCreateUser(loginUser.getUserId()); - addClaTimeAttend.setPayFee(payFee); - saveAttendList.add(addClaTimeAttend); - - // 上课日志 - StringBuffer sb = new StringBuffer(""); - sb.append("上课[").append(ClaTimeAttendStatusEnums.getNameByStatus(attendStatus)).append("],上课时间").append(reqClaTimeAttend.getClaDate()).append(" ") - .append(reqClaTimeAttend.getStartTime()).append("~").append(reqClaTimeAttend.getEndTime()).append(","); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(studentCourse.getStudentId()) - .logType(LogTypeEnum.ATTEND_CLA.getLogType()) - .courseId(scCourse.getCourseId()) - .courseName(scCourse.getCourseName()) - .claId(dbCla.getClaId()) - .claName(dbCla.getClaName()) - .deptName(sysDept.getDeptName()) - .changeFee(payFee.negate()) - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .createTime(new Date()) - .build(); - if (!CourseChargeTypeEnum.DATE.getChargeType().equals(studentDbChargeType)) { - studentCourseLog.setChangeHour(stuLoseHour.negate()); - studentCourseLog.setAfterBalanceHour(changeAfterBalanceHour); - sb.append("扣减").append(stuLoseHour.toString()).append("课时,"); - sb.append("消耗").append(payFee).append("元."); - } - studentCourseLog.setMemo(sb.toString()); - studentCourseLogList.add(studentCourseLog); - } - // 保存上课记录 - attendService.saveBatch(saveAttendList); - // 保存学生日志 - scStudentCourseLogService.saveBatch(studentCourseLogList); - - // 更新上课总课时 人数信息 - ScClaTime updateClaTime = new ScClaTime(); - updateClaTime.setCourseTimeId(courseTimeId); - updateClaTime.setPayTotalHour(totalPayHour); - updateClaTime.setPayTotalFee(totalPayFee); - updateClaTime.setAtClassCnt(realAttendCnt.intValue()); -// updateClaTime.setLeaveCnt(leaveCnt.intValue()); - updateClaTime.setOutCnt(outCnt.intValue()); - claTimeService.updateById(updateClaTime); - - return APIResponse.toOkResponse(); - } - - /** - * 停课 - * - * @param studentCourseId - * @return - */ - public APIResponse stopStudentCourseStatus(Long studentCourseId) { - if (null == studentCourseId) { - return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); - } - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - if (null == studentCourse) { - return APIResponse.toExceptionResponse("无法获取停课信息,请稍后重试!"); - } - if (StudentCourseStatusEnum.STOP_CLA.getStudentCourseStatus().equals(studentCourse.getStatus())) { - return APIResponse.toExceptionResponse("当前状态为停课,无需停课!"); - } -// ScStudentCourse update = new ScStudentCourse(); -// update.setStudentCourseId(studentCourseId); -// update.setStatus(StudentCourseStatusEnum.STOP_CLA.getStudentCourseStatus()); - studentCourseService.update(new UpdateWrapper() - .eq("student_course_id",studentCourseId) - .set("status",StudentCourseStatusEnum.STOP_CLA.getStudentCourseStatus())); - return APIResponse.toOkResponse(); - } - - /** - * 在读 - * - * @param studentCourseId - * @return - */ - public APIResponse atClaStudentCourseStatus(Long studentCourseId) { - if (null == studentCourseId) { - return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); - } - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - if (null == studentCourse) { - return APIResponse.toExceptionResponse("无法获取课程信息,请稍后重试!"); - } - if (StudentCourseStatusEnum.AT_CLA.getStudentCourseStatus().equals(studentCourse.getStatus())) { - return APIResponse.toExceptionResponse("当前状态为在读,无需变更!"); - } -// ScStudentCourse update = new ScStudentCourse(); -// update.setStudentCourseId(studentCourseId); -// update.setStatus(StudentCourseStatusEnum.AT_CLA.getStudentCourseStatus()); -// studentCourseService.updateById(update); - studentCourseService.update(new UpdateWrapper() - .eq("student_course_id",studentCourseId) - .set("status",StudentCourseStatusEnum.AT_CLA.getStudentCourseStatus())); - return APIResponse.toOkResponse(); - } - - /** - * 学生报读课程 - * - * @return - */ - public List searchStudentCourse(ReqSearchStudentCourse reqSearchStudentCourse) { - return studentCourseMapper.selectStudentCourseList(reqSearchStudentCourse); - } - - - /** - * 报读列表 - * - * @param reqSearchStuCourseSignUp - * @return - */ - public RespPage searchStuCourseSignUpList(ReqSearchStuCourseSignUp reqSearchStuCourseSignUp) { - RespPage page = new RespPage<>(reqSearchStuCourseSignUp.getPageNum(), reqSearchStuCourseSignUp.getPageSize()); - List signUpStudents = studentCourseMapper.selectStudentSignUpList(reqSearchStuCourseSignUp, page); - page.setRows(signUpStudents); - return page; - } - - /** - * 报读信息中 将学员从班级中移除 - * - * @param studentCourseId - * @return - */ - public APIResponse removeStuFromCla(Long studentCourseId) { - if (null == studentCourseId) { - return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); - } - ScStudentCourse studentCourse = studentCourseService.getById(studentCourseId); - if (null == studentCourse) { - return APIResponse.toExceptionResponse("无法获取班级学员信息,请稍后重试"); - } - Long claId = studentCourse.getClaId(); - if (null == claId) { - return APIResponse.toExceptionResponse("未报读班级,无需移除"); - } - - LoginUser loginUser = SecurityUtils.getLoginUser(); - SysDept sysDept = deptService.getById(studentCourse.getDeptId()); - - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("student_course_id", studentCourse.getStudentCourseId()); - uw.isNotNull("cla_id"); - uw.set("cla_id", null); - uw.set("cla_name", null); - uw.set("last_update_user", loginUser.getUserId()); - uw.set("last_update_time", new Date()); - boolean update = studentCourseService.update(uw); - if (!update) { - return APIResponse.toExceptionResponse("从班级中移除失败,请稍后重试"); - } - - // 日志 - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(studentCourse.getStudentId()) - .logType(LogTypeEnum.OUT_CLA.getLogType()) - .courseId(studentCourse.getCourseId()) - .courseName(studentCourse.getCourseName()) - .deptName(sysDept.getDeptName()) - .memo("退出班级,从'" + studentCourse.getClaName() + "'班级删除") - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .build(); - scStudentCourseLogService.save(studentCourseLog); - - return APIResponse.toOkResponse(); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentContactService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentContactService.java deleted file mode 100644 index 518f537..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentContactService.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.xluobo.business.sc.student.service; - -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; - -/** - *

- * 联系人 服务类 - *

- * - * @author zhangby - * @since 2020-09-27 - */ -public interface IScStudentContactService extends IService { - - /** - * 获取学生练习方式 - * @param studentId - * @return - */ - List getStudentContactList(Long studentId); -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseOrderService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseOrderService.java deleted file mode 100644 index 759c255..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseOrderService.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.xluobo.business.sc.student.service; - -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.math.BigDecimal; - -/** - *

- * 学生课程关联订单 服务类 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -public interface IScStudentCourseOrderService extends IService { - - /** - * 校验按时间收费 收费日期是否存在覆盖 - * - * @param studentId - * @param courseId - * @param beginDate - * @param endDate - * @return - */ - boolean checkDateCover(Long studentId, Long courseId, - String beginDate, String endDate); - - /** - * 获取应扣课时订单信息 - * @param studentCourseId - * @return - */ - ScStudentCourseOrder getSubtractHourOrder(Long studentCourseId); - - /** - * 当前生效 按时间 缴费订单 - * @param studentCourseId - * @return - */ - ScStudentCourseOrder getNowValidDateOrder(Long studentCourseId); - - - /** - * 课程订单扣减课时 - * @param studentCourseId - * @param loseHour - * @return 扣减总课时费用 - */ - BigDecimal subtractCourseOrderBalanceHour(Long studentCourseId, BigDecimal loseHour); - - /** - * 课程订单 恢复课时 - * 当删除上课记录时调用 - * @param studentCourseId - * @param recoverHour 恢复课时数量 - * @return - */ - void recoverOrderLoseHour(Long studentCourseId, BigDecimal recoverHour); - - /** - * 更新订单 剩余课时 - * @param courseOrderId - * @param newBalanceHour - * @param oldBalanceHour - */ - void updateBalanceHour(Long courseOrderId, BigDecimal newBalanceHour, BigDecimal oldBalanceHour); - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseService.java deleted file mode 100644 index 3e7b51c..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentCourseService.java +++ /dev/null @@ -1,89 +0,0 @@ -package cn.xluobo.business.sc.student.service; - -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.core.api.APIBaseResponse; -import com.baomidou.mybatisplus.extension.service.IService; -import com.ruoyi.common.core.domain.model.LoginUser; - -import java.util.Map; - -/** - *

- * 学生课程 服务类 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -public interface IScStudentCourseService extends IService { - - /** - * 校验学生是否可报读课程 - * - * @param studentId - * @param courseIds - * @param deptId - * @return - */ - APIBaseResponse checkStudentCanSignUpCourse(Long studentId, Long[] courseIds, Long deptId); - - /** - * 校验学生是否可报读课程 - * - * @param studentId - * @param courseId - * @param deptId - * @param studentCourseChargeTypeMap 已报读信息 传null即可 - * @return - */ - APIBaseResponse checkStudentCanSignUpCourse(Long studentId, - Long courseId, - Long deptId, - Map studentCourseChargeTypeMap); - - /** - * 根据学生、 课程获取报读信息 - * @param studentId - * @param courseId - * @return - */ - ScStudentCourse selectByStudentIdCourseId(Long studentId, Long courseId); - - /** - * 作废订单时,当报读课程总课时、总费用 为0时,删除报读 - * @param studentCourseId - * @return - */ - int deleteWhenTotalHourZeroForInvalid(Long studentCourseId); - - /** - * 作废订单时,当报读课程总天数、总费用 为0时,删除报读 - * @param studentCourseId - * @return - */ - int deleteWhenTotalDayZeroForInvalid(Long studentCourseId); - - /** - * 即将过期人员数量 - * @return - */ - Integer getWillExpireDateCount(Integer minBalanceDay); - - /** - * 剩余课时小于 最小 数量 - * @param minBalanceHour 最小剩余课时数量 - * @return - */ - Integer getWillExpireHourCount(Integer minBalanceHour); - - /** - * 根据上课记录 恢复学员课时 - * @param claTimeAttend - * @param claTime - * @param loginUser - */ - void recoverStudentCourseHour(ScClaTimeAttend claTimeAttend, ScClaTime claTime, LoginUser loginUser); - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentContactServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentContactServiceImpl.java deleted file mode 100644 index 950064c..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentContactServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.xluobo.business.sc.student.service.impl; - -import cn.xluobo.business.sc.student.repo.mapper.ScStudentContactMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import cn.xluobo.business.sc.student.service.IScStudentContactService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - *

- * 联系人 服务实现类 - *

- * - * @author zhangby - * @since 2020-09-27 - */ -@Service -public class ScStudentContactServiceImpl extends ServiceImpl implements IScStudentContactService { - - @Override - public List getStudentContactList(Long studentId) { - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("student_id", studentId); - qw.orderByAsc("create_time"); - List contacts = this.list(qw); - return contacts; - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseOrderServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseOrderServiceImpl.java deleted file mode 100644 index cb1607d..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseOrderServiceImpl.java +++ /dev/null @@ -1,154 +0,0 @@ -package cn.xluobo.business.sc.student.service.impl; - -import cn.xluobo.business.sc.student.repo.mapper.ScStudentCourseMapper; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentCourseOrderMapper; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import cn.xluobo.business.sc.student.service.IScStudentCourseOrderService; -import cn.xluobo.config.exception.BusinessException; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.List; - -/** - *

- * 学生课程关联订单 服务实现类 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -@Service -public class ScStudentCourseOrderServiceImpl extends ServiceImpl implements IScStudentCourseOrderService { - - @Autowired - private ScStudentCourseMapper studentCourseMapper; - @Autowired - private ScStudentMapper studentMapper; - - @Override - public boolean checkDateCover(Long studentId, Long courseId, String beginDate, String endDate) { - int checkDateCover = baseMapper.checkDateCover(studentId, courseId, beginDate, endDate); - if (checkDateCover == 0) { - return false; - } else { - return true; - } - } - - @Override - public ScStudentCourseOrder getSubtractHourOrder(Long studentCourseId) { - return baseMapper.selectSubtractHourOrder(studentCourseId); - } - - @Override - public ScStudentCourseOrder getNowValidDateOrder(Long studentCourseId) { - return baseMapper.selectNowValidDateOrder(studentCourseId); - } - - @Override - public BigDecimal subtractCourseOrderBalanceHour(Long studentCourseId, BigDecimal loseHour) { - List studentCourseOrderList = baseMapper.selectSubtractHourOrderList(studentCourseId); - BigDecimal payFee = BigDecimal.ZERO; - for (ScStudentCourseOrder courseOrder : studentCourseOrderList) { - if (loseHour.compareTo(BigDecimal.ZERO) == 0) { - break; - } - BigDecimal balanceHour = courseOrder.getBalanceHour(); - - // 订单剩余课时不足扣减 - if (balanceHour.compareTo(loseHour) < 0) { - payFee = payFee.add(balanceHour.multiply(courseOrder.getUnitFee())); - - // 剩余课时不足扣减, 将剩余课时扣减完毕 - int updateSubtractHour = baseMapper.updateSubtractHour(courseOrder.getCourseOrderId(), BigDecimal.ZERO, balanceHour); - if (updateSubtractHour == 0) { - throw new BusinessException("订单扣减课时失败,请重试!"); - } - - loseHour = loseHour.subtract(balanceHour); - - } else { - payFee = payFee.add(loseHour.multiply(courseOrder.getUnitFee())); - - // 直接扣减课时 - BigDecimal newHour = balanceHour.subtract(loseHour); - int updateSubtractHour = baseMapper.updateSubtractHour(courseOrder.getCourseOrderId(), newHour, balanceHour); - if (updateSubtractHour == 0) { - throw new BusinessException("订单扣减课时失败,请重试!"); - } - } - } - return payFee; - } - - @Override - public void recoverOrderLoseHour(Long studentCourseId, BigDecimal recoverHour) { - if(recoverHour.compareTo(BigDecimal.ZERO) == 0) { - return; - } - List recoverHourOrderList = baseMapper.selectRecoverHourOrderList(studentCourseId); - if (recoverHourOrderList.size() == 0) { - ScStudentCourse studentCourse = studentCourseMapper.selectById(studentCourseId); - ScStudent student = studentMapper.selectById(studentCourse.getStudentId()); - throw new BusinessException("学员:" + student.getStudentName() + ",无生效订单,无法恢复课时!"); - } - - for (int i = 0; i < recoverHourOrderList.size(); i++) { - - if(recoverHour.compareTo(BigDecimal.ZERO) == 0) { - return; - } - - // 是否为最后一条记录 - boolean lastRecord = (i == (recoverHourOrderList.size() - 1)); - ScStudentCourseOrder studentCourseOrder = recoverHourOrderList.get(i); - BigDecimal balanceHour = studentCourseOrder.getBalanceHour(); - BigDecimal totalHour = studentCourseOrder.getTotalHour(); - if(lastRecord) { - BigDecimal newBalanceHour = studentCourseOrder.getBalanceHour().add(recoverHour); - this.updateBalanceHour(studentCourseOrder.getCourseOrderId(), newBalanceHour, balanceHour); - break; - } else { - if(balanceHour.compareTo(totalHour) < 0) { - // 可恢复课时数量 - BigDecimal canRecoverHour = totalHour.subtract(balanceHour); - - if(canRecoverHour.compareTo(recoverHour) > 0) { - // 订单可恢复课时数量canRecoverHour > 需要恢复的课时数量recoverHour,直接全部恢复 - - BigDecimal newBalanceHour = studentCourseOrder.getBalanceHour().add(recoverHour); - this.updateBalanceHour(studentCourseOrder.getCourseOrderId(), newBalanceHour, balanceHour); - recoverHour = BigDecimal.ZERO; - } else { - // 订单可恢复课时数量canRecoverHour <= 需要恢复的课时数量recoverHour - - BigDecimal newBalanceHour = studentCourseOrder.getBalanceHour().add(canRecoverHour); - this.updateBalanceHour(studentCourseOrder.getCourseOrderId(), newBalanceHour, balanceHour); - - // 剩余需恢复课时 - recoverHour = recoverHour.subtract(canRecoverHour); - } - } - } - } - } - - @Override - public void updateBalanceHour(Long courseOrderId, BigDecimal newBalanceHour, BigDecimal oldBalanceHour) { - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("course_order_id", courseOrderId); - uw.eq("balance_hour", oldBalanceHour); - uw.set("balance_hour", newBalanceHour); - boolean update = this.update(uw); - if (!update) { - throw new BusinessException("订单恢复课时失败,请重试!"); - } - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseServiceImpl.java deleted file mode 100644 index 50cc5f7..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentCourseServiceImpl.java +++ /dev/null @@ -1,209 +0,0 @@ -package cn.xluobo.business.sc.student.service.impl; - -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseChargeMapper; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; -import cn.xluobo.business.sc.log.enums.LogTypeEnum; -import cn.xluobo.business.sc.log.repo.model.ScStudentCourseLog; -import cn.xluobo.business.sc.log.service.IScStudentCourseLogService; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentCourseMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.service.IScStudentCourseOrderService; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sys.admin.repo.mapper.ISysDeptMapper; -import cn.xluobo.config.exception.BusinessException; -import cn.xluobo.core.api.APIBaseResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - *

- * 学生课程 服务实现类 - *

- * - * @author zhangby - * @since 2020-08-21 - */ -@Service -public class ScStudentCourseServiceImpl extends ServiceImpl implements IScStudentCourseService { - - @Autowired - private ScCourseChargeMapper courseChargeMapper; - @Autowired - private ScCourseMapper courseMapper; - @Autowired - private ISysDeptMapper deptMapper; - @Autowired - private IScStudentCourseOrderService courseOrderService; - @Autowired - private IScStudentCourseLogService scStudentCourseLogService; - - @Override - public APIBaseResponse checkStudentCanSignUpCourse(Long studentId, Long[] courseIds, Long deptId) { - // 学生已报名课程收费模式 - QueryWrapper qw = new QueryWrapper<>(); - qw.select("course_id", "charge_type"); - qw.eq("student_id", studentId); - List studentCourseList = this.list(qw); - Map studentCourseChargeTypeMap = studentCourseList.stream().collect(Collectors.toMap(ScStudentCourse::getCourseId, ScStudentCourse::getChargeType)); - for (Long courseId : courseIds) { - APIBaseResponse response = this.checkStudentCanSignUpCourse(studentId, courseId, deptId, studentCourseChargeTypeMap); - if(!response.isSuccess()) { - return response; - } - } - - return APIBaseResponse.success(); - } - - @Override - public APIBaseResponse checkStudentCanSignUpCourse(Long studentId, Long courseId, Long deptId,Map studentCourseChargeTypeMap) { - if (null == studentCourseChargeTypeMap) { - QueryWrapper qw = new QueryWrapper<>(); - qw.select("course_id", "charge_type"); - qw.eq("student_id", studentId); - List studentCourseList = this.list(qw); - studentCourseChargeTypeMap = studentCourseList.stream().collect(Collectors.toMap(ScStudentCourse::getCourseId, ScStudentCourse::getChargeType)); - } - ScCourse scCourse = courseMapper.selectById(courseId); - if( null == scCourse) { - return APIBaseResponse.fail("无法获取课程信息,请重试"); - } - // 已报读的 收费方式 - String studentCourseChargeType = studentCourseChargeTypeMap.get(courseId); - if("cycle".equals(studentCourseChargeType)) { - return APIBaseResponse.fail("该学生 已" + CourseChargeTypeEnum.getChargeType(studentCourseChargeType) + "报读'" + scCourse.getCourseName() + "',无法重复报读!"); - } - // 课程收费配置信息 - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("course_id", courseId); - if (StringUtils.isNotEmpty(studentCourseChargeType)) { - qw.eq("charge_type", studentCourseChargeType); - } - List courseChargeList = courseChargeMapper.selectList(qw); - - // 校验学生是否可选择课程 (是否含 已报读的 收费方式) - if (studentCourseChargeTypeMap.containsKey(courseId)) { - // 是否包含 - boolean checkHasStudentCourseChargeType = courseChargeList.stream().anyMatch(item -> item.getChargeType().equals(studentCourseChargeType)); - if (!checkHasStudentCourseChargeType) { - return APIBaseResponse.fail("该学生 已" + CourseChargeTypeEnum.getChargeType(studentCourseChargeType) + "报读'" + scCourse.getCourseName() + "',目前该课程暂无此收费模式,请核查!"); - } - } - - if (null != deptId) { - // 校验是否配置了本校区 - boolean checkChargeDept = courseChargeList.stream().anyMatch(item -> item.getDepartId().compareTo(deptId) == 0 || item.getDepartId().compareTo(-1L) == 0); - if (!checkChargeDept) { - SysDept sysDept = deptMapper.selectById(deptId); - return APIBaseResponse.fail(scCourse.getCourseName() + "(" + CourseChargeTypeEnum.getChargeType(studentCourseChargeType) + ")未在'" + sysDept.getDeptName() + "'开课"); - } - } - return APIBaseResponse.success(); - } - - @Override - public ScStudentCourse selectByStudentIdCourseId(Long studentId, Long courseId) { - QueryWrapper qw = new QueryWrapper(); - qw.eq("student_id",studentId); - qw.eq("course_id",courseId); - return this.getOne(qw); - } - - @Override - public int deleteWhenTotalHourZeroForInvalid(Long studentCourseId) { - return baseMapper.deleteWhenTotalHourZeroForInvalid(studentCourseId); - } - - @Override - public int deleteWhenTotalDayZeroForInvalid(Long studentCourseId) { - return baseMapper.deleteWhenTotalDayZeroForInvalid(studentCourseId); - } - - @Override - public Integer getWillExpireDateCount(Integer minBalanceDay) { - return baseMapper.selectWillExpireDateCount(minBalanceDay, SecurityUtils.getLoginUser().getNowTenantId()); - } - - @Override - public Integer getWillExpireHourCount(Integer minBalanceHour) { - return baseMapper.selectWillExpireHourCount(minBalanceHour, SecurityUtils.getLoginUser().getNowTenantId()); - } - - @Override - public void recoverStudentCourseHour(ScClaTimeAttend claTimeAttend, ScClaTime claTime, LoginUser loginUser) { - Long studentCourseId = claTimeAttend.getStudentCourseId(); - String chargeType = claTimeAttend.getChargeType(); - BigDecimal payHour = claTimeAttend.getPayHour(); - - // 学员日志 - StringBuffer sb = new StringBuffer(""); - sb.append("恢复课时[编辑/删除上课记录],").append("上课时间").append(claTime.getRealClaDate()).append(" ") - .append(claTime.getRealStartTime()).append("~").append(claTime.getRealEndTime()).append(","); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(claTimeAttend.getStudentId()) - .logType(LogTypeEnum.DELETE_ATTEND_CLA.getLogType()) - .courseId(claTimeAttend.getCourseId()) - .courseName(claTime.getCourseName()) - .claId(claTimeAttend.getClaId()) - .claName(claTime.getClaName()) - .deptName(claTime.getDeptName()) - .changeHour(claTimeAttend.getPayHour()) - .changeFee(claTimeAttend.getPayFee()) - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .createTime(new Date()) - .build(); - - if (!CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { - ScStudentCourse studentCourse = this.getById(studentCourseId); - if (null == studentCourse) { - throw new BusinessException("恢复学生课时失败,无法获取学生课时信息!"); - } - // 消耗课时> 0 , 恢复课时 - if (payHour.compareTo(BigDecimal.ZERO) > 0) { - UpdateWrapper uwStudentCourse = new UpdateWrapper<>(); - uwStudentCourse - .eq("student_course_id", studentCourseId) - .eq("balance_hour", studentCourse.getBalanceHour()) - .set("balance_hour", studentCourse.getBalanceHour().add(payHour)) - .set("last_update_user", loginUser.getUserId()) - .set("last_update_time", new Date()); - boolean update = this.update(uwStudentCourse); - if (!update) { - throw new BusinessException("学员剩余课时恢复失败,请重试!"); - } - - studentCourseLog.setAfterBalanceHour(studentCourse.getBalanceHour().add(payHour)); - } else { - studentCourseLog.setAfterBalanceHour(studentCourse.getBalanceHour().add(payHour)); - } - - sb.append("恢复").append(payHour.toString()).append("课时"); - - // 恢复订单课时 - courseOrderService.recoverOrderLoseHour(studentCourse.getStudentCourseId(), payHour); - } - - studentCourseLog.setMemo(sb.toString()); - scStudentCourseLogService.save(studentCourseLog); - } - -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDeptController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDeptController.java index 0003cd9..3e3c4f9 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDeptController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDeptController.java @@ -1,9 +1,9 @@ package cn.xluobo.business.sys.admin.controller; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.system.domain.resp.RespTreeSelect; +import com.ruoyi.system.service.impl.BusinessSysDeptService; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDictDataController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDictDataController.java index 7081f67..9fb1317 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDictDataController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/controller/ISysDictDataController.java @@ -3,8 +3,8 @@ package cn.xluobo.business.sys.admin.controller; import cn.xluobo.business.sys.admin.domain.req.ReqPageSelect; import cn.xluobo.business.sys.admin.domain.req.ReqSearchSysDictData; import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.ruoyi.common.core.domain.entity.SysDictData; import org.springframework.beans.factory.annotation.Autowired; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelectMenu.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelectMenu.java index 41e7350..ee652be 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelectMenu.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelectMenu.java @@ -2,6 +2,7 @@ package cn.xluobo.business.sys.admin.domain.resp; import com.google.common.collect.Lists; import com.ruoyi.common.core.domain.entity.SysMenu; +import com.ruoyi.system.domain.resp.RespTreeSelect; import java.util.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDictDataService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDictDataService.java index c172a1a..dcc69f5 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDictDataService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDictDataService.java @@ -2,8 +2,8 @@ package cn.xluobo.business.sys.admin.service; import cn.xluobo.business.sys.admin.domain.req.ReqPageSelect; import cn.xluobo.business.sys.admin.domain.req.ReqSearchSysDictData; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.entity.SysDictData; @@ -17,7 +17,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; -import java.util.Date; import java.util.List; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/ISysDeptService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/ISysDeptService.java index 3d86382..a6871aa 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/ISysDeptService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/ISysDeptService.java @@ -3,8 +3,6 @@ package cn.xluobo.business.sys.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.entity.SysDept; -import java.util.List; - /** *

* 部门表 服务类 @@ -15,41 +13,4 @@ import java.util.List; */ public interface ISysDeptService extends IService { - /** - * 是否存在子部门 - * @param departId - * @return - */ - boolean hadChild(Long departId); - - /** - * 是否存在用户 - * @param departId - * @return - */ - boolean hadUser(Long departId); - - /** - * 修改子元素关系 - * @param deptId 被修改的部门ID - * @param newAncestors 新的父ID集合 - * @param oldAncestors 旧的父ID集合 - */ - void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors); - - /** - * 获取用户有权限的校区列表 - * @return - */ - List selectUserCampusList(Long userId); - - /** - * 校验 用户dept 是否在用 - * 如校区 - * - * @param userId - * @param deptId - * @return - */ - boolean checkUserDeptInUse(Long userId, Long deptId); } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/impl/ISysDeptServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/impl/ISysDeptServiceImpl.java index 2f47c30..9901019 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/impl/ISysDeptServiceImpl.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/impl/ISysDeptServiceImpl.java @@ -2,13 +2,10 @@ package cn.xluobo.business.sys.admin.service.impl; import cn.xluobo.business.sys.admin.repo.mapper.ISysDeptMapper; import cn.xluobo.business.sys.admin.service.ISysDeptService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.entity.SysDept; import org.springframework.stereotype.Service; -import java.util.List; - /** *

* 部门表 服务实现类 @@ -20,50 +17,4 @@ import java.util.List; @Service public class ISysDeptServiceImpl extends ServiceImpl implements ISysDeptService { - /** - * 是否存在子部门 - * @param departId - * @return - */ - public boolean hadChild(Long departId){ - QueryWrapper qw = new QueryWrapper(); - qw.eq("parent_id",departId); - List list = list(qw); - if(list.isEmpty()){ - return false; - }else { - return true; - } - } - - @Override - public boolean hadUser(Long departId) { - // TODO: 2020-01-18 是否存在用户 - return false; - } - - @Override - public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) { - QueryWrapper qw = new QueryWrapper(); - qw.eq("parent_id",deptId); - List childrenList = list(qw); - if(!childrenList.isEmpty()){ - for (SysDept children : childrenList) { - children.setAncestors(children.getAncestors().replace(oldAncestors, newAncestors)); - } - updateBatchById(childrenList); - } - - } - - @Override - public List selectUserCampusList(Long userId) { - return baseMapper.selectUserCampusList(userId, "2"); - } - - @Override - public boolean checkUserDeptInUse(Long userId, Long deptId) { - SysDept sysDept = baseMapper.selectUserDeptInUse(userId, deptId); - return null != sysDept; - } } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/ISysHolidayService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/ISysHolidayService.java index 70b4db9..69a159e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/ISysHolidayService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/ISysHolidayService.java @@ -1,7 +1,7 @@ package cn.xluobo.business.sys.holiday.service; import cn.xluobo.business.sys.holiday.repo.model.SysHoliday; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/impl/SysHolidayServiceImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/impl/SysHolidayServiceImpl.java index 08e7eb3..f01bd7b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/impl/SysHolidayServiceImpl.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/holiday/service/impl/SysHolidayServiceImpl.java @@ -3,7 +3,7 @@ package cn.xluobo.business.sys.holiday.service.impl; import cn.xluobo.business.sys.holiday.repo.mapper.SysHolidayMapper; import cn.xluobo.business.sys.holiday.repo.model.SysHoliday; import cn.xluobo.business.sys.holiday.service.ISysHolidayService; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/controller/SysReceiptAccountController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/controller/SysReceiptAccountController.java index 5261faf..51d7cf5 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/controller/SysReceiptAccountController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/controller/SysReceiptAccountController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.sys.receipt.controller; import cn.xluobo.business.sys.receipt.domain.req.ReqSearchSysReceiptAccount; import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; import cn.xluobo.business.sys.receipt.service.BusinessSysReceiptAccountService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/service/BusinessSysReceiptAccountService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/service/BusinessSysReceiptAccountService.java index c2380dd..6b13b53 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/service/BusinessSysReceiptAccountService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/receipt/service/BusinessSysReceiptAccountService.java @@ -2,8 +2,8 @@ package cn.xluobo.business.sys.receipt.service; import cn.xluobo.business.sys.receipt.domain.req.ReqSearchSysReceiptAccount; import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/staff/controller/SysStaffController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/staff/controller/SysStaffController.java index f7c2c2d..fd34644 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/staff/controller/SysStaffController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/staff/controller/SysStaffController.java @@ -1,16 +1,12 @@ package cn.xluobo.business.sys.staff.controller; -import cn.xluobo.business.sc.course.domain.req.ReqSelect; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.columns.ISysTeacherService; 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 java.util.List; - /** *

* 教师信息 Controller @@ -23,21 +19,22 @@ import java.util.List; @RequestMapping("/api/sys/staff") public class SysStaffController { - @Autowired - private ISysUserService userService; + @Autowired + private ISysTeacherService teacherService; + /** * 前端select * * @return */ @GetMapping("/list/teacherSelect") - public AjaxResult teacherSelect(ReqSelect reqSelect) { - SysUser sysUser = new SysUser(); - sysUser.setTeacher(1); - List sysUsers = userService.selectUserList(sysUser); - return AjaxResult.success(sysUsers); + public AjaxResult teacherSelect() { +// SysUser sysUser = new SysUser(); +// sysUser.setTeacher(1); +// List sysUsers = teacherService.(sysUser); + return AjaxResult.success(); } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/controller/SysTagController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/controller/SysTagController.java index 569862e..3ba7818 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/controller/SysTagController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/controller/SysTagController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.sys.tag.controller; import cn.xluobo.business.sys.tag.domain.req.ReqSearchSysTag; import cn.xluobo.business.sys.tag.repo.model.SysTag; import cn.xluobo.business.sys.tag.service.BusinessSysTagService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/service/BusinessSysTagService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/service/BusinessSysTagService.java index 75fd78a..fc0da88 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/service/BusinessSysTagService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/sys/tag/service/BusinessSysTagService.java @@ -2,8 +2,8 @@ package cn.xluobo.business.sys.tag.service; import cn.xluobo.business.sys.tag.domain.req.ReqSearchSysTag; import cn.xluobo.business.sys.tag.repo.model.SysTag; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/controller/ImportController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/controller/ImportController.java index 66960be..44feff8 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/controller/ImportController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/controller/ImportController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.tool.impt.controller; import cn.xluobo.business.tool.impt.domain.ReqDownImplTemplate; import cn.xluobo.business.tool.impt.domain.ReqUploadImplData; import cn.xluobo.business.tool.impt.service.BusinessImportService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportCourseClaListener.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportCourseClaListener.java index 7dee584..b4f9dc8 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportCourseClaListener.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportCourseClaListener.java @@ -1,18 +1,18 @@ package cn.xluobo.business.tool.impt.listener; import cn.hutool.core.util.ObjectUtil; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRepeatTypeEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRuleTypeEnums; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.BusinessClaTimeRuleService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; +import com.ruoyi.school.course.enums.ClaTimeRepeatTypeEnums; +import com.ruoyi.school.course.enums.ClaTimeRuleTypeEnums; +import com.ruoyi.school.course.domain.ScClaTimeRule; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.school.course.service.BusinessClaTimeRuleService; +import com.ruoyi.school.course.service.IScCourseClaService; import cn.xluobo.business.tool.impt.domain.ImportCourseCla; -import cn.xluobo.core.api.APIBaseResponse; -import cn.xluobo.core.utils.DateUtil; +import com.ruoyi.core.utils.DateUtil; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.google.common.collect.Lists; +import com.ruoyi.core.api.APIBaseResponse; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -119,7 +119,6 @@ public class ImportCourseClaListener extends AnalysisEventListener { } // 获取以保存课程ID Long courseId = hadSaveCache.get(importCourse.getCourseName()); - + // 保存收费 String chargeTypeName = importCourse.getChargeType(); String chargeType = chargeTypeMap.get(chargeTypeName); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportStudentOrderListener.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportStudentOrderListener.java deleted file mode 100644 index ec7bd0a..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/listener/ImportStudentOrderListener.java +++ /dev/null @@ -1,753 +0,0 @@ -package cn.xluobo.business.tool.impt.listener; - -import cn.hutool.core.util.ObjectUtil; -import cn.xluobo.business.sc.course.domain.export.ExpCourse; -import cn.xluobo.business.sc.course.domain.req.ReqCourseClaSelect; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.RespCourseClaSelectInfo; -import cn.xluobo.business.sc.course.enums.ChargeDateUnitEnum; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseClaMapper; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper; -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; -import cn.xluobo.business.sc.course.service.IScCourseChargeService; -import cn.xluobo.business.sc.log.enums.LogTypeEnum; -import cn.xluobo.business.sc.log.repo.model.ScStudentCourseLog; -import cn.xluobo.business.sc.log.service.IScStudentCourseLogService; -import cn.xluobo.business.sc.order.enums.OrderStatusEnum; -import cn.xluobo.business.sc.order.repo.model.ScOrder; -import cn.xluobo.business.sc.order.repo.model.ScOrderAccount; -import cn.xluobo.business.sc.order.repo.model.ScOrderDetail; -import cn.xluobo.business.sc.order.service.IScOrderAccountService; -import cn.xluobo.business.sc.order.service.IScOrderDetailService; -import cn.xluobo.business.sc.order.service.IScOrderService; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourseOrder; -import cn.xluobo.business.sc.student.service.IScStudentContactService; -import cn.xluobo.business.sc.student.service.IScStudentCourseOrderService; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sc.student.service.IScStudentService; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; -import cn.xluobo.business.sys.receipt.service.ISysReceiptAccountService; -import cn.xluobo.business.tool.impt.domain.ImportStudentOrder; -import cn.xluobo.core.api.APIBaseResponse; -import cn.xluobo.core.page.RespPage; -import cn.xluobo.core.utils.DateUtil; -import cn.xluobo.utils.ContextUtils; -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.system.service.ISysUserService; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * @author :zhangbaoyu - * @date :Created in 2020/10/12 17:12 - */ -@Slf4j -@Data -public class ImportStudentOrderListener extends AnalysisEventListener { - - private IScStudentService studentService; - private IScOrderService orderService; - private IScOrderDetailService orderDetailService; - private IScStudentContactService studentContactService; - private IScStudentCourseService studentCourseService; - private IScStudentCourseOrderService courseOrderService; - private IScOrderAccountService orderAccountService; - private BusinessSysDictDataService dictDataService; - private BusinessSysDeptService deptService; - private ScCourseMapper courseMapper; - private ScCourseClaMapper claMapper; - private ISysReceiptAccountService receiptAccountService; - private ISysUserService staffService; - private IScCourseChargeService courseChargeService; - private IScStudentCourseLogService scStudentCourseLogService; - - /** - * 是否需要保存 - */ - private Boolean needSave; - - // key=value value=contactRelationId - private Map contactRelationMap = Maps.newHashMap(); - // key=value value=sexId - private Map sexMap = Maps.newHashMap(); - // key=schoolName value=schoolId - private Map schoolMap = Maps.newHashMap(); - // key=detailTagName value=detailTagId - private Map orderDetailTagMap = Maps.newHashMap(); - // key=deptName value=deptId - private Map campusMap = Maps.newHashMap(); - // key=courseChargeName value=chargeId - private Map courseChargeMap = Maps.newHashMap(); - private Map claMap = Maps.newHashMap(); - // key=courseId value=value - private Map courseMap = Maps.newHashMap(); - // key=name value=receiptAccountId - private Map receiptAccountMap = Maps.newHashMap(); - // key=staffName value=staffId - private Map staffMap = Maps.newHashMap(); - private Map chargeCacheMap = Maps.newHashMap(); - // key=studentName value=studentId - private Map studentMap = Maps.newHashMap(); - private boolean hadMoreStudent; - - // 登录用户id - private Long loginUserId = 0L; - private LoginUser loginUser; - - // 导入id - private Long importId; - - // 需保存的successRecordList - private List successRecordList = Lists.newArrayList(); - - // 校验失败的列表 - private List failRecordList = Lists.newArrayList(); - - /** - * 最多读取多少行 - */ - int maxRecord = 200; - - /** - * 当前已读取 - */ - int hadReadRecord = 0; - - public ImportStudentOrderListener() { - studentService = ContextUtils.getBean(IScStudentService.class); - orderService = ContextUtils.getBean(IScOrderService.class); - orderDetailService = ContextUtils.getBean(IScOrderDetailService.class); - studentContactService = ContextUtils.getBean(IScStudentContactService.class); - studentCourseService = ContextUtils.getBean(IScStudentCourseService.class); - courseOrderService = ContextUtils.getBean(IScStudentCourseOrderService.class); - orderAccountService = ContextUtils.getBean(IScOrderAccountService.class); - dictDataService = ContextUtils.getBean(BusinessSysDictDataService.class); - deptService = ContextUtils.getBean(BusinessSysDeptService.class); - courseMapper = ContextUtils.getBean(ScCourseMapper.class); - claMapper = ContextUtils.getBean(ScCourseClaMapper.class); - receiptAccountService = ContextUtils.getBean(ISysReceiptAccountService.class); - courseChargeService = ContextUtils.getBean(IScCourseChargeService.class); - scStudentCourseLogService = ContextUtils.getBean(IScStudentCourseLogService.class); - this.initCacheMap(); - } - - @Override - public void invoke(ImportStudentOrder data, AnalysisContext context) { - APIBaseResponse checkParam = checkParam(data); - if (!checkParam.isSuccess()) { - data.setFailMsg(checkParam.getRespMsg()); - failRecordList.add(data); - return; - } - successRecordList.add(data); - } - - @Override - public void doAfterAllAnalysed(AnalysisContext context) { - if (needSave) { - saveStudentOrder(); - } - log.info("doAfterAllAnalysed"); - } - - @Override - public boolean hasNext(AnalysisContext context) { - if (hadReadRecord++ < maxRecord) { - return true; - } - return false; - } - - /** - * 保存班级信息 - */ - public void saveStudentOrder() { - for (ImportStudentOrder studentOrder : successRecordList) { - String studentName = studentOrder.getStudentName(); - Long studentId = studentMap.get(studentName); - - if (null == studentId && hadMoreStudent) { - studentId = studentService.selectIdByName(studentName); - } - - // 如无学生信息,新建学生信息 - if (null == studentId) { - ScStudent student = new ScStudent(); - student.setStudentName(studentName); - - if (StringUtils.isNotEmpty(studentOrder.getSex())) { - student.setSex(sexMap.get(studentOrder.getSex())); - } - student.setPhone(studentOrder.getContactPhone()); - if (StringUtils.isNotEmpty(studentOrder.getInTime())) { - student.setInTime(studentOrder.getInTime()); - } - student.setCreateUser(loginUserId); - studentService.save(student); - studentId = student.getStudentId(); - - // 保存联系人信息 - ScStudentContact studentContact = new ScStudentContact(); - String contactRelation = contactRelationMap.get(studentOrder.getContactRelation()); - studentContact.setContactRelation(contactRelation); - studentContact.setContactPhone(studentOrder.getContactPhone()); - studentContact.setContactNick(studentOrder.getContactRelation()); - studentContact.setCreateUser(loginUserId); - studentContact.setStudentId(student.getStudentId()); - studentContactService.save(studentContact); - } - - // 订单信息 - BigDecimal receiptFee = new BigDecimal(studentOrder.getReceiptFee()); - BigDecimal actualFee = new BigDecimal(studentOrder.getActualFee()); - Long handleDeptId = campusMap.get(studentOrder.getHandleDeptName()); - ScOrder order = ScOrder.builder() - .studentId(studentId) - .studentName(studentOrder.getStudentName()) - .phone(studentOrder.getContactPhone()) - .orderType("1") - .originalTotalFee(actualFee) - .actualTotalFee(actualFee) - .receiptFee(receiptFee) - .balanceFee(BigDecimal.ZERO) - .orderStatus(OrderStatusEnum.HAD_PAY.getOrderStatus()) - .memo(studentOrder.getMemo()) - .handleDeptId(Long.valueOf(handleDeptId)) - .handleDeptName(studentOrder.getHandleDeptName()) - .handleDate(studentOrder.getHandleDate()) - .createUser(loginUserId) - .lastUpdateUser(loginUserId) - .build(); - if (StringUtils.isNotEmpty(studentOrder.getSaleStaffName())) { - Long saleStaffId = staffMap.get(studentOrder.getSaleStaffName()); - order.setSaleStaffId(saleStaffId); - order.setSaleStaffName(studentOrder.getSaleStaffName()); - } - orderService.save(order); - - - // 订单明细 - Long deptId = campusMap.get(studentOrder.getDeptName()); - Long chargeId = courseChargeMap.get(studentOrder.getCourseName()); - ScCourseCharge courseCharge = chargeCacheMap.get(chargeId); - RespCourseClaSelectInfo claInfo = claMap.get(studentOrder.getClaName()); - String detailTagId = orderDetailTagMap.get(studentOrder.getOrderDetailTag()); - String buyCount = studentOrder.getBuyCount(); - if (StringUtils.isEmpty(buyCount)) { - buyCount = "1"; - } - Integer buyCountInt = Integer.parseInt(buyCount); - - ScOrderDetail orderDetail = ScOrderDetail.builder() - .orderId(order.getOrderId()) - .courseId(courseCharge.getCourseId()) - .courseName("导入:" + courseMap.get(courseCharge.getCourseId())) - .deptId(Long.valueOf(deptId)) - .deptName(studentOrder.getDeptName()) - .detailTag(detailTagId) - .chargeName(courseCharge.getChargeName()) - .chargeType(courseCharge.getChargeType()) - .chargeCount(courseCharge.getCount()) - .chargeFee(actualFee) - .dateUnit(courseCharge.getDateUnit()) - .buyCount(new BigDecimal(buyCount)) - .originalFee(actualFee) - .actualFee(receiptFee) - .insideMemo(null == studentOrder.getMemo() ? "导入" : "导入" + studentOrder.getMemo()) - .outsideMemo("") - .orderDetailStatus(OrderStatusEnum.HAD_PAY.getOrderStatus()) - .createUser(loginUserId) - .lastUpdateUser(loginUserId) - .build(); - if (StringUtils.isNotEmpty(studentOrder.getExpireDate())) { - orderDetail.setExpireDate(studentOrder.getExpireDate()); - } - if (null != claInfo) { - orderDetail.setClaId(claInfo.getClaId()); - orderDetail.setClaName(claInfo.getClaName()); - } - String beginDate = studentOrder.getBeginDate(); - DateTime beginDateTime = DateUtil.yyyMMddDayBegin(beginDate); - DateTime endDateTime = DateUtil.yyyMMddDayEnd(beginDate); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - if (ChargeDateUnitEnum.DAY.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusDays(buyCountInt).minusDays(1); - } else if (ChargeDateUnitEnum.MONTH.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusMonths(buyCountInt).minusDays(1); - } else if (ChargeDateUnitEnum.SEASON.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusMonths(buyCountInt * 3).minusDays(1); - } else if (ChargeDateUnitEnum.YEAR.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusYears(buyCountInt).minusDays(1); - } - orderDetail.setBeginDate(studentOrder.getBeginDate()); - orderDetail.setEndDate(endDateTime.toString("yyyy-MM-dd")); - } else { - // 收费方式按课时收费,实际课时数量 - orderDetail.setChargeCount(new BigDecimal(studentOrder.getBuyHour())); - } - orderDetailService.save(orderDetail); - - // 收款账户 - Long accountId = receiptAccountMap.get(studentOrder.getAccountName()); - ScOrderAccount orderAccount = new ScOrderAccount(); - orderAccount.setOrderId(order.getOrderId()); - orderAccount.setAccountId(accountId); - orderAccount.setAccountName(studentOrder.getAccountName()); - orderAccount.setFee(receiptFee); - orderAccountService.save(orderAccount); - - // sc_student_course表 - ScStudentCourse dbStudentCourse = studentCourseService.selectByStudentIdCourseId(studentId, courseCharge.getCourseId()); - BigDecimal buyHour = BigDecimal.ZERO; - BigDecimal addedHour = BigDecimal.ZERO; - int addedDays = 0; - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - Period period = new Period(beginDateTime, endDateTime, PeriodType.days()); - addedDays = period.getDays() + 1; - } else { - // 新增课时 - buyHour = new BigDecimal(studentOrder.getBuyHour()); - addedHour = new BigDecimal(studentOrder.getBalanceHour()); - } - Long studentCourseId = null; - { - // db中包含 - if (null != dbStudentCourse) { - ScStudentCourse updateStudentCourse = new ScStudentCourse(); - updateStudentCourse.setStudentCourseId(dbStudentCourse.getStudentCourseId()); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - updateStudentCourse.setTotalDay(dbStudentCourse.getTotalDay().add(new BigDecimal(addedDays))); - } else { - updateStudentCourse.setTotalHour(dbStudentCourse.getTotalHour().add(new BigDecimal(studentOrder.getBuyHour()))); - updateStudentCourse.setBalanceHour(dbStudentCourse.getBalanceHour().add(addedHour)); - } - updateStudentCourse.setTotalFee(dbStudentCourse.getTotalFee().add(receiptFee)); - updateStudentCourse.setLastUpdateUser(loginUserId); - updateStudentCourse.setLastUpdateTime(new Date()); - studentCourseService.updateById(updateStudentCourse); - studentCourseId = updateStudentCourse.getStudentCourseId(); - } else { - ScStudentCourse addStudentCourse = new ScStudentCourse(); - addStudentCourse.setStudentId(studentId); - addStudentCourse.setCourseId(courseCharge.getCourseId()); - addStudentCourse.setCourseName(courseMap.get(courseCharge.getCourseId())); - addStudentCourse.setDeptId(Long.valueOf(deptId)); - if (null != claInfo) { - addStudentCourse.setClaId(claInfo.getClaId()); - addStudentCourse.setClaName(claInfo.getClaName()); - } - addStudentCourse.setChargeType(courseCharge.getChargeType()); - if (CourseChargeTypeEnum.HOUR.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalHour(new BigDecimal(studentOrder.getBuyHour())); - addStudentCourse.setBalanceHour(addedHour); - } else if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalDay(new BigDecimal(addedDays)); - } else if (CourseChargeTypeEnum.CYCLE.getChargeType().equals(courseCharge.getChargeType())) { - addStudentCourse.setTotalHour(new BigDecimal(studentOrder.getBuyHour())); - addStudentCourse.setBalanceHour(addedHour); - } - addStudentCourse.setTotalFee(receiptFee); - addStudentCourse.setStatus("1"); - addStudentCourse.setCreateUser(loginUserId); - addStudentCourse.setLastUpdateUser(loginUserId); - studentCourseService.save(addStudentCourse); - studentCourseId = addStudentCourse.getStudentCourseId(); - } - } - - // 插入sc_student_course_order - { - ScStudentCourseOrder studentCourseOrder = ScStudentCourseOrder.builder() - .studentCourseId(studentCourseId) - .orderId(order.getOrderId()) - .orderDetailId(orderDetail.getOrderDetailId()) - .totalFee(actualFee) - .createUser(loginUserId) - .lastUpdateUser(loginUserId) - .build(); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - studentCourseOrder.setTotalDay(new BigDecimal(addedDays)); - studentCourseOrder.setBeginDate(beginDateTime.toString("yyyy-MM-dd")); - studentCourseOrder.setEndDate(endDateTime.toString("yyyy-MM-dd")); - if (StringUtils.isNotEmpty(studentOrder.getExpireDate())) { - studentCourseOrder.setExpireDate(studentOrder.getExpireDate()); - } - - // 单价 = 总价/天 - studentCourseOrder.setUnitFee(actualFee.divide(new BigDecimal(addedDays), 2, BigDecimal.ROUND_HALF_UP)); - } else { - studentCourseOrder.setTotalHour(new BigDecimal(studentOrder.getBuyHour())); - studentCourseOrder.setBalanceHour(addedHour); - - // 按课时收费 如果 学生 剩余课时<0,表示欠课时 - if (null != dbStudentCourse && dbStudentCourse.getBalanceHour().compareTo(BigDecimal.ZERO) < 0) { - // 剩余课时 = 购买课时 - 欠课时 - studentCourseOrder.setBalanceHour(addedHour.add(dbStudentCourse.getBalanceHour())); - } - - // 单价 = 总价/课时数 - studentCourseOrder.setUnitFee(actualFee.divide(buyHour, 2, BigDecimal.ROUND_HALF_UP)); - } - courseOrderService.save(studentCourseOrder); - } - - // 学生报读 日志 - StringBuffer sb = new StringBuffer(""); - if ("1".equals(detailTagId)) { - sb.append("[导入]新报,"); - } else if ("2".equals(detailTagId)) { - sb.append("[导入]续报,"); - } - sb.append("课程'").append(courseMap.get(courseCharge.getCourseId())).append("',"); - sb.append("金额").append(receiptFee.toString()).append("元,"); - ScStudentCourseLog studentCourseLog = ScStudentCourseLog.builder() - .studentId(studentId) - .logType(LogTypeEnum.PAY_FEE.getLogType()) - .courseId(courseCharge.getCourseId()) - .courseName(courseMap.get(courseCharge.getCourseId())) - .deptName(studentOrder.getDeptName()) - .changeFee(receiptFee) - .createUser(loginUser.getUserId()) - .createUserName(loginUser.getUsername()) - .createTime(new Date()) - .build(); - if (null != claInfo) { - studentCourseLog.setClaId(claInfo.getClaId()); - studentCourseLog.setClaName(claInfo.getClaName()); - } - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - sb.append("增加'").append(addedDays).append("'天"); - sb.append("(").append(beginDateTime.toString("yyyy-MM-dd")).append("~").append(endDateTime.toString("yyyy-MM-dd")).append(")."); - } else { - sb.append("增加'").append(addedHour.toString()).append("'课时,"); - studentCourseLog.setChangeHour(addedHour); - // 增加后剩余 - if (null != dbStudentCourse) { - studentCourseLog.setAfterBalanceHour(dbStudentCourse.getBalanceHour().add(addedHour)); - sb.append("增加后剩余").append(dbStudentCourse.getBalanceHour().add(addedHour).toString()).append("'课时").append("."); - } else { - studentCourseLog.setAfterBalanceHour(addedHour); - sb.append("增加后剩余").append(addedHour.toString()).append("'课时").append("."); - } - } - studentCourseLog.setMemo(sb.toString()); - scStudentCourseLogService.save(studentCourseLog); - } - } - - /** - * 校验导入参数 - * - * @param data - * @return - */ - public APIBaseResponse checkParam(ImportStudentOrder data) { - if(receiptAccountMap.isEmpty()) { - return APIBaseResponse.fail("系统未配置收款账户,请配置收款账户"); - } - String studentName = data.getStudentName(); - if (StringUtils.isEmpty(data.getStudentName())) { - return APIBaseResponse.fail("学生姓名未填写"); - } else if (studentName.length() > 20) { - return APIBaseResponse.fail("学生姓名最多20个字符"); - } else if (StringUtils.isEmpty(data.getContactPhone())) { - return APIBaseResponse.fail("联系电话未填写"); - } else if (data.getContactPhone().length() > 30) { - return APIBaseResponse.fail("联系电话最多30个字符"); - } else if (StringUtils.isEmpty(data.getDeptName())) { - return APIBaseResponse.fail("报读校区未填写"); - } else if (StringUtils.isEmpty(data.getCourseName())) { - return APIBaseResponse.fail("报读课程未填写"); - } else if (StringUtils.isEmpty(data.getReceiptFee())) { - return APIBaseResponse.fail("实缴学费未填写"); - } else if (StringUtils.isEmpty(data.getActualFee())) { - return APIBaseResponse.fail("应收学费未填写"); - } else if (StringUtils.isEmpty(data.getHandleDeptName())) { - return APIBaseResponse.fail("经办校区未填写"); - } - - try { - new BigDecimal(data.getReceiptFee()); - new BigDecimal(data.getActualFee()); - } catch (Exception e) { - return APIBaseResponse.fail("实缴、应收学费格式错误,请按照正确格式填写"); - } - - if (new BigDecimal(data.getReceiptFee()).compareTo(new BigDecimal(data.getActualFee())) > 0) { - return APIBaseResponse.fail("实缴应大于应收,应小于等于应收"); - } - - Long chargeId = courseChargeMap.get(data.getCourseName()); - if (null == chargeId) { - return APIBaseResponse.fail("根据课程无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - - ScCourseCharge courseCharge = chargeCacheMap.get(chargeId); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - if (StringUtils.isEmpty(data.getBeginDate())) { - return APIBaseResponse.fail("按时间收费,开始日期未填写"); - } else if (StringUtils.isEmpty(data.getBuyCount())) { - return APIBaseResponse.fail("按时间收费,购买数量未填写"); - } - try { - DateUtil.yyyMMddDayBegin(data.getBeginDate()); - } catch (Exception e) { - return APIBaseResponse.fail("按时间收费开始日期格式错误,请按照正确格式填写开始日期"); - } - try { - Integer.parseInt(data.getBuyCount()); - if (Integer.parseInt(data.getBuyCount()) == 0) { - return APIBaseResponse.fail("按时间收费购买数量不能为0"); - } - } catch (Exception e) { - return APIBaseResponse.fail("按时间收费购买数量格式错误,请按照正确格式填写购买数量"); - } - } else { - if (StringUtils.isEmpty(data.getBuyHour())) { - return APIBaseResponse.fail("购买课时未填写"); - } else if (StringUtils.isEmpty(data.getBalanceHour())) { - return APIBaseResponse.fail("剩余课时未填写"); - } - - try { - new BigDecimal(data.getBuyHour()); - new BigDecimal(data.getBalanceHour()); - } catch (Exception e) { - return APIBaseResponse.fail("购买课时、剩余课时格式错误,请按照正确格式填写"); - } - - if (new BigDecimal(data.getBuyHour()).compareTo(new BigDecimal(data.getBalanceHour())) < 0) { - return APIBaseResponse.fail("购买课时小于剩余课时,请核对后重新填写"); - } - if (new BigDecimal(data.getBuyHour()).compareTo(BigDecimal.ZERO) < 0) { - return APIBaseResponse.fail("购买课时小于0"); - } else if (new BigDecimal(data.getBalanceHour()).compareTo(BigDecimal.ZERO) < 0) { - return APIBaseResponse.fail("剩余课时小于0"); - } - - if (StringUtils.isNotEmpty(data.getExpireDate())) { - try { - DateUtil.yyyMMddDayBegin(data.getExpireDate()); - } catch (Exception e) { - return APIBaseResponse.fail("按课时、周期收费,请按照正确格式填写课程到期日期"); - } - } - } - - - if (StringUtils.isNotEmpty(data.getContactRelation())) { - String contactRelationId = contactRelationMap.get(data.getContactRelation()); - if (StringUtils.isEmpty(contactRelationId)) { - return APIBaseResponse.fail("根据主要联系人无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - } else { - // 如未填,默认为其他 - data.setContactRelation("其他"); - } - - if (StringUtils.isNotEmpty(data.getSex())) { - String sexId = sexMap.get(data.getSex()); - if (StringUtils.isEmpty(sexId)) { - return APIBaseResponse.fail("根据性别无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - } else { - // 如未填,默认为男 - data.setSex("男"); - } - - if (StringUtils.isNotEmpty(data.getOrderDetailTag())) { - String detailTagId = orderDetailTagMap.get(data.getOrderDetailTag()); - if (StringUtils.isEmpty(detailTagId)) { - return APIBaseResponse.fail("根据订单类型无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - } else { - // 如未填,默认为新报 - data.setOrderDetailTag("新报"); - } - - Long deptId = campusMap.get(data.getDeptName()); - if (ObjectUtil.isEmpty(deptId)) { - return APIBaseResponse.fail("根据报读校区无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - - if (courseCharge.getDepartId() != -1 && courseCharge.getDepartId().compareTo(Long.valueOf(deptId)) != 0) { - return APIBaseResponse.fail("报读校区与报读课程不匹配,请核对后重新导入"); - } - - if (StringUtils.isNotEmpty(data.getClaName())) { - RespCourseClaSelectInfo claInfo = claMap.get(data.getClaName()); - if (null == claInfo) { - return APIBaseResponse.fail("根据报读班级无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } else if (claInfo.getCourseId().compareTo(courseCharge.getCourseId()) != 0) { - return APIBaseResponse.fail("报读班级与报读课程不匹配,请核对后重新导入"); - } else if (claInfo.getDeptId().compareTo(Long.valueOf(deptId)) != 0) { - return APIBaseResponse.fail("报读班级与报读课程不匹配,请核对后重新导入"); - } - - } - - Long handleDeptId = campusMap.get(data.getHandleDeptName()); - if (ObjectUtil.isEmpty(handleDeptId)) { - return APIBaseResponse.fail("根据经办校区无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - - if (StringUtils.isNotEmpty(data.getHandleDate())) { - try { - DateUtil.yyyMMddDayBegin(data.getHandleDate()); - } catch (Exception e) { - return APIBaseResponse.fail("请按照正确格式填写经办日期"); - } - } else { - data.setHandleDate(DateTime.now().toString("yyyy-MM-dd")); - } - - if (StringUtils.isNotEmpty(data.getAccountName())) { - Long accountId = receiptAccountMap.get(data.getAccountName()); - if (null == accountId) { - return APIBaseResponse.fail("根据收款账户无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - } else if (!receiptAccountMap.isEmpty()) { - String key = receiptAccountMap.keySet().iterator().next(); - // 如未填,默认第一个 - data.setAccountName(key); - } - - if (StringUtils.isNotEmpty(data.getSaleStaffName())) { - Long staffId = staffMap.get(data.getSaleStaffName()); - if (null == staffId) { - return APIBaseResponse.fail("根据销售员工无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); - } - } - - // 校验学生报读方式 是否与老报读方式一致 - Long studentId = studentMap.get(studentName); - if (null == studentId && hadMoreStudent) { - studentId = studentService.selectIdByName(studentName); - } - if (null != studentId) { - ScStudentCourse studentCourse = studentCourseService.selectByStudentIdCourseId(studentId, courseCharge.getCourseId()); - if (null != studentCourse && !studentCourse.getChargeType().equals(courseCharge.getChargeType())) { - return APIBaseResponse.fail("该学生 已" + CourseChargeTypeEnum.getChargeType(studentCourse.getChargeType()) + "报读,无法按" + courseCharge.getChargeType() + "重复报读!"); - } - } - - - // 按时间报读,报读日期是否存在覆盖 - if (CourseChargeTypeEnum.DATE.getChargeType().equals(courseCharge.getChargeType())) { - String beginDate = data.getBeginDate(); - DateTime beginDateTime = DateUtil.yyyMMddDayBegin(beginDate); - DateTime endDateTime = DateUtil.yyyMMddDayEnd(beginDate); - if (ChargeDateUnitEnum.DAY.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusDays(Integer.parseInt(data.getBuyCount())).minusDays(1); - } else if (ChargeDateUnitEnum.MONTH.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusMonths(Integer.parseInt(data.getBuyCount())).minusDays(1); - } else if (ChargeDateUnitEnum.SEASON.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusMonths(Integer.parseInt(data.getBuyCount()) * 3).minusDays(1); - } else if (ChargeDateUnitEnum.YEAR.getDateUnit().equals(courseCharge.getDateUnit())) { - endDateTime = beginDateTime.plusYears(Integer.parseInt(data.getBuyCount())).minusDays(1); - } - boolean checkDateCover = courseOrderService.checkDateCover(studentId, courseCharge.getCourseId(), beginDateTime.toString("yyyy-MM-dd"), endDateTime.toString("yyyy-MM-dd")); - if (checkDateCover) { - return APIBaseResponse.fail("按时间收费,报读日期存在覆盖,请重新选择开始日期!"); - } - } - - return APIBaseResponse.success(); - } - - public void initCacheMap() { - // 性别 - List sexList = dictDataService.dictTypeDataList("sys_user_sex"); - // 订单类型 - List orderDetailTagList = dictDataService.dictTypeDataList("course_order_type"); - // 报读校区 - List campusList = deptService.campusList(); - // 报读课程 课程-收费方式(校区) - ReqSearchScCourse reqSearchScCourse = new ReqSearchScCourse(); - reqSearchScCourse.setSale("1"); - List courseList = courseMapper.selectCourseForExport(reqSearchScCourse); - // 报读班级 班级(教师)-课程 - List claList = claMapper.selectForSelect(new ReqCourseClaSelect()); - // 收款账户 - List receiptAccountList = receiptAccountService.select(); - // 销售员工 - List staffList = staffService.selectUserList(new SysUser()); - // 收费模式 - QueryWrapper qw = new QueryWrapper<>(); - List courseChargeList = courseChargeService.list(qw); - - sexList.forEach(item -> { - sexMap.put(item.getDictLabel(), item.getDictValue()); - }); - orderDetailTagList.forEach(item -> { - orderDetailTagMap.put(item.getDictLabel(), item.getDictValue()); - }); - campusList.forEach(item -> { - campusMap.put(item.getLabel(), item.getId()); - }); - courseList.forEach(item -> { - String courseName = item.getCourseName() + "(" + item.getDepartName() + ")-" + item.getChargeTypeName(); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(item.getChargeType())) { - courseName = courseName + "(" + item.getTotalFee().toString() + item.getDateUnitName() + ")"; - } else { - courseName = courseName + "(" + item.getCount().toString() + "课时," + item.getTotalFee().toString() + "元)"; - } - courseChargeMap.put(courseName, item.getChargeId()); - }); - courseList.forEach(item -> { - courseMap.put(item.getCourseId(), item.getCourseName()); - }); - claList.forEach(item -> { - String key = item.getDeptName() + "-" + item.getClaName() + "(" + item.getStaffName() + ")" + "-" + item.getCourseName(); - claMap.put(key, item); - }); - receiptAccountList.forEach(item -> { - receiptAccountMap.put(item.getAccountName(), item.getAccountId()); - }); - staffList.forEach(item -> { - staffMap.put(item.getNickName(), item.getUserId()); - }); - courseChargeList.forEach(item -> { - chargeCacheMap.put(item.getChargeId(), item); - }); - - RespPage scStudentRespPage = studentService.selectStudentList(500); - long pages = scStudentRespPage.getPages(); - hadMoreStudent = pages > 1; - // 学生信息 - scStudentRespPage.getRows().forEach(item -> { - studentMap.put(item.getStudentName(), item.getStudentId()); - }); - } - - public int getSuccessRecordSize() { - return this.successRecordList.size(); - } - - public int getFailRecordSize() { - return this.failRecordList.size(); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/BusinessImportService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/BusinessImportService.java index f73da9b..a8c104d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/BusinessImportService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/BusinessImportService.java @@ -5,10 +5,10 @@ import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; import cn.xluobo.business.tool.impt.domain.ReqDownImplTemplate; import cn.xluobo.business.tool.impt.domain.ReqUploadImplData; import cn.xluobo.business.tool.impt.service.strategy.ImportContext; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.file.FileUtils; import cn.xluobo.core.utils.ServletUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import cn.xluobo.core.file.FileUtils; import com.alibaba.excel.EasyExcel; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/AbstractImportStrategy.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/AbstractImportStrategy.java index 6e1471a..6db8a02 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/AbstractImportStrategy.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/AbstractImportStrategy.java @@ -1,7 +1,7 @@ package cn.xluobo.business.tool.impt.service.strategy; import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import com.google.common.collect.Lists; import org.springframework.web.multipart.MultipartFile; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/IImportStrategy.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/IImportStrategy.java index cb74465..3f1378c 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/IImportStrategy.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/IImportStrategy.java @@ -1,7 +1,7 @@ package cn.xluobo.business.tool.impt.service.strategy; import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/ImportContext.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/ImportContext.java index a98186a..6d5622e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/ImportContext.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/ImportContext.java @@ -5,7 +5,7 @@ import cn.xluobo.business.tool.impt.domain.ReqUploadImplData; import cn.xluobo.business.tool.impt.repo.model.ToolImport; import cn.xluobo.business.tool.impt.repo.service.IToolImportService; import cn.xluobo.config.properties.UploadConfigProperties; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseClaImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseClaImpl.java deleted file mode 100644 index ebe41c1..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseClaImpl.java +++ /dev/null @@ -1,299 +0,0 @@ -package cn.xluobo.business.tool.impt.service.strategy.impl; - -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect; -import cn.xluobo.business.sc.base.service.IScRoomService; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.service.BusinessClaTimeRuleService; -import cn.xluobo.business.sc.course.service.IScCourseClaService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; -import cn.xluobo.business.tool.impt.domain.ImportCourseCla; -import cn.xluobo.business.tool.impt.listener.ImportCourseClaListener; -import cn.xluobo.business.tool.impt.service.strategy.AbstractImportStrategy; -import cn.xluobo.config.properties.UploadConfigProperties; -import cn.xluobo.core.api.APIResponse; -import com.alibaba.excel.EasyExcel; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.system.service.ISysUserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Map; - -/** - * @author :zhangbaoyu - * @date :Created in 2020/10/10 16:45 - */ -@Service("import_course_cla") -@Slf4j -public class ImportCourseClaImpl extends AbstractImportStrategy { - - @Autowired - private IScCourseService courseService; - @Autowired - private IScCourseClaService claService; - @Autowired - private BusinessSysDeptService deptService; - @Autowired - private ISysUserService staffService; - @Autowired - private BusinessSysDictDataService dictDataService; - @Autowired - private BusinessClaTimeRuleService businessClaTimeRuleService; - @Autowired - private IScRoomService roomService; - @Autowired - private UploadConfigProperties uploadConfigProperties; - - private static final String FILE_TYPE = "import_course_cla"; - - @Override - public List selectValidateConfig() { - // 课程 - QueryWrapper qwCourse = new QueryWrapper<>(); - qwCourse.select("course_name"); - qwCourse.eq("sale", "1"); - qwCourse.eq("delete_flag", "0"); - List courseList = courseService.list(qwCourse); - String[] courseNameStringArray = courseList.stream().map(ScCourse::getCourseName).toArray(String[]::new); - - // 全部校区 - List campusList = deptService.campusList(); - String[] campusNameStringArray = campusList.stream().map(RespTreeSelect::getLabel).toArray(String[]::new); - - // 教师列表 - List teacherList = staffService.selectUserList(new SysUser()); - String[] teacherNameStringArray = teacherList.stream().map(SysUser::getNickName).toArray(String[]::new); - - // 招生状态 - List recruitStatusList = dictDataService.dictTypeDataList("recruit_status"); - String[] chargeTypeStringArray = recruitStatusList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - // 排课重复方式 - List claTimeRepeatTypeList = dictDataService.dictTypeDataList("cla_time_repeat_type"); - String[] claTimeRepeatTypeStringArray = claTimeRepeatTypeList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - // 所有教室 - List roomList = roomService.selectRoomSelect(new ReqRoomSelect()); - String[] roomNameStringArray = roomList.stream().map(RespRoomSelect::getRoomName).toArray(String[]::new); - - return Lists.newArrayList( - SelectValidationData.builder().firstCol(1).lastCol(1).firstRow(1).lastRow(106).selectDataArray(courseNameStringArray).build(), - SelectValidationData.builder().firstCol(2).lastCol(2).firstRow(1).lastRow(106).selectDataArray(campusNameStringArray).build(), - SelectValidationData.builder().firstCol(3).lastCol(3).firstRow(1).lastRow(106).selectDataArray(teacherNameStringArray).build(), - SelectValidationData.builder().firstCol(5).lastCol(5).firstRow(1).lastRow(106).selectDataArray(chargeTypeStringArray).build(), - SelectValidationData.builder().firstCol(12).lastCol(12).firstRow(1).lastRow(106).selectDataArray(claTimeRepeatTypeStringArray).build(), - SelectValidationData.builder().firstCol(14).lastCol(14).firstRow(1).lastRow(106).selectDataArray(new String[]{"过滤", "不过滤"}).build(), - SelectValidationData.builder().firstCol(17).lastCol(17).firstRow(1).lastRow(106).selectDataArray(roomNameStringArray).build() - ); - } - - @Override - @Transactional(propagation = Propagation.REQUIRES_NEW) - public APIResponse importDataByFileId(Long importId, String fileId) throws IOException { - - String path = uploadConfigProperties.getTempSaveImportPath(); - path = path + "/" + FILE_TYPE; - File file = new File(path, fileId); - if (!file.exists()) { - return APIResponse.toExceptionResponse("无法获取文件,请重试"); - } - - // 课程 - QueryWrapper qwCourse = new QueryWrapper<>(); - qwCourse.select("course_name", "course_id"); - qwCourse.eq("sale", "1"); - qwCourse.eq("delete_flag", "0"); - List courseList = courseService.list(qwCourse); - // 全部校区 - List campusList = deptService.campusList(); - // 教师列表 - List teacherList = staffService.selectUserList(new SysUser()); - // 招生状态 - List recruitStatusList = dictDataService.dictTypeDataList("recruit_status"); - // 排课重复方式 - List claTimeRepeatTypeList = dictDataService.dictTypeDataList("cla_time_repeat_type"); - // 所有教室 - List roomList = roomService.selectRoomSelect(new ReqRoomSelect()); - // 上课星期 - List weekDayList = dictDataService.dictTypeDataList("week_day"); - - - Map courseMap = Maps.newHashMap(); - Map campusMap = Maps.newHashMap(); - Map teacherMap = Maps.newHashMap(); - Map recruitStatusMap = Maps.newHashMap(); - Map claTimeRepeatTypeMap = Maps.newHashMap(); - Map roomMap = Maps.newHashMap(); - Map weekDayMap = Maps.newHashMap(); - - courseList.forEach(item -> { - courseMap.put(item.getCourseName(), item.getCourseId()); - }); - campusList.forEach(item -> { - campusMap.put(item.getLabel(), item.getId()); - }); - teacherList.forEach(item -> { - teacherMap.put(item.getNickName(), item.getUserId()); - }); - recruitStatusList.forEach(item -> { - recruitStatusMap.put(item.getDictLabel(), item.getDictValue()); - }); - claTimeRepeatTypeList.forEach(item -> { - claTimeRepeatTypeMap.put(item.getDictLabel(), item.getDictValue()); - }); - roomList.forEach(item -> { - roomMap.put(item.getRoomName(), item.getRoomId()); - }); - weekDayList.forEach(item -> { - weekDayMap.put(item.getDictLabel(), item.getDictValue()); - }); - - LoginUser loginUser = SecurityUtils.getLoginUser(); - - ImportCourseClaListener importListener = new ImportCourseClaListener(claService, businessClaTimeRuleService); - importListener.setNeedSave(true); - importListener.setCourseMap(courseMap); - importListener.setCampusMap(campusMap); - importListener.setTeacherMap(teacherMap); - importListener.setRecruitStatusMap(recruitStatusMap); - importListener.setClaTimeRepeatTypeMap(claTimeRepeatTypeMap); - importListener.setRoomMap(roomMap); - importListener.setWeekDayMap(weekDayMap); - importListener.setLoginUserId(loginUser.getUserId()); - importListener.setImportId(importId); - - InputStream is = new FileInputStream(file); - EasyExcel.read(is, ImportCourseCla.class, importListener).sheet().autoTrim(true).headRowNumber(5).doRead(); - - int successRecord = importListener.getSuccessRecord(); - int failRecord = importListener.getFailRecord(); - file.delete(); - return APIResponse.toAPIResponse("导入成功" + successRecord + "条,导入失败:" + failRecord); - } - - @Override - public APIResponse checkData(MultipartFile multipartFile) throws IOException { - long fileSize = multipartFile.getSize(); - if (fileSize > 1024 * 1024 * 2) { - return APIResponse.toExceptionResponse("导入文件需小于2M"); - } - // 课程 - QueryWrapper qwCourse = new QueryWrapper<>(); - qwCourse.select("course_name", "course_id"); - qwCourse.eq("sale", "1"); - qwCourse.eq("delete_flag", "0"); - List courseList = courseService.list(qwCourse); - // 全部校区 - List campusList = deptService.campusList(); - // 教师列表 - List teacherList = staffService.selectUserList(new SysUser()); - // 招生状态 - List recruitStatusList = dictDataService.dictTypeDataList("recruit_status"); - // 排课重复方式 - List claTimeRepeatTypeList = dictDataService.dictTypeDataList("cla_time_repeat_type"); - // 所有教室 - List roomList = roomService.selectRoomSelect(new ReqRoomSelect()); - // 上课星期 - List weekDayList = dictDataService.dictTypeDataList("week_day"); - - - Map courseMap = Maps.newHashMap(); - Map campusMap = Maps.newHashMap(); - Map teacherMap = Maps.newHashMap(); - Map recruitStatusMap = Maps.newHashMap(); - Map claTimeRepeatTypeMap = Maps.newHashMap(); - Map roomMap = Maps.newHashMap(); - Map weekDayMap = Maps.newHashMap(); - - courseList.forEach(item -> { - courseMap.put(item.getCourseName(), item.getCourseId()); - }); - campusList.forEach(item -> { - campusMap.put(item.getLabel(), item.getId()); - }); - teacherList.forEach(item -> { - teacherMap.put(item.getNickName(), item.getUserId()); - }); - recruitStatusList.forEach(item -> { - recruitStatusMap.put(item.getDictLabel(), item.getDictValue()); - }); - claTimeRepeatTypeList.forEach(item -> { - claTimeRepeatTypeMap.put(item.getDictLabel(), item.getDictValue()); - }); - roomList.forEach(item -> { - roomMap.put(item.getRoomName(), item.getRoomId()); - }); - weekDayList.forEach(item -> { - weekDayMap.put(item.getDictLabel(), item.getDictValue()); - }); - - LoginUser loginUser = SecurityUtils.getLoginUser(); - - ImportCourseClaListener importListener = new ImportCourseClaListener(claService, businessClaTimeRuleService); - importListener.setNeedSave(false); - importListener.setCourseMap(courseMap); - importListener.setCampusMap(campusMap); - importListener.setTeacherMap(teacherMap); - importListener.setRecruitStatusMap(recruitStatusMap); - importListener.setClaTimeRepeatTypeMap(claTimeRepeatTypeMap); - importListener.setRoomMap(roomMap); - importListener.setWeekDayMap(weekDayMap); - importListener.setLoginUserId(loginUser.getUserId()); - - // 保存文件 - String fileId = IdWorker.getIdStr(); - String fileName = DateTime.now().toString("yyyyMMddHHmmss") + "_" + fileId; - String originalFileName = multipartFile.getOriginalFilename(); - String suffix = FilenameUtils.getExtension(originalFileName); - if (StringUtils.isNotEmpty(suffix)) { - fileName = fileName + "." + suffix; - } - - String path = uploadConfigProperties.getTempSaveImportPath(); - //上传文件夹 - path = path + "/" + FILE_TYPE; - File uploadFileDir = new File(path); - if (!uploadFileDir.exists()) { - uploadFileDir.mkdir(); - } - File uploadFile = new File(uploadFileDir, fileName); - FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), uploadFile); - - InputStream is = new FileInputStream(uploadFile); - EasyExcel.read(is, ImportCourseCla.class, importListener).sheet().autoTrim(true).headRowNumber(5).doRead(); - - List saveCourseClaList = importListener.getSaveCourseClaList(); - List failCourseClaList = importListener.getFailCourseClaList(); - Map resultMap = Maps.newHashMap(); - resultMap.put("successList", saveCourseClaList); - resultMap.put("failList", failCourseClaList); - resultMap.put("fileId", fileName); - - return APIResponse.toAPIResponse(resultMap); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseImpl.java deleted file mode 100644 index 3f66b83..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportCourseImpl.java +++ /dev/null @@ -1,159 +0,0 @@ -package cn.xluobo.business.tool.impt.service.strategy.impl; - -import cn.xluobo.business.sc.course.repo.model.ScCourseType; -import cn.xluobo.business.sc.course.service.IScCourseChargeService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.business.sc.course.service.IScCourseTypeService; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; -import cn.xluobo.business.tool.impt.domain.ImportCourse; -import cn.xluobo.business.tool.impt.listener.ImportCourseListener; -import cn.xluobo.business.tool.impt.service.strategy.AbstractImportStrategy; -import cn.xluobo.core.api.APIResponse; -import com.alibaba.excel.EasyExcel; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 导入课程select限制配置 - * - * @author :zhangbaoyu - * @date :Created in 2020/8/2 18:56 - */ -@Service("import_course") -@Slf4j -public class ImportCourseImpl extends AbstractImportStrategy { - - @Autowired - private BusinessSysDeptService deptService; - @Autowired - private IScCourseTypeService scCourseTypeService; - @Autowired - private BusinessSysDictDataService dictDataService; - @Autowired - private IScCourseService courseService; - @Autowired - private IScCourseChargeService courseChargeService; - - @Override - public List selectValidateConfig() { - // 全部校区 - List campusList = deptService.campusList(); - List campusNameList = Lists.newArrayList("全部校区"); - List allDbCampusList = campusList.stream().map(RespTreeSelect::getLabel).collect(Collectors.toList()); - campusNameList.addAll(allDbCampusList); - String[] campusNameStringArray = campusNameList.toArray(new String[allDbCampusList.size()]); - - // 课程类型 - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("in_use", "1"); - qw.orderByDesc("create_time"); - List courseTypeList = scCourseTypeService.list(qw); - String[] courseTypeStringArray = courseTypeList.stream().map(ScCourseType::getCourseType).toArray(String[]::new); - - // 收费模式 - List chargeTypeList = dictDataService.dictTypeDataList("charge_type"); - String[] chargeTypeStringArray = chargeTypeList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - // 时间段 - List dateUnitList = dictDataService.dictTypeDataList("date_unit"); - String[] dateUnitListStringArray = dateUnitList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - - return Lists.newArrayList( - SelectValidationData.builder().firstCol(1).lastCol(1).firstRow(1).lastRow(206).selectDataArray(courseTypeStringArray).build(), - SelectValidationData.builder().firstCol(2).lastCol(2).firstRow(1).lastRow(206).selectDataArray(new String[]{"班课", "一对一"}).build(), - SelectValidationData.builder().firstCol(4).lastCol(4).firstRow(1).lastRow(206).selectDataArray(new String[]{"开售", "不开售"}).build(), - SelectValidationData.builder().firstCol(5).lastCol(5).firstRow(1).lastRow(206).selectDataArray(campusNameStringArray).build(), - SelectValidationData.builder().firstCol(6).lastCol(6).firstRow(1).lastRow(206).selectDataArray(chargeTypeStringArray).build(), - SelectValidationData.builder().firstCol(9).lastCol(9).firstRow(1).lastRow(206).selectDataArray(dateUnitListStringArray).build() - ); - } - - @Override - @Transactional(propagation = Propagation.REQUIRES_NEW) - public APIResponse importData(Long importId, MultipartFile multipartFile) throws IOException { - long fileSize = multipartFile.getSize(); - if (fileSize > 1024 * 1024 * 2) { - return APIResponse.toExceptionResponse("导入文件需小于2M"); - } - - LoginUser loginUser = SecurityUtils.getLoginUser(); - - - // 课程类型 - QueryWrapper qw = new QueryWrapper(); - qw.eq("in_use", "1"); - qw.orderByDesc("create_time"); - List courseTypeList = scCourseTypeService.list(qw); - // 全部校区 - List campusList = deptService.campusList(); - campusList.add(RespTreeSelect.builder().id(-1L).label("全部校区").build()); - // 收费模式 - List chargeTypeList = dictDataService.dictTypeDataList("charge_type"); - // 时间段 - List dateUnitList = dictDataService.dictTypeDataList("date_unit"); - - // 课程类型key value key为名称 value为ID - Map courseTypeMap = Maps.newHashMap(); - for (ScCourseType scCourseType : courseTypeList) { - courseTypeMap.put(scCourseType.getCourseType(), scCourseType.getCourseTypeId()); - } - // 校区key value - Map campusMap = Maps.newHashMap(); - for (RespTreeSelect respTreeSelect : campusList) { - campusMap.put(respTreeSelect.getLabel(), Long.valueOf(respTreeSelect.getId())); - } - // 收费模式 - Map chargeTypeMap = Maps.newHashMap(); - for (SysDictData sysDictData : chargeTypeList) { - chargeTypeMap.put(sysDictData.getDictLabel(), sysDictData.getDictValue()); - } - // 时间段 - Map dateUnitMap = Maps.newHashMap(); - for (SysDictData sysDictData : dateUnitList) { - dateUnitMap.put(sysDictData.getDictLabel(), sysDictData.getDictValue()); - } - - Map saleMap = Maps.newHashMap(); - saleMap.put("开售", "1"); - saleMap.put("不开售", "2"); - - Map teachingModeMap = Maps.newHashMap(); - teachingModeMap.put("班课", "1"); - teachingModeMap.put("一对一", "2"); - - - ImportCourseListener importCourseListener = new ImportCourseListener(courseService, courseChargeService); - importCourseListener.setCourseTypeMap(courseTypeMap); - importCourseListener.setCampusMap(campusMap); - importCourseListener.setChargeTypeMap(chargeTypeMap); - importCourseListener.setDateUnitMap(dateUnitMap); - importCourseListener.setSaleMap(saleMap); - importCourseListener.setTeachingModeMap(teachingModeMap); - importCourseListener.setLoginUserId(loginUser.getUserId()); - importCourseListener.setImportId(importId); - EasyExcel.read(multipartFile.getInputStream(), ImportCourse.class, importCourseListener).sheet().autoTrim(true).headRowNumber(7).doRead(); - - int successRecord = importCourseListener.getSuccessRecord(); - int failRecord = importCourseListener.getFailRecord(); - return APIResponse.toAPIResponse("导入成功" + successRecord + "条,导入失败:" + failRecord); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportStudentOrderImpl.java b/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportStudentOrderImpl.java deleted file mode 100644 index 7a05d37..0000000 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/tool/impt/service/strategy/impl/ImportStudentOrderImpl.java +++ /dev/null @@ -1,205 +0,0 @@ -package cn.xluobo.business.tool.impt.service.strategy.impl; - -import cn.xluobo.business.sc.course.domain.export.ExpCourse; -import cn.xluobo.business.sc.course.domain.req.ReqCourseClaSelect; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.RespCourseClaSelectInfo; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseClaMapper; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.business.sys.admin.service.BusinessSysDeptService; -import cn.xluobo.business.sys.admin.service.BusinessSysDictDataService; -import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; -import cn.xluobo.business.sys.receipt.service.ISysReceiptAccountService; -import cn.xluobo.business.tool.export.handler.bean.SelectValidationData; -import cn.xluobo.business.tool.impt.domain.ImportStudentOrder; -import cn.xluobo.business.tool.impt.listener.ImportStudentOrderListener; -import cn.xluobo.business.tool.impt.service.strategy.AbstractImportStrategy; -import cn.xluobo.config.properties.UploadConfigProperties; -import cn.xluobo.core.api.APIResponse; -import com.alibaba.excel.EasyExcel; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDictData; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.system.service.ISysUserService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Map; - -/** - * 学生导入 - * - * @author :zhangbaoyu - * @date :Created in 2020/10/12 16:24 - */ -@Service("import_student_order") -@Slf4j -public class ImportStudentOrderImpl extends AbstractImportStrategy { - - @Autowired - private BusinessSysDictDataService dictDataService; - @Autowired - private BusinessSysDeptService deptService; - @Autowired - private ScCourseMapper courseMapper; - @Autowired - private ScCourseClaMapper claMapper; - @Autowired - private ISysReceiptAccountService receiptAccountService; - @Autowired - private ISysUserService staffService; - @Autowired - private UploadConfigProperties uploadConfigProperties; - - private static final String FILE_TYPE = "import_student_order"; - - @Override - public List selectValidateConfig() { - // 联系人关系 - List contactRelationList = dictDataService.dictTypeDataList("contact_relation"); - String[] contactRelationArray = contactRelationList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - // 性别 - List sexList = dictDataService.dictTypeDataList("sex"); - String[] sexArray = sexList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - - // 订单类型 - List orderDetailTagList = dictDataService.dictTypeDataList("order_detail_tag"); - String[] orderDetailTagArray = orderDetailTagList.stream().map(SysDictData::getDictLabel).toArray(String[]::new); - - // 报读校区 - List campusList = deptService.campusList(); - String[] campusNameArray = campusList.stream().map(RespTreeSelect::getLabel).toArray(String[]::new); - - // 报读课程 课程-收费方式(校区) - ReqSearchScCourse reqSearchScCourse = new ReqSearchScCourse(); - reqSearchScCourse.setSale("1"); - List courseList = courseMapper.selectCourseForExport(reqSearchScCourse); - - String[] courseNameArray = courseList.stream().map(item -> { - String courseName = item.getCourseName() + "(" + item.getDepartName() + ")-" + item.getChargeTypeName(); - if (CourseChargeTypeEnum.DATE.getChargeType().equals(item.getChargeType())) { - courseName = courseName + "(" + item.getTotalFee().toString() + item.getDateUnitName() + ")"; - } else { - courseName = courseName + "(" + item.getCount().toString() + "课时," + item.getTotalFee().toString() + "元)"; - } - return courseName; - }).toArray(String[]::new); - - // 报读班级 班级(教师)-课程 - List claList = claMapper.selectForSelect(new ReqCourseClaSelect()); - String[] claNameArray = claList.stream().map(item -> item.getDeptName() + "-" + item.getClaName() + "(" + item.getStaffName() + ")" + "-" + item.getCourseName()).toArray(String[]::new); - - // 收款账户 - List receiptAccountList = receiptAccountService.select(); - String[] receiptAccountNameArray = receiptAccountList.stream().map(SysReceiptAccount::getAccountName).toArray(String[]::new); - - // 销售员工 - List staffList = staffService.selectUserList(new SysUser()); - String[] staffNameArray = staffList.stream().map(SysUser::getNickName).toArray(String[]::new); - - return Lists.newArrayList( - SelectValidationData.builder().firstCol(1).lastCol(1).firstRow(2).lastRow(206).selectDataArray(contactRelationArray).build(), - SelectValidationData.builder().firstCol(3).lastCol(3).firstRow(2).lastRow(206).selectDataArray(sexArray).build(), - SelectValidationData.builder().firstCol(6).lastCol(6).firstRow(2).lastRow(206).selectDataArray(orderDetailTagArray).build(), - SelectValidationData.builder().firstCol(7).lastCol(7).firstRow(2).lastRow(206).selectDataArray(campusNameArray).build(), - SelectValidationData.builder().firstCol(8).lastCol(8).firstRow(2).lastRow(206).selectDataArray(courseNameArray).build(), - SelectValidationData.builder().firstCol(9).lastCol(9).firstRow(2).lastRow(206).selectDataArray(claNameArray).build(), - SelectValidationData.builder().firstCol(16).lastCol(16).firstRow(2).lastRow(206).selectDataArray(campusNameArray).build(), - SelectValidationData.builder().firstCol(19).lastCol(19).firstRow(2).lastRow(206).selectDataArray(receiptAccountNameArray).build(), - SelectValidationData.builder().firstCol(20).lastCol(20).firstRow(2).lastRow(206).selectDataArray(staffNameArray).build() - ); - } - - @Override - @Transactional(propagation = Propagation.REQUIRES_NEW) - public APIResponse importDataByFileId(Long importId, String fileId) throws IOException { - String path = uploadConfigProperties.getTempSaveImportPath(); - path = path + "/" + FILE_TYPE; - File file = new File(path, fileId); - if (!file.exists()) { - return APIResponse.toExceptionResponse("无法获取文件,请重试"); - } - - - LoginUser loginUser = SecurityUtils.getLoginUser(); - ImportStudentOrderListener importListener = new ImportStudentOrderListener(); - importListener.setNeedSave(true); - importListener.setLoginUserId(loginUser.getUserId()); - importListener.setLoginUser(loginUser); - importListener.setImportId(importId); - - InputStream is = new FileInputStream(file); - EasyExcel.read(is, ImportStudentOrder.class, importListener).sheet().autoTrim(true).headRowNumber(5).doRead(); - - int successRecord = importListener.getSuccessRecordSize(); - int failRecord = importListener.getFailRecordSize(); - file.delete(); - return APIResponse.toAPIResponse("导入成功" + successRecord + "条,导入失败:" + failRecord); - } - - @Override - public APIResponse checkData(MultipartFile multipartFile) throws IOException { - long fileSize = multipartFile.getSize(); - if (fileSize > 1024 * 1024 * 4) { - return APIResponse.toExceptionResponse("导入文件需小于4M"); - } - - LoginUser loginUser = SecurityUtils.getLoginUser(); - - ImportStudentOrderListener importListener = new ImportStudentOrderListener(); - importListener.setNeedSave(false); - importListener.setLoginUserId(loginUser.getUserId()); - - // 保存文件 - String fileId = IdWorker.getIdStr(); - String fileName = DateTime.now().toString("yyyyMMddHHmmss") + "_" + fileId; - String originalFileName = multipartFile.getOriginalFilename(); - String suffix = FilenameUtils.getExtension(originalFileName); - if (StringUtils.isNotEmpty(suffix)) { - fileName = fileName + "." + suffix; - } - - String path = uploadConfigProperties.getTempSaveImportPath(); - //上传文件夹 - path = path + "/" + FILE_TYPE; - File uploadFileDir = new File(path); - if (!uploadFileDir.exists()) { - uploadFileDir.mkdir(); - } - File uploadFile = new File(uploadFileDir, fileName); - FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), uploadFile); - - InputStream is = new FileInputStream(uploadFile); - EasyExcel.read(is, ImportStudentOrder.class, importListener).sheet().autoTrim(true).headRowNumber(5).doRead(); - - List saveStudentOrderList = importListener.getSuccessRecordList(); - List failStudentList = importListener.getFailRecordList(); - Map resultMap = Maps.newHashMap(); - resultMap.put("successList", saveStudentOrderList); - resultMap.put("failList", failStudentList); - resultMap.put("fileId", fileName); - - return APIResponse.toAPIResponse(resultMap); - } -} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpAccountController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpAccountController.java index a2b7437..994cb52 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpAccountController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpAccountController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.wechat.cp.controller; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpAccount; import cn.xluobo.business.wechat.cp.repo.model.WechatCpAccount; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpAccountService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactController.java index 7ca2164..1226c62 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.wechat.cp.controller; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpContact; import cn.xluobo.business.wechat.cp.repo.model.WechatCpContact; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpContactService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactWayController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactWayController.java index 67ea8ef..c9f9675 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactWayController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpContactWayController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.wechat.cp.controller; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpContactWay; import cn.xluobo.business.wechat.cp.repo.model.WechatCpContactWay; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpContactWayService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpCustomerController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpCustomerController.java index 49a81ff..2599b76 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpCustomerController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpCustomerController.java @@ -2,7 +2,7 @@ package cn.xluobo.business.wechat.cp.controller; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchCpCustomer; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpCustomerService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpGroupTagController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpGroupTagController.java index 5c25ad3..80560ed 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpGroupTagController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpGroupTagController.java @@ -3,7 +3,7 @@ package cn.xluobo.business.wechat.cp.controller; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpGroupTag; import cn.xluobo.business.wechat.cp.repo.model.WechatCpGroupTag; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpGroupTagService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpUserController.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpUserController.java index e6fcb8c..303656e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpUserController.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/controller/WechatCpUserController.java @@ -1,8 +1,8 @@ package cn.xluobo.business.wechat.cp.controller; -import cn.xluobo.business.sc.course.domain.req.ReqSelect; import cn.xluobo.business.wechat.cp.service.BusinessWechatCpUserService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqSelect; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContact.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContact.java index 6c8973f..2ae3f99 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContact.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContact.java @@ -64,7 +64,7 @@ public class WechatCpContact implements Serializable { private Integer type; /** - * 外部联系人性别 0-未知 1-男性 2-女性 + * 外部联系人性别 */ @TableField("gender") private Integer gender; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContactWay.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContactWay.java index 0a6497a..80cd04d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContactWay.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpContactWay.java @@ -1,6 +1,6 @@ package cn.xluobo.business.wechat.cp.repo.model; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpUser.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpUser.java index 1970b47..00f312d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpUser.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/repo/model/WechatCpUser.java @@ -71,7 +71,7 @@ public class WechatCpUser implements Serializable { private String position; /** - * 性别 0表示未定义,1表示男性,2表示女性 + * 性别 */ @TableField("gender") private String gender; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpAccountService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpAccountService.java index eb00388..c203226 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpAccountService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpAccountService.java @@ -2,8 +2,8 @@ package cn.xluobo.business.wechat.cp.service; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpAccount; import cn.xluobo.business.wechat.cp.repo.model.WechatCpAccount; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactService.java index db44391..a8e2857 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactService.java @@ -2,8 +2,8 @@ package cn.xluobo.business.wechat.cp.service; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpContact; import cn.xluobo.business.wechat.cp.repo.model.WechatCpContact; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactWayService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactWayService.java index c319d68..b876e42 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactWayService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpContactWayService.java @@ -4,8 +4,8 @@ import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpContactWay; import cn.xluobo.business.wechat.cp.domain.req.RespWechatCpContactWay; import cn.xluobo.business.wechat.cp.repo.model.WechatCpAccount; import cn.xluobo.business.wechat.cp.repo.model.WechatCpContactWay; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.page.RespPage; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpCustomerService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpCustomerService.java index 9ba45a5..be69571 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpCustomerService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpCustomerService.java @@ -1,7 +1,7 @@ package cn.xluobo.business.wechat.cp.service; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchCpCustomer; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpGroupTagService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpGroupTagService.java index 9e41697..09868c1 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpGroupTagService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpGroupTagService.java @@ -3,8 +3,8 @@ package cn.xluobo.business.wechat.cp.service; import cn.xluobo.business.wechat.cp.domain.req.ReqSearchWechatCpGroupTag; import cn.xluobo.business.wechat.cp.repo.model.WechatCpGroup; import cn.xluobo.business.wechat.cp.repo.model.WechatCpGroupTag; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import cn.xluobo.core.domain.select.GroupSelect; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpUserService.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpUserService.java index 3d45008..5d83f17 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpUserService.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/cp/service/BusinessWechatCpUserService.java @@ -1,10 +1,10 @@ package cn.xluobo.business.wechat.cp.service; -import cn.xluobo.business.sc.course.domain.req.ReqSelect; import cn.xluobo.business.wechat.cp.repo.model.WechatCpUser; -import cn.xluobo.core.api.APIResponse; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqSelect; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/user/repo/model/WechatUserInfo.java b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/user/repo/model/WechatUserInfo.java index 913ba0e..0c36be9 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/user/repo/model/WechatUserInfo.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/business/wechat/user/repo/model/WechatUserInfo.java @@ -55,7 +55,7 @@ public class WechatUserInfo implements Serializable { private String nickName; /** - * 性别 0:未知、1:男、2:女 + * 性别 */ @TableField("sex") private String sex; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationFailureHandler.java b/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationFailureHandler.java index 615f6c3..9d28bbf 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationFailureHandler.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationFailureHandler.java @@ -1,6 +1,6 @@ package cn.xluobo.config.security; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import com.alibaba.fastjson.JSON; import org.springframework.http.MediaType; import org.springframework.security.core.AuthenticationException; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationSuccessHandler.java b/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationSuccessHandler.java index 4b560ff..258091f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationSuccessHandler.java +++ b/ruoyi-admin/src/main/java/cn/xluobo/config/security/CustomAuthenticationSuccessHandler.java @@ -1,7 +1,7 @@ package cn.xluobo.config.security; import cn.xluobo.business.sys.log.service.ISysUserLoginLogService; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -11,7 +11,6 @@ import org.springframework.security.web.savedrequest.HttpSessionRequestCache; import org.springframework.security.web.savedrequest.RequestCache; import org.springframework.security.web.savedrequest.SavedRequest; import org.springframework.security.web.util.UrlUtils; -import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import javax.servlet.ServletException; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/columns/SysTeacherController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/columns/SysTeacherController.java index f38ff37..c93667d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/columns/SysTeacherController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/columns/SysTeacherController.java @@ -44,6 +44,16 @@ public class SysTeacherController extends BaseController List list = sysTeacherService.selectSysTeacherList(sysTeacher); return getDataTable(list); } + /** + * 查询员工信息列表 + */ + @GetMapping("/teacherSelect") + public AjaxResult teacherSelect(SysTeacher sysTeacher) + { + sysTeacher.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); + List list = sysTeacherService.selectSysTeacherList(sysTeacher); + return AjaxResult.successData(list); + } @PreAuthorize("@ss.hasPermi('system:teacher:list')") @GetMapping("/getUserForTeacher") @@ -55,6 +65,7 @@ public class SysTeacherController extends BaseController return AjaxResult.successData(list); } + /** * 导出员工信息列表 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/ProductController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/ProductController.java index 87072e3..442d6f5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/ProductController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/ProductController.java @@ -1,11 +1,7 @@ package com.ruoyi.web.controller.mall; import cn.hutool.core.util.ObjectUtil; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.core.page.RespPage; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; @@ -13,6 +9,10 @@ import com.ruoyi.mall.domain.Product; import com.ruoyi.mall.domain.query.ProductQuery; import com.ruoyi.mall.domain.vo.ProductVO; import com.ruoyi.mall.service.ProductService; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.service.IScCourseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeAttendController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeAttendController.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeAttendController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeAttendController.java index e219a94..651977c 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeAttendController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeAttendController.java @@ -1,11 +1,11 @@ -package cn.xluobo.business.sc.course.controller; +package com.ruoyi.web.controller.school.course; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeAttend; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeAttend; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.business.sc.course.service.BusinessScClaTimeAttendService; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.page.RespPage; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeAttend; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend; +import com.ruoyi.school.course.domain.ScClaTimeAttend; +import com.ruoyi.school.course.service.BusinessScClaTimeAttendService; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeController.java similarity index 68% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeController.java index 91c30d5..88a161b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeController.java @@ -1,15 +1,15 @@ -package cn.xluobo.business.sc.course.controller; - -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchClaTime; -import cn.xluobo.business.sc.course.domain.resp.time.RespBusinessClaTimeCalendar; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTime; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeCalendar; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeVo; -import cn.xluobo.business.sc.course.service.BusinessClaTimeService; -import cn.xluobo.business.sc.student.domain.req.ReqClaTimeAttend; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.page.RespPage; +package com.ruoyi.web.controller.school.course; + +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; +import com.ruoyi.school.course.domain.resp.time.RespBusinessClaTimeCalendar; +import com.ruoyi.school.course.domain.resp.time.RespClaTime; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeCalendar; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.domain.ScClaTimeVo; +import com.ruoyi.school.course.service.BusinessClaTimeService; +import com.ruoyi.school.student.domain.req.ReqClaTimeAttend; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -37,6 +37,13 @@ public class ScClaTimeController { return claTimeService.searchListForCalendar(reqSearchClaTime); } + @GetMapping("/list/searchListForCalendarByMemberId") + public APIResponse searchListForCalendarByMemberId(ReqSearchClaTime reqSearchClaTime) { + return claTimeService.searchMemberId(reqSearchClaTime); + } + + + /** * 获取最近几天的排课日程 * @@ -106,21 +113,14 @@ public class ScClaTimeController { } /** - * 变更 已记上课 信息 + * 记上课 信息 * @param reqClaTimeAttend * @return */ - @PostMapping("/update/changeHadClaTimeAttend") - public APIResponse changeHadClaTimeAttend(@RequestBody ReqClaTimeAttend reqClaTimeAttend) { - return claTimeService.changeHadClaTimeAttend(reqClaTimeAttend); + @PostMapping("/update/confirmCla") + public APIResponse confirmCla(@RequestBody ReqClaTimeAttend reqClaTimeAttend) { + return claTimeService.confirmCla(reqClaTimeAttend); } - /** - * 删除 已记上课 信息 - * @return - */ - @DeleteMapping("/delete/deleteHadClaTimeAttend/{courseTimeId}") - public APIResponse deleteHadClaTimeAttend(@PathVariable("courseTimeId") Long courseTimeId) { - return claTimeService.deleteHadClaTimeAttend(courseTimeId); - } + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeRuleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeRuleController.java similarity index 85% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeRuleController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeRuleController.java index 6deeb05..8e109be 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScClaTimeRuleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScClaTimeRuleController.java @@ -1,9 +1,9 @@ -package cn.xluobo.business.sc.course.controller; +package com.ruoyi.web.controller.school.course; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; -import cn.xluobo.business.sc.course.service.BusinessClaTimeRuleService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; +import com.ruoyi.school.course.domain.ScClaTimeRule; +import com.ruoyi.school.course.service.BusinessClaTimeRuleService; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseClaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseClaController.java similarity index 73% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseClaController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseClaController.java index 2c5cfd2..ce3e66a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseClaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseClaController.java @@ -1,11 +1,12 @@ -package cn.xluobo.business.sc.course.controller; +package com.ruoyi.web.controller.school.course; -import cn.xluobo.business.sc.course.domain.req.ReqAddScCourseCla; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseCla; -import cn.xluobo.business.sc.course.domain.resp.cla.RespClaAllDetailInfo; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.service.BusinessScCourseClaService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.school.course.domain.req.cla.ReqAddScCourseCla; +import com.ruoyi.school.course.domain.req.cla.ReqSearchScCourseCla; +import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; +import com.ruoyi.school.course.domain.resp.cla.RespClaAllDetailInfo; +import com.ruoyi.school.course.service.impl.BusinessScCourseClaService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -34,6 +35,16 @@ public class ScCourseClaController { return scCourseClaService.searchList(reqSearchScCourseCla); } + /** + * 查询已经预约签到的学员 + * @param + * @return + */ + @GetMapping("/list/searchCourseClaStudent") + public APIResponse searchCourseClaStudent(ReqSearchClaTime reqSearchClaTime) { + return scCourseClaService.searchCourseClaStudent(reqSearchClaTime); + } + /** * 详情 * @@ -58,6 +69,8 @@ public class ScCourseClaController { return APIResponse.toAPIResponse(allDetailInfo); } + + /** * 添加 * @@ -91,4 +104,5 @@ public class ScCourseClaController { return scCourseClaService.deleteById(claIds); } + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseController.java similarity index 61% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseController.java index 9130f6f..61bf3f1 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/controller/ScCourseController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseController.java @@ -1,14 +1,12 @@ -package cn.xluobo.business.sc.course.controller; - -import cn.xluobo.business.sc.course.domain.req.ReqBusinessOrderCourseDetail; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.req.ReqSelect; -import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourse; -import cn.xluobo.business.sc.course.domain.req.course.ReqChangeScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.service.BusinessScCourseService; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.core.api.APIResponse; +package com.ruoyi.web.controller.school.course; + +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.req.course.ReqSelect; +import com.ruoyi.school.course.domain.req.course.ReqAddScCourse; +import com.ruoyi.school.course.domain.req.course.ReqChangeScCourse; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.service.BusinessScCourseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -29,9 +27,6 @@ public class ScCourseController { @Autowired private BusinessScCourseService scCourseService; - @Autowired - private IScCourseService courseService; - /** * 列表 * @@ -120,36 +115,7 @@ public class ScCourseController { return scCourseService.changeCourseSale(scCourse); } - /** - * 导出 - * - * @param reqSearchScCourse - */ - @GetMapping("/export/exportCourse") - public APIResponse exportCourse(ReqSearchScCourse reqSearchScCourse) { - return scCourseService.exportCourse(reqSearchScCourse); - } - /** - * 课程详情 - * 报名选择课程后获取课程详情 - * - * @param orderCourseDetail - * @return - */ - @GetMapping("/info/orderCourseDetail") - public APIResponse orderCourseDetail(ReqBusinessOrderCourseDetail orderCourseDetail) { - return scCourseService.orderCourseDetail(orderCourseDetail); - } - /** - * 学生是否可报读课程 - * - * @param orderCourseDetail - * @return - */ - @GetMapping("/info/studentCanSignUpCourse") - public APIResponse studentCanSignUpCourse(ReqBusinessOrderCourseDetail orderCourseDetail) { - return scCourseService.studentCanSignUpCourse(orderCourseDetail); - } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseTypeController.java new file mode 100644 index 0000000..6536e24 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScCourseTypeController.java @@ -0,0 +1,152 @@ +package com.ruoyi.web.controller.school.course; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourseType; +import com.ruoyi.school.course.domain.resp.course.RespCourseSelect; +import com.ruoyi.school.course.domain.resp.course.RespCourseTypeSelect; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.course.service.BusinessScCourseTypeService; +import com.ruoyi.school.course.service.impl.ScCourseServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 课程类型 Controller + *

+ * + * @author zhangby + * @since 2020-07-09 08:10:25 + */ +@RestController +@RequestMapping("/api/sc/course/type") +public class ScCourseTypeController { + @Autowired + private BusinessScCourseTypeService scCourseTypeService; + + @Autowired + private ScCourseServiceImpl scCourseService; + + /** + * 列表 + * + * @param reqSearchScCourseType + * @return + */ + @GetMapping("/list/searchList") + public APIResponse searchList(ReqSearchScCourseType reqSearchScCourseType) { + return scCourseTypeService.searchList(reqSearchScCourseType); + } + + /** + * select + * + * @param reqSearchScCourseType + * @return + */ + @GetMapping("/list/select") + public APIResponse select(ReqSearchScCourseType reqSearchScCourseType) { + List list = scCourseTypeService.select(reqSearchScCourseType); + + return APIResponse.toAPIResponse(list); + } + + /** + * select + * + * @param + * @return + */ + @GetMapping("/list/selectForCheckbox") + public APIResponse selectForCheckbox() { + List list = scCourseTypeService.select(new ReqSearchScCourseType()); + List typeList= list.stream().map(RespCourseTypeSelect::new).collect(Collectors.toList()); + return APIResponse.toAPIResponse(typeList); + } + /** + * select + * + * @param reqSearchScCourseType + * @return + */ + @GetMapping("/list/selectByTypeIds") + public APIResponse selectByTypeIds(ReqSearchScCourseType reqSearchScCourseType) { + List list = scCourseTypeService.select(reqSearchScCourseType); + List typeList= list.stream().map(RespCourseTypeSelect::new).collect(Collectors.toList()); + + typeList.forEach(l->{ + List list1= scCourseService.list(new QueryWrapper() + .eq("course_type_id",l.getId()) + .eq("delete_flag",'0') + ); + List list2= list1.stream().map(RespCourseSelect::new).collect(Collectors.toList()); + l.setCourseList(list2); + }); + return APIResponse.toAPIResponse(typeList); + } + + /** + * 详情 + * + * @param courseTypeId + * @return + */ + @GetMapping("/info/detailById/{courseTypeId}") + public APIResponse detailById(@PathVariable("courseTypeId") Long courseTypeId) { + return scCourseTypeService.detailById(courseTypeId); + } + + /** + * 添加 + * + * @param scCourseType + * @return + */ + @PostMapping("/add/addScCourseType") + public APIResponse addScCourseType(@RequestBody ScCourseType scCourseType) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + scCourseType.setTenantId(loginUser.getNowTenantId()); + return scCourseTypeService.addScCourseType(scCourseType); + } + + /** + * 修改 + * + * @param scCourseType + * @return + */ + @PutMapping("/update/updateScCourseType") + public APIResponse updateScCourseType(@RequestBody ScCourseType scCourseType) { + return scCourseTypeService.updateScCourseType(scCourseType); + } + + /** + * 删除 + * + * @param courseTypeIds + * @return + */ + @DeleteMapping("/delete/deleteById/{courseTypeIds}") + public APIResponse deleteById(@PathVariable("courseTypeIds") Long[] courseTypeIds) { + return scCourseTypeService.deleteById(courseTypeIds); + } + + /** + * 变更是否开售 + * + * @param + * @return + */ + @PutMapping("/changeCourseTypeSale") + public APIResponse changeCourseTypeSale(@RequestBody ScCourseType scCourseType) { + return scCourseTypeService.changeCourseTypeSale(scCourseType); + } + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/controller/ScRoomController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScRoomController.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/controller/ScRoomController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScRoomController.java index 3f3c5d9..00f9770 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/controller/ScRoomController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/course/ScRoomController.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.base.controller; +package com.ruoyi.web.controller.school.course; -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom; -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.base.service.BusinessScRoomService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.school.room.domain.req.ReqRoomSelect; +import com.ruoyi.school.room.domain.req.ReqSearchScRoom; +import com.ruoyi.school.room.domain.ScRoom; +import com.ruoyi.school.room.service.BusinessScRoomService; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardController.java new file mode 100644 index 0000000..3cb142f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardController.java @@ -0,0 +1,154 @@ +package com.ruoyi.web.controller.school.member; + +import com.ruoyi.common.page.RespPage; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.member.domain.req.CreateMemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardVO; +import com.ruoyi.school.member.service.IScMemberCardService; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + *

+ * 会员卡类型信息 Controller + *

+ * + */ +@RestController +@RequestMapping("/api/sc/memberCard") +public class ScMemberCardController { + + @Autowired + private IScMemberCardService memberCardService; + + + @PostMapping("/list") + @ApiOperation("分页查询会员卡列表") + public APIResponse getCardList( + @Valid @RequestBody MemberCardDTO queryDTO) { + RespPage result = memberCardService.getCardList(queryDTO); + return APIResponse.toAPIResponse(result); + } + + + @PostMapping("/create") + @ApiOperation("创建会员卡") + public APIResponse createMemberCard(@Valid @RequestBody CreateMemberCardDTO dto) { + MemberCardDTO result = memberCardService.createMemberCard(dto); + return APIResponse.toAPIResponse(result); + } + + @PostMapping("/checkIn") + @ApiOperation("批量签到") + public APIResponse checkIn( @Valid @RequestBody Map > map + ) { + List bookIds=map.get("bookIds"); + return memberCardService.checkInByIds(bookIds); + } + + + @GetMapping("/{cardNo}") + @ApiOperation("根据卡号查询会员卡") + public APIResponse getByCardNo(@PathVariable String cardNo) { + MemberCardVO result = memberCardService.getByCardNo(cardNo); + return APIResponse.toAPIResponse(result); + } + + + + + + + @PostMapping("/{cardId}/activate") + @ApiOperation("激活会员卡") + public APIResponse activateCard(@PathVariable Long cardId) { + boolean result = memberCardService.activateCard(cardId); + return APIResponse.toAPIResponse(result); + } + + @GetMapping("/member/{memberId}") + @ApiOperation("查询会员的会员卡列表") + public APIResponse getMemberCards(@PathVariable Long memberId) { + List result = memberCardService.getMemberCards(memberId); + return APIResponse.toAPIResponse(result); + } + + @PostMapping("/member/{cardId}") + @ApiOperation("暂停会员卡") + public APIResponse suspendCard( + @ApiParam(value = "会员卡ID", required = true) + @PathVariable Long cardId) { + boolean result = memberCardService.suspendCard(cardId); + return APIResponse.toAPIResponse(result ? "暂停成功" : "暂停失败"); + } + +// @PostMapping("/renew") +// @ApiOperation("续费会员卡") +// public APIResponse renewCard( +// @Valid @RequestBody RenewCardDTO dto) { +// boolean result = memberCardService.renewCard(dto.getCardId(), dto.getDays()); +// return APIResponse.toAPIResponse(result ? "续费成功" : "续费失败"); +// } + @PostMapping("/add-count") + @ApiOperation("增加次数") + public APIResponse addCardCount( + @ApiParam(value = "会员卡ID", required = true) + @RequestParam Long cardId, + @ApiParam(value = "增加次数", required = true) + @RequestParam Integer count) { + boolean result = memberCardService.addCardCount(cardId, count); + return APIResponse.toAPIResponse(result ? "增加成功" : "增加失败"); + } + + @PostMapping("/deduct-count") + @ApiOperation("扣减次数") + public APIResponse deductCardCount( + @ApiParam(value = "会员卡ID", required = true) + @RequestParam Long cardId, + @ApiParam(value = "扣减次数", required = true) + @RequestParam Integer count) { + boolean result = memberCardService.deductCardCount(cardId, count); + return APIResponse.toAPIResponse(result ? "扣减成功" : "扣减失败"); + } + + @GetMapping("/valid/{memberId}") + @ApiOperation("查询会员有效的会员卡") + public APIResponse getValidMemberCards( + @ApiParam(value = "会员ID", required = true) + @PathVariable Long memberId) { + List result = memberCardService.getValidMemberCards(memberId); + return APIResponse.toAPIResponse(result); + } + + @PostMapping("/check-status/{cardId}") + @ApiOperation("检查会员卡状态") + public APIResponse checkCardStatus( + @ApiParam(value = "会员卡ID", required = true) + @PathVariable Long cardId) { + boolean result = memberCardService.checkCardStatus(cardId); + return APIResponse.toAPIResponse(result ? "卡状态正常" : "卡状态异常"); + } + + @DeleteMapping("/{id}") + @ApiOperation("删除会员卡(逻辑删除)") + public APIResponse deleteCard( + @ApiParam(value = "会员卡ID", required = true) + @PathVariable Long id) { + boolean result = memberCardService.removeById(id); + return APIResponse.toAPIResponse(result ? "删除成功" : "删除失败"); + } + + @GetMapping("/todayCardCount") + @ApiOperation("查询今日办卡数量") + public APIResponse getTodayCardCount() { + Integer result = memberCardService.getTodayCardCount(); + return APIResponse.toAPIResponse(result); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardTypesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardTypesController.java new file mode 100644 index 0000000..a91a287 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScMemberCardTypesController.java @@ -0,0 +1,295 @@ +package com.ruoyi.web.controller.school.member; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.xluobo.core.page.RespPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqBusinessOrderCourseDetail; +import com.ruoyi.school.course.domain.resp.course.RespCourseTypeSelect; +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.course.service.IScCourseTypeService; +import com.ruoyi.school.member.domain.ScMemberCard; +import com.ruoyi.school.member.domain.ScMemberCardCharge; +import com.ruoyi.school.member.domain.ScMemberCardCourses; +import com.ruoyi.school.member.domain.ScMemberCardTypes; +import com.ruoyi.school.member.domain.req.ReqAddMemberChargeItem; +import com.ruoyi.school.member.service.IScMemberCardService; +import com.ruoyi.school.member.service.ScMemberCardChargeService; +import com.ruoyi.school.member.service.ScMemberCardCourseService; +import com.ruoyi.school.member.service.ScMemberCardTypesService; +import com.ruoyi.system.service.ISysUserService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 会员卡类型信息 Controller + *

+ * + */ +@RestController +@RequestMapping("/api/sc/memberCardTypes") +public class ScMemberCardTypesController { + + @Autowired + private ScMemberCardTypesService typesService; + + @Autowired + private IScCourseTypeService courseTypeService; + + @Autowired + private ScMemberCardChargeService cardChargeService; + @Autowired + private ScMemberCardCourseService cardCoursesService; + + @Autowired + private ISysUserService userService; + + @Autowired + private IScMemberCardService memberCardService; + + + /** + * 列表 + * + * @param + * @return + */ + @GetMapping("/list/searchList") + public APIResponse searchList(ScMemberCardTypes types) { + QueryWrapper qw = new QueryWrapper(); + qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); +// qw.eq("delete_flag", "0"); + if (StringUtils.isNotEmpty(types.getCardName())) { + qw.eq("card_name", types.getCardName()); + } + if (StringUtils.isNotEmpty(types.getSale())) { + qw.eq("sale", types.getSale()); + } + if (StrUtil.isNotEmpty(types.getCardType()) && !types.getCardType().equals("total_fee")){// count 按课时 date_unit 按时间 + qw.isNotNull(types.getCardType()); + qw.ne(types.getCardType(),""); + } + qw.last(ObjectUtil.isNotEmpty(types.getCourseTypeId())," and JSON_CONTAINS(course_types, CAST("+types.getCourseTypeId()+" AS JSON)) "); + RespPage respPage = new RespPage<>(types.getPageNum(),types.getPageSize()); + RespPage listPage =typesService.page(respPage, qw); + listPage.getRows().forEach(l->{ + //获取课程分类 名 + if (ObjectUtil.isNotEmpty(l.getCourseTypes())||l.getCourseTypes().length>0){ + List courseTypeIds = Arrays.asList(l.getCourseTypes()); + List courseTypeList=courseTypeService.listByIds(courseTypeIds); + String typesName= courseTypeList.stream().map(ScCourseType::getCourseType) + .collect(Collectors.joining(",")); + l.setCourseTypesName(typesName); + } + //付费模式 default customize自定义 + if (l.getChargeType().equals("customize")){ + List list=cardChargeService.getByMemberId(l.getCardTypeId()); + l.setFeeModeHourList(list); + } + //限制教师 + if (l.getRestrictedTeacher().equals("2") ){ + List users= userService.selectUserByIds(l.getTeacherList()); + String userNames= users.stream().map(SysUser::getNickName).collect(Collectors.joining(",")); + l.setTeachersName(userNames); + } + //限制课程 + if (l.getRestrictedCourses().equals("2")){ + //课程类别名称 课程名称 + List cardCoursesList=cardCoursesService.getByCardId(l.getCardTypeId()); + l.setCourses(cardCoursesList); + } + + }); + return APIResponse.toAPIResponse(listPage); + } + + + /** + * 前端select + * + * @return + */ + @GetMapping("/list/select") + public APIResponse select(ScMemberCardTypes types) { + QueryWrapper qw = new QueryWrapper(); + qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); + qw.eq("delete_flag", "0"); + qw.eq("sale", "1"); + if (StringUtils.isNotEmpty(types.getCardName())) { + qw.eq("card_name", types.getCardName()); + } + return APIResponse.toAPIResponse(typesService.list(qw)); + } + + /** + * 详情 + * + * @param + * @return + */ + @GetMapping("/info/detailById/{cardId}") + public APIResponse detailById(@PathVariable("cardId") Long cardId) { + ScMemberCardTypes types=typesService.getById(cardId); + //限制课程 + if (types.getRestrictedCourses().equals("2") ){ + List cardCoursesList= cardCoursesService.list(new QueryWrapper() + .eq("card_type_id",types.getCardTypeId())); + List typeList= cardCoursesList.stream().map(RespCourseTypeSelect::new).collect(Collectors.toList()); + types.setCourseListInType(typeList); + } + + //付费模式 自定义 + if (types.getChargeType().equals("customize") ){ + List cardChargeList= cardChargeService.list(new QueryWrapper() + .eq("card_type_id",types.getCardTypeId())); + List chargeItems= BeanUtil.copyToList(cardChargeList,ReqAddMemberChargeItem.class); + types.setFeeModeHourList(chargeItems); + } + return APIResponse.toAPIResponse(types); + } + + /** + * 添加 + * + * @param + * @return + */ + @PostMapping("/add/memberCardTypes") + @Transactional + public APIResponse addScCourse(@RequestBody ScMemberCardTypes types) { + //todo 会员卡项修改记录 + types.checkParam(); + types.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); + types.setCreateUser(SecurityUtils.getUserId()); + typesService.save(types); + Long cardTypeId=types.getCardTypeId(); + + //限制课程 会员卡项 课程类型 课程id[] + List list=types.getCourseListInType(); + if (types.getRestrictedCourses().equals("2") && list.size()>0){ + List cardCoursesList= new ArrayList<>(); + + for (RespCourseTypeSelect type : list) { + Long[] courses= type.getSelectedCourses(); + if (ObjectUtil.isEmpty(courses) || courses.length<1) continue; + ScMemberCardCourses cardCourse=new ScMemberCardCourses(); + cardCourse.setCardTypeId(cardTypeId); + cardCourse.setCourseTypeId(type.getId()); + cardCourse.setCourses(courses); + cardCoursesList.add(cardCourse); + } + cardCoursesService.saveBatch(cardCoursesList); + } + + //付费模式: 会员卡项 课程类型 扣卡次数 扣卡金额 + List feeList= types.getFeeModeHourList(); + if (types.getChargeType().equals("customize") && feeList.size()>0){ + List cardChargeList= BeanUtil.copyToList(feeList,ScMemberCardCharge.class); + cardChargeList.forEach(l->{ + l.setCardTypeId(cardTypeId); + }); + cardChargeService.saveBatch(cardChargeList); + } + + return APIResponse.toOkResponse(); + } + + /** + * 修改 + * + * @param + * @return + */ + @PutMapping("/update/updateMemberCardTypes") + @Transactional + public APIResponse updateScCourse(@RequestBody ScMemberCardTypes types) { + types.setLastUpdateUser(SecurityUtils.getUserId()); + + typesService.updateById(types); + cardChargeService.remove(new QueryWrapper() + .eq("card_type_id",types.getCardTypeId())); + + cardCoursesService.remove(new QueryWrapper() + .eq("card_type_id",types.getCardTypeId())); + + //限制课程 会员卡项 课程类型 课程id[] + List list=types.getCourseListInType(); + if (types.getRestrictedCourses().equals("2") && list.size()>0){ + List cardCoursesList= new ArrayList<>(); + + for (RespCourseTypeSelect type : list) { + Long[] courses= type.getSelectedCourses(); + if (ObjectUtil.isEmpty(courses) || courses.length<1) continue; + ScMemberCardCourses cardCourse=new ScMemberCardCourses(); + cardCourse.setCardTypeId(types.getCardTypeId()); + cardCourse.setCourseTypeId(type.getId()); + cardCourse.setCourses(courses); + cardCoursesList.add(cardCourse); + } + cardCoursesService.saveBatch(cardCoursesList); + } + + //付费模式: 会员卡项 课程类型 扣卡次数 扣卡金额 + List feeList= types.getFeeModeHourList(); + if (types.getChargeType().equals("customize") && feeList.size()>0){ + List cardChargeList= BeanUtil.copyToList(feeList,ScMemberCardCharge.class); + cardChargeList.forEach(l->{ + l.setCardTypeId(types.getCardTypeId()); + }); + + cardChargeService.saveBatch(cardChargeList); + } + + return APIResponse.toOkResponse(); + } + + @PutMapping("/update/editSale") + @Transactional + public APIResponse editSale(@RequestBody ScMemberCardTypes types) { + types.setLastUpdateUser(SecurityUtils.getUserId()); + typesService.updateById(types); + return APIResponse.toOkResponse(); + } + + /** + * 删除 + * + * @param + * @return + */ + @DeleteMapping("/delete/deleteById/{cardIds}") + @Transactional + public APIResponse deleteById(@PathVariable("cardIds") List cardIds) { + //判断 卡类下是否有会员 + int count=memberCardService.count(new QueryWrapper().in("card_type_id",cardIds)); + if (count>0){ + return APIResponse.toExceptionResponse("当前卡类已办理会员,无法删除!"); + } + typesService.removeByIds(cardIds); + cardChargeService.remove(new QueryWrapper() + .in("card_type_id",cardIds)); + + cardCoursesService.remove(new QueryWrapper() + .in("card_type_id",cardIds)); + + return APIResponse.toOkResponse(); + } + + @GetMapping("/info/orderCardTypeDetail") + public APIResponse orderCardTypeDetail(ReqBusinessOrderCourseDetail orderCourseDetail) { + return typesService.orderCardTypeDetail(orderCourseDetail); + } + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScStudentController.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScStudentController.java index c8f1bb2..65af1aa 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/member/ScStudentController.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.student.controller; +package com.ruoyi.web.controller.school.member; -import cn.xluobo.business.sc.student.domain.req.ReqSearchScStudent; -import cn.xluobo.business.sc.student.domain.req.ReqStudentSelect; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.service.BusinessScStudentService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.school.member.domain.req.ReqSearchScStudent; +import com.ruoyi.school.member.domain.req.ReqStudentSelect; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.student.service.BusinessScStudentService; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/controller/DashboardController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/DashboardController.java similarity index 75% rename from ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/controller/DashboardController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/DashboardController.java index 77d44fe..bc9fef6 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/controller/DashboardController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/DashboardController.java @@ -1,8 +1,8 @@ -package cn.xluobo.business.report.dashboard.controller; +package com.ruoyi.web.controller.school.order; -import cn.xluobo.business.report.dashboard.domain.resp.DashboardData; -import cn.xluobo.business.report.dashboard.service.DashboardService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.dashboard.domain.resp.DashboardData; +import com.ruoyi.school.dashboard.service.DashboardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/controller/ScOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/ScOrderController.java similarity index 71% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/controller/ScOrderController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/ScOrderController.java index a98a387..68ed061 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/controller/ScOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/order/ScOrderController.java @@ -1,9 +1,8 @@ -package cn.xluobo.business.sc.order.controller; +package com.ruoyi.web.controller.school.order; -import cn.xluobo.business.sc.order.domain.req.ReqBusinessSignUp; -import cn.xluobo.business.sc.order.domain.req.ReqSearchScOrder; import cn.xluobo.business.sc.order.service.BusinessScOrderService; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.order.domain.req.ReqSearchScOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -43,16 +42,7 @@ public class ScOrderController { return scOrderService.detailById(orderId); } - /** - * 新办 - * - * @param reqBusinessSignUp - * @return - */ - @PostMapping("/add/signUp") - public APIResponse signUp(@RequestBody ReqBusinessSignUp reqBusinessSignUp) { - return scOrderService.signUp(reqBusinessSignUp); - } + /** * 作废订单 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/controller/ScCommissionPlansController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/salary/ScCommissionPlansController.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/controller/ScCommissionPlansController.java rename to ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/salary/ScCommissionPlansController.java index 78bef51..4a523a0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/controller/ScCommissionPlansController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/school/salary/ScCommissionPlansController.java @@ -1,9 +1,9 @@ -package cn.xluobo.business.sc.salary.controller; +package com.ruoyi.web.controller.school.salary; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.xluobo.business.sc.salary.repo.model.ScCommissionPlans; -import cn.xluobo.business.sc.salary.service.ScCommissionPlansService; +import com.ruoyi.school.salary.domain.ScCommissionPlans; +import com.ruoyi.school.salary.service.ScCommissionPlansService; import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.AjaxResult; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java index fec08f0..469caca 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java @@ -1,8 +1,5 @@ package com.ruoyi.web.controller.system; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; @@ -31,8 +28,6 @@ public class SysDeptController extends BaseController { @Autowired private ISysDeptService deptService; - @Autowired - private IScStudentCourseService studentCourseService; /** * 获取部门列表 */ @@ -157,12 +152,12 @@ public class SysDeptController extends BaseController return AjaxResult.error("部门存在用户,不允许删除"); } // 如果已报读 不允许删除 - QueryWrapper qwSc = new QueryWrapper<>(); - qwSc.eq("dept_id", deptId); - int studentCourseCount = studentCourseService.count(qwSc); - if (studentCourseCount != 0) { - return AjaxResult.error("该校区已有报读学员,无法删除"); - } +// QueryWrapper qwSc = new QueryWrapper<>(); +// qwSc.eq("dept_id", deptId); +// int studentCourseCount = studentCourseService.count(qwSc); +// if (studentCourseCount != 0) { +// return AjaxResult.error("该校区已有报读学员,无法删除"); +// } return toAjax(deptService.deleteDeptById(deptId)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java deleted file mode 100644 index a9716b6..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.ruoyi.web.core.config; - -import com.ruoyi.common.config.RuoYiConfig; -import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.*; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.Docket; - -import java.util.ArrayList; -import java.util.List; - -/** - * Swagger2的接口配置 - * - * @author ruoyi - */ -@Configuration -public class SwaggerConfig -{ - /** 系统基础配置 */ - @Autowired - private RuoYiConfig ruoyiConfig; - - /** 是否开启swagger */ - @Value("${swagger.enabled}") - private boolean enabled; - - /** 设置请求的统一前缀 */ - @Value("${swagger.pathMapping}") - private String pathMapping; - - /** - * 创建API - */ - @Bean - public Docket createRestApi() - { - return new Docket(DocumentationType.OAS_30) - // 是否启用Swagger - .enable(enabled) - // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) - .apiInfo(apiInfo()) - // 设置哪些接口暴露给Swagger展示 - .select() - // 扫描所有有注解的api,用这种方式更灵活 - .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) - // 扫描指定包中的swagger注解 - // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger")) - // 扫描所有 .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build() - /* 设置安全模式,swagger可以设置访问token */ - .securitySchemes(securitySchemes()) - .securityContexts(securityContexts()) - .pathMapping(pathMapping); - } - - /** - * 安全模式,这里指定token通过Authorization头请求头传递 - */ - private List securitySchemes() - { - List apiKeyList = new ArrayList(); - apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue())); - return apiKeyList; - } - - /** - * 安全上下文 - */ - private List securityContexts() - { - List securityContexts = new ArrayList<>(); - securityContexts.add( - SecurityContext.builder() - .securityReferences(defaultAuth()) - .operationSelector(o -> o.requestMappingPattern().matches("/.*")) - .build()); - return securityContexts; - } - - /** - * 默认的安全上引用 - */ - private List defaultAuth() - { - AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); - AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; - authorizationScopes[0] = authorizationScope; - List securityReferences = new ArrayList<>(); - securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); - return securityReferences; - } - - /** - * 添加摘要信息 - */ - private ApiInfo apiInfo() - { - // 用ApiInfoBuilder进行定制 - return new ApiInfoBuilder() - // 设置标题 - .title("标题:接口文档") - // 描述 - .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") - // 作者信息 - .contact(new Contact(ruoyiConfig.getName(), null, null)) - // 版本 - .version("版本号:" + ruoyiConfig.getVersion()) - .build(); - } -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java index 3754e0e..5292eac 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java @@ -1,15 +1,16 @@ package com.ruoyi.common.annotation; +import com.ruoyi.common.utils.poi.ExcelHandlerAdapter; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.math.BigDecimal; -import com.ruoyi.common.utils.poi.ExcelHandlerAdapter; /** * 自定义导出Excel数据注解 - * + * * @author ruoyi */ @Retention(RetentionPolicy.RUNTIME) @@ -37,7 +38,7 @@ public @interface Excel public String dictType() default ""; /** - * 读取内容转表达式 (如: 0=男,1=女,2=未知) + * 读取内容转表达式 */ public String readConverterExp() default ""; @@ -173,4 +174,4 @@ public @interface Excel return this.value; } } -} \ No newline at end of file +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index bf1b76f..09aff01 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -50,7 +50,7 @@ public class SysUser extends BaseEntity private String phonenumber; /** 用户性别 */ - @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") + @Excel(name = "用户性别", readConverterExp = "") private String sex; /** 用户头像 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java index 847685b..92b04fd 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java @@ -1,11 +1,14 @@ package com.ruoyi.common.core.page; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ruoyi.common.json.LongJsonSerializer; + import java.io.Serializable; import java.util.List; /** * 表格分页数据对象 - * + * * @author ruoyi */ public class TableDataInfo implements Serializable @@ -13,6 +16,7 @@ public class TableDataInfo implements Serializable private static final long serialVersionUID = 1L; /** 总记录数 */ + @JsonSerialize(using = LongJsonSerializer.class) private long total; /** 列表数据 */ @@ -33,7 +37,7 @@ public class TableDataInfo implements Serializable /** * 分页 - * + * * @param list 列表数据 * @param total 总记录数 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index b97baeb..54ccc5a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -1,66 +1,5 @@ package com.ruoyi.common.utils.poi; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; -import javax.servlet.http.HttpServletResponse; -import org.apache.poi.hssf.usermodel.HSSFClientAnchor; -import org.apache.poi.hssf.usermodel.HSSFPicture; -import org.apache.poi.hssf.usermodel.HSSFPictureData; -import org.apache.poi.hssf.usermodel.HSSFShape; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ooxml.POIXMLDocumentPart; -import org.apache.poi.ss.usermodel.BorderStyle; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.ClientAnchor; -import org.apache.poi.ss.usermodel.DataValidation; -import org.apache.poi.ss.usermodel.DataValidationConstraint; -import org.apache.poi.ss.usermodel.DataValidationHelper; -import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.Drawing; -import org.apache.poi.ss.usermodel.FillPatternType; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.HorizontalAlignment; -import org.apache.poi.ss.usermodel.IndexedColors; -import org.apache.poi.ss.usermodel.PictureData; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.VerticalAlignment; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.usermodel.WorkbookFactory; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.util.CellRangeAddressList; -import org.apache.poi.util.IOUtils; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.apache.poi.xssf.usermodel.XSSFClientAnchor; -import org.apache.poi.xssf.usermodel.XSSFDataValidation; -import org.apache.poi.xssf.usermodel.XSSFDrawing; -import org.apache.poi.xssf.usermodel.XSSFPicture; -import org.apache.poi.xssf.usermodel.XSSFShape; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.Type; @@ -76,10 +15,30 @@ import com.ruoyi.common.utils.file.FileTypeUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.ImageUtils; import com.ruoyi.common.utils.reflect.ReflectUtils; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ooxml.POIXMLDocumentPart; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellRangeAddressList; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.*; +import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; /** * Excel相关处理 - * + * * @author ruoyi */ public class ExcelUtil @@ -195,7 +154,7 @@ public class ExcelUtil /** * 对excel表单默认第一个索引名转换成list - * + * * @param is 输入流 * @return 转换后集合 */ @@ -218,7 +177,7 @@ public class ExcelUtil /** * 对excel表单指定表格索引名转换成list - * + * * @param sheetName 表格索引名 * @param titleNum 标题占用行数 * @param is 输入流 @@ -398,7 +357,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param list 导出数据集合 * @param sheetName 工作表的名称 * @return 结果 @@ -429,7 +388,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param response 返回数据 * @param list 导出数据集合 * @param sheetName 工作表的名称 @@ -461,7 +420,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -485,7 +444,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @param sheetName 工作表的名称 * @return 结果 */ @@ -511,7 +470,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public void exportExcel(OutputStream out) @@ -534,7 +493,7 @@ public class ExcelUtil /** * 对list数据源将其里面的数据导入到excel表单 - * + * * @return 结果 */ public String exportExcel() @@ -590,7 +549,7 @@ public class ExcelUtil /** * 填充excel数据 - * + * * @param index 序号 * @param row 单元格行 */ @@ -615,7 +574,7 @@ public class ExcelUtil /** * 创建表格样式 - * + * * @param wb 工作薄对象 * @return 样式列表 */ @@ -707,7 +666,7 @@ public class ExcelUtil /** * 设置单元格信息 - * + * * @param value 单元格值 * @param attr 注解相关 * @param cell 单元格信息 @@ -856,7 +815,7 @@ public class ExcelUtil /** * 设置 POI XSSFSheet 单元格提示 - * + * * @param sheet 表单 * @param promptTitle 提示标题 * @param promptContent 提示内容 @@ -879,7 +838,7 @@ public class ExcelUtil /** * 设置某些列的值只能输入预制的数据,显示下拉框. - * + * * @param sheet 要设置的sheet. * @param textlist 下拉框显示的内容 * @param firstRow 开始行 @@ -912,8 +871,8 @@ public class ExcelUtil } /** - * 解析导出值 0=男,1=女,2=未知 - * + * 解析导出值 + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -949,8 +908,8 @@ public class ExcelUtil } /** - * 反向解析值 男=0,女=1,未知=2 - * + * 反向解析值 + * * @param propertyValue 参数值 * @param converterExp 翻译注解 * @param separator 分隔符 @@ -987,7 +946,7 @@ public class ExcelUtil /** * 解析字典值 - * + * * @param dictValue 字典值 * @param dictType 字典类型 * @param separator 分隔符 @@ -1000,7 +959,7 @@ public class ExcelUtil /** * 反向解析值字典值 - * + * * @param dictLabel 字典标签 * @param dictType 字典类型 * @param separator 分隔符 @@ -1013,7 +972,7 @@ public class ExcelUtil /** * 数据处理器 - * + * * @param value 数据值 * @param excel 数据注解 * @return @@ -1090,7 +1049,7 @@ public class ExcelUtil /** * 获取下载路径 - * + * * @param filename 文件名称 */ public String getAbsoluteFile(String filename) @@ -1106,7 +1065,7 @@ public class ExcelUtil /** * 获取bean中的属性值 - * + * * @param vo 实体对象 * @param field 字段 * @param excel 注解 @@ -1137,7 +1096,7 @@ public class ExcelUtil /** * 以类的属性的get方法方法形式获取值 - * + * * @param o * @param name * @return value @@ -1232,7 +1191,7 @@ public class ExcelUtil /** * 创建工作表 - * + * * @param sheetNo sheet数量 * @param index 序号 */ @@ -1249,7 +1208,7 @@ public class ExcelUtil /** * 获取单元格值 - * + * * @param row 获取的行 * @param column 获取单元格列号 * @return 单元格值 @@ -1309,7 +1268,7 @@ public class ExcelUtil /** * 判断是否是空行 - * + * * @param row 判断的行 * @return */ diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index c16cc4a..f8477e5 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -22,7 +22,10 @@ com.ruoyi ruoyi-common - + + joda-time + joda-time + - \ No newline at end of file + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/core/api/APIBaseResponse.java b/ruoyi-system/src/main/java/com/ruoyi/core/api/APIBaseResponse.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/core/api/APIBaseResponse.java rename to ruoyi-system/src/main/java/com/ruoyi/core/api/APIBaseResponse.java index d234eb3..bab218f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/core/api/APIBaseResponse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/core/api/APIBaseResponse.java @@ -1,4 +1,4 @@ -package cn.xluobo.core.api; +package com.ruoyi.core.api; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/core/api/APIResponse.java b/ruoyi-system/src/main/java/com/ruoyi/core/api/APIResponse.java similarity index 98% rename from ruoyi-admin/src/main/java/cn/xluobo/core/api/APIResponse.java rename to ruoyi-system/src/main/java/com/ruoyi/core/api/APIResponse.java index 158a9b0..ba9c878 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/core/api/APIResponse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/core/api/APIResponse.java @@ -1,4 +1,4 @@ -package cn.xluobo.core.api; +package com.ruoyi.core.api; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/core/api/ApiResEnums.java b/ruoyi-system/src/main/java/com/ruoyi/core/api/ApiResEnums.java similarity index 97% rename from ruoyi-admin/src/main/java/cn/xluobo/core/api/ApiResEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/core/api/ApiResEnums.java index c2f2283..594d973 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/core/api/ApiResEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/core/api/ApiResEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.core.api; +package com.ruoyi.core.api; public enum ApiResEnums { SC_UNAUTHORIZED("0401","401"), diff --git a/ruoyi-admin/src/main/java/cn/xluobo/core/constants/SysConstant.java b/ruoyi-system/src/main/java/com/ruoyi/core/constants/SysConstant.java similarity index 97% rename from ruoyi-admin/src/main/java/cn/xluobo/core/constants/SysConstant.java rename to ruoyi-system/src/main/java/com/ruoyi/core/constants/SysConstant.java index 79baa63..012ca1d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/core/constants/SysConstant.java +++ b/ruoyi-system/src/main/java/com/ruoyi/core/constants/SysConstant.java @@ -1,4 +1,4 @@ -package cn.xluobo.core.constants; +package com.ruoyi.core.constants; import java.util.HashMap; import java.util.Map; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/core/utils/DateUtil.java b/ruoyi-system/src/main/java/com/ruoyi/core/utils/DateUtil.java similarity index 98% rename from ruoyi-admin/src/main/java/cn/xluobo/core/utils/DateUtil.java rename to ruoyi-system/src/main/java/com/ruoyi/core/utils/DateUtil.java index 1b1153b..a0726e6 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/core/utils/DateUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/core/utils/DateUtil.java @@ -1,4 +1,4 @@ -package cn.xluobo.core.utils; +package com.ruoyi.core.utils; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/core/utils/LongArrayTypeHandler.java b/ruoyi-system/src/main/java/com/ruoyi/core/utils/LongArrayTypeHandler.java new file mode 100644 index 0000000..cfb1748 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/core/utils/LongArrayTypeHandler.java @@ -0,0 +1,59 @@ +package com.ruoyi.core.utils;import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +@MappedTypes(Long[].class) +@MappedJdbcTypes(JdbcType.VARCHAR) // 注意:如果你的数据库字段类型是JSON,但JDBC驱动会把它当成VARCHAR处理,所以这里用VARCHAR +public class LongArrayTypeHandler extends BaseTypeHandler { + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, Long[] parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, toJson(parameter)); + } + + @Override + public Long[] getNullableResult(ResultSet rs, String columnName) throws SQLException { + String json = rs.getString(columnName); + return fromJson(json); + } + + @Override + public Long[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String json = rs.getString(columnIndex); + return fromJson(json); + } + + @Override + public Long[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String json = cs.getString(columnIndex); + return fromJson(json); + } + + private String toJson(Long[] array) { + try { + return objectMapper.writeValueAsString(array); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private Long[] fromJson(String json) { + try { + if (json == null || json.isEmpty()) { + return null; + } + return objectMapper.readValue(json, Long[].class); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductVO.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductVO.java index fe7e48b..6b188e2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductVO.java @@ -70,4 +70,13 @@ public class ProductVO extends BaseAudit { private Long courseId; private String courseName; private List skuList; + + /** + * 客服user id + */ + private Long customerService; + /** + * 教练user id + */ + private Long instructor; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/service/ProductService.java b/ruoyi-system/src/main/java/com/ruoyi/mall/service/ProductService.java index 447241d..3fde8af 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/mall/service/ProductService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/service/ProductService.java @@ -19,6 +19,8 @@ import com.ruoyi.mall.mapper.BrandMapper; import com.ruoyi.mall.mapper.ProductCategoryMapper; import com.ruoyi.mall.mapper.ProductMapper; import com.ruoyi.mall.mapper.SkuMapper; +import com.ruoyi.system.domain.AppUser; +import com.ruoyi.system.service.YjAppUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -49,6 +51,8 @@ public class ProductService { private SkuMapper skuMapper; @Autowired private BrandMapper brandMapper; + @Autowired + private YjAppUserService userService; @@ -61,6 +65,7 @@ public class ProductService { public ProductVO selectById(Long id) { Product product = productMapper.selectById(id); ProductVO productVO = BeanUtil.toBean(product,ProductVO.class); + getProductManager(productVO,product); QueryWrapper qw = new QueryWrapper<>(); qw.eq("product_id", product.getId()); List skus = skuMapper.selectList(qw); @@ -176,7 +181,11 @@ public class ProductService { Product product = BeanUtil.toBean(productVO,Product.class); product.setCreateTime(LocalDateTime.now()); product.setStoreId(SecurityUtils.getDeptId()); + setProductManager(productVO,product); + List skuList = productVO.getSkuList(); + + productMapper.insert(product); if(skuList!=null){ skuList.forEach(sku -> { @@ -189,6 +198,30 @@ public class ProductService { return 1; } + public void setProductManager(ProductVO productVO,Product product){ + if (ObjectUtil.isEmpty(productVO.getCustomerService())){ + throw new RuntimeException("请选择客服/顾问"); + } + if (productVO.getIsCourse().equals(new Integer(1))&&ObjectUtil.isEmpty(productVO.getInstructor())){ + throw new RuntimeException("请选择教练"); + }else { + AppUser instructor= userService.getOne(new QueryWrapper().eq("manage_account_id",productVO.getInstructor())); + product.setInstructor(instructor.getId()); + } + AppUser customerService= userService.getOne(new QueryWrapper().eq("manage_account_id",productVO.getCustomerService())); + product.setCustomerService(customerService.getId()); + } + public void getProductManager(ProductVO productVO,Product product){ + if (ObjectUtil.isNotEmpty(product.getCustomerService())){ + AppUser customerService= userService.getById(product.getCustomerService()); + productVO.setCustomerService(customerService.getManageAccountId()); + } + if (ObjectUtil.isNotEmpty(product.getInstructor())){ + AppUser instructor= userService.getById(product.getInstructor()); + productVO.setInstructor(instructor.getManageAccountId()); + } + } + /** * 修改商品信息 * @@ -208,6 +241,7 @@ public class ProductService { product.setUpdateBy(userId); product.setUpdateTime(LocalDateTime.now()); product.setStoreId(SecurityUtils.getDeptId()); + setProductManager(productVO,product); productMapper.updateById(product); //查找库中所有的sku Map map = new HashMap<>(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourse.java new file mode 100644 index 0000000..17ad310 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourse.java @@ -0,0 +1,106 @@ +package com.ruoyi.school.course.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + *

+ * 排课信息 + *

+ * + * + * + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sc_book_course") +public class ScBookCourse implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 排课编号 + */ + @TableField(value = "course_time_id") + private Long courseTimeId; + + /** + * 预约状态:0->预约中;1->教练确认;2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败; + */ + @TableField("book_status") + private int bookStatus; + + /** + * 学员id + */ + @TableField("student_id") + private Long studentId; + + /** + * 创建预约时间 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField("create_time") + private Date createTime; + + + @TableField("code") + private Long code; + + @TableField("qr_code") + private String qrCode; + + //*0未签到 1签到 + @TableField("check_in") + private int checkIn; + + + @TableField("check_in_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date checkInTime; + + + /** + * 收费模式 count:课时 days:时间 total_fee:储值 + */ + @TableField("charge_type") + private String chargeType; + + /** + * 卡号 + */ + @TableField(value = "card_no") + private String cardNo; + + + /** + * 划扣次数 + */ + @TableField(value = "deduct_cnt") + private BigDecimal deductCnt; + + /** + * 划扣金额 + */ + @TableField(value = "deduct_fee") + private BigDecimal deductFee; + + @TableField(value = "check_in_manager") + private long userId; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourseLog.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourseLog.java new file mode 100644 index 0000000..029764b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScBookCourseLog.java @@ -0,0 +1,64 @@ +package com.ruoyi.school.course.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 排课信息 + *

+ * + * + * + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sc_book_course_log") +public class ScBookCourseLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + @TableField(value = "book_id") + private Long bookId; + + /** + * 预约状态:0->预约成功/待上课;1->已取消;2->已完成 3->待评价; + */ + @TableField("update_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date updateTime; + + /** + * 学员id + */ + @TableField("update_user_id") + private Long updateUser; + + /** + * 备注 + */ + @TableField("remarks") + private String remarks; + + + /** + * 预约状态:0->预约中;1->教练确认;2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败; + */ + @TableField("book_status") + private int bookStatus; + + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTime.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTime.java similarity index 83% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTime.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTime.java index 5e4ccd4..245f10a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTime.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTime.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -83,6 +83,12 @@ public class ScClaTime implements Serializable { @TableField("start_time") private String startTime; + /** + * 时长 分钟 + */ + @TableField("cla_duration") + private Integer claDuration; + /** * 上课结束时间 */ @@ -101,29 +107,6 @@ public class ScClaTime implements Serializable { @TableField("real_start_time") private String realStartTime; - /** - * 实际结束时间 - */ - @TableField("real_end_time") - private String realEndTime; - - /** - * 课时变更数量 - */ - @TableField("pay_hour") - private BigDecimal payHour; - - /** - * 总课时消耗 - */ - @TableField("pay_total_hour") - private BigDecimal payTotalHour; - - /** - * 总学费消耗 - */ - @TableField("pay_total_fee") - private BigDecimal payTotalFee; /** * 来源 1:重复排课 2:未排课上课 3:单个新增 @@ -138,40 +121,51 @@ public class ScClaTime implements Serializable { private String status; /** - * 应到人数 + * 最多预约人数 */ - @TableField("book_attend_cnt") - private Integer bookAttendCnt; + @TableField("at_class_cnt") + private Integer atClassCnt; + /** - * 实到人数 + * 最少开课人数 */ - @TableField("real_attend_cnt") - private Integer realAttendCnt; + @TableField("less_cnt") + private Integer lessCnt; + /** - * 到课人数 + * 备注 */ - @TableField("at_class_cnt") - private Integer atClassCnt; + @TableField("memo") + private String memo; + /** - * 请假人数 + * 实际结束时间 */ -// @TableField("leave_cnt") -// private Integer leaveCnt; - + @TableField("real_end_time") + private String realEndTime; /** - * 缺勤人数 + * 老师获取的课时费 */ - @TableField("out_cnt") - private Integer outCnt; + @TableField("teacher_fee") + private BigDecimal teacherFee; /** - * 备注 + * 实到人数 */ - @TableField("memo") - private String memo; + @TableField("real_attend_cnt") + private Integer realAttendCnt; + +//本次课场地费 + @TableField("venue_fee") + private BigDecimal venueFee; + + //教室实际使用时间小时 //不足0.5按0.5计,>0.5小时,按1小时计 + @TableField("room_usage_time") + private Double roomUsageTime; + /** * 创建者 @@ -185,11 +179,7 @@ public class ScClaTime implements Serializable { @TableField("create_time") private Date createTime; - /** - * 更新者 - */ - @TableField("last_update_user") - private Long lastUpdateUser; + /** * 更新时间 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeAttend.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeAttend.java similarity index 66% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeAttend.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeAttend.java index 2c9989a..e1be015 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeAttend.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeAttend.java @@ -1,9 +1,10 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -33,11 +34,6 @@ public class ScClaTimeAttend implements Serializable { @TableId(value = "attend_id", type = IdType.ASSIGN_ID) private Long attendId; - @TableField(value = "student_course_id") - private Long studentCourseId; - - @TableField(value = "course_order_id") - private Long courseOrderId; /** * sc_cla_time.course_time_id @@ -45,6 +41,9 @@ public class ScClaTimeAttend implements Serializable { @TableField("course_time_id") private Long courseTimeId; + @TableField("book_id") + private Long bookId; + /** * 学生 */ @@ -76,7 +75,7 @@ public class ScClaTimeAttend implements Serializable { private String teacherName; /** - * 收费模式 hour:课时 date:时间 cycle:期 + * 收费模式 count:课时 days:时间 total_fee:储值 */ @TableField("charge_type") private String chargeType; @@ -88,10 +87,10 @@ public class ScClaTimeAttend implements Serializable { private String attendStatus; /** - * 教师获取课时数量 + * 教师获取课时费(未使用) */ - @TableField("teacher_get_hour") - private BigDecimal teacherGetHour; + @TableField("teacher_get_cla_fee") + private BigDecimal teacherGetClaFee; /** * 扣减课时数量 @@ -115,11 +114,45 @@ public class ScClaTimeAttend implements Serializable { * 创建者 */ @TableField("create_user") - private Long createUser; + private Long createUser; /** * 创建时间 */ @TableField("create_time") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private Date createTime; + + + /** + * 卡ID + */ + @TableField(value = "member_card_id") + private Long memberCardId; + + /** + * 划扣前次数 + */ + @TableField(value = "count_before") + private BigDecimal countBefore; + + /** + * 划扣后次数 + */ + @TableField(value = "count_after") + private BigDecimal countAfter; + + + + /** + * 划扣前余额 + */ + @TableField(value = "fee_before") + private BigDecimal feeBefore; + + /** + * 划扣后余额 + */ + @TableField(value = "fee_after") + private BigDecimal feeAfter; } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRule.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRule.java similarity index 89% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRule.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRule.java index 77007e4..6825f90 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRule.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRule.java @@ -1,11 +1,11 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRepeatTypeEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRuleTypeEnums; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.school.course.enums.ClaTimeRepeatTypeEnums; +import com.ruoyi.school.course.enums.ClaTimeRuleTypeEnums; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -90,12 +90,30 @@ public class ScClaTimeRule implements Serializable { @TableField("start_time") private String startTime; + /** + * 时长 分钟 + */ + @TableField("cla_duration") + private Integer claDuration; + /** * 下课时间 */ @TableField("end_time") private String endTime; + /** + * 最多预约人数 + */ + @TableField("at_class_cnt") + private Integer atClassCnt; + + /** + * 最少开课人数 + */ + @TableField("less_cnt") + private Integer lessCnt; + /** * 任课教师 */ diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRuleVo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRuleVo.java similarity index 89% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRuleVo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRuleVo.java index 2b4bfcc..90f3a09 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeRuleVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeRuleVo.java @@ -1,11 +1,11 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRepeatTypeEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRuleTypeEnums; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.school.course.enums.ClaTimeRepeatTypeEnums; +import com.ruoyi.school.course.enums.ClaTimeRuleTypeEnums; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -96,12 +96,29 @@ public class ScClaTimeRuleVo implements Serializable { @TableField("end_time") private String endTime; + + /** + * 时长 分钟 + */ + @TableField("cla_duration") + private Integer claDuration; /** * 任课教师 */ @TableField("teacher_id") private Long teacherId; + /** + * 最多预约人数 + */ + @TableField("at_class_cnt") + private Integer atClassCnt; + + /** + * 最少开课人数 + */ + @TableField("less_cnt") + private Integer lessCnt; /** * 上课教室 */ diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeVo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeVo.java similarity index 88% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeVo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeVo.java index 31e0dea..95aea71 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScClaTimeVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScClaTimeVo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -10,7 +10,6 @@ import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; -import java.math.BigDecimal; import java.util.Date; /** @@ -107,23 +106,6 @@ public class ScClaTimeVo implements Serializable { @TableField("real_end_time") private String realEndTime; - /** - * 课时变更数量 - */ - @TableField("pay_hour") - private BigDecimal payHour; - - /** - * 总课时消耗 - */ - @TableField("pay_total_hour") - private BigDecimal payTotalHour; - - /** - * 总学费消耗 - */ - @TableField("pay_total_fee") - private BigDecimal payTotalFee; /** * 来源 1:重复排课 2:未排课上课 3:单个新增 @@ -161,11 +143,7 @@ public class ScClaTimeVo implements Serializable { // @TableField("leave_cnt") // private Integer leaveCnt; - /** - * 缺勤人数 - */ - @TableField("out_cnt") - private Integer outCnt; + /** * 备注 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourse.java similarity index 85% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourse.java index 7bd0c80..c255607 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourse.java @@ -1,10 +1,8 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.ruoyi.core.utils.LongArrayTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -24,7 +22,7 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName("sc_course") +@TableName(value = "sc_course",autoResultMap = true) public class ScCourse implements Serializable { @@ -116,4 +114,7 @@ public class ScCourse implements Serializable { @TableField("cla_fee") private BigDecimal claFee; + @TableField(value = "depart_id", typeHandler = LongArrayTypeHandler.class,updateStrategy = FieldStrategy.IGNORED) + private Long[] departId; + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCla.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseCla.java similarity index 83% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCla.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseCla.java index c7339e1..84497a6 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCla.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseCla.java @@ -1,17 +1,16 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; -import cn.xluobo.core.api.APIBaseResponse; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIBaseResponse; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; -import java.math.BigDecimal; import java.util.Date; /** @@ -84,17 +83,6 @@ public class ScCourseCla implements Serializable { @TableField("recruit_status") private String recruitStatus; - /** - * 每次上课学生扣除课时 - */ - @TableField("every_stu_lose_hour") - private BigDecimal everyStuLoseHour; - - /** - * 每次上课教师获得课时 - */ - @TableField("every_tea_get_hour") - private BigDecimal everyTeaGetHour; /** * 开班日期 @@ -162,10 +150,13 @@ public class ScCourseCla implements Serializable { * @return */ public APIBaseResponse checkParam(){ - if(StringUtils.isAnyEmpty(claName,claColor,recruitStatus,openDate)){ + if(StringUtils.isAnyEmpty(claName,claColor)){ return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交"); } - if(null == courseId || null == departId || null == staffId || null == capacity || null == everyStuLoseHour || null == everyTeaGetHour){ + if(null == courseId || null == departId +// || null == staffId || null == capacity +// || null == everyStuLoseHour || null == everyTeaGetHour + ){ return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交"); } return APIBaseResponse.success(); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseClaVo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseClaVo.java similarity index 97% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseClaVo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseClaVo.java index b55423b..168d5dd 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseClaVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseClaVo.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseType.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseType.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseType.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseType.java index 627f0fa..e9878e1 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseType.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/ScCourseType.java @@ -1,5 +1,6 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -25,7 +26,7 @@ import java.util.Date; public class ScCourseType implements Serializable { - @TableId(value = "course_type_id") + @TableId(value = "course_type_id",type = IdType.AUTO) private Long courseTypeId; /** @@ -52,6 +53,9 @@ public class ScCourseType implements Serializable { @TableField("in_use") private String inUse; + @TableField("remark") + private String remark; + /** * 创建者 */ @@ -63,4 +67,7 @@ public class ScCourseType implements Serializable { */ @TableField("create_time") private Date createTime; + + + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddScCourseCla.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqAddScCourseCla.java similarity index 79% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddScCourseCla.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqAddScCourseCla.java index 4ccda8b..42e6499 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqAddScCourseCla.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqAddScCourseCla.java @@ -1,11 +1,9 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.cla; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.school.course.domain.ScCourseCla; import lombok.Data; -import java.math.BigDecimal; - /** * 新增课程 * @@ -29,8 +27,6 @@ public class ReqAddScCourseCla { private String recruitStatus; - private BigDecimal everyStuLoseHour; - private String openDate; private String closeDate; @@ -52,8 +48,6 @@ public class ReqAddScCourseCla { cla.setClaColor(claColor); cla.setCapacity(capacity); cla.setRecruitStatus(recruitStatus); - cla.setEveryStuLoseHour(everyStuLoseHour); - cla.setEveryTeaGetHour(everyStuLoseHour); cla.setOpenDate(openDate); cla.setCloseDate(closeDate); cla.setMemo(memo); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/cla/ReqClaCount.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqClaCount.java similarity index 68% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/cla/ReqClaCount.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqClaCount.java index cd98a5e..0dc6ebe 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/cla/ReqClaCount.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqClaCount.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req.cla; +package com.ruoyi.school.course.domain.req.cla; -import cn.xluobo.core.page.ReqDeptCondition; +import com.ruoyi.common.page.ReqDeptCondition; import lombok.Builder; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqCourseClaSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqCourseClaSelect.java similarity index 82% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqCourseClaSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqCourseClaSelect.java index 5f08acf..d387d76 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqCourseClaSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqCourseClaSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.cla; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseCla.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqSearchScCourseCla.java similarity index 71% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseCla.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqSearchScCourseCla.java index 4d63372..1e826d4 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseCla.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/cla/ReqSearchScCourseCla.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.cla; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; import java.io.Serializable; @@ -16,10 +16,6 @@ public class ReqSearchScCourseCla extends ReqPageBase implements Serializable { private String claName; private String courseTime; private Long departId; - /** - * 收费模式 - */ - private String chargeType; private String tenantId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqAddScCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqAddScCourse.java new file mode 100644 index 0000000..c01bf42 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqAddScCourse.java @@ -0,0 +1,81 @@ +package com.ruoyi.school.course.domain.req.course; + +import com.ruoyi.core.api.APIBaseResponse; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; + +/** + * 录入课程 + * + * @author :zhangbaoyu + * @date :Created in 2020/7/8 20:34 + */ +@Data +public class ReqAddScCourse { + + /** + * 课程名 + */ + private String courseName; + + /** + * 课程类型 + */ + private Long courseTypeId; + + /** + * 教学模式 + */ + private String teachingMode; + + /** + * 课程简介 + */ + private String courseIntro; + + /** + * 上课校区 所有 或 部分 all part + */ + private String courseCampus; + + /** + * 上课校区 + */ + private Long[] partCampus; + + /** + * 教练课时费 + */ + private BigDecimal claFee; + + private BigDecimal tuitionFee; + + /** + * 参数校验 + * + * @return + */ + public APIBaseResponse checkParam() { + if (StringUtils.isEmpty(courseName)) { + return APIBaseResponse.fail("请输入课程名称"); + } else if (StringUtils.isEmpty(teachingMode)) { + return APIBaseResponse.fail("请选择教学模式"); + } + + if (StringUtils.isEmpty(courseCampus)) { + return APIBaseResponse.fail("请选择上课校区"); + } + if ("部分校区".equals(courseCampus) && null == partCampus) { + return APIBaseResponse.fail("请选择上课校区"); + } + if ("部分校区".equals(courseCampus) && partCampus.length == 0) { + return APIBaseResponse.fail("请选择上课校区"); + } + if ("全部校区".equals(courseCampus) ) { + partCampus=null; + } + return APIBaseResponse.success(); + } +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqBusinessOrderCourseDetail.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqBusinessOrderCourseDetail.java similarity index 76% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqBusinessOrderCourseDetail.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqBusinessOrderCourseDetail.java index 4becc7a..a4f9a32 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqBusinessOrderCourseDetail.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqBusinessOrderCourseDetail.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.course; import lombok.Data; @@ -13,6 +13,7 @@ public class ReqBusinessOrderCourseDetail { private Long studentId; private Long[] courseIds; + private Long cardTypeId; private Long deptId; } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqChangeScCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqChangeScCourse.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqChangeScCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqChangeScCourse.java index 2e0f258..a5c363a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqChangeScCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqChangeScCourse.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req.course; +package com.ruoyi.school.course.domain.req.course; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIBaseResponse; import lombok.Data; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourse.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourse.java index 2df2490..547ae4a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourse.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.course; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseType.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourseType.java similarity index 66% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseType.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourseType.java index a3f6c7e..2a49052 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSearchScCourseType.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSearchScCourseType.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.course; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; import java.io.Serializable; @@ -12,4 +12,6 @@ import java.io.Serializable; @Data public class ReqSearchScCourseType extends ReqPageBase implements Serializable { private String courseType; + + private Long[] typeIds; } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSelect.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSelect.java index 41401a9..c532641 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/ReqSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ReqSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.req; +package com.ruoyi.school.course.domain.req.course; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCharge.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ScCourseCharge.java similarity index 91% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCharge.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ScCourseCharge.java index dc59361..0994588 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseCharge.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/course/ScCourseCharge.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain.req.course; -import cn.xluobo.business.sc.course.enums.ChargeDateUnitEnum; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.school.course.enums.ChargeDateUnitEnum; +import com.ruoyi.school.course.enums.CourseChargeTypeEnum; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqClaTimeCount.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqClaTimeCount.java similarity index 83% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqClaTimeCount.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqClaTimeCount.java index 9d88f6d..d03ec5d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqClaTimeCount.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqClaTimeCount.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req.time; +package com.ruoyi.school.course.domain.req.time; -import cn.xluobo.core.page.ReqDeptCondition; +import com.ruoyi.common.page.ReqDeptCondition; import com.ruoyi.common.utils.SecurityUtils; import lombok.Builder; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchClaTime.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchClaTime.java similarity index 91% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchClaTime.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchClaTime.java index f90c532..0d77c21 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchClaTime.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchClaTime.java @@ -1,10 +1,11 @@ -package cn.xluobo.business.sc.course.domain.req.time; +package com.ruoyi.school.course.domain.req.time; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; import org.joda.time.DateTime; import java.io.Serializable; +import java.util.HashSet; /** * @author :zhangbaoyu @@ -29,7 +30,7 @@ public class ReqSearchClaTime implements Serializable { private String claId; // 学生 - private String studentId; + private Long studentId; private Long teacherId; @@ -60,6 +61,9 @@ public class ReqSearchClaTime implements Serializable { private String tenantId; + + private HashSet courseIds; + public String getTenantId(){ return SecurityUtils.getLoginUser().getNowTenantId(); } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeAttend.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeAttend.java similarity index 82% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeAttend.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeAttend.java index f9beb34..8e0bd58 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeAttend.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeAttend.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req.time; +package com.ruoyi.school.course.domain.req.time; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; import java.io.Serializable; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeRule.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeRule.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeRule.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeRule.java index d14bea0..4141edc 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/time/ReqSearchScClaTimeRule.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/req/time/ReqSearchScClaTimeRule.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.req.time; +package com.ruoyi.school.course.domain.req.time; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; import org.apache.commons.lang3.StringUtils; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/cla/RespClaAllDetailInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespClaAllDetailInfo.java similarity index 55% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/cla/RespClaAllDetailInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespClaAllDetailInfo.java index ee8bb1b..af33c68 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/cla/RespClaAllDetailInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespClaAllDetailInfo.java @@ -1,10 +1,8 @@ -package cn.xluobo.business.sc.course.domain.resp.cla; +package com.ruoyi.school.course.domain.resp.cla; -import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseCharge; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.business.sc.course.repo.model.ScCourseClaVo; -import cn.xluobo.business.sc.course.repo.model.ScCourseVo; +import com.ruoyi.school.course.domain.ScCourseClaVo; +import com.ruoyi.school.course.domain.resp.course.RespBusinessChooseCourseCharge; +import com.ruoyi.school.course.domain.resp.course.ScCourseVo; import lombok.Builder; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaInfo.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaInfo.java index afbbc9b..1cc63af 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaInfo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp; +package com.ruoyi.school.course.domain.resp.cla; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaSelectInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaSelectInfo.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaSelectInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaSelectInfo.java index 5637f65..7b14421 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespCourseClaSelectInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/cla/RespCourseClaSelectInfo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp; +package com.ruoyi.school.course.domain.resp.cla; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseCharge.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseCharge.java similarity index 91% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseCharge.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseCharge.java index dc2b2cc..f4aa027 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseCharge.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseCharge.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp; +package com.ruoyi.school.course.domain.resp.course; import lombok.Builder; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseInfo.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseInfo.java index 6ceb246..c603058 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessChooseCourseInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessChooseCourseInfo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp; +package com.ruoyi.school.course.domain.resp.course; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -18,9 +18,9 @@ import java.util.List; public class RespBusinessChooseCourseInfo { @JsonSerialize(using = ToStringSerializer.class) - private Long courseId; + private Long cardTypeId; - private String courseName; + private String cardTypeName; private Long deptId; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessCourseInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessCourseInfo.java similarity index 83% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessCourseInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessCourseInfo.java index 77a2a81..db10fb0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/RespBusinessCourseInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespBusinessCourseInfo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp; +package com.ruoyi.school.course.domain.resp.course; import lombok.Builder; import lombok.Data; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseSelect.java new file mode 100644 index 0000000..c28eb02 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseSelect.java @@ -0,0 +1,29 @@ +package com.ruoyi.school.course.domain.resp.course; + +import com.ruoyi.school.course.domain.ScCourse; +import lombok.Builder; +import lombok.Data; + + +@Data +@Builder +public class RespCourseSelect { + + private Long id; + + private String label; + + + public RespCourseSelect() { + } + + public RespCourseSelect(Long id, String label) { + this.id = id; + this.label = label; + } + + public RespCourseSelect(ScCourse course){ + this.id=course.getCourseId(); + this.label=course.getCourseName(); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseTypeSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseTypeSelect.java new file mode 100644 index 0000000..fb9b41b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespCourseTypeSelect.java @@ -0,0 +1,44 @@ +package com.ruoyi.school.course.domain.resp.course; + +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.member.domain.ScMemberCardCourses; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + + +@Data +@Builder +public class RespCourseTypeSelect { + + private Long id; + + private String label; + + private List courseList; + + private Long[] selectedCourses; + + + public RespCourseTypeSelect() { + } + + public RespCourseTypeSelect(Long id, String label,List courseList,Long[] selectedCourses) { + this.id = id; + this.label = label; + this.courseList=courseList; + this.selectedCourses=selectedCourses; + } + + public RespCourseTypeSelect(ScCourseType type){ + this.id=type.getCourseTypeId(); + this.label=type.getCourseType(); + } + public RespCourseTypeSelect(ScMemberCardCourses type){ + this.id=type.getCourseTypeId(); + this.label=type.getCourseType(); + this.selectedCourses=type.getCourses(); + } + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespScCourseDetail.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespScCourseDetail.java similarity index 65% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespScCourseDetail.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespScCourseDetail.java index 161afc6..e8199e9 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespScCourseDetail.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespScCourseDetail.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.resp.course; +package com.ruoyi.school.course.domain.resp.course; -import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourse; +import com.ruoyi.school.course.domain.req.course.ReqAddScCourse; import lombok.Data; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespSearchCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespSearchCourse.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespSearchCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespSearchCourse.java index 3c7890b..0d95bd0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/course/RespSearchCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/RespSearchCourse.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.course; +package com.ruoyi.school.course.domain.resp.course; import lombok.Data; @@ -65,4 +65,5 @@ public class RespSearchCourse implements Serializable { private Long studentCourseId; private BigDecimal claFee;//教练课时费 + private String storeNames; } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseVo.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/ScCourseVo.java similarity index 97% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseVo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/ScCourseVo.java index 3bf1aee..b939296 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/model/ScCourseVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/course/ScCourseVo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.model; +package com.ruoyi.school.course.domain.resp.course; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeBookItem.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeBookItem.java new file mode 100644 index 0000000..cae7f76 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeBookItem.java @@ -0,0 +1,64 @@ +package com.ruoyi.school.course.domain.resp.time; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 预约排课信息 + */ +@Data +public class ClaTimeBookItem { + + private Long courseTimeId; + private Long bookId; + + private String claName; + + private String storeName; + + private String pic; + + // 日期 + private String claDate; + + // 星期 + private String weekDay; + + private String startTime; + + private String endTime; + + // 教室 + private String roomName; + + private String claColor; + + // 上课状态 1:待上课 2:已上课 + private String claTimeStatus; + //预约状态:0->预约中;1->教练确认;2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价; + private int bookStatus; + + //预约时间 + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date createTime; + + private String code; + private String qrCode; + + private String courseName; + + //老师信息 + private Long teacherId; + private String teacherName; + + //*0未签到 1签到 + private int checkIn; + + //{status:1,time:2025-08-05 12:00:00} + private List statusTime; +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeCalendarItem.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeCalendarItem.java similarity index 89% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeCalendarItem.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeCalendarItem.java index 204c074..908c648 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeCalendarItem.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeCalendarItem.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; -import cn.xluobo.core.constants.SysConstant; +import com.ruoyi.core.constants.SysConstant; import lombok.Data; /** @@ -48,7 +48,6 @@ public class ClaTimeCalendarItem { this.startTime = respClaTime.getStartTime().substring(0,5); this.endTime = respClaTime.getEndTime().substring(0,5); this.staffName = respClaTime.getStaffName(); - this.studentCount = respClaTime.getStudentCount(); this.roomName = respClaTime.getRoomName(); this.claColor = respClaTime.getClaColor(); this.claTimeStatus = respClaTime.getStatus(); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeColumnTitle.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeColumnTitle.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeColumnTitle.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeColumnTitle.java index 3c83c90..bc15016 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeColumnTitle.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeColumnTitle.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeContainer.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeContainer.java similarity index 86% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeContainer.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeContainer.java index ce0b173..f6e31fd 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/ClaTimeContainer.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/ClaTimeContainer.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespBusinessClaTimeCalendar.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespBusinessClaTimeCalendar.java similarity index 85% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespBusinessClaTimeCalendar.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespBusinessClaTimeCalendar.java index 530d6a5..f5c034e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespBusinessClaTimeCalendar.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespBusinessClaTimeCalendar.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTime.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTime.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTime.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTime.java index 1c9b0a9..0ab0232 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTime.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTime.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeAttend.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeAttend.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeAttend.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeAttend.java index db0dce0..f3b0a2e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeAttend.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeAttend.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeCalendar.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeCalendar.java similarity index 82% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeCalendar.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeCalendar.java index 853de05..db47745 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeCalendar.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeCalendar.java @@ -1,12 +1,10 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; -import java.math.BigDecimal; import java.util.Date; /** @@ -107,23 +105,7 @@ public class RespClaTimeCalendar { @TableField("real_end_time") private String realEndTime; - /** - * 课时变更数量 - */ - @TableField("pay_hour") - private BigDecimal payHour; - /** - * 总课时消耗 - */ - @TableField("pay_total_hour") - private BigDecimal payTotalHour; - - /** - * 总学费消耗 - */ - @TableField("pay_total_fee") - private BigDecimal payTotalFee; /** * 来源 1:重复排课 2:未排课上课 3:单个新增 @@ -155,17 +137,7 @@ public class RespClaTimeCalendar { @TableField("at_class_cnt") private Integer atClassCnt; - /** - * 请假人数 - */ -// @TableField("leave_cnt") -// private Integer leaveCnt; - /** - * 缺勤人数 - */ - @TableField("out_cnt") - private Integer outCnt; /** * 备注 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeRule.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeRule.java similarity index 96% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeRule.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeRule.java index 86b120c..ef32508 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/resp/time/RespClaTimeRule.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/domain/resp/time/RespClaTimeRule.java @@ -1,6 +1,5 @@ -package cn.xluobo.business.sc.course.domain.resp.time; +package com.ruoyi.school.course.domain.resp.time; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/ChargeDateUnitEnum.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ChargeDateUnitEnum.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/ChargeDateUnitEnum.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ChargeDateUnitEnum.java index e24576b..da2ac57 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/ChargeDateUnitEnum.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ChargeDateUnitEnum.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.enums; +package com.ruoyi.school.course.enums; /** * 按时间收费周期枚举 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeAttendStatusEnums.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeAttendStatusEnums.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeAttendStatusEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeAttendStatusEnums.java index bd03653..f7cad5e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeAttendStatusEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeAttendStatusEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.enums; +package com.ruoyi.school.course.enums; /** * 到课状态 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRepeatTypeEnums.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRepeatTypeEnums.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRepeatTypeEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRepeatTypeEnums.java index b9cba7f..f5bfdf0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRepeatTypeEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRepeatTypeEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.enums; +package com.ruoyi.school.course.enums; /** * 排课 重复方式 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRuleTypeEnums.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRuleTypeEnums.java similarity index 91% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRuleTypeEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRuleTypeEnums.java index ccbb261..d0e09a7 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeRuleTypeEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeRuleTypeEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.enums; +package com.ruoyi.school.course.enums; /** * @author :zhangbaoyu diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeSourceEnums.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeSourceEnums.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeSourceEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeSourceEnums.java index 28e8403..3eff201 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeSourceEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeSourceEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.enums; +package com.ruoyi.school.course.enums; /** * 排课 来源 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeStatusEnums.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeStatusEnums.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeStatusEnums.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeStatusEnums.java index 78e27d3..5b90cee 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/enums/ClaTimeStatusEnums.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/ClaTimeStatusEnums.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.repo.enums; +package com.ruoyi.school.course.enums; /** * 排课 状态 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/CourseChargeTypeEnum.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/CourseChargeTypeEnum.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/CourseChargeTypeEnum.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/enums/CourseChargeTypeEnum.java index ee7d316..96d519e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/enums/CourseChargeTypeEnum.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/enums/CourseChargeTypeEnum.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.enums; +package com.ruoyi.school.course.enums; /** * 课程收费模式 diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseLogMapper.java new file mode 100644 index 0000000..15a4b0d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseLogMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.school.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.course.domain.ScBookCourseLog; + +/** + *

+ * 排课信息 Mapper 接口 + *

+ * + * + * + */ +public interface ScBookCourseLogMapper extends BaseMapper { + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseMapper.java new file mode 100644 index 0000000..f7ceb53 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScBookCourseMapper.java @@ -0,0 +1,22 @@ +package com.ruoyi.school.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.course.domain.ScBookCourse; +import com.ruoyi.school.course.domain.resp.time.ClaTimeBookItem; + +import java.util.List; + +/** + *

+ * 排课信息 Mapper 接口 + *

+ * + * + * + */ +public interface ScBookCourseMapper extends BaseMapper { + + + List getListByStudent(Long studentId); + ClaTimeBookItem getDetail(Long bookId); +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeAttendMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeAttendMapper.java similarity index 88% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeAttendMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeAttendMapper.java index 93880b4..343ea0d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeAttendMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeAttendMapper.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.course.repo.mapper; +package com.ruoyi.school.course.mapper; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeAttend; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeAttend; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.school.course.domain.ScClaTimeAttend; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeAttend; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeMapper.java similarity index 61% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeMapper.java index 7e7c726..7552e76 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeMapper.java @@ -1,12 +1,12 @@ -package cn.xluobo.business.sc.course.repo.mapper; +package com.ruoyi.school.course.mapper; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchClaTime; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTime; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeCalendar; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; +import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; +import com.ruoyi.school.course.domain.resp.time.RespClaTime; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeCalendar; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -45,4 +45,10 @@ public interface ScClaTimeMapper extends BaseMapper { */ Integer selectClaTimeCount(ReqClaTimeCount reqClaTimeCount); + Integer selectBookCount(@Param("ruleId") Long ruleId + ,@Param("claId") Long claId + ,@Param("courseTimeId") String courseTimeId + , @Param("tenantId") String tenantId ); + + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeRuleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeRuleMapper.java similarity index 81% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeRuleMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeRuleMapper.java index fcf9a94..67ec1c2 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScClaTimeRuleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScClaTimeRuleMapper.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.course.repo.mapper; +package com.ruoyi.school.course.mapper; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.school.course.domain.ScClaTimeRule; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeRule; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseChargeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseChargeMapper.java new file mode 100644 index 0000000..b6eedb8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseChargeMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.school.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.course.domain.req.course.ScCourseCharge; + + +public interface ScCourseChargeMapper extends BaseMapper { + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseClaMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseClaMapper.java similarity index 60% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseClaMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseClaMapper.java index 0edaad8..91fcf94 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseClaMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseClaMapper.java @@ -1,13 +1,14 @@ -package cn.xluobo.business.sc.course.repo.mapper; - -import cn.xluobo.business.sc.course.domain.req.ReqCourseClaSelect; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseCla; -import cn.xluobo.business.sc.course.domain.req.cla.ReqClaCount; -import cn.xluobo.business.sc.course.domain.resp.RespCourseClaInfo; -import cn.xluobo.business.sc.course.domain.resp.RespCourseClaSelectInfo; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.core.page.RespPage; +package com.ruoyi.school.course.mapper; + import com.baomidou.mybatisplus.annotation.SqlParser; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.school.course.domain.req.cla.ReqClaCount; +import com.ruoyi.school.course.domain.req.cla.ReqCourseClaSelect; +import com.ruoyi.school.course.domain.req.cla.ReqSearchScCourseCla; +import com.ruoyi.school.course.domain.resp.cla.RespCourseClaInfo; +import com.ruoyi.school.course.domain.resp.cla.RespCourseClaSelectInfo; +import com.ruoyi.school.student.domain.resp.RespCourseClaStudent; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -29,7 +30,7 @@ public interface ScCourseClaMapper extends com.baomidou.mybatisplus.core.mapper. * @param page * @return */ - List selectClaList(@Param("reqSearchScCourseCla")ReqSearchScCourseCla reqSearchScCourseCla, @Param("page")RespPage page); + List selectClaList(@Param("reqSearchScCourseCla") ReqSearchScCourseCla reqSearchScCourseCla, @Param("page") RespPage page); /** * 班级select @@ -59,4 +60,7 @@ public interface ScCourseClaMapper extends com.baomidou.mybatisplus.core.mapper. * @return */ Integer selectStudentCnt(Long claId); + + + List selectStudenForClaTime(@Param("courseTimeId") String courseTimeId); } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseMapper.java similarity index 73% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseMapper.java index ca4f996..d0a3656 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseMapper.java @@ -1,13 +1,12 @@ -package cn.xluobo.business.sc.course.repo.mapper; +package com.ruoyi.school.course.mapper; -import cn.xluobo.business.sc.course.domain.export.ExpCourse; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.core.page.ReqDeptCondition; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.annotation.SqlParser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.common.page.ReqDeptCondition; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; +import com.ruoyi.school.course.domain.ScCourse; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -47,7 +46,7 @@ public interface ScCourseMapper extends BaseMapper { * @param reqSearchScCourse * @return */ - List selectCourseForExport(@Param("reqSearchScCourse") ReqSearchScCourse reqSearchScCourse); +// List selectCourseForExport(@Param("reqSearchScCourse") ReqSearchScCourse reqSearchScCourse); /** * 课程数量 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseTypeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseTypeMapper.java similarity index 66% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseTypeMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseTypeMapper.java index a33da77..596e30d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapper/ScCourseTypeMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/mapper/ScCourseTypeMapper.java @@ -1,6 +1,7 @@ -package cn.xluobo.business.sc.course.repo.mapper; +package com.ruoyi.school.course.mapper; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; + +import com.ruoyi.school.course.domain.ScCourseType; /** *

diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeRuleService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeRuleService.java similarity index 76% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeRuleService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeRuleService.java index c7c4e06..345740a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeRuleService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeRuleService.java @@ -1,25 +1,21 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; import cn.hutool.core.bean.BeanUtil; -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.base.service.IScRoomService; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeRuleMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRuleVo; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.domain.*; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeRule; +import com.ruoyi.school.course.mapper.ScClaTimeRuleMapper; +import com.ruoyi.school.room.domain.ScRoom; +import com.ruoyi.school.room.service.IScRoomService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -62,6 +58,7 @@ public class BusinessClaTimeRuleService { * @param claTimeRule * @return */ + @Transactional public APIResponse addClaTimeRule(ScClaTimeRule claTimeRule) { if (!claTimeRule.checkParam()) { return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); @@ -108,6 +105,7 @@ public class BusinessClaTimeRuleService { * @param claTimeRule * @return */ + @Transactional public APIResponse updateClaTimeRule(ScClaTimeRule claTimeRule) { if (null == claTimeRule.getRuleId()) { return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); @@ -115,16 +113,22 @@ public class BusinessClaTimeRuleService { if (!claTimeRule.checkParam()) { return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); } + LoginUser loginUser = SecurityUtils.getLoginUser(); + Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null); + if(bookCount.intValue()>0){ + return APIResponse.toExceptionResponse("无法修改:相关课表中有学员预约!"); + } // 教室 if(null != claTimeRule.getRoomId()) { ScRoom room = roomService.getById(claTimeRule.getRoomId()); claTimeRule.setRoomName(room.getRoomName()); } - LoginUser loginUser = SecurityUtils.getLoginUser(); + claTimeRule.setLastUpdateUser(loginUser.getUserId()); claTimeRule.setLastUpdateTime(new Date()); + boolean updateScCourseType = claTimeRuleService.updateById(claTimeRule); - //claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); + claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); saveBatchClaTime(claTimeRule); return APIResponse.toOkResponse(); @@ -136,20 +140,30 @@ public class BusinessClaTimeRuleService { * @param ruleId * @return */ + @Transactional public APIResponse deleteById(Long ruleId) { if (null == ruleId) { return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); } ScClaTimeRule claTimeRule = claTimeRuleService.getById(ruleId); + //是否有学员预约 + LoginUser loginUser = SecurityUtils.getLoginUser(); + Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null); + if(bookCount.intValue()>0){ + return APIResponse.toExceptionResponse("无法删除:相关课表中有学员预约!"); + + } + claTimeRuleService.removeById(ruleId); - LoginUser loginUser = SecurityUtils.getLoginUser(); - //claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); + claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); return APIResponse.toOkResponse(); } + @Autowired + private IScCourseService courseService; /** * 保存 具体上课日期 * @@ -158,7 +172,8 @@ public class BusinessClaTimeRuleService { private void saveBatchClaTime(ScClaTimeRule claTimeRule) { Long claId = claTimeRule.getClaId(); ScCourseCla courseCla = courseClaService.getById(claId); - BigDecimal everyStuLoseHour = courseCla.getEveryStuLoseHour(); + ScCourse course=courseService.getById(courseCla.getCourseId()); + List claTimeList = claTimeRuleService.getClaTimeListByRule(claTimeRule, null); @@ -169,7 +184,10 @@ public class BusinessClaTimeRuleService { claTime.setClaDate(item.getClaDate()); claTime.setStartTime(item.getClaTimeBegin()); claTime.setEndTime(item.getClaTimeEnd()); - claTime.setPayHour(everyStuLoseHour); + claTime.setClaDuration(claTimeRule.getClaDuration()); + claTime.setAtClassCnt(claTimeRule.getAtClassCnt()); + claTime.setLessCnt(claTimeRule.getLessCnt()); + claTime.setTeacherFee(course.getClaFee()); // 排课 claTime.setSource("1"); // 待上课 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeService.java similarity index 60% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeService.java index 8e675e6..e97d3d2 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessClaTimeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessClaTimeService.java @@ -1,44 +1,43 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; import cn.hutool.core.bean.BeanUtil; -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.base.service.IScRoomService; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchClaTime; -import cn.xluobo.business.sc.course.domain.resp.time.*; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeStatusEnums; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeMapper; -import cn.xluobo.business.sc.course.repo.model.*; -import cn.xluobo.business.sc.student.domain.req.ReqClaTimeAttend; -import cn.xluobo.business.sc.student.service.BusinessScStudentCourseService; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sys.admin.service.ISysDeptService; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.constants.SysConstant; -import cn.xluobo.core.page.RespPage; -import cn.xluobo.core.utils.DateUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.core.constants.SysConstant; +import com.ruoyi.core.utils.DateUtil; +import com.ruoyi.school.course.domain.*; +import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; +import com.ruoyi.school.course.domain.resp.time.*; +import com.ruoyi.school.course.enums.ClaTimeStatusEnums; +import com.ruoyi.school.course.mapper.ScBookCourseLogMapper; +import com.ruoyi.school.course.mapper.ScBookCourseMapper; +import com.ruoyi.school.course.mapper.ScClaTimeMapper; +import com.ruoyi.school.member.domain.ScMemberCardTypes; +import com.ruoyi.school.member.mapper.ScMemberCardTypesMapper; +import com.ruoyi.school.room.domain.ScRoom; +import com.ruoyi.school.room.mapper.ScRoomMapper; +import com.ruoyi.school.room.service.IScRoomService; +import com.ruoyi.school.student.domain.req.ReqClaTimeAttend; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; -/** - * @author :zhangbaoyu - * @date :Created in 2020/9/16 17:05 - */ + @Service @Transactional public class BusinessClaTimeService { @@ -54,14 +53,14 @@ public class BusinessClaTimeService { @Autowired private IScCourseService courseService; @Autowired - private ISysDeptService deptService; - @Autowired - private IScClaTimeAttendService claTimeAttendService; + private ScBookCourseMapper bookCourseMapper; @Autowired - private IScStudentCourseService studentCourseService; + private ScRoomMapper roomMapper; @Autowired - private BusinessScStudentCourseService businessScStudentCourseService; + private ScBookCourseLogMapper bookCourseLogMapper; + @Autowired + private ScMemberCardTypesMapper cardTypesMapper; /** * 按周获取课表 * @@ -95,7 +94,7 @@ public class BusinessClaTimeService { claTimeCalendarMap.put(claTimeKey, weekDayMap); }); - // 获取排课信息 + List respClaTimeList = claTimeMapper.selectListForCalendar(reqSearchClaTime); // 将排课信息 入到 claTimeCalendarMap @@ -185,6 +184,37 @@ public class BusinessClaTimeService { return claTimeMapper.selectListForCalendar(reqSearchClaTime); } + + + + /** + * 获取会员的排课 + * + * @param + * @return + */ + public APIResponse searchMemberId(ReqSearchClaTime reqSearchClaTime) { + + //会员卡 会员卡项 课程种类 + // 课程id + List courseList= cardTypesMapper.getCourseIdByMemberId(reqSearchClaTime.getStudentId()); + List memberCardTypes= cardTypesMapper.getCourseIdsByMemberId(reqSearchClaTime.getStudentId()); + + List ids= courseList.stream().map(it -> it.getCourseId()).collect(Collectors.toList()); + HashSet courseIds=new HashSet<>(); + courseIds.addAll(ids); + for (ScMemberCardTypes type : memberCardTypes) { + if (type.getCourseTypes()!=null){ + courseIds.addAll(Arrays.asList(type.getCourseTypes())); + } + } + if (courseIds.isEmpty()){ + throw new RuntimeException("学员名下无课程"); + } + reqSearchClaTime.setCourseIds(courseIds); + return searchListForCalendar(reqSearchClaTime); + } + /** * 获取上课记录 * @@ -215,9 +245,10 @@ public class BusinessClaTimeService { } ScCourseCla courseCla = claService.getById(claTime.getClaId()); - claTime.setPayHour(courseCla.getEveryStuLoseHour()); + ScCourse course=courseService.getById(courseCla.getCourseId()); claTime.setSource("3"); LoginUser loginUser = SecurityUtils.getLoginUser(); + claTime.setTeacherFee(course.getClaFee()); claTime.setCreateUser(loginUser.getUserId()); claTime.setCreateTime(new Date()); claTimeService.save(claTime); @@ -266,7 +297,12 @@ public class BusinessClaTimeService { ScCourseCla courseCla = claService.getById(claTime.getClaId()); LoginUser loginUser = SecurityUtils.getLoginUser(); + //是否有学员预约 + Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId()); + if(bookCount.intValue()>0){ + return APIResponse.toExceptionResponse("无法修改:有学员预约,请联系学员取消预约后再作修改!"); + } UpdateWrapper uw = new UpdateWrapper(); uw.eq("course_time_id", claTime.getCourseTimeId()); uw.eq("status", ClaTimeStatusEnums.WAIT_CLASS.getStatus()); @@ -280,7 +316,6 @@ public class BusinessClaTimeService { uw.set("end_time", claTime.getEndTime()); uw.set("teacher_id", claTime.getTeacherId()); uw.set("room_id", claTime.getRoomId()); - uw.set("pay_hour", courseCla.getEveryStuLoseHour()); uw.set("class_theme", claTime.getClassTheme()); uw.set("last_update_user", loginUser.getUserId()); uw.set("last_update_time", new Date()); @@ -308,127 +343,101 @@ public class BusinessClaTimeService { if ("2".equals(status)) { return APIResponse.toExceptionResponse("已上课,无法删除"); } + //是否有学员预约 + Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId().toString()); + if(bookCount.intValue()>0){ + return APIResponse.toExceptionResponse("无法删除:相关课表中有学员预约,请联系学员取消预约后再进行操作!"); + } claTimeService.removeById(courseTimeId); return APIResponse.toOkResponse(); } - /** - * 变更 已记上课 信息 - * @param reqClaTimeAttend - * @return - */ - public APIResponse changeHadClaTimeAttend(ReqClaTimeAttend reqClaTimeAttend) { - APIResponse checkParam = reqClaTimeAttend.checkParamForUpdateHadClaTime(); - if (!checkParam.isSuccess()) { - return checkParam; + //上课 + public APIResponse confirmCla(ReqClaTimeAttend reqClaTimeAttend){ + + //本节课的预约 + List bookCourses=bookCourseMapper.selectList(new QueryWrapper() + .in("book_status",0,1,2) + .eq("course_time_id",reqClaTimeAttend.getCourseTimeId()) + ); + if (bookCourses.size()<1)throw new RuntimeException("无学员预约!"); + //判断预约状态(未确认) +// Long needCheck= bookCourses.stream() +// .filter(l-> StrUtil.containsAny("0,1",l.getBookStatus()+"")).count(); +// if (needCheck>0){ +// return new RestResponse().setSuccess(false).setMessage("请检查学员预约状态!"); +// } + + //判断是否有学员未签到 + Long notCheckIn=bookCourses.stream().filter(l->l.getCheckIn()==0).count(); + if (notCheckIn>0){ + return APIResponse.toExceptionResponse("请确认学员签到情况,如无法到课请联系学员取消预约!"); } - LoginUser loginUser = SecurityUtils.getLoginUser(); + //签到学员 + List checkIn=bookCourses.stream().filter(l->l.getCheckIn()==1).collect(Collectors.toList()); - Long courseTimeId = reqClaTimeAttend.getCourseTimeId(); - ScClaTime claTime = claTimeService.getById(courseTimeId); - if (!ClaTimeStatusEnums.HAD_CLASS.getStatus().equals(claTime.getStatus())) { - return APIResponse.toExceptionResponse("非已上课排课,无法变更!"); + ScClaTime claTime=claTimeMapper.selectById(reqClaTimeAttend.getCourseTimeId()); + //签到数量是否少于开课人数 + if (claTime.getLessCnt()>checkIn.size()){ + return APIResponse.toExceptionResponse("学员数量到不到开课标准!"); } - // 变更状态为待上课 - ScClaTime updateClaTime = new ScClaTime(); - updateClaTime.setCourseTimeId(courseTimeId); - updateClaTime.setStatus(ClaTimeStatusEnums.WAIT_CLASS.getStatus()); - claTimeService.updateById(updateClaTime); - - Long claId = claTime.getClaId(); - ScCourseCla courseCla = claService.getById(claId); - if(null == courseCla) { - return APIResponse.toExceptionResponse("无法获取班级,无法删除"); - } - Long courseId = courseCla.getCourseId(); - ScCourse scCourse = courseService.getById(courseId); - if(null == scCourse) { - return APIResponse.toExceptionResponse("无法获取课程,无法删除"); - } - SysDept sysDept = deptService.getById(courseCla.getDepartId()); - if (null == sysDept) { - return APIResponse.toExceptionResponse("无法获取校区信息,请稍后重试"); + //教室使用时间及费用 + Date startTimeDate= cn.hutool.core.date.DateUtil.parseTime(reqClaTimeAttend.getRealStartTime()+":00"); + Date endTimeDate= cn.hutool.core.date.DateUtil.parseTime(reqClaTimeAttend.getRealEndTime()+":00"); + + BigDecimal venueFee=new BigDecimal(0); + double roomUsageTime=0.0; + + if (ObjectUtil.isNotEmpty(claTime.getRoomId())){ + ScRoom room= roomMapper.selectById(reqClaTimeAttend.getRoomId()); + //上课时间段 >0.5小时,按1小时计 + roomUsageTime= cn.hutool.core.date.DateUtil.between(startTimeDate, endTimeDate, DateUnit.MINUTE)/ 60.0; + int c=(int)roomUsageTime; + double d=roomUsageTime-c; + if (d > 0.5) { + roomUsageTime= c + 1.0; + } else if (d > 0) { + roomUsageTime= c + 0.5; + } + venueFee= room.getVenueFee().add(new BigDecimal(roomUsageTime)); } - - List dbAttendList = claTimeAttendService.getAttendList(courseTimeId); - - // 删除原上课记录 - for (ScClaTimeAttend claTimeAttend : dbAttendList) { - // 学员日志 使用 - claTime.setCourseName(scCourse.getCourseName()); - claTime.setClaName(courseCla.getClaName()); - claTime.setDeptName(sysDept.getDeptName()); - // 恢复学员课时 - studentCourseService.recoverStudentCourseHour(claTimeAttend, claTime, loginUser); + //更改预约状态 + bookCourseMapper.update(null,new UpdateWrapper() + .eq("course_time_id",reqClaTimeAttend.getCourseTimeId()) + .eq("check_in","1") + .eq("book_status",2) + .set("book_status","4")); + //添加预约状态记录 + for (ScBookCourse bookCours : checkIn) { + addBookLogFromApp(4,bookCours.getId()); } + claTime.setRealClaDate(reqClaTimeAttend.getRealClaDate()); + claTime.setRealStartTime(reqClaTimeAttend.getRealStartTime()); + claTime.setRealEndTime(reqClaTimeAttend.getRealEndTime()); + claTime.setTeacherId(reqClaTimeAttend.getTeacherId()); + claTime.setRoomId(reqClaTimeAttend.getRoomId()); + claTime.setMemo(reqClaTimeAttend.getMemo()); + claTime.setClassTheme(reqClaTimeAttend.getClassTheme()); + claTime.setVenueFee(venueFee); + claTime.setRoomUsageTime(roomUsageTime); + claTime.setStatus("2"); + claTime.setLastUpdateTime(new Date()); + claTimeMapper.updateById(claTime); - // 删除上课记录明细 cla_time_attend - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("course_time_id", courseTimeId); - claTimeAttendService.remove(uw); - - // 重新记上课 - return businessScStudentCourseService.claTimeAttend(reqClaTimeAttend); + return APIResponse.toOkResponse(); } - /** - * 删除已上课记录 - * - * @param courseTimeId - * @return - */ - public APIResponse deleteHadClaTimeAttend(Long courseTimeId) { - LoginUser loginUser = SecurityUtils.getLoginUser(); - ScClaTime claTime = claTimeService.getById(courseTimeId); - if (null == claTime) { - return APIResponse.toExceptionResponse("无法获取上课信息"); - } - String status = claTime.getStatus(); - if (!"2".equals(status)) { - return APIResponse.toExceptionResponse("暂未上课,无法删除"); - } - - Long claId = claTime.getClaId(); - ScCourseCla courseCla = claService.getById(claId); - if(null == courseCla) { - return APIResponse.toExceptionResponse("无法获取班级,无法删除"); - } - Long courseId = courseCla.getCourseId(); - ScCourse scCourse = courseService.getById(courseId); - if(null == scCourse) { - return APIResponse.toExceptionResponse("无法获取课程,无法删除"); - } - SysDept sysDept = deptService.getById(courseCla.getDepartId()); - if (null == sysDept) { - return APIResponse.toExceptionResponse("无法获取校区信息,请稍后重试"); - } - - // 上课明细 - List claTimeAttendList = claTimeAttendService.getAttendList(courseTimeId); - - for (ScClaTimeAttend claTimeAttend : claTimeAttendList) { - // 学员日志 使用 - claTime.setCourseName(scCourse.getCourseName()); - claTime.setClaName(courseCla.getClaName()); - claTime.setDeptName(sysDept.getDeptName()); - - // 恢复学员课时 - studentCourseService.recoverStudentCourseHour(claTimeAttend, claTime, loginUser); - } - - // 删除上课记录明细 cla_time_attend - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("course_time_id", courseTimeId); - claTimeAttendService.remove(uw); - - // 删除上课记录 cla_time - claTimeService.removeById(courseTimeId); - - return APIResponse.toOkResponse(); + void addBookLogFromApp(int bookStatus,Long bookId){ + ScBookCourseLog log=new ScBookCourseLog(); + log.setBookStatus(bookStatus); + log.setUpdateTime(new Date()); + log.setUpdateUser(SecurityUtils.getUserId()); + log.setBookId(bookId); + bookCourseLogMapper.insert(log); } } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScClaTimeAttendService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScClaTimeAttendService.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScClaTimeAttendService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScClaTimeAttendService.java index e26ddae..5dea06b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScClaTimeAttendService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScClaTimeAttendService.java @@ -1,15 +1,15 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeAttend; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeAttend; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeAttendMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.domain.ScClaTimeAttend; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeAttend; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend; +import com.ruoyi.school.course.mapper.ScClaTimeAttendMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,7 +54,7 @@ public class BusinessScClaTimeAttendService { */ public APIResponse hadClaTimeAttendDetail(Long courseTimeId) { QueryWrapper qwAttend = new QueryWrapper<>(); - qwAttend.select("student_course_id", "attend_status", "memo", "pay_hour"); + qwAttend.select( "attend_status", "memo"); qwAttend.eq("course_time_id", courseTimeId); List claTimeAttendList = scClaTimeAttendService.list(qwAttend); return APIResponse.toAPIResponse(claTimeAttendList); diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseService.java new file mode 100644 index 0000000..f5be613 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseService.java @@ -0,0 +1,252 @@ +package com.ruoyi.school.course.service; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.course.domain.req.course.ReqAddScCourse; +import com.ruoyi.school.course.domain.req.course.ReqChangeScCourse; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.req.course.ReqSelect; +import com.ruoyi.school.course.domain.resp.course.RespScCourseDetail; +import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; +import com.ruoyi.school.course.mapper.ScCourseMapper; +import com.ruoyi.system.service.impl.BusinessSysDeptService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Optional; + +/** + * @author :zhangbaoyu + * @date :Created in 2020-01-14 17:24 + */ +@Service +@Transactional +public class BusinessScCourseService { + + @Autowired + private IScCourseService scCourseService; + @Autowired + private ScCourseMapper courseMapper; + @Autowired + private IScCourseChargeService courseChargeService; + @Autowired + private BusinessSysDeptService deptService; + @Autowired + private IScCourseTypeService courseTypeService; + + + + /** + * 查询 + * + * @param reqSearchScCourse + * @return + */ + public APIResponse searchList(ReqSearchScCourse reqSearchScCourse) { + RespPage searchCourseRespPage = scCourseService.searchCourse(reqSearchScCourse); + return APIResponse.toAPIResponse(searchCourseRespPage); + } + + /** + * 查询课程列表 + * 含有学生报读状态 + * + * @param reqSearchScCourse + * @return + */ + public APIResponse selectCourseListWithStudentCourse(ReqSearchScCourse reqSearchScCourse) { + RespPage respPage = new RespPage(reqSearchScCourse.getPageNum(), reqSearchScCourse.getPageSize()); + List courseList = courseMapper.selectCourseListWithStudentCourse(reqSearchScCourse, respPage, SecurityUtils.getLoginUser().getNowTenantId()); + respPage.setRows(courseList); + return APIResponse.toAPIResponse(respPage); + } + + /** + * 前端select + * + * @return + */ + public APIResponse select(ReqSelect reqSelect) { + QueryWrapper qw = new QueryWrapper(); + qw.select("course_name", "course_id"); + + if (StrUtil.isNotEmpty(reqSelect.getSearch())) { + qw.like("course_name", reqSelect.getSearch()); + } + qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); + qw.orderByDesc("create_time"); + List list = scCourseService.list(qw); + return APIResponse.toAPIResponse(list); + } + + /** + * 详情 + * + * @param courseId + * @return + */ + public APIResponse detailById(Long courseId) { + if (null == courseId) { + return APIResponse.toAPIResponse(ApiResEnums.PARAM_FAIL); + } + + // 课程详情 + ScCourse detailInfo = scCourseService.getById(courseId); + + + RespScCourseDetail respScCourseDetail = new RespScCourseDetail(); + respScCourseDetail.setCourseId(detailInfo.getCourseId()+""); + respScCourseDetail.setCourseName(detailInfo.getCourseName()); + respScCourseDetail.setCourseTypeId(detailInfo.getCourseTypeId()); + respScCourseDetail.setTeachingMode(detailInfo.getTeachingMode()); + respScCourseDetail.setCourseIntro(detailInfo.getCourseIntro()); + respScCourseDetail.setClaFee(detailInfo.getClaFee()); + respScCourseDetail.setCourseCampus(ObjectUtil.isEmpty(detailInfo.getDepartId())?"全部校区":"部分校区"); + respScCourseDetail.setPartCampus(detailInfo.getDepartId()); + + + if(null != detailInfo.getCourseTypeId()) { + ScCourseType courseType = courseTypeService.getById(detailInfo.getCourseTypeId()); + Optional.ofNullable(courseType).ifPresent(item->{ + respScCourseDetail.setCourseTypeName(item.getCourseType()); + }); + } + + return APIResponse.toAPIResponse(respScCourseDetail); + } + + /** + * 添加课程 + * + * @param reqAddScCourse + * @return + */ + public APIResponse addScCourse(ReqAddScCourse reqAddScCourse) { + APIBaseResponse checkParam = reqAddScCourse.checkParam(); + if (!checkParam.isSuccess()) { + throw new RuntimeException(checkParam.getRespMsg()); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // course 表保存 + ScCourse scCourse = new ScCourse(); + scCourse.setCourseName(reqAddScCourse.getCourseName()); + scCourse.setCourseTypeId(reqAddScCourse.getCourseTypeId()); + scCourse.setTeachingMode(reqAddScCourse.getTeachingMode()); + scCourse.setCourseIntro(reqAddScCourse.getCourseIntro()); + scCourse.setCreateUser(loginUser.getUserId()); + scCourse.setLastUpdateUser(loginUser.getUserId()); + scCourse.setTenantId(loginUser.getNowTenantId()); + scCourse.setClaFee(reqAddScCourse.getClaFee()); + scCourse.setDepartId(reqAddScCourse.getPartCampus()); + + boolean addScCourse = scCourseService.save(scCourse); + + //默认班级 + + + return APIResponse.toOkResponse(); + } + + /** + * 更新 + * + * @param reqChangeScCourse + * @return + */ + public APIResponse updateScCourse(ReqChangeScCourse reqChangeScCourse) { + APIBaseResponse checkParam = reqChangeScCourse.checkParam(); + if (!checkParam.isSuccess()) { + return APIResponse.toExceptionResponse(checkParam.getRespMsg()); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // 更新课程信息 + ScCourse updateCourse = new ScCourse(); + updateCourse.setCourseId(reqChangeScCourse.getCourseId()); + updateCourse.setCourseName(reqChangeScCourse.getCourseName()); + updateCourse.setCourseTypeId(reqChangeScCourse.getCourseTypeId()); + updateCourse.setTeachingMode(reqChangeScCourse.getTeachingMode()); + updateCourse.setCourseIntro(reqChangeScCourse.getCourseIntro()); + updateCourse.setClaFee(reqChangeScCourse.getClaFee()); + updateCourse.setLastUpdateUser(loginUser.getUserId()); + updateCourse.setLastUpdateTime(new Date()); + updateCourse.setTenantId(loginUser.getNowTenantId()); + updateCourse.setSale("1"); + updateCourse.setDepartId(reqChangeScCourse.getPartCampus()); + updateCourse.setImportId(-1L); + boolean updateScCourse = scCourseService.updateById(updateCourse); + + return APIResponse.toOkResponse(); + } + + @Autowired + private IScCourseClaService courseClaService; + /** + * 删除 + * + * @param courseIds + * @return + */ + public APIResponse deleteById(List courseIds) { + if (null == courseIds || courseIds.isEmpty()) { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } +// +// // 如课程对应在用班级,不允许删除 + QueryWrapper qw = new QueryWrapper<>(); + qw.in("course_id", courseIds); + int courseClaCount = courseClaService.count(qw); + if (courseClaCount != 0) { + return APIResponse.toExceptionResponse("该课程下存在在用班级,无法删除课程"); + } + +// + boolean deleteScCourse = scCourseService.removeByIds(courseIds); + if (deleteScCourse) { + return APIResponse.toOkResponse(); + } else { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + } + + /** + * 变更是否开售 + * + * @param scCourse + * @return + */ + public APIResponse changeCourseSale(ScCourse scCourse) { + if (null == scCourse.getCourseId()) { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + if (StrUtil.isEmpty(scCourse.getSale())) { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + UpdateWrapper uw = new UpdateWrapper(); + uw.set("sale", scCourse.getSale()); + uw.eq("course_id", scCourse.getCourseId()); + boolean updateScCourse = scCourseService.update(uw); + if (updateScCourse) { + return APIResponse.toOkResponse(); + } else { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + } + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseTypeService.java similarity index 59% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseTypeService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseTypeService.java index 14d3516..dc7da55 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseTypeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/BusinessScCourseTypeService.java @@ -1,21 +1,27 @@ -package cn.xluobo.business.sc.course.service; - -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseType; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; +package com.ruoyi.school.course.service; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; -import org.apache.commons.lang3.StringUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourseType; +import com.ruoyi.school.member.domain.ScMemberCardTypes; +import com.ruoyi.school.member.service.ScMemberCardTypesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * @author :zhangbaoyu @@ -38,9 +44,10 @@ public class BusinessScCourseTypeService { */ public APIResponse searchList(ReqSearchScCourseType reqSearchScCourseType) { QueryWrapper qw = new QueryWrapper(); - if (StringUtils.isNotEmpty(reqSearchScCourseType.getCourseType())) { + if (StrUtil.isNotEmpty(reqSearchScCourseType.getCourseType())) { qw.eq("course_type", reqSearchScCourseType.getCourseType()); } + qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); RespPage page = new RespPage(reqSearchScCourseType.getPageNum(), reqSearchScCourseType.getPageSize()); RespPage listPage = scCourseTypeService.page(page, qw); return APIResponse.toAPIResponse(listPage); @@ -51,17 +58,20 @@ public class BusinessScCourseTypeService { * @param reqSearchScCourseType * @return */ - public APIResponse select(ReqSearchScCourseType reqSearchScCourseType) { + public List select(ReqSearchScCourseType reqSearchScCourseType) { QueryWrapper qw = new QueryWrapper(); qw.select("course_type", "course_type_id"); - if (StringUtils.isNotEmpty(reqSearchScCourseType.getCourseType())) { + if (StrUtil.isNotEmpty(reqSearchScCourseType.getCourseType())) { qw.like("course_type", reqSearchScCourseType.getCourseType()); } + if (ObjectUtil.isNotEmpty(reqSearchScCourseType.getTypeIds())&&reqSearchScCourseType.getTypeIds().length>0) { + qw.in("course_type_id", reqSearchScCourseType.getTypeIds()); + } qw.eq("in_use", "1"); qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); qw.orderByDesc("create_time"); List list = scCourseTypeService.list(qw); - return APIResponse.toAPIResponse(list); + return list; } /** @@ -114,6 +124,8 @@ public class BusinessScCourseTypeService { } } + @Autowired + private ScMemberCardTypesService memberCardTypesService; /** * 删除 * @@ -126,12 +138,24 @@ public class BusinessScCourseTypeService { } QueryWrapper qw = new QueryWrapper<>(); - qw.eq("course_type_id", courseTypeIds); + qw.in("course_type_id", Arrays.asList(courseTypeIds)); int courseCount = courseService.count(qw); if (courseCount != 0) { return APIResponse.toExceptionResponse("已有课程使用,无法删除"); } + + String arrayAsString = Arrays.stream(courseTypeIds) + .map(Object::toString) // 将Long转换为String + .collect(Collectors.joining(",")); // 使用逗号和空格连接字符串 + + int cardTypes= memberCardTypesService.count(new QueryWrapper() + .last(" and JSON_CONTAINS(course_types, CAST("+arrayAsString+" AS JSON))")); + if (cardTypes != 0) { + return APIResponse.toExceptionResponse("已有会员卡项使用,无法删除"); + } + + boolean deleteScCourseType = scCourseTypeService.removeByIds(Arrays.asList(courseTypeIds)); if (deleteScCourseType) { return APIResponse.toOkResponse(); @@ -139,4 +163,28 @@ public class BusinessScCourseTypeService { return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); } } + + /** + * 变更是否开售 + * + * @param scCourse + * @return + */ + public APIResponse changeCourseTypeSale(ScCourseType scCourseType) { + if (null == scCourseType.getCourseTypeId()) { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + if (StrUtil.isEmpty(scCourseType.getInUse())) { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + UpdateWrapper uw = new UpdateWrapper(); + uw.set("in_use", scCourseType.getInUse()); + uw.eq("course_type_id", scCourseType.getCourseTypeId()); + boolean updateScCourseType = scCourseTypeService.update(uw); + if (updateScCourseType) { + return APIResponse.toOkResponse(); + } else { + return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); + } + } } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeAttendService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeAttendService.java similarity index 89% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeAttendService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeAttendService.java index 0f7e702..f39b741 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeAttendService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeAttendService.java @@ -1,7 +1,7 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; +import com.ruoyi.school.course.domain.ScClaTimeAttend; import java.math.BigDecimal; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeRuleService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeRuleService.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeRuleService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeRuleService.java index ef6afc0..d42755b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeRuleService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeRuleService.java @@ -1,8 +1,8 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeRule; +import com.ruoyi.school.course.domain.ScClaTimeRule; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeService.java similarity index 64% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeService.java index fb717f9..a3e666f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScClaTimeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScClaTimeService.java @@ -1,8 +1,8 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; /** *

@@ -29,4 +29,13 @@ public interface IScClaTimeService extends IService { * @return */ Integer claTimeCount(ReqClaTimeCount reqClaTimeCount); + + /** + * 预约数量 + * @param ruleId + * @param claId + * @return + */ + Integer selectBookCount( Long ruleId, Long claId,String courseTimeId); + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseChargeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseChargeService.java similarity index 77% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseChargeService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseChargeService.java index abfd781..a9c1979 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseChargeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseChargeService.java @@ -1,8 +1,9 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; + -import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseCharge; -import cn.xluobo.business.sc.course.repo.model.ScCourseCharge; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.school.course.domain.resp.course.RespBusinessChooseCourseCharge; +import com.ruoyi.school.course.domain.req.course.ScCourseCharge; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseClaService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseClaService.java similarity index 77% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseClaService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseClaService.java index a5f543b..915cb31 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseClaService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseClaService.java @@ -1,7 +1,7 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.repo.model.ScCourseCla; -import cn.xluobo.core.api.APIBaseResponse; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.core.api.APIBaseResponse; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseService.java similarity index 58% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseService.java index da2c799..40bceac 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseService.java @@ -1,10 +1,11 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; + -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; +import com.ruoyi.school.course.domain.ScCourse; /** *

diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseTypeService.java similarity index 67% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseTypeService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseTypeService.java index 2b5c92c..196413b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/IScCourseTypeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/IScCourseTypeService.java @@ -1,6 +1,7 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; + +import com.ruoyi.school.course.domain.ScCourseType; /** *

diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseClaService.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/BusinessScCourseClaService.java similarity index 79% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseClaService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/BusinessScCourseClaService.java index f3bf896..b2f4634 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/BusinessScCourseClaService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/BusinessScCourseClaService.java @@ -1,28 +1,32 @@ -package cn.xluobo.business.sc.course.service; +package com.ruoyi.school.course.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.xluobo.business.sc.course.domain.req.ReqAddScCourseCla; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseCla; -import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseCharge; -import cn.xluobo.business.sc.course.domain.resp.RespCourseClaInfo; -import cn.xluobo.business.sc.course.domain.resp.cla.RespClaAllDetailInfo; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseClaMapper; -import cn.xluobo.business.sc.course.repo.model.*; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.business.sc.student.service.IScStudentCourseService; -import cn.xluobo.business.sc.student.service.IScStudentService; -import cn.xluobo.business.sys.admin.service.ISysDeptService; -import cn.xluobo.core.api.APIBaseResponse; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIBaseResponse; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.domain.ScCourseCla; +import com.ruoyi.school.course.domain.ScCourseClaVo; +import com.ruoyi.school.course.domain.req.cla.ReqAddScCourseCla; +import com.ruoyi.school.course.domain.req.cla.ReqSearchScCourseCla; +import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; +import com.ruoyi.school.course.domain.resp.cla.RespClaAllDetailInfo; +import com.ruoyi.school.course.domain.resp.cla.RespCourseClaInfo; +import com.ruoyi.school.course.domain.resp.course.ScCourseVo; +import com.ruoyi.school.course.mapper.ScCourseClaMapper; +import com.ruoyi.school.course.service.*; +import com.ruoyi.school.student.domain.resp.RespCourseClaStudent; +import com.ruoyi.school.student.service.IScStudentService; +import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -45,27 +49,32 @@ public class BusinessScCourseClaService { private IScCourseClaService scCourseClaService; @Autowired private IScCourseService courseService; - @Autowired - private IScCourseChargeService courseChargeService; @Autowired private ScCourseClaMapper scCourseClaMapper; @Autowired - private ScStudentMapper studentMapper; - @Autowired private IScStudentService studentService; - @Autowired - private IScStudentCourseService studentCourseService; + @Autowired private ISysDeptService deptService; @Autowired - private IScClaTimeRuleService claTimeRuleService; - @Autowired private IScClaTimeService claTimeService; @Autowired private ISysUserService userService; + + // + public APIResponse searchCourseClaStudent(ReqSearchClaTime reqSearchClaTime){ + String courseTimeId=reqSearchClaTime.getCourseTimeId(); + //预约的学员 + List scStudentList= scCourseClaMapper.selectStudenForClaTime(courseTimeId); + return APIResponse.toAPIResponse(scStudentList); + } + + + + /** * 查询 * @@ -73,7 +82,7 @@ public class BusinessScCourseClaService { * @return */ public APIResponse searchList(ReqSearchScCourseCla reqSearchScCourseCla) { - RespPage page = new RespPage(reqSearchScCourseCla.getPageNum(), reqSearchScCourseCla.getPageSize()); + com.ruoyi.common.page.RespPage page = new RespPage<>(reqSearchScCourseCla.getPageNum(), reqSearchScCourseCla.getPageSize()); String nowTenantId = SecurityUtils.getLoginUser().getNowTenantId(); reqSearchScCourseCla.setTenantId(nowTenantId); List claList = scCourseClaMapper.selectClaList(reqSearchScCourseCla, page); @@ -120,6 +129,9 @@ public class BusinessScCourseClaService { return APIResponse.toAPIResponse(resultMap); } + @Autowired + private IScClaTimeRuleService claTimeRuleService; + /** * 班级详情 * @@ -141,10 +153,6 @@ public class BusinessScCourseClaService { BeanUtil.copyProperties(courseCla,scCourseClaVo); scCourseClaVo.setClaId(courseCla.getClaId().toString()); - // 班级当前学员数量 - Integer studentCnt = scCourseClaService.selectStudentCnt(claId); - scCourseClaVo.setStudentCnt(studentCnt); - // 课程信息 ScCourse scCourse = courseService.getById(courseCla.getCourseId()); @@ -152,9 +160,6 @@ public class BusinessScCourseClaService { BeanUtil.copyProperties(scCourse,scCourseVo); scCourseVo.setCourseId(scCourse.getCourseId().toString()); - // 课程收费信息 - List courseChargeList = courseChargeService.courseChargeList(scCourse.getCourseId(), null); - // 校区 if (null != courseCla.getDepartId()) { SysDept sysDept = deptService.getById(courseCla.getDepartId()); @@ -173,7 +178,6 @@ public class BusinessScCourseClaService { return RespClaAllDetailInfo.builder() .courseCla(scCourseClaVo) .course(scCourseVo) - .courseChargeList(courseChargeList) .claTimeList(claTimeInfo) .build(); } @@ -193,16 +197,18 @@ public class BusinessScCourseClaService { if (null == course) { return APIResponse.toExceptionResponse("课程不存在,请重新选择后提交。"); } + // 新建班级 + ScCourseCla cla = scCourseCla.getScCourseCla(loginUser); + // 教师是否存在 SysUser teacher = userService.selectUserById(scCourseCla.getStaffId()); - if (null == teacher) { - return APIResponse.toExceptionResponse("教师不存在,请重新选择后提交。"); + if (ObjectUtil.isNotEmpty(teacher)) { +// return APIResponse.toExceptionResponse("教师不存在,请重新选择后提交。"); + cla.setTeacherName(teacher.getNickName()); } - // 新建班级 - ScCourseCla cla = scCourseCla.getScCourseCla(loginUser); - cla.setTeacherName(teacher.getNickName()); + APIBaseResponse checkParam = cla.checkParam(); if (!checkParam.isSuccess()) { return APIResponse.toExceptionResponse(checkParam.getRespMsg()); @@ -272,14 +278,6 @@ public class BusinessScCourseClaService { return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); } - // 有学员无法 删除 - QueryWrapper qwSc = new QueryWrapper<>(); - qwSc.in("cla_id", claIds); - int studentCourseCount = studentCourseService.count(qwSc); - if (studentCourseCount != 0) { - return APIResponse.toExceptionResponse("该班级内有学员,无法删除班级"); - } - // 已排课不允许删除 QueryWrapper qwSct = new QueryWrapper<>(); qwSct.in("cla_id", claIds); diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScBookCourseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScBookCourseServiceImpl.java new file mode 100644 index 0000000..c0764c9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScBookCourseServiceImpl.java @@ -0,0 +1,18 @@ +package com.ruoyi.school.course.service.impl; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.school.course.domain.ScBookCourse; +import com.ruoyi.school.course.mapper.ScBookCourseMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 课程预约表 服务实现类 + *

+ * + */ +@Service +public class ScBookCourseServiceImpl extends ServiceImpl implements IService { + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeAttendServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeAttendServiceImpl.java similarity index 86% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeAttendServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeAttendServiceImpl.java index 79d06e8..32fb033 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeAttendServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeAttendServiceImpl.java @@ -1,9 +1,9 @@ -package cn.xluobo.business.sc.course.service.impl; +package com.ruoyi.school.course.service.impl; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeAttendMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend; -import cn.xluobo.business.sc.course.service.IScClaTimeAttendService; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; +import com.ruoyi.school.course.mapper.ScClaTimeAttendMapper; +import com.ruoyi.school.course.domain.ScClaTimeAttend; +import com.ruoyi.school.course.service.IScClaTimeAttendService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeRuleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeRuleServiceImpl.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeRuleServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeRuleServiceImpl.java index e1e5827..985d946 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeRuleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeRuleServiceImpl.java @@ -1,19 +1,18 @@ -package cn.xluobo.business.sc.course.service.impl; - -import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule; -import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRepeatTypeEnums; -import cn.xluobo.business.sc.course.repo.enums.ClaTimeRuleTypeEnums; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeRuleMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule; -import cn.xluobo.business.sc.course.service.IScClaTimeRuleService; -import cn.xluobo.business.sc.course.service.IScClaTimeService; -import cn.xluobo.business.sys.holiday.service.ISysHolidayService; -import cn.xluobo.core.utils.DateUtil; +package com.ruoyi.school.course.service.impl; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; +import com.ruoyi.core.utils.DateUtil; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.domain.ScClaTimeRule; +import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; +import com.ruoyi.school.course.domain.resp.time.RespClaTimeRule; +import com.ruoyi.school.course.enums.ClaTimeRepeatTypeEnums; +import com.ruoyi.school.course.enums.ClaTimeRuleTypeEnums; +import com.ruoyi.school.course.mapper.ScClaTimeRuleMapper; +import com.ruoyi.school.course.service.IScClaTimeRuleService; +import com.ruoyi.school.course.service.IScClaTimeService; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.springframework.beans.BeanUtils; @@ -37,8 +36,7 @@ import java.util.stream.Collectors; @Service public class ScClaTimeRuleServiceImpl extends ServiceImpl implements IScClaTimeRuleService { - @Autowired - private ISysHolidayService holidayService; + @Autowired private IScClaTimeService claTimeService; @@ -47,7 +45,7 @@ public class ScClaTimeRuleServiceImpl extends ServiceImpl resultClaTimeList = Lists.newArrayList(); // 节假日缓存 - Map holidayMap = holidayService.getHolidayMap(); + Map holidayMap = null; // 获取满足条件的配置 List ruleList = baseMapper.selectByCondition(reqSearchScClaTimeRule, null); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeServiceImpl.java similarity index 64% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeServiceImpl.java index ae6d015..189bef3 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScClaTimeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScClaTimeServiceImpl.java @@ -1,9 +1,10 @@ -package cn.xluobo.business.sc.course.service.impl; +package com.ruoyi.school.course.service.impl; -import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount; -import cn.xluobo.business.sc.course.repo.mapper.ScClaTimeMapper; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.service.IScClaTimeService; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; +import com.ruoyi.school.course.mapper.ScClaTimeMapper; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.service.IScClaTimeService; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -33,4 +34,9 @@ public class ScClaTimeServiceImpl extends ServiceImpl + * 课程班级信息 服务实现类 + *

+ * + * @author zhangby + * @since 2020-03-17 01:11:06 + */ +@Service +public class ScCourseClaServiceImpl extends ServiceImpl implements IScCourseClaService { + + + @Autowired + private IScClaTimeService claTimeService; + + @Override + public Integer selectStudentCnt(Long claId) { + return baseMapper.selectStudentCnt(claId); + } + + @Override + public APIBaseResponse canChangeCourse(Long claId) { +// QueryWrapper qw = new QueryWrapper<>(); +// qw.eq("cla_id", claId); +// int count = studentCourseService.count(qw); +// if (count != 0) { +// return APIBaseResponse.fail("当前班级有报读学员,无法变更所属课程."); +// } +// +// QueryWrapper qwClaTime = new QueryWrapper<>(); +// qwClaTime.eq("cla_id", claId); +// qwClaTime.eq("status", ClaTimeStatusEnums.HAD_CLASS.getStatus()); +// int hadClaTimeCount = claTimeService.count(qwClaTime); +// if (hadClaTimeCount != 0) { +// return APIBaseResponse.fail("当前班级已有上课记录,无法变更所属课程."); +// } + return APIBaseResponse.success(); + } +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseServiceImpl.java similarity index 65% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseServiceImpl.java index dcfe3bb..6d7ef8d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseServiceImpl.java @@ -1,13 +1,13 @@ -package cn.xluobo.business.sc.course.service.impl; +package com.ruoyi.school.course.service.impl; -import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse; -import cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseChargeMapper; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper; -import cn.xluobo.business.sc.course.repo.model.ScCourse; -import cn.xluobo.business.sc.course.service.IScCourseService; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; +import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; +import com.ruoyi.school.course.mapper.ScCourseChargeMapper; +import com.ruoyi.school.course.mapper.ScCourseMapper; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.service.IScCourseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseTypeServiceImpl.java similarity index 59% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseTypeServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseTypeServiceImpl.java index 387c5ba..e5fffe2 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/service/impl/ScCourseTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/course/service/impl/ScCourseTypeServiceImpl.java @@ -1,9 +1,9 @@ -package cn.xluobo.business.sc.course.service.impl; +package com.ruoyi.school.course.service.impl; -import cn.xluobo.business.sc.course.repo.mapper.ScCourseTypeMapper; -import cn.xluobo.business.sc.course.repo.model.ScCourseType; -import cn.xluobo.business.sc.course.service.IScCourseTypeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.school.course.mapper.ScCourseTypeMapper; +import com.ruoyi.school.course.domain.ScCourseType; +import com.ruoyi.school.course.service.IScCourseTypeService; import org.springframework.stereotype.Service; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/domain/resp/DashboardData.java b/ruoyi-system/src/main/java/com/ruoyi/school/dashboard/domain/resp/DashboardData.java similarity index 89% rename from ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/domain/resp/DashboardData.java rename to ruoyi-system/src/main/java/com/ruoyi/school/dashboard/domain/resp/DashboardData.java index efc8081..c878bcf 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/report/dashboard/domain/resp/DashboardData.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/dashboard/domain/resp/DashboardData.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.report.dashboard.domain.resp; +package com.ruoyi.school.dashboard.domain.resp; import lombok.Builder; import lombok.Data; @@ -46,8 +46,8 @@ public class DashboardData { // 课程数量 private Integer courseCnt; - // 欠费学员数量 - private Integer arrearsStudentCnt; + // 余额小于200元学员数量 + private Integer feeWillExpireCnt; // 按期缴费 即将过期人数 private Integer dateWillExpireCnt; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/dashboard/service/DashboardService.java b/ruoyi-system/src/main/java/com/ruoyi/school/dashboard/service/DashboardService.java new file mode 100644 index 0000000..052d988 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/dashboard/service/DashboardService.java @@ -0,0 +1,86 @@ +package com.ruoyi.school.dashboard.service; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.course.service.IScCourseService; +import com.ruoyi.school.dashboard.domain.resp.DashboardData; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.member.service.IScMemberCardService; +import com.ruoyi.school.order.enums.OrderTypeEnum; +import com.ruoyi.school.order.service.IScOrderService; +import com.ruoyi.school.student.service.IScStudentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author :zhangbaoyu + * @date :Created in 2020/10/18 15:34 + */ +@Service +@Transactional +public class DashboardService { + + @Autowired + private IScMemberCardService memberCardService; + @Autowired + private IScCourseService courseService; + @Autowired + private IScStudentService studentService; + @Autowired + private IScOrderService orderService; +// + + /** + * 首页各项数据 + * + * @return + */ + public DashboardData dashboardData() { + String todayDate = DateTime.now().toString("yyyy-MM-dd"); + String thisMonthBegin = DateUtil.beginOfMonth(DateTime.now()).toString("yyyy-MM-dd"); + String thisMonthEnd = DateUtil.endOfMonth(DateTime.now()).toString("yyyy-MM-dd"); + String tenantId=SecurityUtils.getLoginUser().getNowTenantId(); +// int claCnt = claService.count(new QueryWrapper().eq("tenant_id",tenantId)); + int courseCnt = courseService.count(new QueryWrapper().eq("tenant_id",tenantId)); + int studentCnt = studentService.count(new QueryWrapper().eq("tenant_id",tenantId)); + +// ReqClaTimeCount reqClaTimeCount = ReqClaTimeCount.builder().beginDate(todayDate).endDate(todayDate).hadBegin(null).tenantId(tenantId).build(); +// Integer todayClaTimeCnt = claTimeService.claTimeCount(reqClaTimeCount); + +// reqClaTimeCount.setHadBegin(true); +// Integer completeTodayClaTimeCnt = claTimeService.claTimeCount(reqClaTimeCount); + + Integer todayOrderCnt = orderService.orderCount(todayDate, todayDate, OrderTypeEnum.SIGN_UP.getOrderType()); + Integer thisMonthOrderCnt = orderService.orderCount(thisMonthBegin, thisMonthEnd, OrderTypeEnum.SIGN_UP.getOrderType()); +// Integer todayNeedAttendCnt = attendService.getNeedAttendCount(todayDate, todayDate); +// Integer todayRealAttendCnt = attendService.getAttendCount(todayDate, todayDate, +// new String[]{ClaTimeAttendStatusEnums.AT_CLASS.getAttendStatus()}); +// BigDecimal todayNeedCostHour = attendService.getAttendCostHour(todayDate, todayDate, true); +// BigDecimal todayRealCostHour = attendService.getAttendCostHour(todayDate, todayDate, false); +// Integer feeWillExpireCnt = orderService.arrearsStudentCount(); +// Integer dateWillExpireCnt = studentCourseService.getWillExpireDateCount(10); +// Integer hourWillExpireCnt = studentCourseService.getWillExpireHourCount(5); + + return DashboardData.builder() +// .todayClaTimeCnt(todayClaTimeCnt) +// .completeTodayClaTimeCnt(completeTodayClaTimeCnt) + .todayOrderCnt(todayOrderCnt) + .thisMonthOrderCnt(thisMonthOrderCnt) +// .todayRealAttendCnt(todayRealAttendCnt) +// .todayNeedAttendCnt(todayNeedAttendCnt) +// .todayNeedCostHour(todayNeedCostHour) +// .todayRealCostHour(todayRealCostHour) + .studentCnt(studentCnt) +// .claCnt(claCnt) + .courseCnt(courseCnt) +// .feeWillExpireCnt(arrearsStudentCnt) +// .dateWillExpireCnt(dateWillExpireCnt) +// .hourWillExpireCnt(hourWillExpireCnt) + .build(); + } + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCard.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCard.java new file mode 100644 index 0000000..b5a3a85 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCard.java @@ -0,0 +1,357 @@ +package com.ruoyi.school.member.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.ruoyi.common.utils.SecurityUtils; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 会员卡实体类 + * 对应数据库表: sc_member_cards + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sc_member_cards") +public class ScMemberCard implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField(value = "tenant_id") + private String tenantId; + + /** + * 卡号 + */ + @TableField(value = "card_no") + private String cardNo; + + /** + * 会员ID + */ + @TableField(value = "member_id") + private Long memberId; + + + + /** + * 卡类型ID + */ + @TableField(value = "card_type_id") + private Long cardTypeId; + + /** + * 状态 + * ACTIVE-激活, INACTIVE-未激活, EXPIRED-已过期, + * SUSPENDED-已暂停, DEPLETED-已用完 + */ + @TableField("status") + private String status; + + /** + * 剩余次数 + */ + @TableField("remaining_count") + private BigDecimal remainingCount; + + /** + * 剩余天数 + */ + @TableField(exist = false) + private Integer remainingDays ; + + /** + * 总次数 + */ + @TableField("total_count") + private BigDecimal totalCount; + + /** + * 总天数 + */ + @TableField("total_days") + private Integer totalDays ; + + @TableField("total_fee") + private BigDecimal totalFee; + + @TableField("remaining_total_fee") + private BigDecimal remainingTotalFee; + + //时间卡 是否激活 1:立刻激活 2:首次预约激活 + @TableField("have_activation_date") + private String haveActivationDate; + + //储值or次数卡 是否设置有效期 1:不限期,用完失效 2:设置有效期 + @TableField("have_expiry_date") + private String haveExpiryDate; + + /** + * 激活日期 + */ + @TableField("activation_date") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate activationDate; + + /** + * 到期日期 + */ + @TableField("expiry_date") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate expiryDate; + + /** + * 购买日期 + */ + @TableField(value = "purchase_date", fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime purchaseDate; + + /** + * 购买价格 + */ + @TableField("price") + private BigDecimal price; + + + /** + * 备注 + */ + @TableField("notes") + private String notes; + + /** + * 收费模式 count:课时 days:时间 total_fee:储值 + */ + @TableField("charge_type") + private String chargeType; + + /** + * 创建时间 + */ + @TableField(value = "created_at", fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createdAt; + + /** + * 更新时间 + */ + @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updatedAt; + + /** + * 逻辑删除标志 (0-未删除,1-已删除) + */ + @TableLogic + @TableField(value = "is_deleted") + private Integer isDeleted = 0; + + + + /** + * 会员实体(关联查询用) + * 注意:MyBatis Plus 不支持直接实体关联,这里仅作为查询结果接收字段 + */ + @TableField(exist = false) + @JsonIgnore + private ScStudent member; + + /** + * 卡类型实体(关联查询用) + * 注意:MyBatis Plus 不支持直接实体关联,这里仅作为查询结果接收字段 + */ + @TableField(exist = false) + @JsonIgnore + private ScMemberCardTypes cardType; + @TableField(exist = false) + private String cardName; + + /** + * 是否有效(可用的卡) + */ + @TableField(exist = false) + private Boolean valid; + + /** + * 是否已过期 + */ + @TableField(exist = false) + private Boolean expired; + + /** + * 是否可用(激活且未过期) + */ + @TableField(exist = false) + private Boolean available; + + /** + * 是否可以续费 + */ + @TableField(exist = false) + private Boolean canRenew; + + // 枚举类 + public enum CardStatus { + ACTIVE("激活"), + INACTIVE("未激活"), + EXPIRED("已过期"), + SUSPENDED("已暂停"), + DEPLETED("已用完"); + + private final String description; + + CardStatus(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public static CardStatus fromString(String status) { + if (status == null) return null; + for (CardStatus s : CardStatus.values()) { + if (s.name().equalsIgnoreCase(status)) { + return s; + } + } + return null; + } + } + + /** + * 获取卡状态枚举 + */ + public CardStatus getCardStatus() { + return CardStatus.fromString(this.status); + } + + public String getTenantId(){ + return SecurityUtils.getLoginUser().getNowTenantId(); + } + + public Integer getRemainingDays() { + if (activationDate== null || expiryDate == null ) { + return totalDays; + } + + if (expiryDate.isBefore(LocalDate.now())) { + return 0; + } + Long days= java.time.temporal.ChronoUnit.DAYS.between( + LocalDate.now(), expiryDate + ); + return days.intValue(); + } + + /** + * 设置卡状态 + */ + public void setCardStatus(CardStatus cardStatus) { + this.status = cardStatus != null ? cardStatus.name() : null; + } + + /** + * 是否有效(可用的卡) + */ + public Boolean isValid() { + CardStatus currentStatus = getCardStatus(); + return CardStatus.ACTIVE.equals(currentStatus) || + CardStatus.INACTIVE.equals(currentStatus); + } + + /** + * 是否已过期 + */ + public Boolean isExpired() { + if (CardStatus.EXPIRED.equals(getCardStatus())) { + return true; + } + if (expiryDate != null && LocalDate.now().isAfter(expiryDate)) { + return true; + } + return false; + } + + /** + * 是否可用(激活且未过期) + */ + public Boolean isAvailable() { + return CardStatus.ACTIVE.equals(getCardStatus()) && !isExpired(); + } + + /** + * 是否可以续费 + */ + public Boolean canRenew() { + CardStatus currentStatus = getCardStatus(); + return CardStatus.ACTIVE.equals(currentStatus) || + CardStatus.INACTIVE.equals(currentStatus) || + CardStatus.EXPIRED.equals(currentStatus); + } + + /** + * 使用次数 + * @param count 使用次数 + * @return 是否成功使用 + */ + public boolean consume(BigDecimal count) { + if (!isAvailable() || remainingCount == null || remainingCount.compareTo(count)<1) { + return false; + } + remainingCount= remainingCount .multiply(count); + return true; + } + + /** + * 添加次数 + * @param count 添加的次数 + */ + public void addCount(BigDecimal count) { + if (remainingCount == null) { + remainingCount = new BigDecimal(0); + } + if (totalCount == null) { + totalCount = new BigDecimal(0); + } + remainingCount=remainingCount.add(count); + totalCount=totalCount.add(count); + } + + /** + * 计算剩余有效期天数 + */ + public Long calculateRemainingDays() { + if (expiryDate == null || LocalDate.now().isAfter(expiryDate)) { + return 0L; + } + return java.time.temporal.ChronoUnit.DAYS.between( + LocalDate.now(), expiryDate + ); + } + + /** + * 初始化计算字段 + */ + public void calculateFields() { + this.valid = isValid(); + this.expired = isExpired(); + this.available = isAvailable(); + this.canRenew = canRenew(); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCharge.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCharge.java new file mode 100644 index 0000000..8d4bb05 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCharge.java @@ -0,0 +1,38 @@ +package com.ruoyi.school.member.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 会员卡信息 + *

+ * + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "sc_member_card_charge",autoResultMap = true) +public class ScMemberCardCharge implements Serializable { + + + /** + * id + */ + @TableId(value = "charge_id",type = IdType.AUTO ) + private Long chargeId; + + private Long cardTypeId; + private Long courseTypeId; + + private BigDecimal cnt;//扣课时次数 + private BigDecimal totalFee;//扣费金额 +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCourses.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCourses.java new file mode 100644 index 0000000..9680305 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardCourses.java @@ -0,0 +1,44 @@ +package com.ruoyi.school.member.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.core.utils.LongArrayTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 会员卡信息 + *

+ * + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "sc_member_card_courses",autoResultMap = true) +public class ScMemberCardCourses implements Serializable { + + + /** + * id + */ + @TableId(value = "id",type = IdType.AUTO ) + private Long id; + + private Long cardTypeId; + private Long courseTypeId; + @TableField(value = "courses", typeHandler = LongArrayTypeHandler.class) + private Long[] courses; + + @TableField(exist = false) + private String courseType; + @TableField(exist = false) + private String courseNames; + +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardTypes.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardTypes.java new file mode 100644 index 0000000..1fa939f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScMemberCardTypes.java @@ -0,0 +1,203 @@ +package com.ruoyi.school.member.domain; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.ruoyi.core.api.APIBaseResponse; +import com.ruoyi.core.utils.LongArrayTypeHandler; +import com.ruoyi.school.member.domain.req.ReqAddMemberChargeItem; +import com.ruoyi.school.course.domain.resp.course.RespCourseTypeSelect; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.apache.commons.lang3.StringUtils; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + *

+ * 会员卡信息 + *

+ * + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "sc_member_card_types",autoResultMap = true) +public class ScMemberCardTypes implements Serializable { + + + + + /** + * id + */ + @TableId(value = "card_type_id",type = IdType.AUTO) + private Long cardTypeId; + + /** + * 所属租户 + */ + @TableField("tenant_id") + private String tenantId; + /** + * 会员卡名称 + */ + @TableField("card_name") + private String cardName; + + + /** + * 课时数量 + */ + @TableField("count") + private BigDecimal count; + + /** + * 总价 + */ + @TableField("total_fee") + private BigDecimal totalFee; + + /** + * 天数 + */ + @TableField("days") + private Integer days; + + + /** + * 是否在售 1在售 0停售 + */ + @TableField("sale") + private String sale; + + /** + * 删除标志(1删除 0在用) + */ + @TableField("delete_flag") + @TableLogic + private String deleteFlag; + + /** + * 创建者 + */ + @TableField("create_user") + private Long createUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新者 + */ + @TableField("last_update_user") + @JsonIgnore + private Long lastUpdateUser; + + /** + * 更新时间 + */ + @TableField("last_update_time") + @JsonIgnore + private Date lastUpdateTime; + + //描述 + @TableField("description") + private String description; + //条款 + @TableField("terms_and_conditions") + private String conditions; + + //限制约课次数 1不限次数 2限制约课次数 + private String restrictedNum; + private String bookTime;//限制约课时间范围 每天 每周 每月 + private Integer bookNum; + + @TableField(value = "course_types", typeHandler = LongArrayTypeHandler.class) + private Long[] courseTypes;//涵盖课程类型 + @TableField(exist = false) + private String courseTypesName;//涵盖课程类型 + + //付费模式 default customize自定义 + private String chargeType; + + private BigDecimal defaultNum; + private BigDecimal defaultFee; + + @TableField(exist = false) + private List feeModeHourList;//付费模式 + + //限制课程 1全部允许 2部分允许 + private String restrictedCourses; + @TableField(exist = false) + private List courseListInType;//课程list + @TableField(exist = false) + private List courses;// + + //限制教练 1全部允许 2部分允许 + private String restrictedTeacher; + + + @TableField(value = "teacher_list", typeHandler = LongArrayTypeHandler.class) + private Long[] teacherList;//教练 + @TableField(exist = false) + private String teachersName; + + @TableField(exist = false) + private Long courseTypeId;//查询参数 课程类型 + + @TableField(exist = false) + private String cardType;//查询参数 缴费方式 + + @TableField(exist = false) + private Long pageNum; + @TableField(exist = false) + private Long pageSize; + + /** + * 参数校验 + * + * @return + */ + public APIBaseResponse checkParam() { + if (StringUtils.isEmpty(cardName)) { + return APIBaseResponse.fail("请输入卡类名称"); + } + + if (restrictedNum.equals("2")) {//限制约课次数 + if (StringUtils.isEmpty(bookTime) || ObjectUtil.isEmpty(bookNum)){ + return APIBaseResponse.fail("请核对限制周期和次数"); + } + + } + if ("customize".equals(chargeType) && (ObjectUtil.isEmpty(feeModeHourList) ||feeModeHourList.size()==0)) { + return APIBaseResponse.fail("请核对扣费模式"); + } + if ("default".equals(chargeType) && ObjectUtil.hasEmpty(defaultNum,defaultFee)){ + return APIBaseResponse.fail("请核对扣费模式"); + } + + if ("2".equals(restrictedCourses) ) { + for (RespCourseTypeSelect l : courseListInType) { + if (ObjectUtil.isEmpty(l.getSelectedCourses()) ||l.getSelectedCourses().length == 0){ + return APIBaseResponse.fail("请核对限制课程"); + } + } + + } + + if ("2".equals(restrictedTeacher) && (ObjectUtil.isEmpty(teacherList) || teacherList.length == 0) ) { + return APIBaseResponse.fail("请核对限制教练"); + } + return APIBaseResponse.success(); + } + +} + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudent.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScStudent.java similarity index 82% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudent.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScStudent.java index f721af3..423a819 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudent.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/ScStudent.java @@ -1,5 +1,6 @@ -package cn.xluobo.business.sc.student.repo.model; +package com.ruoyi.school.member.domain; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -7,13 +8,9 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; import java.io.Serializable; import java.util.Date; -import java.util.List; /** *

@@ -64,7 +61,7 @@ public class ScStudent implements Serializable { private Date birthDay; /** - * 性别 M男 F女 + * 性别 */ @TableField("sex") private String sex; @@ -114,15 +111,14 @@ public class ScStudent implements Serializable { @TableField(exist = false) private Integer age; - @TableField(exist = false) - List contactList; + + //划扣卡号(如何选中?) 收费方式 扣减课时 扣减金额 扣减次数 剩余 。。。 (签到就扣完了) +// @TableField(exist = false) +// List contactList; public Integer getAge() { if(null == age && null != birthDay) { - DateTime now = new DateTime(); - DateTime birthDateTime = new DateTime(birthDay); - Period period = new Period(birthDateTime, now, PeriodType.years()); - return period.getYears(); + return DateUtil.ageOfNow(birthDay); } else { return age; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/CreateMemberCardDTO.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/CreateMemberCardDTO.java new file mode 100644 index 0000000..3aba6fa --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/CreateMemberCardDTO.java @@ -0,0 +1,67 @@ +package com.ruoyi.school.member.domain.req; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +//"创建会员卡请求") +public class CreateMemberCardDTO { + + @NotNull(message = "会员ID不能为空") + //value = "会员ID", required = true) + private Long memberId; + + //value = "卡类型ID", required = true) + private Long cardTypeId; + private Long handleDepartId; + private Long saleStaffId; + private Long commissionPlansId; + + //"卡号(不传则自动生成)") + private String cardNo; + //时间卡 是否激活 1:立刻激活 2:首次预约激活 + private String haveActivationDate; + //储值or次数卡 是否设置有效期 1:不限期,用完失效 2:设置有效期 + private String haveExpiryDate; + + //"激活日期(不传则立即激活)") + private LocalDate activationDate; + + //"到期日期(不传则根据卡类型计算)") + private LocalDate expiryDate; + + @NotNull(message = "价格不能为空") + //value = "购买价格", required = true) + private BigDecimal price; + + //"支付方式") + private Long accountId; + + //"订单号") + private String orderNo; + /** + * 课时数量 + */ + private BigDecimal totalCount; + + /** + * 总价 + */ + private BigDecimal totalFee; + + /** + * 天数 + */ + private Integer totalDays; + + //"备注") + private String notes; + private String chargeType;//扣费模式 count:课时 days:时间 total_fee:储值 + + public void checkParam(){ + + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddMemberChargeItem.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddMemberChargeItem.java new file mode 100644 index 0000000..6f782b4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddMemberChargeItem.java @@ -0,0 +1,14 @@ +package com.ruoyi.school.member.domain.req; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReqAddMemberChargeItem{ + private Long courseTypeId;//课程类型 + private String courseType;//课程类型名称 + private BigDecimal cnt;//扣课时次数 + private BigDecimal totalFee;//扣费金额 + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourseChargeItem.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddScCourseChargeItem.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourseChargeItem.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddScCourseChargeItem.java index c3f56f3..27be783 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/domain/req/course/ReqAddScCourseChargeItem.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqAddScCourseChargeItem.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.course.domain.req.course; +package com.ruoyi.school.member.domain.req; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchScStudent.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqSearchScStudent.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchScStudent.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqSearchScStudent.java index 4281b2a..f76ea41 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchScStudent.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqSearchScStudent.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.member.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqStudentSelect.java similarity index 74% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqStudentSelect.java index dec14a5..baf9186 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/req/ReqStudentSelect.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.member.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardDTO.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardDTO.java new file mode 100644 index 0000000..6d69cb6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardDTO.java @@ -0,0 +1,137 @@ +package com.ruoyi.school.member.domain.resp; + +import com.ruoyi.school.member.domain.ScMemberCard; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +//"会员卡信息") +public class MemberCardDTO { + + //"卡ID") + private Long id; + + //"卡号") + private String cardNo; + + //"会员ID") + private Long memberId; + + + //"卡类型ID") + private Long cardTypeId; + + //"卡类型名称") + private String cardTypeName; + + //"状态") + private String status; + + //"状态描述") + private String statusDesc; + + //"剩余次数") + private BigDecimal remainingCount; + + //"剩余天数") + private Integer remainingDays; + + //"总次数") + private BigDecimal totalCount; + + //"总天数") + private Integer totalDays; + + private BigDecimal totalFee; + + private BigDecimal remainingTotalFee; + + //"激活日期") + private LocalDate activationDate; + + //"到期日期") + private LocalDate expiryDate; + + //"购买日期") + private LocalDateTime purchaseDate; + + //"购买价格") + private BigDecimal price; + + //"支付方式") + private String accountId; + + //"订单号") + private String orderNo; + + //"是否有效") + private Boolean valid; + + //"是否过期") + private Boolean expired; + + //"是否可用") + private Boolean available; + + //"是否可以续费") + private Boolean canRenew; + + private Long commissionPlansId; + /** + * 订单 + */ + private Long orderId; + + /** + * 原价 + */ + private BigDecimal originalTotalFee; + /** + * 销售员工 + */ + private Long saleStaffId; + + /** + * 经办校区 + */ + private Long handleDeptId; + + private String chargeType; + + private int pageNum; + private int pageSize; + + /** + * 从实体转换为DTO + */ + public static MemberCardDTO fromEntity(ScMemberCard card) { + if (card == null) { + return null; + } + + MemberCardDTO dto = new MemberCardDTO(); + dto.setId(card.getId()); + dto.setCardNo(card.getCardNo()); + dto.setMemberId(card.getMemberId()); + dto.setCardTypeId(card.getCardTypeId()); + dto.setStatus(card.getCardStatus().name()); + dto.setStatusDesc(card.getCardStatus().getDescription()); + dto.setRemainingCount(card.getRemainingCount()); + dto.setRemainingDays(card.getRemainingDays()); + dto.setTotalCount(card.getTotalCount()); + dto.setTotalDays(card.getTotalDays()); + dto.setActivationDate(card.getActivationDate()); + dto.setExpiryDate(card.getExpiryDate()); + dto.setPurchaseDate(card.getPurchaseDate()); + dto.setPrice(card.getPrice()); + dto.setValid(card.isValid()); + dto.setExpired(card.isExpired()); + dto.setAvailable(card.isAvailable()); + dto.setCanRenew(card.canRenew()); + + return dto; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardVO.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardVO.java new file mode 100644 index 0000000..f150cf2 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/MemberCardVO.java @@ -0,0 +1,47 @@ +package com.ruoyi.school.member.domain.resp; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +//"会员卡详情") +public class MemberCardVO extends MemberCardDTO { + + //"会员姓名") + private String memberName; + + //"会员手机号") + private String memberPhone; + + //"卡类型名称") + private String cardTypeName; + + //"卡类型描述") + private String cardTypeDescription; + + //"卡类型类别") + private String cardTypeCategory; + + //"卡类型编码") + private Long cardTypeCode; + + //"剩余有效期(天)") + private Long remainingValidDays; + + + + + + /** + * 计算剩余有效期 + */ + public Long getRemainingValidDays(LocalDate expiryDate) { + if (expiryDate == null || expiryDate.isBefore(LocalDate.now())) { + return 0L; + } + return java.time.temporal.ChronoUnit.DAYS.between( + LocalDate.now(), expiryDate + ); + } +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespSearchStudent.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/RespSearchStudent.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespSearchStudent.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/RespSearchStudent.java index 40bae13..138ccd0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespSearchStudent.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/domain/resp/RespSearchStudent.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.domain.resp; +package com.ruoyi.school.member.domain.resp; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -39,6 +39,4 @@ public class RespSearchStudent implements Serializable { @JsonFormat(pattern="yyyy-MM-dd") private Date inTime; - // 联系人信息 - private String contactInfo; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardChargeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardChargeMapper.java new file mode 100644 index 0000000..a1d7160 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardChargeMapper.java @@ -0,0 +1,12 @@ +package com.ruoyi.school.member.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.member.domain.ScMemberCardCharge; +import com.ruoyi.school.member.domain.req.ReqAddMemberChargeItem; + +import java.util.List; + +public interface ScMemberCardChargeMapper extends BaseMapper { + + List getByMemberId(Long cardTypeId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardCourseMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardCourseMapper.java new file mode 100644 index 0000000..b239e64 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardCourseMapper.java @@ -0,0 +1,12 @@ +package com.ruoyi.school.member.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.member.domain.ScMemberCardCourses; + +import java.util.List; + + +public interface ScMemberCardCourseMapper extends BaseMapper { + + List getByCardId(Long cardId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardMapper.java new file mode 100644 index 0000000..180f5cb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardMapper.java @@ -0,0 +1,63 @@ +package com.ruoyi.school.member.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.member.domain.ScMemberCard; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 会员卡Mapper接口 + */ +@Mapper +public interface ScMemberCardMapper extends BaseMapper { + + /** + * 根据会员ID查询会员卡列表 + */ +// @Select("SELECT a.*,b.card_name FROM sc_member_cards a,sc_member_card_types b " + +// "WHERE a.card_type_id=b.card_type_id and member_id = #{memberId} AND is_deleted = 0 " + +// "ORDER BY created_at DESC") + @Select("SELECT * FROM sc_member_cards " + + "WHERE member_id = #{memberId} AND is_deleted = 0 " + + "ORDER BY created_at DESC") + List selectByMemberId(@Param("memberId") Long memberId); + + /** + * 根据卡号查询会员卡 + */ + @Select("SELECT * FROM sc_member_cards WHERE card_no = #{cardNo} AND is_deleted = 0") + ScMemberCard selectByCardNo(@Param("cardNo") String cardNo); + + /** + * 查询已过期的会员卡 + */ + @Select("SELECT * FROM sc_member_cards WHERE status = 'EXPIRED' OR (expiry_date IS NOT NULL AND expiry_date < CURDATE()) AND is_deleted = 0") + List selectExpiredCards(); + + /** + * 查询即将到期的会员卡(N天内到期) + */ + @Select("SELECT * FROM sc_member_cards WHERE expiry_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL #{days} DAY) AND status = 'ACTIVE' AND is_deleted = 0") + List selectExpiringCards(@Param("days") Integer days); + + /** + * 更新会员卡状态 + */ + @Select("UPDATE sc_member_cards SET status = #{status}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0") + int updateStatus(@Param("id") Long id, @Param("status") String status); + + /** + * 扣减次数 + */ + @Select("UPDATE sc_member_cards SET remaining_count = remaining_count - #{count}, updated_at = NOW() WHERE id = #{id} AND remaining_count >= #{count} AND is_deleted = 0") + int deductCount(@Param("id") Long id, @Param("count") Integer count); + + /** + * 增加次数 + */ + @Select("UPDATE sc_member_cards SET remaining_count = remaining_count + #{count}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0") + int addCount(@Param("id") Long id, @Param("count") Integer count); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardTypesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardTypesMapper.java new file mode 100644 index 0000000..eabff0f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScMemberCardTypesMapper.java @@ -0,0 +1,26 @@ +package com.ruoyi.school.member.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.school.course.domain.ScCourse; +import com.ruoyi.school.member.domain.ScMemberCardTypes; + +import java.util.List; + +/** + *

+ * 课程信息 Mapper 接口 + *

+ * + * @author zhangby + * @since 2020-03-17 11:25:55 + */ +public interface ScMemberCardTypesMapper extends BaseMapper { + + + List getCourseIdByMemberId(Long memberId); + List getCourseIdsByMemberId(Long memberId); + + List getMemberTypeByCourseId(Long courseId); + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScStudentMapper.java similarity index 72% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScStudentMapper.java index 2e73c42..3fed154 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/mapper/ScStudentMapper.java @@ -1,12 +1,11 @@ -package cn.xluobo.business.sc.student.repo.mapper; +package com.ruoyi.school.member.mapper; -import cn.xluobo.business.sc.student.domain.req.ReqSearchScStudent; -import cn.xluobo.business.sc.student.domain.req.ReqStudentSelect; -import cn.xluobo.business.sc.student.domain.resp.RespSearchStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.core.page.ReqDeptCondition; import com.baomidou.mybatisplus.annotation.SqlParser; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.member.domain.req.ReqSearchScStudent; +import com.ruoyi.school.member.domain.req.ReqStudentSelect; +import com.ruoyi.school.member.domain.resp.RespSearchStudent; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -37,7 +36,7 @@ public interface ScStudentMapper extends com.baomidou.mybatisplus.core.mapper.Ba * @param reqDeptCondition * @return */ - Integer selectStudentCount(ReqDeptCondition reqDeptCondition); +// Integer selectStudentCount(ReqDeptCondition reqDeptCondition); /** * 租户下学生数量 diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/IScMemberCardService.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/IScMemberCardService.java new file mode 100644 index 0000000..ab31dda --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/IScMemberCardService.java @@ -0,0 +1,90 @@ +package com.ruoyi.school.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.member.domain.ScMemberCard; +import com.ruoyi.school.member.domain.req.CreateMemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardVO; + +import java.util.List; + +/** + * 会员卡服务接口 + */ +public interface IScMemberCardService extends IService { + + /** + * 创建会员卡 + */ + MemberCardDTO createMemberCard(CreateMemberCardDTO dto); + + /** + * 根据ID查询会员卡详情 + */ + MemberCardVO getCardById(Long cardId); + + /** + * 根据卡号查询会员卡 + */ + MemberCardVO getByCardNo(String cardNo); + + //批量签到 + APIResponse checkInByIds(List bookIds); + + /** + * 激活会员卡 + */ + boolean activateCard(Long cardId); + + /** + * 冻结会员卡 + */ + boolean suspendCard(Long cardId); + + /** + * 续费会员卡 + */ + boolean renewCard(Long cardId, Integer days); + + /** + * 添加次数 + */ + boolean addCardCount(Long cardId, Integer count); + + /** + * 扣减次数 + */ + boolean deductCardCount(Long cardId, Integer count); + + /** + * 查询会员的会员卡列表 + */ + List getMemberCards(Long memberId); + + /** + * 分页查询会员卡列表 + */ + RespPage getCardList(MemberCardDTO queryDTO); + + /** + * 查询有效的会员卡 + */ + List getValidMemberCards(Long memberId); + + /** + * 检查会员卡状态 + */ + boolean checkCardStatus(Long cardId); + + /** + * 批量更新过期状态 + */ + int updateExpiredStatus(); + + /** + * 获取今日办理的会员卡数量 + */ + Integer getTodayCardCount(); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardChargeService.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardChargeService.java new file mode 100644 index 0000000..ef56a70 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardChargeService.java @@ -0,0 +1,15 @@ +package com.ruoyi.school.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.school.member.domain.ScMemberCardCharge; +import com.ruoyi.school.member.domain.req.ReqAddMemberChargeItem; + +import java.util.List; + + +public interface ScMemberCardChargeService extends IService { + + List getByMemberId(Long cardTypeId); + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardCourseService.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardCourseService.java new file mode 100644 index 0000000..66a33ee --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardCourseService.java @@ -0,0 +1,16 @@ +package com.ruoyi.school.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.school.member.domain.ScMemberCardCourses; + +import java.util.List; + + +public interface ScMemberCardCourseService extends IService { + + List getByCardId(Long cardId); + + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardTypesService.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardTypesService.java new file mode 100644 index 0000000..91fdd33 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/ScMemberCardTypesService.java @@ -0,0 +1,14 @@ +package com.ruoyi.school.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqBusinessOrderCourseDetail; +import com.ruoyi.school.member.domain.ScMemberCardTypes; + + +public interface ScMemberCardTypesService extends IService { + + + APIResponse orderCardTypeDetail(ReqBusinessOrderCourseDetail orderCourseDetail); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardChargeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardChargeServiceImpl.java new file mode 100644 index 0000000..56f66a0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardChargeServiceImpl.java @@ -0,0 +1,27 @@ +package com.ruoyi.school.member.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.school.member.domain.ScMemberCardCharge; +import com.ruoyi.school.member.domain.req.ReqAddMemberChargeItem; +import com.ruoyi.school.member.mapper.ScMemberCardChargeMapper; +import com.ruoyi.school.member.service.ScMemberCardChargeService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 会员卡类型信息 服务实现类 + *

+ * + */ +@Service +public class ScMemberCardChargeServiceImpl extends ServiceImpl implements ScMemberCardChargeService { + + + + @Override + public List getByMemberId(Long cardTypeId){ + return this.baseMapper.getByMemberId(cardTypeId); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardCourseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardCourseServiceImpl.java new file mode 100644 index 0000000..0619714 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardCourseServiceImpl.java @@ -0,0 +1,27 @@ +package com.ruoyi.school.member.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.school.member.domain.ScMemberCardCourses; +import com.ruoyi.school.member.mapper.ScMemberCardCourseMapper; +import com.ruoyi.school.member.service.ScMemberCardCourseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 会员卡类型信息 服务实现类 + *

+ * + */ +@Service +public class ScMemberCardCourseServiceImpl extends ServiceImpl implements ScMemberCardCourseService { + + + @Override + public List getByCardId(Long cardId) { + return this.baseMapper.getByCardId(cardId); + } + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardServiceImpl.java new file mode 100644 index 0000000..459e695 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardServiceImpl.java @@ -0,0 +1,647 @@ +package com.ruoyi.school.member.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.*; +import com.ruoyi.school.course.enums.ClaTimeStatusEnums; +import com.ruoyi.school.course.mapper.ScClaTimeMapper; +import com.ruoyi.school.course.mapper.ScCourseClaMapper; +import com.ruoyi.school.course.mapper.ScCourseMapper; +import com.ruoyi.school.course.service.IScClaTimeAttendService; +import com.ruoyi.school.course.service.impl.ScBookCourseServiceImpl; +import com.ruoyi.school.member.domain.ScMemberCard; +import com.ruoyi.school.member.domain.ScMemberCardTypes; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.member.domain.req.CreateMemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardDTO; +import com.ruoyi.school.member.domain.resp.MemberCardVO; +import com.ruoyi.school.member.mapper.ScMemberCardMapper; +import com.ruoyi.school.member.mapper.ScMemberCardTypesMapper; +import com.ruoyi.school.member.mapper.ScStudentMapper; +import com.ruoyi.school.member.service.IScMemberCardService; +import com.ruoyi.school.order.domain.ScOrder; +import com.ruoyi.school.order.service.IScOrderService; +import com.ruoyi.school.salary.domain.ScCommissionPlans; +import com.ruoyi.school.salary.service.ScCommissionPlansService; +import com.ruoyi.system.domain.columns.SysTeacher; +import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.columns.ISysTeacherService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 会员卡服务实现类 + */ +@Slf4j +@Service +public class ScMemberCardServiceImpl extends ServiceImpl implements IScMemberCardService { + + @Resource + private ScMemberCardMapper memberCardMapper; + + @Resource + private ScStudentMapper memberMapper; + + @Resource + private ScMemberCardTypesMapper cardTypeMapper; + + @Autowired + private ISysDeptService deptService; + + @Autowired + private ScCommissionPlansService commissionPlansService; + + @Autowired + private ISysUserService userService; + + @Autowired + private IScOrderService scOrderService; + + @Override + @Transactional(rollbackFor = Exception.class) + public MemberCardDTO createMemberCard(CreateMemberCardDTO dto) { + +// if (!dto.getChargeType().equals("total_fee")&&dto.getCardTypeId()==null){ + if (dto.getCardTypeId()==null){ + throw new RuntimeException("未选择卡类型"); + } + + ScMemberCardTypes cardType =new ScMemberCardTypes(); + + if (dto.getCardTypeId()!=null){ + // 验证卡类型是否存在 + cardType = cardTypeMapper.selectById(dto.getCardTypeId()); + if (cardType == null) { + throw new RuntimeException("卡类型不存在"); + } + } + + // 验证会员是否存在 + ScStudent member = memberMapper.selectById(dto.getMemberId()); + if (member == null) { + throw new RuntimeException("会员不存在"); + } + + SysDept handleDept = deptService.getById(dto.getHandleDepartId()); + if (null == handleDept) { + throw new RuntimeException("无法获取经办校区信息,请重试!"); + } + + SysUser staff=userService.selectUserById(dto.getSaleStaffId()); + if (null == staff) { + throw new RuntimeException("无法获取经办人信息,请重试!"); + } + + ScCommissionPlans commissionPlans= commissionPlansService.getById(dto.getCommissionPlansId()); + if (null == commissionPlans) { + throw new RuntimeException("无法获取佣金信息,请重试!"); + } + + // 创建会员卡 + ScMemberCard card = new ScMemberCard(); + BeanUtils.copyProperties(dto, card); + + // 设置卡号(如果未提供则自动生成) + if (card.getCardNo() == null || card.getCardNo().isEmpty()) { + card.setCardNo(generateCardNo()); + } + + // 设置初始状态 + if (dto.getActivationDate() != null) { + card.setStatus(ScMemberCard.CardStatus.ACTIVE.name()); + card.setActivationDate(dto.getActivationDate()); + } else { + card.setStatus(ScMemberCard.CardStatus.INACTIVE.name()); + } + + if (dto.getChargeType().equals("count")){ + card.setRemainingCount(card.getTotalCount()); + } + + if (dto.getChargeType().equals("total_fee")){ + card.setRemainingTotalFee(card.getTotalFee()); + } + +// if (dto.getChargeType().equals("days")){ +// card.setRemainingDays(card.getTotalDays()); +// } + // 设置默认到期日期(根据卡类型) +// if (card.getExpiryDate() == null && cardType.getValidDays() != null) { +// LocalDate activationDate = card.getActivationDate() != null ? +// card.getActivationDate() : LocalDate.now(); +// card.setExpiryDate(activationDate.plusDays(cardType.getValidDays())); +// } + + // 设置购买时间 + card.setPurchaseDate(LocalDateTime.now()); + card.setCreatedAt(LocalDateTime.now()); + // 保存到数据库 + boolean flag= this.save(card); + + if (flag){ + ScOrder scOrder =new ScOrder(); + scOrder.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); + scOrder.setCommissionPlansId(dto.getCommissionPlansId()); + scOrder.setStudentId(dto.getMemberId()); + scOrder.setStudentName(member.getStudentName()); + scOrder.setPhone(member.getPhone()); + scOrder.setOriginalTotalFee(ObjectUtil.isEmpty(cardType.getTotalFee())?new BigDecimal(0):cardType.getTotalFee()); + scOrder.setReceiptFee(dto.getPrice()); + scOrder.setSaleStaffId(staff.getUserId()); + scOrder.setSaleStaffName(staff.getNickName()); + scOrder.setOrderStatus("2"); + scOrder.setHandleDeptId(handleDept.getDeptId()); + scOrder.setHandleDeptName(handleDept.getDeptName()); + scOrder.setAccountId(dto.getAccountId()); + scOrder.setCardNo(card.getCardNo()); + scOrder.setCreateUser(SecurityUtils.getUserId()); + scOrderService.save(scOrder); + } + + // 转换为DTO返回 + return convertToDTO(card); + } + + @Override + public MemberCardVO getByCardNo(String cardNo) { + ScMemberCard card = this.lambdaQuery() + .eq(ScMemberCard::getCardNo, cardNo) + .eq(ScMemberCard::getIsDeleted, 0) + .one(); + + if (card == null) { + throw new RuntimeException("会员卡不存在"); + } + + return convertToVO(card); + } + + @Autowired + private ScBookCourseServiceImpl bookCourseService; + @Autowired + private IScMemberCardService memberCardService; + @Autowired + private ScClaTimeMapper claTimeMapper; + @Autowired + private ScCourseClaMapper claMapper; + @Autowired + private ScCourseMapper courseMapper; + @Autowired + private IScClaTimeAttendService attendService; + @Autowired + private ISysTeacherService staffService; + + /** + * 批量签到 + * @param bookIds + * @return + */ + @Override + @Transactional + public APIResponse checkInByIds(List bookIds) { + //预约 + List bookList= bookCourseService.listByIds(bookIds); + Long courseTimeId = bookList.get(0).getCourseTimeId(); + // 排课信息 + ScClaTime claTime= claTimeMapper.selectById(courseTimeId); + if (!ClaTimeStatusEnums.WAIT_CLASS.getStatus().equals(claTime.getStatus())) { + return APIResponse.toExceptionResponse("课程非 待上课 状态,无法签到!"); + } + //班级信息 + Long claId = claTime.getClaId(); + ScCourseCla dbCla = claMapper.selectById(claId); + if (null == dbCla) { + return APIResponse.toExceptionResponse("无法获取班级信息,请稍后重试"); + } + //课程信息 + Long courseId = dbCla.getCourseId(); + ScCourse scCourse = courseMapper.selectById(courseId); + if (null == scCourse) { + return APIResponse.toExceptionResponse("无法获取课程信息,请稍后重试"); + } + Long departId = dbCla.getDepartId(); + SysDept sysDept = deptService.getById(departId); + if (null == sysDept) { + return APIResponse.toExceptionResponse("无法获取校区信息,请稍后重试"); + } + Long teacherId = claTime.getTeacherId(); + SysTeacher sysStaff=staffService.selectSysTeacherByUserId(teacherId); + + List bookCourseList = new ArrayList<>(); + List memberCardList = new ArrayList<>(); + List attendList = new ArrayList<>(); + + for (ScBookCourse bookCourse : bookList) { + //判断预约状态 + //预约状态:0->预约中;1->教练确认;2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败; + if (StrUtil.containsAny("3,4,5",bookCourse.getBookStatus()+"")){ + return APIResponse.toExceptionResponse("请检查学员预约状态!"); + } + + ScMemberCard memberCard=memberCardService.getOne(new QueryWrapper() + .eq("card_no",bookCourse.getCardNo()) + .eq("charge_type",bookCourse.getChargeType()) + .eq("is_deleted",0) + .last(" and expiry_date > CURDATE() ") + + ); + if (ObjectUtil.isEmpty(memberCard)){ + return APIResponse.toExceptionResponse(bookCourse.getCardNo()+"会员卡状态异常,请与教练核实!"); + } + + String chargeType=memberCard.getChargeType(); + + // 上课记出勤表 + ScClaTimeAttend addClaTimeAttend = new ScClaTimeAttend(); + + if (chargeType.equals("count")){ + if (memberCard.getRemainingCount().compareTo(bookCourse.getDeductCnt())>-1){ + addClaTimeAttend.setPayHour(bookCourse.getDeductCnt()); + addClaTimeAttend.setCountBefore(memberCard.getRemainingCount()); + + BigDecimal countAfter= memberCard.getRemainingCount().subtract(bookCourse.getDeductCnt()); + addClaTimeAttend.setCountAfter(countAfter); + memberCard.setRemainingCount(countAfter); + }else { + return APIResponse.toExceptionResponse("会员卡剩余次数不足,请充值后重新预约!"); + } + } + + if (chargeType.equals("total_fee")){ + if (memberCard.getRemainingTotalFee().compareTo(bookCourse.getDeductFee())>-1){ + addClaTimeAttend.setPayFee(bookCourse.getDeductFee()); + addClaTimeAttend.setFeeBefore(memberCard.getRemainingTotalFee()); + + BigDecimal feeAfter=memberCard.getRemainingTotalFee().subtract(bookCourse.getDeductFee()); + addClaTimeAttend.setFeeAfter(feeAfter); + memberCard.setRemainingTotalFee(feeAfter); + }else { + return APIResponse.toExceptionResponse("会员卡剩余金额不足,请充值后重新预约!"); + } + } + bookCourse.setUserId(SecurityUtils.getUserId()); + bookCourse.setCheckIn(1); + bookCourse.setCheckInTime(new Date()); + + + //本节课 到课人数变更 + claTime.setRealAttendCnt(claTime.getRealAttendCnt()+1); + //上课记录 + addClaTimeAttend.setBookId(bookCourse.getId()); + addClaTimeAttend.setMemberCardId(memberCard.getMemberId()); + addClaTimeAttend.setCourseTimeId(courseTimeId); + addClaTimeAttend.setStudentId(bookCourse.getStudentId()); + addClaTimeAttend.setClaId(claTime.getClaId()); + addClaTimeAttend.setCourseId(scCourse.getCourseId()); + addClaTimeAttend.setTeacherId(teacherId); + addClaTimeAttend.setTeacherName(sysStaff.getTeacherName()); + addClaTimeAttend.setChargeType(chargeType); + addClaTimeAttend.setAttendStatus("1"); + addClaTimeAttend.setCreateUser(SecurityUtils.getUserId()); + + bookCourseList.add(bookCourse); + memberCardList.add(memberCard); + // 保存上课记录 + attendList.add(addClaTimeAttend); + } + + bookCourseService.updateBatchById(bookCourseList); + + //会员卡余额变更 + memberCardService.updateBatchById(memberCardList); + claTimeMapper.updateById(claTime); + attendService.saveBatch(attendList); + + return APIResponse.toOkResponse(); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean activateCard(Long cardId) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ScMemberCard::getId, cardId) + .eq(ScMemberCard::getIsDeleted, 0) + .set(ScMemberCard::getStatus, ScMemberCard.CardStatus.ACTIVE.name()) + .set(ScMemberCard::getActivationDate, LocalDate.now()) + .set(ScMemberCard::getUpdatedAt, LocalDateTime.now()); + + return this.update(updateWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean suspendCard(Long cardId) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ScMemberCard::getId, cardId) + .eq(ScMemberCard::getIsDeleted, 0) + .set(ScMemberCard::getStatus, ScMemberCard.CardStatus.SUSPENDED.name()) + .set(ScMemberCard::getUpdatedAt, LocalDateTime.now()); + + return this.update(updateWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean renewCard(Long cardId, Integer days) { + ScMemberCard card = this.getById(cardId); + if (card == null) { + throw new RuntimeException("会员卡不存在"); + } + + // 计算新的到期日期 + LocalDate newExpiryDate; + if (card.getExpiryDate() != null && card.getExpiryDate().isAfter(LocalDate.now())) { + newExpiryDate = card.getExpiryDate().plusDays(days); + } else { + newExpiryDate = LocalDate.now().plusDays(days); + } + + // 更新数据库 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ScMemberCard::getId, cardId) + .eq(ScMemberCard::getIsDeleted, 0) + .set(ScMemberCard::getExpiryDate, newExpiryDate) + .set(ScMemberCard::getStatus, ScMemberCard.CardStatus.ACTIVE.name()) + .set(ScMemberCard::getUpdatedAt, LocalDateTime.now()); + + return this.update(updateWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addCardCount(Long cardId, Integer count) { + int result = memberCardMapper.addCount(cardId, count); + return result > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deductCardCount(Long cardId, Integer count) { + int result = memberCardMapper.deductCount(cardId, count); + return result > 0; + } + + + @Override + public List getMemberCards(Long memberId) { + +// // 报读课程 + List cards = memberCardMapper.selectByMemberId(memberId); + + return cards.stream() + .map(this::convertToVO) + .collect(Collectors.toList()); + } + + @Override + public List getValidMemberCards(Long memberId) { + List cards = this.lambdaQuery() + .eq(ScMemberCard::getMemberId, memberId) + .eq(ScMemberCard::getIsDeleted, 0) + .in(ScMemberCard::getStatus, + ScMemberCard.CardStatus.ACTIVE.name(), + ScMemberCard.CardStatus.INACTIVE.name()) + .and(q -> q.isNull(ScMemberCard::getExpiryDate) +// .or(ge(ScMemberCard::getExpiryDate, LocalDate.now())) + ) + .orderByDesc(ScMemberCard::getCreatedAt) + .list(); + + return cards.stream() + .map(this::convertToVO) + .collect(Collectors.toList()); + } + + @Override + public boolean checkCardStatus(Long cardId) { + ScMemberCard card = this.getById(cardId); + if (card == null) { + return false; + } + + // 检查是否过期 + if (card.isExpired()) { + // 更新状态为过期 + card.setStatus(ScMemberCard.CardStatus.EXPIRED.name()); + this.updateById(card); + return false; + } + + return card.isAvailable(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int updateExpiredStatus() { + // 查找已过期的会员卡 + List expiredCards = this.lambdaQuery() + .eq(ScMemberCard::getIsDeleted, 0) + .in(ScMemberCard::getStatus, + ScMemberCard.CardStatus.ACTIVE.name(), + ScMemberCard.CardStatus.INACTIVE.name()) + .lt(ScMemberCard::getExpiryDate, LocalDate.now()) + .list(); + + if (expiredCards.isEmpty()) { + return 0; + } + + // 批量更新状态 + expiredCards.forEach(card -> { + card.setStatus(ScMemberCard.CardStatus.EXPIRED.name()); + }); + + return this.updateBatchById(expiredCards) ? expiredCards.size() : 0; + } + + /** + * 生成卡号 + */ + private String generateCardNo() { + // YG + 年月日 + 6位随机数 + String dateStr = LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd")); + String randomStr = String.format("%06d", (int)(Math.random() * 1000000)); + return "YG" + dateStr + randomStr; + } + + /** + * 转换为DTO + */ + private MemberCardDTO convertToDTO(ScMemberCard card) { + if (card == null) return null; + + MemberCardDTO dto = new MemberCardDTO(); + BeanUtils.copyProperties(card, dto); + + // 计算字段 + card.calculateFields(); + dto.setValid(card.getValid()); + dto.setExpired(card.getExpired()); + dto.setAvailable(card.getAvailable()); + dto.setCanRenew(card.getCanRenew()); + + return dto; + } + + /** + * 转换为VO + */ + private MemberCardVO convertToVO(ScMemberCard card) { + if (card == null) return null; + + MemberCardVO vo = new MemberCardVO(); + BeanUtils.copyProperties(card, vo); + // 计算字段 + card.calculateFields(); + vo.setValid(card.getValid()); + vo.setExpired(card.getExpired()); + vo.setAvailable(card.getAvailable()); + vo.setCanRenew(card.getCanRenew()); + vo.setStatusDesc(card.getCardStatus().getDescription()); + // 查询关联信息 + if (card.getMemberId() != null) { + ScStudent member = memberMapper.selectById(card.getMemberId()); + if (member != null) { + vo.setMemberName(member.getStudentName()); + vo.setMemberPhone(member.getPhone()); + } + } + + if (card.getCardTypeId() != null) { + ScMemberCardTypes cardType = cardTypeMapper.selectById(card.getCardTypeId()); + if (cardType != null) { + vo.setCardTypeName(cardType.getCardName()); + vo.setCardTypeCode(cardType.getCardTypeId()); +// vo.setCardTypeCategory(cardType.getCategory()); + vo.setCardTypeDescription(cardType.getDescription()); + } + } + + return vo; + } + + @Override + public MemberCardVO getCardById(Long cardId) { + ScMemberCard card = this.getById(cardId); + if (card == null) { + throw new RuntimeException("会员卡不存在"); + } + return convertToVO(card); + } + + @Override + public RespPage getCardList(MemberCardDTO queryDTO) { + // 构建查询条件 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + // 基本查询条件 + queryWrapper.eq(ScMemberCard::getIsDeleted, 0); + + // 条件查询 + if (queryDTO.getMemberId() != null) { + queryWrapper.eq(ScMemberCard::getMemberId, queryDTO.getMemberId()); + } + if (StringUtils.hasText(queryDTO.getCardNo())) { + queryWrapper.like(ScMemberCard::getCardNo, queryDTO.getCardNo()); + } + if (StringUtils.hasText(queryDTO.getStatus())) { + queryWrapper.eq(ScMemberCard::getStatus, queryDTO.getStatus()); + } + if (queryDTO.getCardTypeId() != null) { + queryWrapper.eq(ScMemberCard::getCardTypeId, queryDTO.getCardTypeId()); + } +// if (queryDTO.getMinPrice() != null) { +// queryWrapper.ge(ScMemberCard::getPrice, queryDTO.getMinPrice()); +// } +// if (queryDTO.getMaxPrice() != null) { +// queryWrapper.le(ScMemberCard::getPrice, queryDTO.getMaxPrice()); +// } +// if (queryDTO.getStartDate() != null) { +// queryWrapper.ge(ScMemberCard::getCreatedAt, queryDTO.getStartDate()); +// } +// if (queryDTO.getEndDate() != null) { +// queryWrapper.le(ScMemberCard::getCreatedAt, queryDTO.getEndDate()); +// } + + // 排序 + queryWrapper.orderByDesc(ScMemberCard::getCreatedAt); + + // 分页查询 + RespPage page = new RespPage<>(queryDTO.getPageNum(), queryDTO.getPageSize()); + RespPage listPage =this.page(page, queryWrapper); + + // 转换为VO列表 + List voList = listPage.getRows().stream() + .map(this::convertToVO) + .collect(Collectors.toList()); + // 构建返回结果 + RespPage result = new RespPage<>(queryDTO.getPageNum(), queryDTO.getPageSize()); + result.setRows(voList); + result.setTotal(listPage.getTotal()); + result.setPages(queryDTO.getPageNum()); + result.setSize(queryDTO.getPageSize()); + result.setPages(listPage.getPages()); + + return result; + } + + + @Override + public Integer getTodayCardCount() { + LocalDateTime todayStart = LocalDate.now().atStartOfDay(); + LocalDateTime todayEnd = LocalDate.now().plusDays(1).atStartOfDay(); + + return this.lambdaQuery() + .eq(ScMemberCard::getIsDeleted, 0) + .eq(ScMemberCard::getTenantId, SecurityUtils.getLoginUser().getNowTenantId()) + .ge(ScMemberCard::getCreatedAt, todayStart) + .lt(ScMemberCard::getCreatedAt, todayEnd) + .count(); + } + +// @Override +// public List getExpiringCards(Integer days) { +// if (days == null) { +// days = 7; // 默认7天内到期 +// } +// +// LocalDate startDate = LocalDate.now(); +// LocalDate endDate = startDate.plusDays(days); +// +// List cards = this.lambdaQuery() +// .eq(ScMemberCard::getIsDeleted, 0) +// .eq(ScMemberCard::getStatus, ScMemberCard.CardStatus.ACTIVE.name()) +// .ge(ScMemberCard::getExpiryDate, startDate) +// .le(ScMemberCard::getExpiryDate, endDate) +// .orderByAsc(ScMemberCard::getExpiryDate) +// .list(); +// +// return cards.stream() +// .map(this::convertToVO) +// .collect(Collectors.toList()); +// } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardTypesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardTypesServiceImpl.java new file mode 100644 index 0000000..50ae845 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/member/service/impl/ScMemberCardTypesServiceImpl.java @@ -0,0 +1,58 @@ +package com.ruoyi.school.member.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.school.course.domain.req.course.ReqBusinessOrderCourseDetail; +import com.ruoyi.school.course.domain.resp.course.RespBusinessChooseCourseInfo; +import com.ruoyi.school.member.domain.ScMemberCardTypes; +import com.ruoyi.school.member.domain.resp.MemberCardVO; +import com.ruoyi.school.member.mapper.ScMemberCardTypesMapper; +import com.ruoyi.school.member.service.IScMemberCardService; +import com.ruoyi.school.member.service.ScMemberCardTypesService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 会员卡类型信息 服务实现类 + *

+ * + */ +@Service +public class ScMemberCardTypesServiceImpl extends ServiceImpl implements ScMemberCardTypesService { + + @Autowired + private IScMemberCardService memberCardService; + + + @Override + public APIResponse orderCardTypeDetail(ReqBusinessOrderCourseDetail orderCourseDetail){ + Long cardTypeId = orderCourseDetail.getCardTypeId(); + Long studentId = orderCourseDetail.getStudentId(); + + if (null == cardTypeId ) { + return APIResponse.toExceptionResponse("请选择会员卡项"); + } + + if (null == studentId) { + return APIResponse.toExceptionResponse("请选择学员"); + } + ScMemberCardTypes memberCardType=this.getById(cardTypeId); + + //是否为续报 + List memberCardVOS= memberCardService.getMemberCards(studentId); + + RespBusinessChooseCourseInfo chooseCourseInfo = RespBusinessChooseCourseInfo.builder() + .cardTypeId(memberCardType.getCardTypeId()) + .cardTypeName(memberCardType.getCardName()) + .continueCourse(memberCardVOS.size()>0?true:false) +// .deptId(sysDept.getDeptId()) +// .deptName(sysDept.getDeptName()) +// .teachingMode(scCourse.getTeachingMode()) + .build(); + return APIResponse.toAPIResponse(chooseCourseInfo); + } + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/model/ScOrder.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/ScOrder.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/model/ScOrder.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/domain/ScOrder.java index 06dce71..1d1d6b5 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/repo/model/ScOrder.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/ScOrder.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.order.repo.model; +package com.ruoyi.school.order.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -74,23 +74,13 @@ public class ScOrder implements Serializable { @TableField("original_total_fee") private BigDecimal originalTotalFee; - /** - * 实际价格 - */ - @TableField("actual_total_fee") - private BigDecimal actualTotalFee; /** - * 收款金额 receipt_fee+balance_fee=actual_total_fee + * 收款金额 */ @TableField("receipt_fee") private BigDecimal receiptFee; - /** - * 使用余额支付金额 - */ - @TableField("balance_fee") - private BigDecimal balanceFee; /** * 订单标签 @@ -171,10 +161,15 @@ public class ScOrder implements Serializable { private Date lastUpdateTime; /** - * 办理人员姓名 + * 卡号 */ - @TableField(exist = false) - private String handleStaffName; + @TableField("card_no") + private String cardNo; + /** + * 收款账户 + */ + @TableField( "account_id") + private Long accountId; } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqSearchScOrder.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/req/ReqSearchScOrder.java similarity index 81% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqSearchScOrder.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/domain/req/ReqSearchScOrder.java index 34ebdc6..8d1d836 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/req/ReqSearchScOrder.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/req/ReqSearchScOrder.java @@ -1,6 +1,7 @@ -package cn.xluobo.business.sc.order.domain.req; +package com.ruoyi.school.order.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; +import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; import org.apache.commons.lang3.StringUtils; @@ -22,9 +23,6 @@ public class ReqSearchScOrder extends ReqPageBase implements Serializable { private String handleDateBegin; private String handleDateEnd; - // 是否欠费 - private Boolean arrears; - // 校区 private Long deptId; @@ -49,6 +47,11 @@ public class ReqSearchScOrder extends ReqPageBase implements Serializable { // 销售来源 private String saleSourceTag; + private String tenantId; + + public String getTenantId(){ + return SecurityUtils.getLoginUser().getNowTenantId(); + } public void setHandleDate(String[] handleDate) { this.handleDate = handleDate; if (null != handleDate && handleDate.length == 2 && StringUtils.isAnyEmpty(handleDateBegin, handleDateEnd)) { diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/resp/RespOrder.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/resp/RespOrder.java similarity index 72% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/resp/RespOrder.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/domain/resp/RespOrder.java index 87b2534..239bda3 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/domain/resp/RespOrder.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/domain/resp/RespOrder.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.order.domain.resp; +package com.ruoyi.school.order.domain.resp; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -21,6 +21,7 @@ public class RespOrder { private BigDecimal actualTotalFee; + private BigDecimal originalTotalFee; private BigDecimal receiptFee; private BigDecimal balanceFee; @@ -41,8 +42,16 @@ public class RespOrder { private String phone; - private String orderDetail; - private String orderStatus; + private String cardNo; + private String cardType; + private String chargeType; + private BigDecimal totalCount; + private Integer totalDays; + private BigDecimal totalFee; + private String memberCardStatus; + + + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderStatusEnum.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderStatusEnum.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderStatusEnum.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderStatusEnum.java index 5e003ac..c00c58d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderStatusEnum.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderStatusEnum.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.order.enums; +package com.ruoyi.school.order.enums; /** * 订单状态 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderTypeEnum.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderTypeEnum.java similarity index 92% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderTypeEnum.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderTypeEnum.java index 92d3bb6..791965f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/enums/OrderTypeEnum.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/enums/OrderTypeEnum.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.order.enums; +package com.ruoyi.school.order.enums; /** * 订单类型 diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/order/mapper/ScOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/mapper/ScOrderMapper.java new file mode 100644 index 0000000..095607d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/mapper/ScOrderMapper.java @@ -0,0 +1,24 @@ +package com.ruoyi.school.order.mapper; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.school.order.domain.ScOrder; +import com.ruoyi.school.order.domain.req.ReqSearchScOrder; +import com.ruoyi.school.order.domain.resp.RespOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 订单 Mapper 接口 + *

+ * + * @author zhangby + * @since 2020-08-24 10:22:19 + */ +public interface ScOrderMapper extends com.baomidou.mybatisplus.core.mapper.BaseMapper { + + List selectFroSearchTable(@Param("reqSearchScOrder") ReqSearchScOrder reqSearchScOrder, @Param("page")Page page); + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/IScOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/service/IScOrderService.java similarity index 69% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/IScOrderService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/service/IScOrderService.java index ccf3fcf..6396709 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/IScOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/service/IScOrderService.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.order.service; +package com.ruoyi.school.order.service; -import cn.xluobo.business.sc.order.repo.model.ScOrder; +import com.ruoyi.school.order.domain.ScOrder; /** *

@@ -28,11 +28,5 @@ public interface IScOrderService extends com.baomidou.mybatisplus.extension.serv */ Integer orderCount(String beginDate, String endDate, String orderType); - /** - * 欠费学员数量 - * 收款金额 + 余额支付金额 < 应收金额 - * @return - */ - Integer arrearsStudentCount(); } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/order/service/impl/ScOrderServiceImpl.java similarity index 71% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/order/service/impl/ScOrderServiceImpl.java index 234eebd..8072816 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/order/service/impl/ScOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/order/service/impl/ScOrderServiceImpl.java @@ -1,13 +1,13 @@ -package cn.xluobo.business.sc.order.service.impl; +package com.ruoyi.school.order.service.impl; -import cn.xluobo.business.sc.order.enums.OrderStatusEnum; -import cn.xluobo.business.sc.order.repo.mapper.ScOrderMapper; -import cn.xluobo.business.sc.order.repo.model.ScOrder; -import cn.xluobo.business.sc.order.service.IScOrderService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.school.order.domain.ScOrder; +import com.ruoyi.school.order.enums.OrderStatusEnum; +import com.ruoyi.school.order.mapper.ScOrderMapper; +import com.ruoyi.school.order.service.IScOrderService; import org.springframework.stereotype.Service; /** @@ -38,8 +38,5 @@ public class ScOrderServiceImpl extends ServiceImpl impl return this.count(qw); } - @Override - public Integer arrearsStudentCount() { - return baseMapper.selectArrearsStudentCount(SecurityUtils.getLoginUser().getNowTenantId()); - } + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/model/ScRoom.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/ScRoom.java similarity index 96% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/model/ScRoom.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/ScRoom.java index 59271c5..41b4ff4 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/model/ScRoom.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/ScRoom.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.base.repo.model; +package com.ruoyi.school.room.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqRoomSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqRoomSelect.java similarity index 81% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqRoomSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqRoomSelect.java index c2c18e1..bcefd5f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqRoomSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqRoomSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.base.domain.req; +package com.ruoyi.school.room.domain.req; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSchoolSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSchoolSelect.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSchoolSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSchoolSelect.java index 4f6e68b..f2a46ac 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSchoolSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSchoolSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.base.domain.req; +package com.ruoyi.school.room.domain.req; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScRoom.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScRoom.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScRoom.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScRoom.java index bf4c221..26a3372 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScRoom.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScRoom.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.base.domain.req; +package com.ruoyi.school.room.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScSchool.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScSchool.java similarity index 77% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScSchool.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScSchool.java index 031e274..79f113c 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/req/ReqSearchScSchool.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/req/ReqSearchScSchool.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.base.domain.req; +package com.ruoyi.school.room.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; import java.io.Serializable; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomInfo.java similarity index 65% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomInfo.java index ef62477..ba2d0b9 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomInfo.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.base.domain.resp; +package com.ruoyi.school.room.domain.resp; -import cn.xluobo.business.sc.base.repo.model.ScRoom; +import com.ruoyi.school.room.domain.ScRoom; import lombok.Data; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomSelect.java similarity index 75% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomSelect.java index 60052a9..474a8ee 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespRoomSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespRoomSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.base.domain.resp; +package com.ruoyi.school.room.domain.resp; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespSchoolSelect.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespSchoolSelect.java similarity index 87% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespSchoolSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespSchoolSelect.java index 75d84ca..783fd85 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/domain/resp/RespSchoolSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/domain/resp/RespSchoolSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.base.domain.resp; +package com.ruoyi.school.room.domain.resp; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapper/ScRoomMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/mapper/ScRoomMapper.java similarity index 67% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapper/ScRoomMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/mapper/ScRoomMapper.java index c037533..1d31cc2 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapper/ScRoomMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/mapper/ScRoomMapper.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.base.repo.mapper; +package com.ruoyi.school.room.mapper; -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom; -import cn.xluobo.business.sc.base.domain.resp.RespRoomInfo; -import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect; -import cn.xluobo.business.sc.base.repo.model.ScRoom; +import com.ruoyi.school.room.domain.req.ReqRoomSelect; +import com.ruoyi.school.room.domain.req.ReqSearchScRoom; +import com.ruoyi.school.room.domain.resp.RespRoomInfo; +import com.ruoyi.school.room.domain.resp.RespRoomSelect; +import com.ruoyi.school.room.domain.ScRoom; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/BusinessScRoomService.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/BusinessScRoomService.java similarity index 86% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/BusinessScRoomService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/service/BusinessScRoomService.java index a431139..66fde17 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/BusinessScRoomService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/BusinessScRoomService.java @@ -1,19 +1,19 @@ -package cn.xluobo.business.sc.base.service; +package com.ruoyi.school.room.service; -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom; -import cn.xluobo.business.sc.base.domain.resp.RespRoomInfo; -import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect; -import cn.xluobo.business.sc.base.repo.mapper.ScRoomMapper; -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.course.repo.model.ScClaTime; -import cn.xluobo.business.sc.course.service.IScClaTimeService; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; +import com.ruoyi.school.course.domain.ScClaTime; +import com.ruoyi.school.course.service.IScClaTimeService; +import com.ruoyi.school.room.domain.req.ReqRoomSelect; +import com.ruoyi.school.room.domain.req.ReqSearchScRoom; +import com.ruoyi.school.room.domain.resp.RespRoomInfo; +import com.ruoyi.school.room.domain.resp.RespRoomSelect; +import com.ruoyi.school.room.mapper.ScRoomMapper; +import com.ruoyi.school.room.domain.ScRoom; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/IScRoomService.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/IScRoomService.java similarity index 62% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/IScRoomService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/service/IScRoomService.java index 8caf638..02d0183 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/IScRoomService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/IScRoomService.java @@ -1,8 +1,8 @@ -package cn.xluobo.business.sc.base.service; +package com.ruoyi.school.room.service; -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect; -import cn.xluobo.business.sc.base.repo.model.ScRoom; +import com.ruoyi.school.room.domain.req.ReqRoomSelect; +import com.ruoyi.school.room.domain.resp.RespRoomSelect; +import com.ruoyi.school.room.domain.ScRoom; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/impl/ScRoomServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/impl/ScRoomServiceImpl.java similarity index 59% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/impl/ScRoomServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/room/service/impl/ScRoomServiceImpl.java index aa4a0bd..6ab3e6a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/service/impl/ScRoomServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/room/service/impl/ScRoomServiceImpl.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.base.service.impl; +package com.ruoyi.school.room.service.impl; -import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect; -import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect; -import cn.xluobo.business.sc.base.repo.mapper.ScRoomMapper; -import cn.xluobo.business.sc.base.repo.model.ScRoom; -import cn.xluobo.business.sc.base.service.IScRoomService; +import com.ruoyi.school.room.mapper.ScRoomMapper; +import com.ruoyi.school.room.domain.req.ReqRoomSelect; +import com.ruoyi.school.room.domain.resp.RespRoomSelect; +import com.ruoyi.school.room.domain.ScRoom; +import com.ruoyi.school.room.service.IScRoomService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/model/ScCommissionPlans.java b/ruoyi-system/src/main/java/com/ruoyi/school/salary/domain/ScCommissionPlans.java similarity index 95% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/model/ScCommissionPlans.java rename to ruoyi-system/src/main/java/com/ruoyi/school/salary/domain/ScCommissionPlans.java index b858419..1b11f6f 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/model/ScCommissionPlans.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/salary/domain/ScCommissionPlans.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.salary.repo.model; +package com.ruoyi.school.salary.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/mapper/ScCommissionPlansMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/salary/mapper/ScCommissionPlansMapper.java similarity index 62% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/mapper/ScCommissionPlansMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/salary/mapper/ScCommissionPlansMapper.java index 9829ae0..f961a6b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/repo/mapper/ScCommissionPlansMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/salary/mapper/ScCommissionPlansMapper.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.salary.repo.mapper; +package com.ruoyi.school.salary.mapper; -import cn.xluobo.business.sc.salary.repo.model.ScCommissionPlans; +import com.ruoyi.school.salary.domain.ScCommissionPlans; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/service/ScCommissionPlansService.java b/ruoyi-system/src/main/java/com/ruoyi/school/salary/service/ScCommissionPlansService.java similarity index 55% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/service/ScCommissionPlansService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/salary/service/ScCommissionPlansService.java index 03fedf7..b3366af 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/salary/service/ScCommissionPlansService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/salary/service/ScCommissionPlansService.java @@ -1,7 +1,7 @@ -package cn.xluobo.business.sc.salary.service; +package com.ruoyi.school.salary.service; -import cn.xluobo.business.sc.salary.repo.mapper.ScCommissionPlansMapper; -import cn.xluobo.business.sc.salary.repo.model.ScCommissionPlans; +import com.ruoyi.school.salary.mapper.ScCommissionPlansMapper; +import com.ruoyi.school.salary.domain.ScCommissionPlans; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentAccountController.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/controller/ScStudentAccountController.java similarity index 85% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentAccountController.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/controller/ScStudentAccountController.java index 05f1996..c98bd33 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/controller/ScStudentAccountController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/controller/ScStudentAccountController.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.controller; +package com.ruoyi.school.student.controller; -import cn.xluobo.business.sc.student.service.BusinessScStudentAccountService; +import com.ruoyi.school.student.service.BusinessScStudentAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttend.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttend.java new file mode 100644 index 0000000..0e9e9a5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttend.java @@ -0,0 +1,39 @@ +package com.ruoyi.school.student.domain.req; + +import lombok.Data; + +/** + * 记上课请求参数 + * 修改上课记录请求参数 + * @author :zhangbaoyu + * @date :Created in 2020/10/1 19:44 + */ +@Data +public class ReqClaTimeAttend { + + + + // 排课编号 + private Long courseTimeId; + + private Long claId; + + private Long teacherId; + + private Long roomId; + + private String realClaDate; + + private String realStartTime; + + private String realEndTime; + + private String classTheme; + + private String memo; + + + + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttendItem.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttendItem.java similarity index 88% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttendItem.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttendItem.java index bf7a7c1..5d2609d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqClaTimeAttendItem.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqClaTimeAttendItem.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.student.domain.req; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStuCourseSignUp.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStuCourseSignUp.java similarity index 88% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStuCourseSignUp.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStuCourseSignUp.java index aec272b..6b3a6de 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStuCourseSignUp.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStuCourseSignUp.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.student.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import com.ruoyi.common.utils.SecurityUtils; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourse.java similarity index 70% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourse.java index c5368a8..0d09326 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourse.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.student.domain.req; -import cn.xluobo.core.page.ReqDeptCondition; +import com.ruoyi.common.page.ReqDeptCondition; import lombok.Data; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourseCla.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourseCla.java similarity index 83% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourseCla.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourseCla.java index 8a3fb72..a530776 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqSearchStudentCourseCla.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqSearchStudentCourseCla.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.student.domain.req; -import cn.xluobo.core.page.ReqPageBase; +import com.ruoyi.common.page.ReqPageBase; import lombok.Data; import java.io.Serializable; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentCourseChooseCla.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqStudentCourseChooseCla.java similarity index 93% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentCourseChooseCla.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqStudentCourseChooseCla.java index 246c8c0..a7af910 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/req/ReqStudentCourseChooseCla.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/req/ReqStudentCourseChooseCla.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.domain.req; +package com.ruoyi.school.student.domain.req; import lombok.Data; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespBusinessStudentCourseInfo.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespBusinessStudentMemberCardInfo.java similarity index 66% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespBusinessStudentCourseInfo.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespBusinessStudentMemberCardInfo.java index b9e5748..bc49b12 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespBusinessStudentCourseInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespBusinessStudentMemberCardInfo.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.domain.resp; +package com.ruoyi.school.student.domain.resp; import lombok.Builder; import lombok.Data; @@ -10,14 +10,14 @@ import lombok.Data; */ @Data @Builder -public class RespBusinessStudentCourseInfo { +public class RespBusinessStudentMemberCardInfo { // 联系电话 private String contactPhone; // 联系电话明细 private String contactPhoneDetail; - // 报读课程名称列表 - private String courseNames; + // 报读的会员卡名称列表 + private String memberCardNames; // 报读校区名称列表 private String deptNames; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespCourseClaStudent.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespCourseClaStudent.java new file mode 100644 index 0000000..377ed22 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespCourseClaStudent.java @@ -0,0 +1,100 @@ +package com.ruoyi.school.student.domain.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; + +/** + * 班级学员 + * 用于 班级下学生列表 + * @author :zhangbaoyu + * @date :Created in 2020/9/28 16:51 + */ +@Data +public class RespCourseClaStudent { + + private Long courseTimeId; + + //学员信息 + private Long studentId; + + private String studentName; + + private String sex; + + private String phone; + +//---------预约信息 + private Long bookId; + /** + * 卡ID + */ + private String cardNo; + + private String cardTypeName; + /** + * 收费模式 count:课时 days:时间 total_fee:储值 + */ + private String chargeType; + + /** + * 划扣次数 + */ + private BigDecimal deductCnt; + + /** + * 划扣金额 + */ + private BigDecimal deductFee; + + //"剩余次数") + private BigDecimal remainingCount; + + private BigDecimal remainingTotalFee; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd",timezone = "GMT+8") + private LocalDate expiryDate; + /** + * 预约状态:0->预约中;1->教练确认;2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败; + */ + private int bookStatus; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date createTime;//预约时间 + private int checkIn; //*0未签到 1签到 + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date checkInTime; + + + + + + + //---------------- 签到成功的学员 + + /** + * 划扣前次数 + */ + private BigDecimal countBefore; + + /** + * 划扣后次数 + */ + private BigDecimal countAfter; + + + /** + * 划扣前余额 + */ + private BigDecimal feeBefore; + + /** + * 划扣后余额 + */ + private BigDecimal feeAfter; + + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStuCourseSignUpStudent.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStuCourseSignUpStudent.java similarity index 86% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStuCourseSignUpStudent.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStuCourseSignUpStudent.java index 282daf7..083c44e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStuCourseSignUpStudent.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStuCourseSignUpStudent.java @@ -1,12 +1,9 @@ -package cn.xluobo.business.sc.student.domain.resp; +package com.ruoyi.school.student.domain.resp; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.ruoyi.school.course.enums.CourseChargeTypeEnum; import lombok.Data; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; import java.math.BigDecimal; import java.util.Date; @@ -86,8 +83,9 @@ public class RespStuCourseSignUpStudent { return comingEffectDay; } else { // 有生效周期 - Period period = new Period(DateTime.now(), new DateTime(this.endDate), PeriodType.days()); - return new BigDecimal(period.getDays() + 1).add(comingEffectDay); +// Period period = new Period(DateTime.now(), new DateTime(this.endDate), PeriodType.days()); +// return new BigDecimal(period.getDays() + 1).add(comingEffectDay); + return BigDecimal.ZERO; } } else { return BigDecimal.ZERO; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStudentCourse.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStudentCourse.java similarity index 61% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStudentCourse.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStudentCourse.java index 8336d67..981957d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/domain/resp/RespStudentCourse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/domain/resp/RespStudentCourse.java @@ -1,10 +1,7 @@ -package cn.xluobo.business.sc.student.domain.resp; +package com.ruoyi.school.student.domain.resp; -import cn.xluobo.business.sc.course.enums.CourseChargeTypeEnum; +import com.ruoyi.school.course.enums.CourseChargeTypeEnum; import lombok.Data; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.PeriodType; import java.math.BigDecimal; @@ -58,25 +55,25 @@ public class RespStudentCourse { * 获取剩余天数 * @return */ - public BigDecimal getBalanceDays() { - try { - if(CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { - if(null == this.endDate) { - // 无生效周期 - return comingEffectDay; - } else { - // 有生效周期 - Period period = new Period(DateTime.now(), new DateTime(this.endDate), PeriodType.days()); - return new BigDecimal(period.getDays() + 1).add(comingEffectDay); - } - } else { - return BigDecimal.ZERO; - } - } catch (Exception e) { - e.printStackTrace(); - return BigDecimal.ZERO; - } - } +// public BigDecimal getBalanceDays() { +// try { +// if(CourseChargeTypeEnum.DATE.getChargeType().equals(chargeType)) { +// if(null == this.endDate) { +// // 无生效周期 +// return comingEffectDay; +// } else { +// // 有生效周期 +// Period period = new Period(DateTime.now(), new DateTime(this.endDate),1); +// return new BigDecimal(period.getDays() + 1).add(comingEffectDay); +// } +// } else { +// return BigDecimal.ZERO; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// return BigDecimal.ZERO; +// } +// } /** * 按时间收费 当前时间 是否在缴费周期内(是否有效) diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/enums/StudentCourseStatusEnum.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/enums/StudentCourseStatusEnum.java similarity index 93% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/enums/StudentCourseStatusEnum.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/enums/StudentCourseStatusEnum.java index 23a47ad..4c54878 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/enums/StudentCourseStatusEnum.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/enums/StudentCourseStatusEnum.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.enums; +package com.ruoyi.school.student.enums; /** * 上课状态 diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountLogMapper.java similarity index 67% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountLogMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountLogMapper.java index e3c94f5..1e2738b 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountLogMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountLogMapper.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.repo.mapper; +package com.ruoyi.school.student.repo.mapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccountLog; +import com.ruoyi.school.student.repo.model.ScStudentAccountLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountMapper.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountMapper.java similarity index 67% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountMapper.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountMapper.java index 0dbc27e..dabed97 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapper/ScStudentAccountMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapper/ScStudentAccountMapper.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.repo.mapper; +package com.ruoyi.school.student.repo.mapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccount; +import com.ruoyi.school.student.repo.model.ScStudentAccount; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentContactMapper.xml b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountLogMapper.xml similarity index 64% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentContactMapper.xml rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountLogMapper.xml index 93248e6..1fa9530 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentContactMapper.xml +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountLogMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountMapper.xml b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountMapper.xml similarity index 64% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountMapper.xml rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountMapper.xml index 5c34b48..f90ed88 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentAccountMapper.xml +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/mapping/ScStudentAccountMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccount.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccount.java similarity index 96% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccount.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccount.java index 71471d8..3e4e004 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccount.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccount.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.repo.model; +package com.ruoyi.school.student.repo.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccountLog.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccountLog.java similarity index 96% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccountLog.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccountLog.java index 1128d74..76f01e1 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/model/ScStudentAccountLog.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/repo/model/ScStudentAccountLog.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sc.student.repo.model; +package com.ruoyi.school.student.repo.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentAccountService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentAccountService.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentAccountService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentAccountService.java index bee23be..d568d8e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentAccountService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentAccountService.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.service; +package com.ruoyi.school.student.service; -import cn.xluobo.core.api.APIResponse; +import com.ruoyi.core.api.APIResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentCourseService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentCourseService.java new file mode 100644 index 0000000..7cb4f5d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentCourseService.java @@ -0,0 +1,18 @@ +package com.ruoyi.school.student.service; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author :zhangbaoyu + * @date :Created in 2020/9/2 15:06 + */ +@Service +@Transactional +public class BusinessScStudentCourseService { + + + + + +} diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentService.java similarity index 58% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentService.java index 52490e0..4820f77 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/BusinessScStudentService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/BusinessScStudentService.java @@ -1,21 +1,19 @@ -package cn.xluobo.business.sc.student.service; +package com.ruoyi.school.student.service; import cn.hutool.core.util.ObjectUtil; -import cn.xluobo.business.sc.student.domain.req.ReqSearchScStudent; -import cn.xluobo.business.sc.student.domain.req.ReqStudentSelect; -import cn.xluobo.business.sc.student.domain.resp.RespSearchStudent; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccount; -import cn.xluobo.business.sc.student.repo.model.ScStudentContact; -import cn.xluobo.business.sc.student.repo.model.ScStudentCourse; -import cn.xluobo.core.api.APIResponse; -import cn.xluobo.core.api.ApiResEnums; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.core.api.ApiResEnums; +import com.ruoyi.school.member.domain.ScMemberCard; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.member.domain.req.ReqSearchScStudent; +import com.ruoyi.school.member.domain.req.ReqStudentSelect; +import com.ruoyi.school.member.domain.resp.RespSearchStudent; +import com.ruoyi.school.member.mapper.ScStudentMapper; +import com.ruoyi.school.member.service.IScMemberCardService; import com.ruoyi.system.domain.AppUser; import com.ruoyi.system.service.YjAppUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -37,14 +35,10 @@ public class BusinessScStudentService { @Autowired private IScStudentService scStudentService; - @Autowired - private IScStudentContactService contactService; @Autowired private ScStudentMapper studentMapper; @Autowired - private IScStudentCourseService studentCourseService; - @Autowired private IScStudentAccountService accountService; @Autowired @@ -85,14 +79,6 @@ public class BusinessScStudentService { } ScStudent detailInfo = scStudentService.getById(studentId); - // 联系人信息 - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("student_id", studentId); - List contactList = contactService.list(qw); - detailInfo.setContactList(contactList); - - - return APIResponse.toAPIResponse(detailInfo); } @@ -105,32 +91,23 @@ public class BusinessScStudentService { public APIResponse addScStudent(ScStudent scStudent) { LoginUser loginUser = SecurityUtils.getLoginUser(); - // 保存学生信息 - List contactList = scStudent.getContactList(); - if (null != contactList && contactList.size() > 0) { - scStudent.setPhone(contactList.get(0).getContactPhone()); - } + insertAppUser(scStudent); + + int i=scStudentService.count(new QueryWrapper().eq("app_user_id",scStudent.getAppUserId()) + .eq("delete_flag","0") + .eq("tenant_id",SecurityUtils.getLoginUser().getNowTenantId()) + ); + + if(i>0){ + throw new RuntimeException("使用该手机号注册的学员已经存在,请勿重复添加!"); + } + scStudent.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); scStudent.setCreateUser(loginUser.getUserId()); scStudentService.save(scStudent); - // 删除联系人信息 - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("student_id", scStudent.getStudentId()); - contactService.remove(uw); - - // 保存联系人信息 - if (null != contactList && contactList.size() > 0) { - contactList.forEach(item -> { - item.setStudentId(scStudent.getStudentId()); - item.setCreateUser(loginUser.getUserId()); - }); - contactService.saveBatch(contactList); - - scStudent.setPhone(contactList.get(0).getContactPhone()); - } return APIResponse.toAPIResponse(scStudent.getStudentId().toString()); } @@ -148,6 +125,7 @@ public class BusinessScStudentService { } scStudent.setAppUserId(appUser.getId()); } + /** * 更新 * @@ -159,25 +137,21 @@ public class BusinessScStudentService { return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); } LoginUser loginUser = SecurityUtils.getLoginUser(); - - - // 删除联系人信息 - UpdateWrapper uw = new UpdateWrapper<>(); - uw.eq("student_id", scStudent.getStudentId()); - contactService.remove(uw); - - // 保存联系人信息 - List contactList = scStudent.getContactList(); - if (null != contactList && contactList.size() > 0) { - contactList.forEach(item -> { - item.setStudentId(scStudent.getStudentId()); - item.setCreateUser(loginUser.getUserId()); - }); - contactService.saveBatch(contactList); - - scStudent.setPhone(contactList.get(0).getContactPhone()); + ScStudent dbStr=scStudentService.getById(scStudent.getStudentId()); + + if (!dbStr.getPhone().equals(scStudent.getPhone())){ + int i=scStudentService.count(new QueryWrapper() + .eq("phone",scStudent.getPhone()) + .eq("delete_flag","0") + .eq("tenant_id",SecurityUtils.getLoginUser().getNowTenantId()) + ); + + if(i>0){ + throw new RuntimeException("使用该手机号注册的学员已经存在,请勿重复添加!"); + } } + // 更新学生信息 scStudent.setLastUpdateUser(loginUser.getUserId()); scStudent.setLastUpdateTime(new Date()); @@ -186,6 +160,8 @@ public class BusinessScStudentService { return APIResponse.toOkResponse(); } + @Autowired + private IScMemberCardService memberCardService; /** * 删除 * @@ -198,22 +174,12 @@ public class BusinessScStudentService { } // 如果已报读 不允许删除 - QueryWrapper qwSc = new QueryWrapper<>(); - qwSc.in("student_id", studentIds); - int studentCourseCount = studentCourseService.count(qwSc); + int studentCourseCount = memberCardService.count(new QueryWrapper() + .in("member_id", Arrays.asList(studentIds))); if (studentCourseCount != 0) { - return APIResponse.toExceptionResponse("学生已报读课程,无法删除"); + return APIResponse.toExceptionResponse("学生已办理会员卡,无法删除"); } - QueryWrapper qwSsa = new QueryWrapper<>(); - qwSsa.in("student_id", studentIds); -// List accountList = accountService.list(qwSsa); -// for (ScStudentAccount account : accountList) { -// if(account.getBalanceFee().compareTo(BigDecimal.ZERO) != 0) { -// return APIResponse.toExceptionResponse("学生账户尚有余额'"+account.getBalanceFee().toString()+"元',无法删除"); -// } -// } - boolean deleteScStudent = scStudentService.removeByIds(Arrays.asList(studentIds)); if (deleteScStudent) { return APIResponse.toOkResponse(); diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountLogService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountLogService.java similarity index 68% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountLogService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountLogService.java index 16899f1..9095729 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountLogService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountLogService.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.service; +package com.ruoyi.school.student.service; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccountLog; +import com.ruoyi.school.student.repo.model.ScStudentAccountLog; import com.baomidou.mybatisplus.extension.service.IService; /** diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountService.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountService.java index 4beec36..5a3123e 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentAccountService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentAccountService.java @@ -1,6 +1,6 @@ -package cn.xluobo.business.sc.student.service; +package com.ruoyi.school.student.service; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccount; +import com.ruoyi.school.student.repo.model.ScStudentAccount; import com.baomidou.mybatisplus.extension.service.IService; import java.math.BigDecimal; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentService.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentService.java similarity index 68% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentService.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentService.java index 71d9358..f2c9658 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/IScStudentService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/IScStudentService.java @@ -1,10 +1,10 @@ -package cn.xluobo.business.sc.student.service; +package com.ruoyi.school.student.service; -import cn.xluobo.business.sc.student.domain.req.ReqStudentSelect; -import cn.xluobo.business.sc.student.domain.resp.RespSearchStudent; -import cn.xluobo.business.sc.student.repo.model.ScStudent; -import cn.xluobo.core.page.RespPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.school.member.domain.ScStudent; +import com.ruoyi.school.member.domain.req.ReqStudentSelect; +import com.ruoyi.school.member.domain.resp.RespSearchStudent; import java.util.List; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountLogServiceImpl.java similarity index 58% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountLogServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountLogServiceImpl.java index ca03d28..2da3df0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountLogServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountLogServiceImpl.java @@ -1,8 +1,8 @@ -package cn.xluobo.business.sc.student.service.impl; +package com.ruoyi.school.student.service.impl; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentAccountLogMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccountLog; -import cn.xluobo.business.sc.student.service.IScStudentAccountLogService; +import com.ruoyi.school.student.repo.mapper.ScStudentAccountLogMapper; +import com.ruoyi.school.student.repo.model.ScStudentAccountLog; +import com.ruoyi.school.student.service.IScStudentAccountLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountServiceImpl.java similarity index 84% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountServiceImpl.java index c1a08cf..7543921 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/service/impl/ScStudentAccountServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/school/student/service/impl/ScStudentAccountServiceImpl.java @@ -1,9 +1,8 @@ -package cn.xluobo.business.sc.student.service.impl; +package com.ruoyi.school.student.service.impl; -import cn.xluobo.business.sc.student.repo.mapper.ScStudentAccountMapper; -import cn.xluobo.business.sc.student.repo.model.ScStudentAccount; -import cn.xluobo.business.sc.student.service.IScStudentAccountService; -import cn.xluobo.config.exception.BusinessException; +import com.ruoyi.school.student.repo.mapper.ScStudentAccountMapper; +import com.ruoyi.school.student.repo.model.ScStudentAccount; +import com.ruoyi.school.student.service.IScStudentAccountService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -63,7 +62,7 @@ public class ScStudentAccountServiceImpl extends ServiceImpl未知;1->女;2->男") private Integer sex; //"用户所在城市") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/columns/SysTeacher.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/columns/SysTeacher.java index 282db55..abbd56a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/columns/SysTeacher.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/columns/SysTeacher.java @@ -56,4 +56,7 @@ public class SysTeacher extends BaseEntity @TableField(exist = false) private String nickName; + @TableField(exist = false) + private String deptId; + } diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelect.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/resp/RespTreeSelect.java similarity index 86% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelect.java rename to ruoyi-system/src/main/java/com/ruoyi/system/domain/resp/RespTreeSelect.java index 26f58f7..846ce4d 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/domain/resp/RespTreeSelect.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/resp/RespTreeSelect.java @@ -1,4 +1,4 @@ -package cn.xluobo.business.sys.admin.domain.resp; +package com.ruoyi.system.domain.resp; import com.fasterxml.jackson.annotation.JsonInclude; import com.ruoyi.common.core.domain.entity.SysDept; @@ -9,8 +9,6 @@ import java.util.List; /** * 前端select - * @author :zhangbaoyu - * @date :Created in 2020-01-14 22:07 */ @Data @Builder diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java index 6f1761f..b378062 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java @@ -1,5 +1,6 @@ package com.ruoyi.system.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.domain.entity.SysDept; import org.apache.ibatis.annotations.Param; @@ -10,7 +11,7 @@ import java.util.List; * * @author ruoyi */ -public interface SysDeptMapper +public interface SysDeptMapper extends BaseMapper { /** * 查询部门管理数据 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 76195b0..e66de2b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -1,20 +1,21 @@ package com.ruoyi.system.mapper; -import java.util.List; -import org.apache.ibatis.annotations.Param; import com.ruoyi.common.core.domain.entity.SysUser; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.List; + /** * 用户表 数据层 - * + * * @author ruoyi */ public interface SysUserMapper { /** * 根据条件分页查询用户列表 - * + * * @param sysUser 用户信息 * @return 用户信息集合信息 */ @@ -22,7 +23,7 @@ public interface SysUserMapper /** * 根据条件分页查询未已配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -30,7 +31,7 @@ public interface SysUserMapper /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -38,7 +39,7 @@ public interface SysUserMapper /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -46,7 +47,7 @@ public interface SysUserMapper /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -54,7 +55,7 @@ public interface SysUserMapper /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -62,7 +63,7 @@ public interface SysUserMapper /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -70,7 +71,7 @@ public interface SysUserMapper /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -79,7 +80,7 @@ public interface SysUserMapper /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -88,7 +89,7 @@ public interface SysUserMapper /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -96,7 +97,7 @@ public interface SysUserMapper /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -104,7 +105,7 @@ public interface SysUserMapper /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -128,4 +129,7 @@ public interface SysUserMapper @Select("SELECT * from sys_user WHERE (phonenumber = #{phone} or user_name = #{phone}) limit 1") SysUser selectUserByPhone(@Param("phone") String phone); + + + List selectUserByIds(@Param("ids") Long[] ids); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java index 1bdd472..6a591c4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java @@ -1,19 +1,22 @@ package com.ruoyi.system.service; -import java.util.List; +import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; +import java.util.List; + /** * 部门管理 服务层 - * + * * @author ruoyi */ -public interface ISysDeptService + +public interface ISysDeptService extends IService { /** * 查询部门管理数据 - * + * * @param dept 部门信息 * @return 部门信息集合 */ @@ -21,7 +24,7 @@ public interface ISysDeptService /** * 构建前端所需要树结构 - * + * * @param depts 部门列表 * @return 树结构列表 */ @@ -29,7 +32,7 @@ public interface ISysDeptService /** * 构建前端所需要下拉树结构 - * + * * @param depts 部门列表 * @return 下拉树结构列表 */ @@ -37,7 +40,7 @@ public interface ISysDeptService /** * 根据角色ID查询部门树信息 - * + * * @param roleId 角色ID * @return 选中部门列表 */ @@ -45,7 +48,7 @@ public interface ISysDeptService /** * 根据部门ID查询信息 - * + * * @param deptId 部门ID * @return 部门信息 */ @@ -53,7 +56,7 @@ public interface ISysDeptService /** * 根据ID查询所有子部门(正常状态) - * + * * @param deptId 部门ID * @return 子部门数 */ @@ -61,7 +64,7 @@ public interface ISysDeptService /** * 是否存在部门子节点 - * + * * @param deptId 部门ID * @return 结果 */ @@ -69,7 +72,7 @@ public interface ISysDeptService /** * 查询部门是否存在用户 - * + * * @param deptId 部门ID * @return 结果 true 存在 false 不存在 */ @@ -77,7 +80,7 @@ public interface ISysDeptService /** * 校验部门名称是否唯一 - * + * * @param dept 部门信息 * @return 结果 */ @@ -85,14 +88,14 @@ public interface ISysDeptService /** * 校验部门是否有数据权限 - * + * * @param deptId 部门id */ public void checkDeptDataScope(Long deptId); /** * 新增保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -100,7 +103,7 @@ public interface ISysDeptService /** * 修改保存部门信息 - * + * * @param dept 部门信息 * @return 结果 */ @@ -108,7 +111,7 @@ public interface ISysDeptService /** * 删除部门管理信息 - * + * * @param deptId 部门ID * @return 结果 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java index b4993e1..9d362bf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java @@ -1,18 +1,19 @@ package com.ruoyi.system.service; -import java.util.List; import com.ruoyi.common.core.domain.entity.SysDictData; +import java.util.List; + /** * 字典 业务层 - * + * * @author ruoyi */ public interface ISysDictDataService { /** * 根据条件分页查询字典数据 - * + * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ @@ -20,7 +21,7 @@ public interface ISysDictDataService /** * 根据字典类型和字典键值查询字典数据信息 - * + * * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 @@ -29,7 +30,7 @@ public interface ISysDictDataService /** * 根据字典数据ID查询信息 - * + * * @param dictCode 字典数据ID * @return 字典数据 */ @@ -37,7 +38,7 @@ public interface ISysDictDataService /** * 批量删除字典数据信息 - * + * * @param dictCodes 需要删除的字典数据ID * @return 结果 */ @@ -45,7 +46,7 @@ public interface ISysDictDataService /** * 新增保存字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ @@ -53,9 +54,11 @@ public interface ISysDictDataService /** * 修改保存字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ public int updateDictData(SysDictData dictData); + + List dictTypeDataList(String dictType); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 63da304..33e4a82 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -19,7 +19,7 @@ public interface ISysUserService */ public List selectUserList(SysUser user); - + List selectUserByIds(Long[] ids); /** * 通过用户名查询用户 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/IYjStoreService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/IYjStoreService.java index a39754d..b5af432 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/IYjStoreService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/IYjStoreService.java @@ -6,15 +6,15 @@ import java.util.List; /** * 门店Service接口 - * + * * @author ruoyi * @date 2025-10-31 */ -public interface IYjStoreService +public interface IYjStoreService { /** * 查询门店 - * + * * @param deptId 门店主键 * @return 门店 */ @@ -22,7 +22,7 @@ public interface IYjStoreService /** * 查询门店列表 - * + * * @param yjStore 门店 * @return 门店集合 */ @@ -30,7 +30,7 @@ public interface IYjStoreService /** * 新增门店 - * + * * @param yjStore 门店 * @return 结果 */ @@ -38,7 +38,7 @@ public interface IYjStoreService /** * 修改门店 - * + * * @param yjStore 门店 * @return 结果 */ @@ -46,7 +46,7 @@ public interface IYjStoreService /** * 批量删除门店 - * + * * @param deptIds 需要删除的门店主键集合 * @return 结果 */ @@ -54,7 +54,7 @@ public interface IYjStoreService /** * 删除门店信息 - * + * * @param deptId 门店主键 * @return 结果 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/impl/SysTeacherServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/impl/SysTeacherServiceImpl.java index 096119d..f0c3d60 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/impl/SysTeacherServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/columns/impl/SysTeacherServiceImpl.java @@ -45,6 +45,12 @@ public class SysTeacherServiceImpl implements ISysTeacherService { return sysTeacherMapper.selectSysTeacherList(sysTeacher); } + + /** + * 未生成教师简介的,教师员工 + * @param sysTeacher + * @return + */ @Override public List getUserForTeacher(SysTeacher sysTeacher) { diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BusinessSysDeptService.java similarity index 90% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDeptService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BusinessSysDeptService.java index c1e6fc2..c085a58 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sys/admin/service/BusinessSysDeptService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BusinessSysDeptService.java @@ -1,13 +1,14 @@ -package cn.xluobo.business.sys.admin.service; +package com.ruoyi.system.service.impl; -import cn.xluobo.business.sys.admin.domain.resp.RespTreeSelect; -import cn.xluobo.core.api.APIResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Lists; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.core.api.APIResponse; +import com.ruoyi.system.domain.resp.RespTreeSelect; import com.ruoyi.system.mapper.SysDeptMapper; +import com.ruoyi.system.service.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -99,13 +100,8 @@ public class BusinessSysDeptService { */ public List campusList() { SysDept sysDept = new SysDept(); -// sysDept.setInUse("1"); -// sysDept.setDeleteFlag("0"); -// sysDept.setDeptType("2"); LoginUser loginUser = SecurityUtils.getLoginUser(); sysDept.setTenantId(loginUser.getNowTenantId()); -// QueryWrapper qw = new QueryWrapper<>(sysDept); -// List list = sysDeptService.list(qw); List list = deptMapper.selectDeptList(sysDept); return list.stream().map(RespTreeSelect::new).collect(Collectors.toList()); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 42711fb..82e34e7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.TreeSelect; @@ -31,7 +32,7 @@ import java.util.stream.Collectors; * @author ruoyi */ @Service -public class SysDeptServiceImpl implements ISysDeptService +public class SysDeptServiceImpl extends ServiceImpl implements ISysDeptService { @Autowired private SysDeptMapper deptMapper; @@ -42,6 +43,7 @@ public class SysDeptServiceImpl implements ISysDeptService @Autowired private YjStoreMapper storeMapper; + /** * 查询部门管理数据 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index f6a1938..d4dde83 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -1,16 +1,17 @@ package com.ruoyi.system.service.impl; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.service.ISysDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; /** * 字典 业务层处理 - * + * * @author ruoyi */ @Service @@ -19,9 +20,18 @@ public class SysDictDataServiceImpl implements ISysDictDataService @Autowired private SysDictDataMapper dictDataMapper; + @Override +// @Cacheable(value = "SYS_DICT_DATA", key = "#dictType", sync = true) + public List dictTypeDataList(String dictType) { + + SysDictData dictData=new SysDictData(); + dictData.setDictType(dictType); + return this.selectDictDataList(dictData); + } + /** * 根据条件分页查询字典数据 - * + * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ @@ -33,7 +43,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 根据字典类型和字典键值查询字典数据信息 - * + * * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 @@ -46,7 +56,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 根据字典数据ID查询信息 - * + * * @param dictCode 字典数据ID * @return 字典数据 */ @@ -58,7 +68,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 批量删除字典数据信息 - * + * * @param dictCodes 需要删除的字典数据ID * @return 结果 */ @@ -76,7 +86,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 新增保存字典数据信息 - * + * * @param data 字典数据信息 * @return 结果 */ @@ -94,7 +104,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 修改保存字典数据信息 - * + * * @param data 字典数据信息 * @return 结果 */ @@ -109,4 +119,6 @@ public class SysDictDataServiceImpl implements ISysDictDataService } return row; } + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index ecd2713..920572b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -87,6 +87,11 @@ public class SysUserServiceImpl implements ISysUserService { return userMapper.selectUserByUserName(userName); } + @Override + public List selectUserByIds(Long[] ids) + { + return userMapper.selectUserByIds(ids); + } /** * 通过用户ID查询用户 @@ -257,10 +262,10 @@ public class SysUserServiceImpl implements ISysUserService AppUser appUser=appUserService.getOne(new QueryWrapper().eq("phone_number",user.getPhonenumber())); if (ObjectUtil.isEmpty(appUser)){ - appUser=new AppUser(); + appUser=new AppUser(); appUser.setNickName(user.getNickName()); appUser.setPhoneNumber(user.getPhonenumber()); - appUser.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + appUser.setPassword(user.getPassword()); appUser.setStatus(1); appUser.setManageAccountId(user.getStatus().equals("0")?user.getUserId():null); appUserService.save(appUser); diff --git a/ruoyi-system/src/main/resources/mapper/colums/SysTeacherMapper.xml b/ruoyi-system/src/main/resources/mapper/colums/SysTeacherMapper.xml index c5ce28a..6ca6437 100644 --- a/ruoyi-system/src/main/resources/mapper/colums/SysTeacherMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/colums/SysTeacherMapper.xml @@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and releases = #{releases} and sort = #{sort} and tenant_id = #{tenantId} + and sys_user.dept_id = #{deptId} diff --git a/ruoyi-system/src/main/resources/mapper/school/course/ScBookCourseMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScBookCourseMapper.xml new file mode 100644 index 0000000..73a2541 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScBookCourseMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeAttendMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeAttendMapper.xml similarity index 96% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeAttendMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeAttendMapper.xml index f25919b..aaeaeaf 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeAttendMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeAttendMapper.xml @@ -1,8 +1,8 @@ - + - select cta.attend_id,s.student_id,s.student_name,cta.charge_type, cta.teacher_id,cta.teacher_name,cta.attend_status,cta.pay_hour,cta.pay_fee, cta.memo, diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeMapper.xml similarity index 59% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeMapper.xml index bf717a6..f9e2df5 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeMapper.xml @@ -1,18 +1,27 @@ - + - + select b.course_time_id, + b.cla_id, + b.cla_date, + WEEKDAY(b.cla_date) + 1 as week_day, hour(b.start_time) as start_hour,b.start_time, - b.end_time,b.source,b.status,b.memo,b.status,b.class_theme, - a.cla_name,a.cla_color,course.course_name, - s.user_id as teacher_id,s.nick_name as staff_name, - r.room_id,r.room_name, - (select count(distinct student_id) from sc_student_course sc where sc.cla_id=a.cla_id and sc.status='1') as student_count, - b.pay_hour + b.end_time, + b.source, + b.status, + b.memo, + b.class_theme, + a.cla_name, + a.cla_color, + course.course_name, + s.user_id as teacher_id, + s.nick_name as staff_name, + r.room_id,r.room_name + from sc_course_cla a - left join sc_course course on a.course_id=course.course_id + left join sc_course course on a.course_id=course.course_id ,sc_cla_time b left join sys_user s on b.teacher_id = s.user_id left join sc_room r on b.room_id = r.room_id @@ -26,23 +35,21 @@ and a.cla_id=#{claId} - - and exists(select 1 from sc_student_course sc where a.cla_id=sc.cla_id and sc.student_id=#{studentId}) - and a.depart_id=#{deptId} - - and exists(select 1 from sys_user_dept ud - where ud.user_id=#{userId} - and (ud.dept_id=a.depart_id or ud.dept_id=-1)) - and b.teacher_id=#{teacherId} and a.course_id = #{courseId} + + and a.course_id in + + #{id} + + and b.status = '1' @@ -51,24 +58,38 @@ order by b.cla_date,b.status,b.start_time - + select ct.course_time_id, + ct.cla_id, + cc.cla_name, + course.course_id, + course.course_name, + ct.teacher_id, + s.nick_name as staff_name, ct.status, - ct.cla_date,ct.start_time,ct.end_time, - ct.real_cla_date,ct.real_start_time,ct.real_end_time, - ct.book_attend_cnt,ct.real_attend_cnt,ct.out_cnt, - ct.pay_hour,ct.pay_total_hour, - ct.pay_total_fee, - ct.room_name,ct.class_theme,ct.memo, + ct.cla_date, + ct.start_time, + ct.end_time, + ct.real_cla_date, + ct.real_start_time, + ct.real_end_time, + ct.book_attend_cnt, + ct.real_attend_cnt, + ct.room_name, + ct.class_theme, + ct.memo, (select u.user_name from sys_user u where u.user_id=ct.last_update_user) as last_update_user_name, - ct.create_time,ct.last_update_time + (select sum(cta.pay_fee) from sc_cla_time_attend cta where cta.course_time_id=ct.course_time_id) as pay_total_fee, + (select sum(cta.pay_hour) from sc_cla_time_attend cta where cta.course_time_id=ct.course_time_id) as pay_total_hour, + ct.create_time, + ct.last_update_time from sc_course_cla cc left join sc_course course on cc.course_id=course.course_id, sc_cla_time ct left join sys_user s on ct.teacher_id=s.user_id - where cc.cla_id = ct.cla_id and cc.tenant_id=#{searchClaTime.tenantId} + where cc.cla_id = ct.cla_id + and cc.tenant_id=#{searchClaTime.tenantId} and ct.cla_date between #{searchClaTime.beginDate} and #{searchClaTime.endDate} @@ -78,11 +99,6 @@ and cc.depart_id=#{searchClaTime.deptId} - - and exists(select 1 from sys_user_dept ud - where ud.user_id=#{searchClaTime.userId} - and (ud.dept_id=cc.depart_id or ud.dept_id=-1)) - and ct.teacher_id=#{searchClaTime.teacherId} @@ -127,4 +143,20 @@ and (ud.dept_id=b.depart_id or ud.dept_id=-1)) + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeRuleMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeRuleMapper.xml similarity index 88% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeRuleMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeRuleMapper.xml index 682ac42..df4deef 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScClaTimeRuleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScClaTimeRuleMapper.xml @@ -1,8 +1,8 @@ - + - select b.*,fcn_dict_name_list(b.week_day,'week_day') as week_day_name, a.cla_name,c.course_name,d.nick_name staff_name from sc_course_cla a, sc_cla_time_rule b, sc_course c, sys_user d @@ -30,7 +30,7 @@ order by b.create_time desc - select b.*, a.cla_name,c.course_name,d.nick_name as staff_name from sc_course_cla a, sc_cla_time_rule b, sc_course c, sys_user d @@ -39,7 +39,7 @@ and b.cla_id=#{claId} and #{day} between b.begin_date and b.end_date - select b.*, a.cla_name,c.course_name,d.nick_name as staff_name from sc_course_cla a, sc_cla_time_rule b, sc_course c, sys_user d diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseChargeMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseChargeMapper.xml similarity index 65% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseChargeMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScCourseChargeMapper.xml index 843f3f2..a6aea20 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseChargeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseChargeMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseClaMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseClaMapper.xml similarity index 73% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseClaMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScCourseClaMapper.xml index 44f53b0..a3fe788 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseClaMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseClaMapper.xml @@ -1,11 +1,10 @@ - + - select a.cla_id,a.cla_name, - (select count(1) from sc_student_course sc where sc.cla_id=a.cla_id and sc.status='1') as student_cnt, a.capacity,a.recruit_status,a.open_date, b.course_id,b.course_name, a.staff_id,a.teacher_name, @@ -37,14 +36,11 @@ where ud.user_id=#{reqSearchScCourseCla.userId} and (ud.dept_id=a.depart_id or ud.dept_id=-1)) - - and exists(select 1 from sc_course_charge cc where cc.course_id=b.course_id and cc.charge_type=#{reqSearchScCourseCla.chargeType} ) - and a.delete_flag='0' order by a.create_time desc - select a.cla_id,a.cla_name,b.course_id,b.course_name,c.nick_name as staff_name, dept.dept_id, dept.dept_name @@ -80,6 +76,39 @@ select count(1) from sc_course_cla where tenant_id=#{tenantId} and delete_flag='0' + + diff --git a/ruoyi-system/src/main/resources/mapper/school/course/ScCourseMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseMapper.xml new file mode 100644 index 0000000..a97dce4 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseMapper.xml @@ -0,0 +1,84 @@ + + + + + + + + + + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseTypeMapper.xml b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseTypeMapper.xml similarity index 66% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseTypeMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/course/ScCourseTypeMapper.xml index 895d17f..8c06e4a 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/course/repo/mapping/ScCourseTypeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/course/ScCourseTypeMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardChargeMapper.xml b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardChargeMapper.xml new file mode 100644 index 0000000..f138835 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardChargeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardCourseMapper.xml b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardCourseMapper.xml new file mode 100644 index 0000000..ebe8596 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardCourseMapper.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardTypesMapper.xml b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardTypesMapper.xml new file mode 100644 index 0000000..e96b58b --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/member/ScMemberCardTypesMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentMapper.xml b/ruoyi-system/src/main/resources/mapper/school/member/ScStudentMapper.xml similarity index 80% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/member/ScStudentMapper.xml index 7883dbb..867c8d3 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/student/repo/mapping/ScStudentMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/member/ScStudentMapper.xml @@ -1,10 +1,12 @@ - + + + - select student_id, a.school_id, student_name, birth_day, TIMESTAMPDIFF(YEAR, a.birth_day, CURDATE()) as age, sex, phone, in_time, - (select group_concat(sc.contact_nick,'(',fcn_dict_name(sc.contact_relation,'contact_relation'),') ',sc.contact_phone separator ';') from sc_student_contact sc where sc.student_id=a.student_id) as contact_info from sc_student a where a.delete_flag='0' and a.tenant_id=#{reqSearchScStudent.tenantId} @@ -22,14 +24,14 @@ order by a.create_time desc - select student_id,student_name from sc_student where delete_flag='0' and tenant_id=#{studentSelect.tenantId} and student_name like concat('%',#{studentSelect.search} ,'%') order by create_time desc, student_id desc - select student_id,student_name from sc_student a where delete_flag='0' diff --git a/ruoyi-system/src/main/resources/mapper/school/order/ScOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/school/order/ScOrderMapper.xml new file mode 100644 index 0000000..4cccf53 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/school/order/ScOrderMapper.xml @@ -0,0 +1,58 @@ + + + + + + + diff --git a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapping/ScRoomMapper.xml b/ruoyi-system/src/main/resources/mapper/school/room/ScRoomMapper.xml similarity index 81% rename from ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapping/ScRoomMapper.xml rename to ruoyi-system/src/main/resources/mapper/school/room/ScRoomMapper.xml index 210bde2..eb3f3c0 100644 --- a/ruoyi-admin/src/main/java/cn/xluobo/business/sc/base/repo/mapping/ScRoomMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/school/room/ScRoomMapper.xml @@ -1,8 +1,8 @@ - + - select a.*,b.dept_name from sc_room a left join sys_dept b on a.dept_id=b.dept_id where 1=1 and b.tenant_id=#{reqSearchScRoom.tenantId} @@ -16,7 +16,7 @@ and a.memo like concat('%',#{reqSearchScRoom.memo},'%') - select a.room_id, concat(a.room_name,'(',b.dept_name,')') as room_name diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index cd6ba2d..18e9388 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -150,6 +150,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select user_id, email from sys_user where email = #{email} limit 1 + + insert into sys_user( user_id,