Compare commits

..

No commits in common. '76259580cd84b039901cd22f2fa281901b53b18c' and '1d913c9a4f172044077deae3f4d72bf219f0e9f0' have entirely different histories.

@ -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.domain.resp.RespMonthCourseOrderFee;
import cn.xluobo.business.report.analysis.service.AnalysisReportService; import cn.xluobo.business.report.analysis.service.AnalysisReportService;
import cn.xluobo.business.sc.order.domain.req.ReqReportMonthCourseIncome; import cn.xluobo.business.sc.order.domain.req.ReqReportMonthCourseIncome;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.api.APIResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;

@ -1,8 +1,8 @@
package com.ruoyi.web.controller.school.order; package cn.xluobo.business.report.dashboard.controller;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.business.report.dashboard.domain.resp.DashboardData;
import com.ruoyi.school.dashboard.domain.resp.DashboardData; import cn.xluobo.business.report.dashboard.service.DashboardService;
import com.ruoyi.school.dashboard.service.DashboardService; import cn.xluobo.core.api.APIResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;

@ -1,4 +1,4 @@
package com.ruoyi.school.dashboard.domain.resp; package cn.xluobo.business.report.dashboard.domain.resp;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -46,8 +46,8 @@ public class DashboardData {
// 课程数量 // 课程数量
private Integer courseCnt; private Integer courseCnt;
// 余额小于200元学员数量 // 欠费学员数量
private Integer feeWillExpireCnt; private Integer arrearsStudentCnt;
// 按期缴费 即将过期人数 // 按期缴费 即将过期人数
private Integer dateWillExpireCnt; private Integer dateWillExpireCnt;

@ -1,24 +1,22 @@
package com.ruoyi.school.dashboard.service; package cn.xluobo.business.report.dashboard.service;
import cn.hutool.core.date.DateTime; import cn.xluobo.business.report.dashboard.domain.resp.DashboardData;
import cn.hutool.core.date.DateUtil; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.school.course.domain.ScCourse; import org.joda.time.DateTime;
import com.ruoyi.school.course.domain.ScCourseCla;
import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount;
import com.ruoyi.school.course.enums.ClaTimeAttendStatusEnums;
import com.ruoyi.school.course.service.IScClaTimeAttendService;
import com.ruoyi.school.course.service.IScClaTimeService;
import com.ruoyi.school.course.service.IScCourseClaService;
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.mapper.ScMemberCardMapper;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -34,26 +32,19 @@ import java.math.BigDecimal;
public class DashboardService { public class DashboardService {
@Autowired @Autowired
private IScMemberCardService memberCardService; private IScCourseClaService claService;
@Autowired @Autowired
private IScCourseService courseService; private IScCourseService courseService;
@Autowired @Autowired
private IScStudentService studentService; private IScStudentService studentService;
@Autowired @Autowired
private IScOrderService orderService; private IScClaTimeAttendService attendService;
@Autowired @Autowired
private IScCourseClaService claService; private IScOrderService orderService;
@Autowired @Autowired
private IScClaTimeService claTimeService; private IScClaTimeService claTimeService;
@Autowired
private IScClaTimeAttendService attendService;
@Autowired @Autowired
private ScMemberCardMapper memberCardMapper; private IScStudentCourseService studentCourseService;
//
/** /**
* *
@ -62,8 +53,8 @@ public class DashboardService {
*/ */
public DashboardData dashboardData() { public DashboardData dashboardData() {
String todayDate = DateTime.now().toString("yyyy-MM-dd"); String todayDate = DateTime.now().toString("yyyy-MM-dd");
String thisMonthBegin = DateUtil.beginOfMonth(DateTime.now()).toString("yyyy-MM-dd"); String thisMonthBegin = DateTime.now().withDayOfMonth(1).toString("yyyy-MM-dd");
String thisMonthEnd = DateUtil.endOfMonth(DateTime.now()).toString("yyyy-MM-dd"); String thisMonthEnd = DateTime.now().plusMonths(1).withDayOfMonth(1).minusDays(1).toString("yyyy-MM-dd");
String tenantId=SecurityUtils.getLoginUser().getNowTenantId(); String tenantId=SecurityUtils.getLoginUser().getNowTenantId();
int claCnt = claService.count(new QueryWrapper<ScCourseCla>().eq("tenant_id",tenantId)); int claCnt = claService.count(new QueryWrapper<ScCourseCla>().eq("tenant_id",tenantId));
int courseCnt = courseService.count(new QueryWrapper<ScCourse>().eq("tenant_id",tenantId)); int courseCnt = courseService.count(new QueryWrapper<ScCourse>().eq("tenant_id",tenantId));
@ -80,11 +71,11 @@ public class DashboardService {
Integer todayNeedAttendCnt = attendService.getNeedAttendCount(todayDate, todayDate); Integer todayNeedAttendCnt = attendService.getNeedAttendCount(todayDate, todayDate);
Integer todayRealAttendCnt = attendService.getAttendCount(todayDate, todayDate, Integer todayRealAttendCnt = attendService.getAttendCount(todayDate, todayDate,
new String[]{ClaTimeAttendStatusEnums.AT_CLASS.getAttendStatus()}); new String[]{ClaTimeAttendStatusEnums.AT_CLASS.getAttendStatus()});
// BigDecimal todayNeedCostHour = attendService.getAttendCostHour(todayDate, todayDate, true); BigDecimal todayNeedCostHour = attendService.getAttendCostHour(todayDate, todayDate, true);
BigDecimal todayRealCostHour = attendService.getAttendCostHour(todayDate, todayDate, false); BigDecimal todayRealCostHour = attendService.getAttendCostHour(todayDate, todayDate, false);
Integer feeWillExpireCnt = memberCardMapper.selectFeeWillExpireCards(200); Integer arrearsStudentCnt = orderService.arrearsStudentCount();
Integer dateWillExpireCnt = memberCardMapper.selectExpiringCards(5).size(); Integer dateWillExpireCnt = studentCourseService.getWillExpireDateCount(10);
Integer hourWillExpireCnt = memberCardMapper.selectHourWillExpireCards(10); Integer hourWillExpireCnt = studentCourseService.getWillExpireHourCount(5);
return DashboardData.builder() return DashboardData.builder()
.todayClaTimeCnt(todayClaTimeCnt) .todayClaTimeCnt(todayClaTimeCnt)
@ -93,12 +84,12 @@ public class DashboardService {
.thisMonthOrderCnt(thisMonthOrderCnt) .thisMonthOrderCnt(thisMonthOrderCnt)
.todayRealAttendCnt(todayRealAttendCnt) .todayRealAttendCnt(todayRealAttendCnt)
.todayNeedAttendCnt(todayNeedAttendCnt) .todayNeedAttendCnt(todayNeedAttendCnt)
// .todayNeedCostHour(todayNeedCostHour) .todayNeedCostHour(todayNeedCostHour)
.todayRealCostHour(todayRealCostHour) .todayRealCostHour(todayRealCostHour)
.studentCnt(studentCnt) .studentCnt(studentCnt)
.claCnt(claCnt) .claCnt(claCnt)
.courseCnt(courseCnt) .courseCnt(courseCnt)
.feeWillExpireCnt(feeWillExpireCnt) .arrearsStudentCnt(arrearsStudentCnt)
.dateWillExpireCnt(dateWillExpireCnt) .dateWillExpireCnt(dateWillExpireCnt)
.hourWillExpireCnt(hourWillExpireCnt) .hourWillExpireCnt(hourWillExpireCnt)
.build(); .build();

@ -1,10 +1,10 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.base.controller;
import com.ruoyi.school.room.domain.req.ReqRoomSelect; import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect;
import com.ruoyi.school.room.domain.req.ReqSearchScRoom; import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom;
import com.ruoyi.school.room.domain.ScRoom; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import com.ruoyi.school.room.service.BusinessScRoomService; import cn.xluobo.business.sc.base.service.BusinessScRoomService;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.api.APIResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

@ -1,4 +1,4 @@
package com.ruoyi.school.room.domain.req; package cn.xluobo.business.sc.base.domain.req;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.room.domain.req; package cn.xluobo.business.sc.base.domain.req;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.room.domain.req; package cn.xluobo.business.sc.base.domain.req;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.room.domain.req; package cn.xluobo.business.sc.base.domain.req;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;

@ -1,6 +1,6 @@
package com.ruoyi.school.room.domain.resp; package cn.xluobo.business.sc.base.domain.resp;
import com.ruoyi.school.room.domain.ScRoom; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import lombok.Data; import lombok.Data;
/** /**

@ -1,4 +1,4 @@
package com.ruoyi.school.room.domain.resp; package cn.xluobo.business.sc.base.domain.resp;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.room.domain.resp; package cn.xluobo.business.sc.base.domain.resp;
import lombok.Data; import lombok.Data;

@ -1,10 +1,10 @@
package com.ruoyi.school.room.mapper; package cn.xluobo.business.sc.base.repo.mapper;
import com.ruoyi.school.room.domain.req.ReqRoomSelect; import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect;
import com.ruoyi.school.room.domain.req.ReqSearchScRoom; import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom;
import com.ruoyi.school.room.domain.resp.RespRoomInfo; import cn.xluobo.business.sc.base.domain.resp.RespRoomInfo;
import com.ruoyi.school.room.domain.resp.RespRoomSelect; import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect;
import com.ruoyi.school.room.domain.ScRoom; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.room.mapper.ScRoomMapper"> <mapper namespace="cn.xluobo.business.sc.base.repo.mapper.ScRoomMapper">
<select id="selectList" resultType="com.ruoyi.school.room.domain.resp.RespRoomInfo"> <select id="selectList" resultType="cn.xluobo.business.sc.base.domain.resp.RespRoomInfo">
select a.*,b.dept_name select a.*,b.dept_name
from sc_room a left join sys_dept b on a.dept_id=b.dept_id 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} where 1=1 and b.tenant_id=#{reqSearchScRoom.tenantId}
@ -16,7 +16,7 @@
and a.memo like concat('%',#{reqSearchScRoom.memo},'%') and a.memo like concat('%',#{reqSearchScRoom.memo},'%')
</if> </if>
</select> </select>
<select id="selectForSelect" resultType="com.ruoyi.school.room.domain.resp.RespRoomSelect"> <select id="selectForSelect" resultType="cn.xluobo.business.sc.base.domain.resp.RespRoomSelect">
select select
a.room_id, a.room_id,
concat(a.room_name,'(',b.dept_name,')') as room_name concat(a.room_name,'(',b.dept_name,')') as room_name

@ -1,4 +1,4 @@
package com.ruoyi.school.room.domain; package cn.xluobo.business.sc.base.repo.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;

@ -1,19 +1,19 @@
package com.ruoyi.school.room.service; package cn.xluobo.business.sc.base.service;
import com.ruoyi.school.course.domain.ScClaTime; import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect;
import com.ruoyi.school.course.service.IScClaTimeService; import cn.xluobo.business.sc.base.domain.req.ReqSearchScRoom;
import com.ruoyi.school.room.domain.req.ReqRoomSelect; import cn.xluobo.business.sc.base.domain.resp.RespRoomInfo;
import com.ruoyi.school.room.domain.req.ReqSearchScRoom; import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect;
import com.ruoyi.school.room.domain.resp.RespRoomInfo; import cn.xluobo.business.sc.base.repo.mapper.ScRoomMapper;
import com.ruoyi.school.room.domain.resp.RespRoomSelect; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import com.ruoyi.school.room.mapper.ScRoomMapper; import cn.xluobo.business.sc.course.repo.model.ScClaTime;
import com.ruoyi.school.room.domain.ScRoom; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;

@ -1,8 +1,8 @@
package com.ruoyi.school.room.service; package cn.xluobo.business.sc.base.service;
import com.ruoyi.school.room.domain.req.ReqRoomSelect; import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect;
import com.ruoyi.school.room.domain.resp.RespRoomSelect; import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect;
import com.ruoyi.school.room.domain.ScRoom; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import java.util.List; import java.util.List;

@ -1,10 +1,10 @@
package com.ruoyi.school.room.service.impl; package cn.xluobo.business.sc.base.service.impl;
import com.ruoyi.school.room.mapper.ScRoomMapper; import cn.xluobo.business.sc.base.domain.req.ReqRoomSelect;
import com.ruoyi.school.room.domain.req.ReqRoomSelect; import cn.xluobo.business.sc.base.domain.resp.RespRoomSelect;
import com.ruoyi.school.room.domain.resp.RespRoomSelect; import cn.xluobo.business.sc.base.repo.mapper.ScRoomMapper;
import com.ruoyi.school.room.domain.ScRoom; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import com.ruoyi.school.room.service.IScRoomService; import cn.xluobo.business.sc.base.service.IScRoomService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

@ -1,11 +1,11 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.course.controller;
import com.ruoyi.common.page.RespPage; import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeAttend;
import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeAttend; import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeAttend;
import com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend; import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend;
import com.ruoyi.school.course.domain.ScClaTimeAttend; import cn.xluobo.business.sc.course.service.BusinessScClaTimeAttendService;
import com.ruoyi.school.course.service.BusinessScClaTimeAttendService; import cn.xluobo.core.api.APIResponse;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.page.RespPage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

@ -1,15 +1,15 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.course.controller;
import com.ruoyi.common.page.RespPage; import cn.xluobo.business.sc.course.domain.req.time.ReqSearchClaTime;
import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; import cn.xluobo.business.sc.course.domain.resp.time.RespBusinessClaTimeCalendar;
import com.ruoyi.school.course.domain.resp.time.RespBusinessClaTimeCalendar; import cn.xluobo.business.sc.course.domain.resp.time.RespClaTime;
import com.ruoyi.school.course.domain.resp.time.RespClaTime; import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeCalendar;
import com.ruoyi.school.course.domain.resp.time.RespClaTimeCalendar; import cn.xluobo.business.sc.course.repo.model.ScClaTime;
import com.ruoyi.school.course.domain.ScClaTime; import cn.xluobo.business.sc.course.repo.model.ScClaTimeVo;
import com.ruoyi.school.course.domain.ScClaTimeVo; import cn.xluobo.business.sc.course.service.BusinessClaTimeService;
import com.ruoyi.school.course.service.BusinessClaTimeService; import cn.xluobo.business.sc.student.domain.req.ReqClaTimeAttend;
import com.ruoyi.school.student.domain.req.ReqClaTimeAttend; import cn.xluobo.core.api.APIResponse;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.page.RespPage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -37,13 +37,6 @@ public class ScClaTimeController {
return claTimeService.searchListForCalendar(reqSearchClaTime); return claTimeService.searchListForCalendar(reqSearchClaTime);
} }
@GetMapping("/list/searchListForCalendarByMemberId")
public APIResponse searchListForCalendarByMemberId(ReqSearchClaTime reqSearchClaTime) {
return claTimeService.searchMemberId(reqSearchClaTime);
}
/** /**
* *
* *
@ -113,14 +106,21 @@ public class ScClaTimeController {
} }
/** /**
* *
* @param reqClaTimeAttend * @param reqClaTimeAttend
* @return * @return
*/ */
@PostMapping("/update/confirmCla") @PostMapping("/update/changeHadClaTimeAttend")
public APIResponse confirmCla(@RequestBody ReqClaTimeAttend reqClaTimeAttend) { public APIResponse changeHadClaTimeAttend(@RequestBody ReqClaTimeAttend reqClaTimeAttend) {
return claTimeService.confirmCla(reqClaTimeAttend); return claTimeService.changeHadClaTimeAttend(reqClaTimeAttend);
} }
/**
*
* @return
*/
@DeleteMapping("/delete/deleteHadClaTimeAttend/{courseTimeId}")
public APIResponse deleteHadClaTimeAttend(@PathVariable("courseTimeId") Long courseTimeId) {
return claTimeService.deleteHadClaTimeAttend(courseTimeId);
}
} }

@ -1,9 +1,9 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.course.controller;
import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule;
import com.ruoyi.school.course.domain.ScClaTimeRule; import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule;
import com.ruoyi.school.course.service.BusinessClaTimeRuleService; import cn.xluobo.business.sc.course.service.BusinessClaTimeRuleService;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.core.api.APIResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

@ -1,12 +1,11 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.course.controller;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.business.sc.course.domain.req.ReqAddScCourseCla;
import com.ruoyi.school.course.domain.ScCourseCla; import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseCla;
import com.ruoyi.school.course.domain.req.cla.ReqAddScCourseCla; import cn.xluobo.business.sc.course.domain.resp.cla.RespClaAllDetailInfo;
import com.ruoyi.school.course.domain.req.cla.ReqSearchScCourseCla; import cn.xluobo.business.sc.course.repo.model.ScCourseCla;
import com.ruoyi.school.course.domain.req.time.ReqSearchClaTime; import cn.xluobo.business.sc.course.service.BusinessScCourseClaService;
import com.ruoyi.school.course.domain.resp.cla.RespClaAllDetailInfo; import cn.xluobo.core.api.APIResponse;
import com.ruoyi.school.course.service.impl.BusinessScCourseClaService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -35,16 +34,6 @@ public class ScCourseClaController {
return scCourseClaService.searchList(reqSearchScCourseCla); return scCourseClaService.searchList(reqSearchScCourseCla);
} }
/**
*
* @param
* @return
*/
@GetMapping("/list/searchCourseClaStudent")
public APIResponse searchCourseClaStudent(ReqSearchClaTime reqSearchClaTime) {
return scCourseClaService.searchCourseClaStudent(reqSearchClaTime);
}
/** /**
* *
* *
@ -69,8 +58,6 @@ public class ScCourseClaController {
return APIResponse.toAPIResponse(allDetailInfo); return APIResponse.toAPIResponse(allDetailInfo);
} }
/** /**
* *
* *
@ -104,5 +91,4 @@ public class ScCourseClaController {
return scCourseClaService.deleteById(claIds); return scCourseClaService.deleteById(claIds);
} }
} }

@ -1,12 +1,14 @@
package com.ruoyi.web.controller.school.course; package cn.xluobo.business.sc.course.controller;
import com.ruoyi.core.api.APIResponse; import cn.xluobo.business.sc.course.domain.req.ReqBusinessOrderCourseDetail;
import com.ruoyi.school.course.domain.req.course.ReqSearchScCourse; import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourse;
import com.ruoyi.school.course.domain.req.course.ReqSelect; import cn.xluobo.business.sc.course.domain.req.ReqSelect;
import com.ruoyi.school.course.domain.req.course.ReqAddScCourse; import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourse;
import com.ruoyi.school.course.domain.req.course.ReqChangeScCourse; import cn.xluobo.business.sc.course.domain.req.course.ReqChangeScCourse;
import com.ruoyi.school.course.domain.ScCourse; import cn.xluobo.business.sc.course.repo.model.ScCourse;
import com.ruoyi.school.course.service.BusinessScCourseService; import cn.xluobo.business.sc.course.service.BusinessScCourseService;
import cn.xluobo.business.sc.course.service.IScCourseService;
import cn.xluobo.core.api.APIResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -27,6 +29,9 @@ public class ScCourseController {
@Autowired @Autowired
private BusinessScCourseService scCourseService; private BusinessScCourseService scCourseService;
@Autowired
private IScCourseService courseService;
/** /**
* *
* *
@ -115,7 +120,36 @@ public class ScCourseController {
return scCourseService.changeCourseSale(scCourse); 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);
}
} }

@ -0,0 +1,93 @@
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.*;
/**
* <p>
* Controller
* </p>
*
* @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);
}
}

@ -1,13 +0,0 @@
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;//扣费金额
}

@ -1,9 +1,11 @@
package com.ruoyi.school.course.domain.req.cla; package cn.xluobo.business.sc.course.domain.req;
import cn.xluobo.business.sc.course.repo.model.ScCourseCla;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.school.course.domain.ScCourseCla;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* *
* *
@ -27,6 +29,8 @@ public class ReqAddScCourseCla {
private String recruitStatus; private String recruitStatus;
private BigDecimal everyStuLoseHour;
private String openDate; private String openDate;
private String closeDate; private String closeDate;
@ -48,6 +52,8 @@ public class ReqAddScCourseCla {
cla.setClaColor(claColor); cla.setClaColor(claColor);
cla.setCapacity(capacity); cla.setCapacity(capacity);
cla.setRecruitStatus(recruitStatus); cla.setRecruitStatus(recruitStatus);
cla.setEveryStuLoseHour(everyStuLoseHour);
cla.setEveryTeaGetHour(everyStuLoseHour);
cla.setOpenDate(openDate); cla.setOpenDate(openDate);
cla.setCloseDate(closeDate); cla.setCloseDate(closeDate);
cla.setMemo(memo); cla.setMemo(memo);

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.domain.req;
import lombok.Data; import lombok.Data;
@ -13,7 +13,6 @@ public class ReqBusinessOrderCourseDetail {
private Long studentId; private Long studentId;
private Long[] courseIds; private Long[] courseIds;
private Long cardTypeId;
private Long deptId; private Long deptId;
} }

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.req.cla; package cn.xluobo.business.sc.course.domain.req;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.domain.req;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.cla; package cn.xluobo.business.sc.course.domain.req;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@ -16,6 +16,10 @@ public class ReqSearchScCourseCla extends ReqPageBase implements Serializable {
private String claName; private String claName;
private String courseTime; private String courseTime;
private Long departId; private Long departId;
/**
*
*/
private String chargeType;
private String tenantId; private String tenantId;
} }

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.domain.req;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@ -12,6 +12,4 @@ import java.io.Serializable;
@Data @Data
public class ReqSearchScCourseType extends ReqPageBase implements Serializable { public class ReqSearchScCourseType extends ReqPageBase implements Serializable {
private String courseType; private String courseType;
private Long[] typeIds;
} }

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.domain.req;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.cla; package cn.xluobo.business.sc.course.domain.req.cla;
import com.ruoyi.common.page.ReqDeptCondition; import cn.xluobo.core.page.ReqDeptCondition;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

@ -0,0 +1,160 @@
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<ReqAddScCourseChargeItem> feeModeHourList;
private List<ReqAddScCourseChargeItem> feeModeDateList;
private List<ReqAddScCourseChargeItem> 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();
}
}

@ -1,4 +1,4 @@
package com.ruoyi.school.member.domain.req; package cn.xluobo.business.sc.course.domain.req.course;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.domain.req.course;
import com.ruoyi.core.api.APIBaseResponse; import cn.xluobo.core.api.APIBaseResponse;
import lombok.Data; import lombok.Data;
/** /**

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.time; package cn.xluobo.business.sc.course.domain.req.time;
import com.ruoyi.common.page.ReqDeptCondition; import cn.xluobo.core.page.ReqDeptCondition;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

@ -1,11 +1,10 @@
package com.ruoyi.school.course.domain.req.time; package cn.xluobo.business.sc.course.domain.req.time;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import lombok.Data; import lombok.Data;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet;
/** /**
* @author zhangbaoyu * @author zhangbaoyu
@ -30,7 +29,7 @@ public class ReqSearchClaTime implements Serializable {
private String claId; private String claId;
// 学生 // 学生
private Long studentId; private String studentId;
private Long teacherId; private Long teacherId;
@ -61,9 +60,6 @@ public class ReqSearchClaTime implements Serializable {
private String tenantId; private String tenantId;
private HashSet<Long> courseIds;
public String getTenantId(){ public String getTenantId(){
return SecurityUtils.getLoginUser().getNowTenantId(); return SecurityUtils.getLoginUser().getNowTenantId();
} }

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.time; package cn.xluobo.business.sc.course.domain.req.time;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.req.time; package cn.xluobo.business.sc.course.domain.req.time;
import com.ruoyi.common.page.ReqPageBase; import cn.xluobo.core.page.ReqPageBase;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.domain.resp;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.domain.resp;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -18,9 +18,9 @@ import java.util.List;
public class RespBusinessChooseCourseInfo { public class RespBusinessChooseCourseInfo {
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long cardTypeId; private Long courseId;
private String cardTypeName; private String courseName;
private Long deptId; private Long deptId;

@ -1,7 +1,7 @@
package cn.xluobo.business.sc.course.domain.resp; package cn.xluobo.business.sc.course.domain.resp;
import lombok.Data; import lombok.Data;
import com.ruoyi.school.course.domain.resp.course.RespBusinessCourseInfo;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.domain.resp;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package cn.xluobo.business.sc.course.domain.resp; package cn.xluobo.business.sc.course.domain.resp;
import com.ruoyi.school.member.domain.ScStudent; import cn.xluobo.business.sc.student.repo.model.ScStudent;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.cla; package cn.xluobo.business.sc.course.domain.resp;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.cla; package cn.xluobo.business.sc.course.domain.resp;
import lombok.Data; import lombok.Data;

@ -1,8 +1,10 @@
package com.ruoyi.school.course.domain.resp.cla; package cn.xluobo.business.sc.course.domain.resp.cla;
import com.ruoyi.school.course.domain.ScCourseClaVo; import cn.xluobo.business.sc.course.domain.resp.RespBusinessChooseCourseCharge;
import com.ruoyi.school.course.domain.resp.course.RespBusinessChooseCourseCharge; import cn.xluobo.business.sc.course.repo.model.ScCourse;
import com.ruoyi.school.course.domain.resp.course.ScCourseVo; 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 lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.domain.resp.course;
import com.ruoyi.school.course.domain.req.course.ReqAddScCourse; import cn.xluobo.business.sc.course.domain.req.course.ReqAddScCourse;
import lombok.Data; import lombok.Data;
/** /**

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.domain.resp.course;
import lombok.Data; import lombok.Data;
@ -65,5 +65,4 @@ public class RespSearchCourse implements Serializable {
private Long studentCourseId; private Long studentCourseId;
private BigDecimal claFee;//教练课时费 private BigDecimal claFee;//教练课时费
private String storeNames;
} }

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import com.ruoyi.core.constants.SysConstant; import cn.xluobo.core.constants.SysConstant;
import lombok.Data; import lombok.Data;
/** /**
@ -13,8 +13,6 @@ public class ClaTimeCalendarItem {
private String courseTimeId; private String courseTimeId;
private String claId;
private String claName; private String claName;
private String courseName; private String courseName;
@ -46,11 +44,11 @@ public class ClaTimeCalendarItem {
this.claName = respClaTime.getClaName(); this.claName = respClaTime.getClaName();
this.courseName = respClaTime.getCourseName(); this.courseName = respClaTime.getCourseName();
this.claDate = respClaTime.getClaDate(); this.claDate = respClaTime.getClaDate();
this.claId = respClaTime.getClaId();
this.weekDay = SysConstant.WEEK_DAY_MAP.get(respClaTime.getWeekDay()); this.weekDay = SysConstant.WEEK_DAY_MAP.get(respClaTime.getWeekDay());
this.startTime = respClaTime.getStartTime().substring(0,5); this.startTime = respClaTime.getStartTime().substring(0,5);
this.endTime = respClaTime.getEndTime().substring(0,5); this.endTime = respClaTime.getEndTime().substring(0,5);
this.staffName = respClaTime.getStaffName(); this.staffName = respClaTime.getStaffName();
this.studentCount = respClaTime.getStudentCount();
this.roomName = respClaTime.getRoomName(); this.roomName = respClaTime.getRoomName();
this.claColor = respClaTime.getClaColor(); this.claColor = respClaTime.getClaColor();
this.claTimeStatus = respClaTime.getStatus(); this.claTimeStatus = respClaTime.getStatus();

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import lombok.Data; import lombok.Data;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import lombok.Data; import lombok.Data;
@ -50,18 +50,9 @@ public class RespClaTime {
// 实到 // 实到
private Integer realAttendCnt; private Integer realAttendCnt;
/** private Integer leaveCnt;
*
*/
private Integer atClassCnt;
/**
*
*/
private Integer lessCnt;
private Integer outCnt;
private BigDecimal payHour; private BigDecimal payHour;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import lombok.Data; import lombok.Data;

@ -1,10 +1,12 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import cn.xluobo.business.sc.course.repo.model.ScClaTime;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -105,7 +107,23 @@ public class RespClaTimeCalendar {
@TableField("real_end_time") @TableField("real_end_time")
private String realEndTime; 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: * 1: 2: 3:
@ -137,7 +155,17 @@ public class RespClaTimeCalendar {
@TableField("at_class_cnt") @TableField("at_class_cnt")
private Integer atClassCnt; private Integer atClassCnt;
/**
*
*/
// @TableField("leave_cnt")
// private Integer leaveCnt;
/**
*
*/
@TableField("out_cnt")
private Integer outCnt;
/** /**
* *

@ -1,5 +1,6 @@
package com.ruoyi.school.course.domain.resp.time; package cn.xluobo.business.sc.course.domain.resp.time;
import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.enums;
/** /**
* *

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.enums;
/** /**
* *

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.repo.enums;
/** /**
* *

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.repo.enums;
/** /**
* *

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.repo.enums;
/** /**
* @author zhangbaoyu * @author zhangbaoyu

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.repo.enums;
/** /**
* *

@ -1,4 +1,4 @@
package com.ruoyi.school.course.enums; package cn.xluobo.business.sc.course.repo.enums;
/** /**
* *

@ -1,10 +1,10 @@
package com.ruoyi.school.course.mapper; package cn.xluobo.business.sc.course.repo.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.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 org.apache.ibatis.annotations.Param;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -73,7 +73,6 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
BigDecimal selectAttendCostHour(@Param("beginDate") String beginDate BigDecimal selectAttendCostHour(@Param("beginDate") String beginDate
, @Param("endDate") String endDate , @Param("endDate") String endDate
, @Param("tenantId") String tenantId); , @Param("tenantId") String tenantId);
BigDecimal selectMemberByDay( @Param("tenantId") String tenantId);
/** /**
* *

@ -1,12 +1,12 @@
package com.ruoyi.school.course.mapper; package cn.xluobo.business.sc.course.repo.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.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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 org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -45,10 +45,4 @@ public interface ScClaTimeMapper extends BaseMapper<ScClaTime> {
*/ */
Integer selectClaTimeCount(ReqClaTimeCount reqClaTimeCount); Integer selectClaTimeCount(ReqClaTimeCount reqClaTimeCount);
Integer selectBookCount(@Param("ruleId") Long ruleId
,@Param("claId") Long claId
,@Param("courseTimeId") String courseTimeId
, @Param("tenantId") String tenantId );
} }

@ -1,10 +1,10 @@
package com.ruoyi.school.course.mapper; package cn.xluobo.business.sc.course.repo.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.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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 org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;

@ -0,0 +1,16 @@
package cn.xluobo.business.sc.course.repo.mapper;
import cn.xluobo.business.sc.course.repo.model.ScCourseCharge;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper
* </p>
*
* @author zhangby
* @since 2020-07-08
*/
public interface ScCourseChargeMapper extends BaseMapper<ScCourseCharge> {
}

@ -1,14 +1,13 @@
package com.ruoyi.school.course.mapper; 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;
import com.baomidou.mybatisplus.annotation.SqlParser; 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 org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -30,7 +29,7 @@ public interface ScCourseClaMapper extends com.baomidou.mybatisplus.core.mapper.
* @param page * @param page
* @return * @return
*/ */
List<RespCourseClaInfo> selectClaList(@Param("reqSearchScCourseCla") ReqSearchScCourseCla reqSearchScCourseCla, @Param("page") RespPage page); List<RespCourseClaInfo> selectClaList(@Param("reqSearchScCourseCla")ReqSearchScCourseCla reqSearchScCourseCla, @Param("page")RespPage page);
/** /**
* select * select
@ -60,7 +59,4 @@ public interface ScCourseClaMapper extends com.baomidou.mybatisplus.core.mapper.
* @return * @return
*/ */
Integer selectStudentCnt(Long claId); Integer selectStudentCnt(Long claId);
List <RespCourseClaStudent> selectStudenForClaTime(@Param("courseTimeId") String courseTimeId);
} }

@ -1,12 +1,13 @@
package com.ruoyi.school.course.mapper; package cn.xluobo.business.sc.course.repo.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.annotation.SqlParser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -46,7 +47,7 @@ public interface ScCourseMapper extends BaseMapper<ScCourse> {
* @param reqSearchScCourse * @param reqSearchScCourse
* @return * @return
*/ */
// List<ExpCourse> selectCourseForExport(@Param("reqSearchScCourse") ReqSearchScCourse reqSearchScCourse); List<ExpCourse> selectCourseForExport(@Param("reqSearchScCourse") ReqSearchScCourse reqSearchScCourse);
/** /**
* *

@ -1,7 +1,6 @@
package com.ruoyi.school.course.mapper; package cn.xluobo.business.sc.course.repo.mapper;
import cn.xluobo.business.sc.course.repo.model.ScCourseType;
import com.ruoyi.school.course.domain.ScCourseType;
/** /**
* <p> * <p>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeAttendMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScClaTimeAttendMapper">
<select id="selectTimeAttendList" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend"> <select id="selectTimeAttendList" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeAttend">
select cta.attend_id,s.student_id,s.student_name,cta.charge_type, 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.teacher_id,cta.teacher_name,cta.attend_status,cta.pay_hour,cta.pay_fee,
cta.memo, cta.memo,
@ -44,36 +44,37 @@
and exists(select 1 from sc_cla_time b where a.course_time_id=b.course_time_id and b.real_cla_date between #{beginDate} and #{endDate} ) and exists(select 1 from sc_cla_time b where a.course_time_id=b.course_time_id and b.real_cla_date between #{beginDate} and #{endDate} )
</select> </select>
<select id="selectNeedAttendCount" resultType="java.lang.Integer"> <select id="selectNeedAttendCount" resultType="java.lang.Integer">
select count(1) from sc_course_cla a select count(1) from sc_course_cla cc,sc_cla_time ct,sc_student_course sc
LEFT JOIN sc_cla_time b on a.cla_id=b.cla_id where ct.cla_date between #{beginDate} and #{endDate}
LEFT JOIN sc_book_course c on b.course_time_id=c.course_time_id and cc.cla_id=ct.cla_id
WHERE a.tenant_id=#{tenantId} and cc.cla_id=sc.cla_id
and c.book_status in ('0','1','2') and sc.status='1'
and c.create_time between #{beginDate} and #{endDate} and cc.tenant_id=#{tenantId}
and (sc.charge_type in ('hour','cycle')
or (charge_type='date' and exists(
select 1 from sc_student_course_order sco
where sc.student_course_id=sco.student_course_id
and sco.valid=1
and date_format(now(),'%Y-%m-%d') between sco.begin_date and sco.end_date)))
</select> </select>
<select id="selectAttendCount" resultType="java.lang.Integer"> <select id="selectAttendCount" resultType="java.lang.Integer">
select count(1) from sc_course_cla cc,sc_cla_time_attend cta,sc_cla_time ct select count(1) from sc_course_cla cc,sc_cla_time_attend cta,sc_cla_time ct
where cta.attend_status ='1' where cta.attend_status in
<foreach collection="attendStatus" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and ct.course_time_id=cta.course_time_id and ct.course_time_id=cta.course_time_id
and ct.cla_id=cc.cla_id and ct.cla_id=cc.cla_id
and cc.tenant_id=#{tenantId} and cc.tenant_id=#{tenantId}
and ct.cla_date between #{beginDate} and #{endDate} and ct.cla_date between #{beginDate} and #{endDate}
</select> </select>
<select id="selectAttendCostHour" resultType="java.math.BigDecimal"> <select id="selectAttendCostHour" resultType="java.math.BigDecimal">
select ifnull(sum(cta.pay_fee),0) from sc_course_cla cc,sc_cla_time_attend cta,sc_cla_time ct select ifnull(sum(cta.pay_hour),0) from sc_course_cla cc,sc_cla_time_attend cta,sc_cla_time ct
where ct.course_time_id=cta.course_time_id where ct.course_time_id=cta.course_time_id
and ct.cla_id=cc.cla_id and ct.cla_id=cc.cla_id
and cc.tenant_id=#{tenantId} and cc.tenant_id=#{tenantId}
and ct.cla_date between #{beginDate} and #{endDate} and ct.cla_date between #{beginDate} and #{endDate}
</select> </select>
<select id="selectMemberByDay" resultType="java.math.BigDecimal">
SELECT
ifnull(sum(price/total_days),0)
from sc_member_cards
where status='ACTIVE'
and expiry_date > CURDATE()
and tenant_id=#{tenantId}
</select>
<select id="selectNeedAttendCostHour" resultType="java.math.BigDecimal"> <select id="selectNeedAttendCostHour" resultType="java.math.BigDecimal">
select ifnull(sum(ct.pay_hour),0) select ifnull(sum(ct.pay_hour),0)
from sc_course_cla cc,sc_cla_time ct,sc_student_course sc from sc_course_cla cc,sc_cla_time ct,sc_student_course sc

@ -1,25 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScClaTimeMapper">
<select id="selectListForCalendar" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeCalendar"> <select id="selectListForCalendar" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeCalendar">
select b.course_time_id, select b.course_time_id,b.cla_id,b.cla_date,WEEKDAY(b.cla_date) + 1 as week_day,
b.cla_id,
b.cla_date,
WEEKDAY(b.cla_date) + 1 as week_day,
hour(b.start_time) as start_hour,b.start_time, hour(b.start_time) as start_hour,b.start_time,
b.end_time, b.end_time,b.source,b.status,b.memo,b.status,b.class_theme,
b.source, a.cla_name,a.cla_color,course.course_name,
b.status, s.user_id as teacher_id,s.nick_name as staff_name,
b.memo, r.room_id,r.room_name,
b.class_theme, (select count(distinct student_id) from sc_student_course sc where sc.cla_id=a.cla_id and sc.status='1') as student_count,
a.cla_name, b.pay_hour
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 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 ,sc_cla_time b
@ -35,21 +26,23 @@
<if test="claId != null"> <if test="claId != null">
and a.cla_id=#{claId} and a.cla_id=#{claId}
</if> </if>
<if test="studentId != null">
and exists(select 1 from sc_student_course sc where a.cla_id=sc.cla_id and sc.student_id=#{studentId})
</if>
<if test="deptId != null"> <if test="deptId != null">
and a.depart_id=#{deptId} and a.depart_id=#{deptId}
</if> </if>
<if test="deptId == null and userId != null and userId != ''">
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))
</if>
<if test="teacherId != null"> <if test="teacherId != null">
and b.teacher_id=#{teacherId} and b.teacher_id=#{teacherId}
</if> </if>
<if test="courseId != null"> <if test="courseId != null">
and a.course_id = #{courseId} and a.course_id = #{courseId}
</if> </if>
<if test="courseIds!= null">
and a.course_id in
<foreach item="id" collection="courseIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="attended != null and attended == false"> <if test="attended != null and attended == false">
and b.status = '1' and b.status = '1'
</if> </if>
@ -58,40 +51,24 @@
</if> </if>
order by b.cla_date,b.status,b.start_time order by b.cla_date,b.status,b.start_time
</select> </select>
<select id="selectListForAttend" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTime">
<select id="selectListForAttend" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTime"> select ct.course_time_id,ct.cla_id,cc.cla_name,
select ct.course_time_id, course.course_id,course.course_name,
ct.cla_id, ct.teacher_id,s.nick_name as staff_name,
cc.cla_name,
course.course_id,
course.course_name,
ct.teacher_id,
s.nick_name as staff_name,
ct.status, ct.status,
ct.cla_date, ct.cla_date,ct.start_time,ct.end_time,
ct.start_time, ct.real_cla_date,ct.real_start_time,ct.real_end_time,
ct.end_time, ct.book_attend_cnt,ct.real_attend_cnt,ct.out_cnt,
ct.real_cla_date, ct.pay_hour,ct.pay_total_hour,
ct.real_start_time, ct.pay_total_fee,
ct.real_end_time, ct.room_name,ct.class_theme,ct.memo,
ct.book_attend_cnt,
ct.real_attend_cnt,
ct.room_name,
ct.class_theme,
ct.at_class_cnt,
ct.less_cnt,
ct.memo,
(select u.user_name from sys_user u where u.user_id=ct.last_update_user) as last_update_user_name, (select u.user_name from sys_user u where u.user_id=ct.last_update_user) as last_update_user_name,
(select sum(cta.pay_fee) from sc_cla_time_attend cta where cta.course_time_id=ct.course_time_id) as pay_total_fee, ct.create_time,ct.last_update_time
(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 from sc_course_cla cc
left join sc_course course on cc.course_id=course.course_id, left join sc_course course on cc.course_id=course.course_id,
sc_cla_time ct sc_cla_time ct
left join sys_user s on ct.teacher_id=s.user_id left join sys_user s on ct.teacher_id=s.user_id
where cc.cla_id = ct.cla_id where cc.cla_id = ct.cla_id and cc.tenant_id=#{searchClaTime.tenantId}
and cc.tenant_id=#{searchClaTime.tenantId}
<if test="searchClaTime.beginDate != null and searchClaTime.beginDate != '' and searchClaTime.endDate != null and searchClaTime.endDate != ''"> <if test="searchClaTime.beginDate != null and searchClaTime.beginDate != '' and searchClaTime.endDate != null and searchClaTime.endDate != ''">
and ct.cla_date between #{searchClaTime.beginDate} and #{searchClaTime.endDate} and ct.cla_date between #{searchClaTime.beginDate} and #{searchClaTime.endDate}
</if> </if>
@ -101,6 +78,11 @@
<if test="searchClaTime.deptId != null"> <if test="searchClaTime.deptId != null">
and cc.depart_id=#{searchClaTime.deptId} and cc.depart_id=#{searchClaTime.deptId}
</if> </if>
<if test="searchClaTime.deptId == null and searchClaTime.userId != null and searchClaTime.userId != ''">
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))
</if>
<if test="searchClaTime.teacherId != null"> <if test="searchClaTime.teacherId != null">
and ct.teacher_id=#{searchClaTime.teacherId} and ct.teacher_id=#{searchClaTime.teacherId}
</if> </if>
@ -145,20 +127,4 @@
and (ud.dept_id=b.depart_id or ud.dept_id=-1)) and (ud.dept_id=b.depart_id or ud.dept_id=-1))
</if> </if>
</select> </select>
<select id="selectBookCount" resultType="java.lang.Integer">
SELECT count(1) from sc_cla_time a,sc_book_course b
WHERE a.course_time_id=b.course_time_id
and a.status='1'
and b.book_status not in ('3','5')
<if test="claId !=null">
and a.cla_id=#{claId}
</if>
<if test="ruleId !=null">
and a.rule_id=#{ruleId}
</if>
<if test="courseTimeId !=null">
and a.course_time_id=#{courseTimeId}
</if>
and exists(select 1 from sc_course_cla c where a.cla_id = c.cla_id and c.tenant_id=#{tenantId})
</select>
</mapper> </mapper>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeRuleMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScClaTimeRuleMapper">
<select id="selectByCondition" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeRule"> <select id="selectByCondition" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule">
select b.*,fcn_dict_name_list(b.week_day,'week_day') as week_day_name, 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 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 from sc_course_cla a, sc_cla_time_rule b, sc_course c, sys_user d
@ -30,7 +30,7 @@
</if> </if>
order by b.create_time desc order by b.create_time desc
</select> </select>
<select id="selectByDay" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeRule"> <select id="selectByDay" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule">
select b.*, select b.*,
a.cla_name,c.course_name,d.nick_name as staff_name 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 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 b.cla_id=#{claId}
and #{day} between b.begin_date and b.end_date and #{day} between b.begin_date and b.end_date
</select> </select>
<select id="selectByRuleId" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeRule"> <select id="selectByRuleId" resultType="cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule">
select b.*, select b.*,
a.cla_name,c.course_name,d.nick_name as staff_name 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 from sc_course_cla a, sc_cla_time_rule b, sc_course c, sys_user d

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScCourseChargeMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScCourseChargeMapper">
</mapper> </mapper>

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScCourseClaMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScCourseClaMapper">
<select id="selectClaList" resultType="com.ruoyi.school.course.domain.resp.cla.RespCourseClaInfo"> <select id="selectClaList" resultType="cn.xluobo.business.sc.course.domain.resp.RespCourseClaInfo">
select select
a.cla_id,a.cla_name, 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, a.capacity,a.recruit_status,a.open_date,
b.course_id,b.course_name, b.course_id,b.course_name,
a.staff_id,a.teacher_name, a.staff_id,a.teacher_name,
@ -36,11 +37,14 @@
where ud.user_id=#{reqSearchScCourseCla.userId} where ud.user_id=#{reqSearchScCourseCla.userId}
and (ud.dept_id=a.depart_id or ud.dept_id=-1)) and (ud.dept_id=a.depart_id or ud.dept_id=-1))
</if> </if>
<if test="reqSearchScCourseCla.chargeType != null and reqSearchScCourseCla.chargeType != ''">
and exists(select 1 from sc_course_charge cc where cc.course_id=b.course_id and cc.charge_type=#{reqSearchScCourseCla.chargeType} )
</if>
and a.delete_flag='0' and a.delete_flag='0'
order by a.create_time desc order by a.create_time desc
</select> </select>
<select id="selectForSelect" resultType="com.ruoyi.school.course.domain.resp.cla.RespCourseClaSelectInfo"> <select id="selectForSelect" resultType="cn.xluobo.business.sc.course.domain.resp.RespCourseClaSelectInfo">
select a.cla_id,a.cla_name,b.course_id,b.course_name,c.nick_name as staff_name, select a.cla_id,a.cla_name,b.course_id,b.course_name,c.nick_name as staff_name,
dept.dept_id, dept.dept_id,
dept.dept_name dept.dept_name
@ -76,39 +80,6 @@
select count(1) from sc_course_cla where tenant_id=#{tenantId} and delete_flag='0' select count(1) from sc_course_cla where tenant_id=#{tenantId} and delete_flag='0'
</select> </select>
<select id="selectStudentCnt" resultType="java.lang.Integer"> <select id="selectStudentCnt" resultType="java.lang.Integer">
select count(1) from sc_student_course sc where sc.cla_id=#{claId} and sc.status='1' select count(1) from sc_student_course sc where sc.cla_id=#{claId} and sc.status='1'
</select>
<select id="selectStudenForClaTime" resultType="RespCourseClaStudent">
SELECT
b.student_id,b.student_name,b.sex,b.phone,
a.course_time_id,
a.id as book_id,
a.card_no,
(select type.card_name from sc_member_card_types type where card.card_type_id=type.card_type_id) as card_type_name,
a.charge_type,
a.deduct_cnt,
a.deduct_fee,
card.remaining_count,
card.remaining_total_fee,
card.expiry_date,
a.book_status,
a.create_time,
a.check_in,
a.check_in_time,
c.count_before,
c.count_after,
c.fee_before,
c.fee_after
from sc_student b ,
sc_member_cards card,
sc_book_course a
LEFT JOIN sc_cla_time_attend c on a.id=c.book_id
WHERE
a.card_no=card.card_no
and a.student_id=b.student_id
and a.course_time_id=#{courseTimeId}
</select> </select>
</mapper> </mapper>

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScCourseMapper">
<select id="selectCourseList" resultType="cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse">
select a.course_id,a.course_name,
a.course_type_id,
b.course_type as course_type_name,a.teaching_mode,
(select count(1) from sc_course_cla cc where a.course_id=cc.course_id) as cla_count,
(select group_concat(distinct charge.charge_type) from sc_course_charge charge where a.course_id=charge.course_id) as charge_names,
(select group_concat(distinct charge.depart_id) from sc_course_charge charge where a.course_id=charge.course_id) as campus_ids,
a.create_time,
a.sale,
a.course_intro,
a.cla_fee
from sc_course a
left join sc_course_type b on a.course_type_id = b.course_type_id and b.in_use='1'
where a.delete_flag='0' and a.tenant_id=#{reqSearchScCourse.tenantId}
<if test="reqSearchScCourse.courseName != null and reqSearchScCourse.courseName != ''">
and a.course_name like concat('%',#{reqSearchScCourse.courseName} ,'%')
</if>
<if test="reqSearchScCourse.sale != null and reqSearchScCourse.sale != ''">
and a.sale = #{reqSearchScCourse.sale}
</if>
<if test="reqSearchScCourse.courseTypeId != null and reqSearchScCourse.courseTypeId != ''">
and a.course_type_id = #{reqSearchScCourse.courseTypeId}
</if>
<if test="reqSearchScCourse.teachingMode != null and reqSearchScCourse.teachingMode != ''">
and a.teaching_mode = #{reqSearchScCourse.teachingMode}
</if>
<if test="reqSearchScCourse.departId != null">
and exists(select 1 from sc_course_charge c where a.course_id=c.course_id and (c.depart_id=#{reqSearchScCourse.departId} or c.depart_id=-1))
</if>
<if test="reqSearchScCourse.chargeType != null and reqSearchScCourse.chargeType != ''">
and exists(select 1 from sc_course_charge c where a.course_id=c.course_id and c.charge_type=#{reqSearchScCourse.chargeType} )
</if>
order by a.sale desc,a.create_time desc
</select>
<select id="selectCourseListWithStudentCourse" resultType="cn.xluobo.business.sc.course.domain.resp.course.RespSearchCourse">
select a.course_id,a.course_name,b.course_type as course_type_name,a.teaching_mode,
(select count(1) from sc_course_cla cc where a.course_id=cc.course_id) as cla_count,
(select group_concat(distinct charge.charge_type) from sc_course_charge charge where a.course_id=charge.course_id) as charge_names,
(select group_concat(distinct charge.depart_id) from sc_course_charge charge where a.course_id=charge.course_id) as campus_ids,
a.create_time,
a.sale,
a.course_intro,
c.student_course_id
from sc_course a
left join sc_course_type b on a.course_type_id = b.course_type_id and b.in_use='1'
left join sc_student_course c on a.course_id=c.course_id and c.student_id = #{reqSearchScCourse.studentId}
where a.delete_flag='0' and a.tenant_id=#{tenantId}
<if test="reqSearchScCourse.courseName != null and reqSearchScCourse.courseName != ''">
and a.course_name like concat('%',#{reqSearchScCourse.courseName} ,'%')
</if>
<if test="reqSearchScCourse.sale != null and reqSearchScCourse.sale != ''">
and a.sale = #{reqSearchScCourse.sale}
</if>
<if test="reqSearchScCourse.courseTypeId != null and reqSearchScCourse.courseTypeId != ''">
and a.course_type_id = #{reqSearchScCourse.courseTypeId}
</if>
<if test="reqSearchScCourse.teachingMode != null and reqSearchScCourse.teachingMode != ''">
and a.teaching_mode = #{reqSearchScCourse.teachingMode}
</if>
<if test="reqSearchScCourse.departId != null">
and exists(select 1 from sc_course_charge c where a.course_id=c.course_id and (c.depart_id=#{reqSearchScCourse.departId} or c.depart_id=-1))
</if>
<if test="reqSearchScCourse.chargeType != null and reqSearchScCourse.chargeType != ''">
and exists(select 1 from sc_course_charge c where a.course_id=c.course_id and c.charge_type=#{reqSearchScCourse.chargeType} )
</if>
order by a.sale desc,a.create_time desc
</select>
<select id="selectCourseForExport" resultType="cn.xluobo.business.sc.course.domain.export.ExpCourse">
select a.course_id,
b.charge_id,
a.course_name,
(select t.course_type from sc_course_type t where t.course_type_id=a.course_type_id) course_type_name,
fcn_dict_name(a.teaching_mode,'teaching_mode') as teaching_mode,
a.create_time,
fcn_dict_name(a.sale,'sale') as sale,
a.course_intro,
case b.depart_id when -1 then '全部校区' else (select t.dept_name from sys_dept t where t.dept_id=b.depart_id) end depart_name,
b.charge_type,fcn_dict_name(b.charge_type,'charge_type') as charge_type_name,
b.date_unit,
fcn_dict_name(b.date_unit,'date_unit') as date_unit_name,
b.count,b.total_fee
from sc_course a,sc_course_charge b
where a.course_id=b.course_id and a.delete_flag='0'
<if test="reqSearchScCourse.courseName != null and reqSearchScCourse.courseName != ''">
and a.course_name like concat('%',#{reqSearchScCourse.courseName} ,'%')
</if>
<if test="reqSearchScCourse.sale != null and reqSearchScCourse.sale != ''">
and a.sale = #{reqSearchScCourse.sale}
</if>
<if test="reqSearchScCourse.courseTypeId != null and reqSearchScCourse.courseTypeId != ''">
and a.course_type_id = #{reqSearchScCourse.courseTypeId}
</if>
<if test="reqSearchScCourse.teachingMode != null and reqSearchScCourse.teachingMode != ''">
and a.teaching_mode = #{reqSearchScCourse.teachingMode}
</if>
<if test="reqSearchScCourse.departId != null">
and b.depart_id=#{reqSearchScCourse.departId}
</if>
<if test="reqSearchScCourse.chargeType != null and reqSearchScCourse.chargeType != ''">
and b.charge_type=#{reqSearchScCourse.chargeType}
</if>
order by a.sale desc,a.create_time desc limit 2000
</select>
<select id="selectCourseCount" resultType="java.lang.Integer">
select count(1) from sc_course a
where 1=1
<if test="deptId != null">
and exists(select 1 from sc_course_charge b where a.course_id=b.course_id and (b.depart_id=#{deptId} or b.depart_id=-1))
</if>
<if test="deptId == null and userId != null and userId != ''">
and (
exists(select 1 from sc_course_charge b,sys_user_dept ud
where ud.user_id=#{userId}
and (ud.dept_id=b.depart_id or ud.dept_id=-1)
and a.course_id=b.course_id)
or exists(select 1 from sc_course_charge b where a.course_id=b.course_id and b.depart_id=-1)
)
</if>
</select>
<select id="selectTenantCourseCount" resultType="java.lang.Integer">
select count(1) from sc_course where tenant_id=#{tenantId}
</select>
</mapper>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.school.course.mapper.ScCourseTypeMapper"> <mapper namespace="cn.xluobo.business.sc.course.repo.mapper.ScCourseTypeMapper">
</mapper> </mapper>

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
@ -83,12 +83,6 @@ public class ScClaTime implements Serializable {
@TableField("start_time") @TableField("start_time")
private String startTime; private String startTime;
/**
*
*/
@TableField("cla_duration")
private Integer claDuration;
/** /**
* *
*/ */
@ -107,6 +101,29 @@ public class ScClaTime implements Serializable {
@TableField("real_start_time") @TableField("real_start_time")
private String realStartTime; 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: * 1: 2: 3:
@ -121,51 +138,40 @@ public class ScClaTime implements Serializable {
private String status; private String status;
/** /**
* *
*/ */
@TableField("at_class_cnt") @TableField("book_attend_cnt")
private Integer atClassCnt; private Integer bookAttendCnt;
/** /**
* *
*/ */
@TableField("less_cnt") @TableField("real_attend_cnt")
private Integer lessCnt; private Integer realAttendCnt;
/** /**
* *
*/ */
@TableField("memo") @TableField("at_class_cnt")
private String memo; private Integer atClassCnt;
/** /**
* *
*/ */
@TableField("real_end_time") // @TableField("leave_cnt")
private String realEndTime; // private Integer leaveCnt;
/** /**
* *
*/ */
@TableField("teacher_fee") @TableField("out_cnt")
private BigDecimal teacherFee; private Integer outCnt;
/** /**
* *
*/ */
@TableField("real_attend_cnt") @TableField("memo")
private Integer realAttendCnt; private String memo;
//本次课场地费
@TableField("venue_fee")
private BigDecimal venueFee;
//教室实际使用时间小时 //不足0.5按0.5计,>0.5小时按1小时计
@TableField("room_usage_time")
private Double roomUsageTime;
/** /**
* *
@ -179,7 +185,11 @@ public class ScClaTime implements Serializable {
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
/**
*
*/
@TableField("last_update_user")
private Long lastUpdateUser;
/** /**
* *

@ -1,10 +1,9 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -34,6 +33,11 @@ public class ScClaTimeAttend implements Serializable {
@TableId(value = "attend_id", type = IdType.ASSIGN_ID) @TableId(value = "attend_id", type = IdType.ASSIGN_ID)
private Long attendId; 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 * sc_cla_time.course_time_id
@ -41,9 +45,6 @@ public class ScClaTimeAttend implements Serializable {
@TableField("course_time_id") @TableField("course_time_id")
private Long courseTimeId; private Long courseTimeId;
@TableField("book_id")
private Long bookId;
/** /**
* *
*/ */
@ -75,7 +76,7 @@ public class ScClaTimeAttend implements Serializable {
private String teacherName; private String teacherName;
/** /**
* count: days: total_fee: * hour: date: cycle:
*/ */
@TableField("charge_type") @TableField("charge_type")
private String chargeType; private String chargeType;
@ -87,10 +88,10 @@ public class ScClaTimeAttend implements Serializable {
private String attendStatus; private String attendStatus;
/** /**
* 使 *
*/ */
@TableField("teacher_get_cla_fee") @TableField("teacher_get_hour")
private BigDecimal teacherGetClaFee; private BigDecimal teacherGetHour;
/** /**
* *
@ -120,39 +121,5 @@ public class ScClaTimeAttend implements Serializable {
* *
*/ */
@TableField("create_time") @TableField("create_time")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime; 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;
} }

@ -1,11 +1,11 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; 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.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -90,30 +90,12 @@ public class ScClaTimeRule implements Serializable {
@TableField("start_time") @TableField("start_time")
private String startTime; private String startTime;
/**
*
*/
@TableField("cla_duration")
private Integer claDuration;
/** /**
* *
*/ */
@TableField("end_time") @TableField("end_time")
private String endTime; private String endTime;
/**
*
*/
@TableField("at_class_cnt")
private Integer atClassCnt;
/**
*
*/
@TableField("less_cnt")
private Integer lessCnt;
/** /**
* *
*/ */

@ -1,11 +1,11 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; 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.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -96,29 +96,12 @@ public class ScClaTimeRuleVo implements Serializable {
@TableField("end_time") @TableField("end_time")
private String endTime; private String endTime;
/**
*
*/
@TableField("cla_duration")
private Integer claDuration;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;
/**
*
*/
@TableField("at_class_cnt")
private Integer atClassCnt;
/**
*
*/
@TableField("less_cnt")
private Integer lessCnt;
/** /**
* *
*/ */

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
@ -10,6 +10,7 @@ import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -106,6 +107,23 @@ public class ScClaTimeVo implements Serializable {
@TableField("real_end_time") @TableField("real_end_time")
private String realEndTime; 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: * 1: 2: 3:
@ -143,7 +161,11 @@ public class ScClaTimeVo implements Serializable {
// @TableField("leave_cnt") // @TableField("leave_cnt")
// private Integer leaveCnt; // private Integer leaveCnt;
/**
*
*/
@TableField("out_cnt")
private Integer outCnt;
/** /**
* *

@ -1,8 +1,10 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.*; 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.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.core.utils.LongArrayTypeHandler;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -22,7 +24,7 @@ import java.util.Date;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
@TableName(value = "sc_course",autoResultMap = true) @TableName("sc_course")
public class ScCourse implements Serializable { public class ScCourse implements Serializable {
@ -114,7 +116,4 @@ public class ScCourse implements Serializable {
@TableField("cla_fee") @TableField("cla_fee")
private BigDecimal claFee; private BigDecimal claFee;
@TableField(value = "depart_id", typeHandler = LongArrayTypeHandler.class,updateStrategy = FieldStrategy.IGNORED)
private Long[] departId;
} }

@ -1,10 +1,10 @@
package com.ruoyi.school.course.domain.req.course; package cn.xluobo.business.sc.course.repo.model;
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.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; 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.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;

@ -1,16 +1,17 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import cn.xluobo.core.api.APIBaseResponse;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.core.api.APIBaseResponse;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -83,6 +84,17 @@ public class ScCourseCla implements Serializable {
@TableField("recruit_status") @TableField("recruit_status")
private String recruitStatus; private String recruitStatus;
/**
*
*/
@TableField("every_stu_lose_hour")
private BigDecimal everyStuLoseHour;
/**
*
*/
@TableField("every_tea_get_hour")
private BigDecimal everyTeaGetHour;
/** /**
* *
@ -150,13 +162,10 @@ public class ScCourseCla implements Serializable {
* @return * @return
*/ */
public APIBaseResponse checkParam(){ public APIBaseResponse checkParam(){
if(StringUtils.isAnyEmpty(claName,claColor)){ if(StringUtils.isAnyEmpty(claName,claColor,recruitStatus,openDate)){
return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交"); return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交");
} }
if(null == courseId || null == departId if(null == courseId || null == departId || null == staffId || null == capacity || null == everyStuLoseHour || null == everyTeaGetHour){
// || null == staffId || null == capacity
// || null == everyStuLoseHour || null == everyTeaGetHour
){
return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交"); return APIBaseResponse.fail("请求参数错误,请全部填写后,重新提交");
} }
return APIBaseResponse.success(); return APIBaseResponse.success();

@ -1,6 +1,6 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.ruoyi.core.api.APIBaseResponse; import cn.xluobo.core.api.APIBaseResponse;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;

@ -1,6 +1,5 @@
package com.ruoyi.school.course.domain; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -26,7 +25,7 @@ import java.util.Date;
public class ScCourseType implements Serializable { public class ScCourseType implements Serializable {
@TableId(value = "course_type_id",type = IdType.AUTO) @TableId(value = "course_type_id")
private Long courseTypeId; private Long courseTypeId;
/** /**
@ -53,9 +52,6 @@ public class ScCourseType implements Serializable {
@TableField("in_use") @TableField("in_use")
private String inUse; private String inUse;
@TableField("remark")
private String remark;
/** /**
* *
*/ */
@ -67,7 +63,4 @@ public class ScCourseType implements Serializable {
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
} }

@ -1,4 +1,4 @@
package com.ruoyi.school.course.domain.resp.course; package cn.xluobo.business.sc.course.repo.model;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;

@ -1,21 +1,25 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.course.service;
import cn.hutool.core.bean.BeanUtil; 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.core.domain.model.LoginUser;
import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -58,7 +62,6 @@ public class BusinessClaTimeRuleService {
* @param claTimeRule * @param claTimeRule
* @return * @return
*/ */
@Transactional
public APIResponse addClaTimeRule(ScClaTimeRule claTimeRule) { public APIResponse addClaTimeRule(ScClaTimeRule claTimeRule) {
if (!claTimeRule.checkParam()) { if (!claTimeRule.checkParam()) {
return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL);
@ -105,7 +108,6 @@ public class BusinessClaTimeRuleService {
* @param claTimeRule * @param claTimeRule
* @return * @return
*/ */
@Transactional
public APIResponse updateClaTimeRule(ScClaTimeRule claTimeRule) { public APIResponse updateClaTimeRule(ScClaTimeRule claTimeRule) {
if (null == claTimeRule.getRuleId()) { if (null == claTimeRule.getRuleId()) {
return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL);
@ -113,22 +115,16 @@ public class BusinessClaTimeRuleService {
if (!claTimeRule.checkParam()) { if (!claTimeRule.checkParam()) {
return APIResponse.toExceptionResponse(ApiResEnums.PARAM_FAIL); 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()) { if(null != claTimeRule.getRoomId()) {
ScRoom room = roomService.getById(claTimeRule.getRoomId()); ScRoom room = roomService.getById(claTimeRule.getRoomId());
claTimeRule.setRoomName(room.getRoomName()); claTimeRule.setRoomName(room.getRoomName());
} }
LoginUser loginUser = SecurityUtils.getLoginUser();
claTimeRule.setLastUpdateUser(loginUser.getUserId()); claTimeRule.setLastUpdateUser(loginUser.getUserId());
claTimeRule.setLastUpdateTime(new Date()); claTimeRule.setLastUpdateTime(new Date());
boolean updateScCourseType = claTimeRuleService.updateById(claTimeRule); boolean updateScCourseType = claTimeRuleService.updateById(claTimeRule);
claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); //claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId());
saveBatchClaTime(claTimeRule); saveBatchClaTime(claTimeRule);
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();
@ -140,30 +136,20 @@ public class BusinessClaTimeRuleService {
* @param ruleId * @param ruleId
* @return * @return
*/ */
@Transactional
public APIResponse deleteById(Long ruleId) { public APIResponse deleteById(Long ruleId) {
if (null == ruleId) { if (null == ruleId) {
return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE);
} }
ScClaTimeRule claTimeRule = claTimeRuleService.getById(ruleId); 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); claTimeRuleService.removeById(ruleId);
claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId()); LoginUser loginUser = SecurityUtils.getLoginUser();
//claTimeService.deleteUnBeginTime(claTimeRule.getRuleId(), claTimeRule.getClaId(), loginUser.getNowTenantId());
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();
} }
@Autowired
private IScCourseService courseService;
/** /**
* *
* *
@ -172,8 +158,7 @@ public class BusinessClaTimeRuleService {
private void saveBatchClaTime(ScClaTimeRule claTimeRule) { private void saveBatchClaTime(ScClaTimeRule claTimeRule) {
Long claId = claTimeRule.getClaId(); Long claId = claTimeRule.getClaId();
ScCourseCla courseCla = courseClaService.getById(claId); ScCourseCla courseCla = courseClaService.getById(claId);
ScCourse course=courseService.getById(courseCla.getCourseId()); BigDecimal everyStuLoseHour = courseCla.getEveryStuLoseHour();
List<RespClaTimeRule> claTimeList = claTimeRuleService.getClaTimeListByRule(claTimeRule, null); List<RespClaTimeRule> claTimeList = claTimeRuleService.getClaTimeListByRule(claTimeRule, null);
@ -184,10 +169,7 @@ public class BusinessClaTimeRuleService {
claTime.setClaDate(item.getClaDate()); claTime.setClaDate(item.getClaDate());
claTime.setStartTime(item.getClaTimeBegin()); claTime.setStartTime(item.getClaTimeBegin());
claTime.setEndTime(item.getClaTimeEnd()); claTime.setEndTime(item.getClaTimeEnd());
claTime.setClaDuration(claTimeRule.getClaDuration()); claTime.setPayHour(everyStuLoseHour);
claTime.setAtClassCnt(claTimeRule.getAtClassCnt());
claTime.setLessCnt(claTimeRule.getLessCnt());
claTime.setTeacherFee(course.getClaFee());
// 排课 // 排课
claTime.setSource("1"); claTime.setSource("1");
// 待上课 // 待上课

@ -1,43 +1,44 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.course.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit; import cn.xluobo.business.sc.base.repo.model.ScRoom;
import cn.hutool.core.util.ObjectUtil; import cn.xluobo.business.sc.base.service.IScRoomService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; 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.core.domain.model.LoginUser;
import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; 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.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.util.Collections;
import java.util.*; import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
* @author zhangbaoyu
* @date Created in 2020/9/16 17:05
*/
@Service @Service
@Transactional @Transactional
public class BusinessClaTimeService { public class BusinessClaTimeService {
@ -53,14 +54,14 @@ public class BusinessClaTimeService {
@Autowired @Autowired
private IScCourseService courseService; private IScCourseService courseService;
@Autowired @Autowired
private ScBookCourseMapper bookCourseMapper; private ISysDeptService deptService;
@Autowired @Autowired
private ScRoomMapper roomMapper; private IScClaTimeAttendService claTimeAttendService;
@Autowired @Autowired
private ScBookCourseLogMapper bookCourseLogMapper; private IScStudentCourseService studentCourseService;
@Autowired @Autowired
private ScMemberCardTypesMapper cardTypesMapper; private BusinessScStudentCourseService businessScStudentCourseService;
/** /**
* *
* *
@ -94,7 +95,7 @@ public class BusinessClaTimeService {
claTimeCalendarMap.put(claTimeKey, weekDayMap); claTimeCalendarMap.put(claTimeKey, weekDayMap);
}); });
// 获取排课信息
List<RespClaTimeCalendar> respClaTimeList = claTimeMapper.selectListForCalendar(reqSearchClaTime); List<RespClaTimeCalendar> respClaTimeList = claTimeMapper.selectListForCalendar(reqSearchClaTime);
// 将排课信息 入到 claTimeCalendarMap // 将排课信息 入到 claTimeCalendarMap
@ -184,37 +185,6 @@ public class BusinessClaTimeService {
return claTimeMapper.selectListForCalendar(reqSearchClaTime); return claTimeMapper.selectListForCalendar(reqSearchClaTime);
} }
/**
*
*
* @param
* @return
*/
public APIResponse searchMemberId(ReqSearchClaTime reqSearchClaTime) {
//会员卡 会员卡项 课程种类
// 课程id
List<ScCourse> courseList= cardTypesMapper.getCourseIdByMemberId(reqSearchClaTime.getStudentId());
List<ScMemberCardTypes> memberCardTypes= cardTypesMapper.getCourseIdsByMemberId(reqSearchClaTime.getStudentId());
List<Long> ids= courseList.stream().map(it -> it.getCourseId()).collect(Collectors.toList());
HashSet<Long> 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);
}
/** /**
* *
* *
@ -245,10 +215,9 @@ public class BusinessClaTimeService {
} }
ScCourseCla courseCla = claService.getById(claTime.getClaId()); ScCourseCla courseCla = claService.getById(claTime.getClaId());
ScCourse course=courseService.getById(courseCla.getCourseId()); claTime.setPayHour(courseCla.getEveryStuLoseHour());
claTime.setSource("3"); claTime.setSource("3");
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
claTime.setTeacherFee(course.getClaFee());
claTime.setCreateUser(loginUser.getUserId()); claTime.setCreateUser(loginUser.getUserId());
claTime.setCreateTime(new Date()); claTime.setCreateTime(new Date());
claTimeService.save(claTime); claTimeService.save(claTime);
@ -297,12 +266,7 @@ public class BusinessClaTimeService {
ScCourseCla courseCla = claService.getById(claTime.getClaId()); ScCourseCla courseCla = claService.getById(claTime.getClaId());
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
//是否有学员预约
Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId());
if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法修改:有学员预约,请联系学员取消预约后再作修改!");
}
UpdateWrapper uw = new UpdateWrapper(); UpdateWrapper uw = new UpdateWrapper();
uw.eq("course_time_id", claTime.getCourseTimeId()); uw.eq("course_time_id", claTime.getCourseTimeId());
uw.eq("status", ClaTimeStatusEnums.WAIT_CLASS.getStatus()); uw.eq("status", ClaTimeStatusEnums.WAIT_CLASS.getStatus());
@ -316,6 +280,7 @@ public class BusinessClaTimeService {
uw.set("end_time", claTime.getEndTime()); uw.set("end_time", claTime.getEndTime());
uw.set("teacher_id", claTime.getTeacherId()); uw.set("teacher_id", claTime.getTeacherId());
uw.set("room_id", claTime.getRoomId()); uw.set("room_id", claTime.getRoomId());
uw.set("pay_hour", courseCla.getEveryStuLoseHour());
uw.set("class_theme", claTime.getClassTheme()); uw.set("class_theme", claTime.getClassTheme());
uw.set("last_update_user", loginUser.getUserId()); uw.set("last_update_user", loginUser.getUserId());
uw.set("last_update_time", new Date()); uw.set("last_update_time", new Date());
@ -343,101 +308,127 @@ public class BusinessClaTimeService {
if ("2".equals(status)) { if ("2".equals(status)) {
return APIResponse.toExceptionResponse("已上课,无法删除"); return APIResponse.toExceptionResponse("已上课,无法删除");
} }
//是否有学员预约
Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId().toString());
if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法删除:相关课表中有学员预约,请联系学员取消预约后再进行操作!");
}
claTimeService.removeById(courseTimeId); claTimeService.removeById(courseTimeId);
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();
} }
//上课 /**
public APIResponse confirmCla(ReqClaTimeAttend reqClaTimeAttend){ *
* @param reqClaTimeAttend
//本节课的预约 * @return
List<ScBookCourse> bookCourses=bookCourseMapper.selectList(new QueryWrapper<ScBookCourse>() */
.in("book_status",0,1,2) public APIResponse changeHadClaTimeAttend(ReqClaTimeAttend reqClaTimeAttend) {
.eq("course_time_id",reqClaTimeAttend.getCourseTimeId()) APIResponse checkParam = reqClaTimeAttend.checkParamForUpdateHadClaTime();
); if (!checkParam.isSuccess()) {
if (bookCourses.size()<1)throw new RuntimeException("无学员预约!"); return checkParam;
//判断预约状态(未确认) }
// Long needCheck= bookCourses.stream() LoginUser loginUser = SecurityUtils.getLoginUser();
// .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("请确认学员签到情况,如无法到课请联系学员取消预约!");
}
//签到学员
List<ScBookCourse> checkIn=bookCourses.stream().filter(l->l.getCheckIn()==1).collect(Collectors.toList());
ScClaTime claTime=claTimeMapper.selectById(reqClaTimeAttend.getCourseTimeId());
//签到数量是否少于开课人数
if (claTime.getLessCnt()>checkIn.size()){
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));
}
//更改预约状态
bookCourseMapper.update(null,new UpdateWrapper<ScBookCourse>()
.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);
return APIResponse.toOkResponse(); Long courseTimeId = reqClaTimeAttend.getCourseTimeId();
ScClaTime claTime = claTimeService.getById(courseTimeId);
if (!ClaTimeStatusEnums.HAD_CLASS.getStatus().equals(claTime.getStatus())) {
return APIResponse.toExceptionResponse("非已上课排课,无法变更!");
} }
void addBookLogFromApp(int bookStatus,Long bookId){ // 变更状态为待上课
ScBookCourseLog log=new ScBookCourseLog(); ScClaTime updateClaTime = new ScClaTime();
log.setBookStatus(bookStatus); updateClaTime.setCourseTimeId(courseTimeId);
log.setUpdateTime(new Date()); updateClaTime.setStatus(ClaTimeStatusEnums.WAIT_CLASS.getStatus());
log.setUpdateUser(SecurityUtils.getUserId()); claTimeService.updateById(updateClaTime);
log.setBookId(bookId);
bookCourseLogMapper.insert(log); 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<ScClaTimeAttend> 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);
}
// 删除上课记录明细 cla_time_attend
UpdateWrapper<ScClaTimeAttend> uw = new UpdateWrapper<>();
uw.eq("course_time_id", courseTimeId);
claTimeAttendService.remove(uw);
// 重新记上课
return businessScStudentCourseService.claTimeAttend(reqClaTimeAttend);
}
/**
*
*
* @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<ScClaTimeAttend> 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<ScClaTimeAttend> uw = new UpdateWrapper<>();
uw.eq("course_time_id", courseTimeId);
claTimeAttendService.remove(uw);
// 删除上课记录 cla_time
claTimeService.removeById(courseTimeId);
return APIResponse.toOkResponse();
} }
} }

@ -1,15 +1,15 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -54,7 +54,7 @@ public class BusinessScClaTimeAttendService {
*/ */
public APIResponse hadClaTimeAttendDetail(Long courseTimeId) { public APIResponse hadClaTimeAttendDetail(Long courseTimeId) {
QueryWrapper<ScClaTimeAttend> qwAttend = new QueryWrapper<>(); QueryWrapper<ScClaTimeAttend> qwAttend = new QueryWrapper<>();
qwAttend.select( "attend_status", "memo"); qwAttend.select("student_course_id", "attend_status", "memo", "pay_hour");
qwAttend.eq("course_time_id", courseTimeId); qwAttend.eq("course_time_id", courseTimeId);
List<ScClaTimeAttend> claTimeAttendList = scClaTimeAttendService.list(qwAttend); List<ScClaTimeAttend> claTimeAttendList = scClaTimeAttendService.list(qwAttend);
return APIResponse.toAPIResponse(claTimeAttendList); return APIResponse.toAPIResponse(claTimeAttendList);

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

@ -0,0 +1,544 @@
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<RespSearchCourse> 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<RespSearchCourse> 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<ScCourse> 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<ReqAddScCourseChargeItem> feeModeHourList = Lists.newArrayList();
List<ReqAddScCourseChargeItem> feeModeDateList = Lists.newArrayList();
List<ReqAddScCourseChargeItem> feeModeCycleList = Lists.newArrayList();
// 上课校区
List<String> partCampusList = Lists.newArrayList();
// 所有校区id 对应名称 map
Map<Long, String> campusMap = Maps.newHashMap();
List<RespTreeSelect> campusList = deptService.campusList();
for (RespTreeSelect respTreeSelect : campusList) {
campusMap.put(respTreeSelect.getId(), respTreeSelect.getLabel());
}
campusMap.put(-1L, "全部校区");
// 课程收费配置信息
QueryWrapper<ScCourseCharge> qw = new QueryWrapper<>();
qw.eq("course_id", detailInfo.getCourseId());
List<ScCourseCharge> 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<ReqAddScCourseChargeItem> 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<ReqAddScCourseChargeItem> 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<ReqAddScCourseChargeItem> 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<ReqAddScCourseChargeItem> 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<ReqAddScCourseChargeItem> 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<ReqAddScCourseChargeItem> 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<Long> courseIds) {
if (null == courseIds || courseIds.isEmpty()) {
return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE);
}
// 如课程对应在用班级,不允许删除
QueryWrapper<ScCourseCla> qw = new QueryWrapper<>();
qw.in("course_id", courseIds);
int courseClaCount = courseClaService.count(qw);
if (courseClaCount != 0) {
return APIResponse.toExceptionResponse("该课程下存在在用班级,无法删除课程");
}
// 有报读记录 不允许删除
QueryWrapper<ScStudentCourse> 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<ExpCourse> courseList = courseMapper.selectCourseForExport(reqSearchScCourse);
String fileName = "exportCourse_" + System.currentTimeMillis() + UUID.randomUUID().toString();
String fullPath = uploadConfigProperties.getTempSaveExportPath() + "/" + fileName + ".xlsx";
CourseExportMergeStrategy<ExpCourse> 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<Long, String> studentCourseChargeTypeMap = Maps.newHashMap();
if (null != studentId) {
QueryWrapper qw = new QueryWrapper();
qw.select("course_id", "charge_type");
qw.eq("student_id", studentId);
List<ScStudentCourse> studentCourseList = studentCourseService.list(qw);
studentCourseChargeTypeMap = studentCourseList.stream().collect(Collectors.toMap(ScStudentCourse::getCourseId, ScStudentCourse::getChargeType));
}
// 部门信息
SysDept sysDept = sysDeptService.getById(deptId);
List<RespBusinessChooseCourseInfo> 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<RespBusinessChooseCourseCharge> 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();
}
}

@ -1,27 +1,21 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.course.service;
import cn.xluobo.business.sc.course.domain.req.ReqSearchScCourseType;
import cn.hutool.core.util.ObjectUtil; import cn.xluobo.business.sc.course.repo.model.ScCourse;
import cn.hutool.core.util.StrUtil; 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;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.core.domain.model.LoginUser;
import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.core.api.APIResponse; import org.apache.commons.lang3.StringUtils;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author zhangbaoyu * @author zhangbaoyu
@ -44,10 +38,9 @@ public class BusinessScCourseTypeService {
*/ */
public APIResponse searchList(ReqSearchScCourseType reqSearchScCourseType) { public APIResponse searchList(ReqSearchScCourseType reqSearchScCourseType) {
QueryWrapper qw = new QueryWrapper(); QueryWrapper qw = new QueryWrapper();
if (StrUtil.isNotEmpty(reqSearchScCourseType.getCourseType())) { if (StringUtils.isNotEmpty(reqSearchScCourseType.getCourseType())) {
qw.eq("course_type", reqSearchScCourseType.getCourseType()); qw.eq("course_type", reqSearchScCourseType.getCourseType());
} }
qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId());
RespPage<ScCourseType> page = new RespPage(reqSearchScCourseType.getPageNum(), reqSearchScCourseType.getPageSize()); RespPage<ScCourseType> page = new RespPage(reqSearchScCourseType.getPageNum(), reqSearchScCourseType.getPageSize());
RespPage<ScCourseType> listPage = scCourseTypeService.page(page, qw); RespPage<ScCourseType> listPage = scCourseTypeService.page(page, qw);
return APIResponse.toAPIResponse(listPage); return APIResponse.toAPIResponse(listPage);
@ -58,20 +51,17 @@ public class BusinessScCourseTypeService {
* @param reqSearchScCourseType * @param reqSearchScCourseType
* @return * @return
*/ */
public List<ScCourseType> select(ReqSearchScCourseType reqSearchScCourseType) { public APIResponse select(ReqSearchScCourseType reqSearchScCourseType) {
QueryWrapper qw = new QueryWrapper(); QueryWrapper qw = new QueryWrapper();
qw.select("course_type", "course_type_id"); qw.select("course_type", "course_type_id");
if (StrUtil.isNotEmpty(reqSearchScCourseType.getCourseType())) { if (StringUtils.isNotEmpty(reqSearchScCourseType.getCourseType())) {
qw.like("course_type", 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("in_use", "1");
qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId()); qw.eq("tenant_id", SecurityUtils.getLoginUser().getNowTenantId());
qw.orderByDesc("create_time"); qw.orderByDesc("create_time");
List<ScCourseType> list = scCourseTypeService.list(qw); List<ScCourseType> list = scCourseTypeService.list(qw);
return list; return APIResponse.toAPIResponse(list);
} }
/** /**
@ -124,8 +114,6 @@ public class BusinessScCourseTypeService {
} }
} }
@Autowired
private ScMemberCardTypesService memberCardTypesService;
/** /**
* *
* *
@ -138,24 +126,12 @@ public class BusinessScCourseTypeService {
} }
QueryWrapper<ScCourse> qw = new QueryWrapper<>(); QueryWrapper<ScCourse> qw = new QueryWrapper<>();
qw.in("course_type_id", Arrays.asList(courseTypeIds)); qw.eq("course_type_id", courseTypeIds);
int courseCount = courseService.count(qw); int courseCount = courseService.count(qw);
if (courseCount != 0) { if (courseCount != 0) {
return APIResponse.toExceptionResponse("已有课程使用,无法删除"); return APIResponse.toExceptionResponse("已有课程使用,无法删除");
} }
String arrayAsString = Arrays.stream(courseTypeIds)
.map(Object::toString) // 将Long转换为String
.collect(Collectors.joining(",")); // 使用逗号和空格连接字符串
int cardTypes= memberCardTypesService.count(new QueryWrapper<ScMemberCardTypes>()
.last(" and JSON_CONTAINS(course_types, CAST("+arrayAsString+" AS JSON))"));
if (cardTypes != 0) {
return APIResponse.toExceptionResponse("已有会员卡项使用,无法删除");
}
boolean deleteScCourseType = scCourseTypeService.removeByIds(Arrays.asList(courseTypeIds)); boolean deleteScCourseType = scCourseTypeService.removeByIds(Arrays.asList(courseTypeIds));
if (deleteScCourseType) { if (deleteScCourseType) {
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();
@ -163,28 +139,4 @@ public class BusinessScCourseTypeService {
return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); 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);
}
}
} }

@ -1,7 +1,7 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.course.service;
import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount; import cn.xluobo.business.sc.course.domain.req.time.ReqClaTimeCount;
import com.ruoyi.school.course.domain.ScClaTimeAttend; import cn.xluobo.business.sc.course.repo.model.ScClaTimeAttend;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;

@ -1,8 +1,8 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.course.service;
import com.ruoyi.school.course.domain.req.time.ReqSearchScClaTimeRule; import cn.xluobo.business.sc.course.domain.req.time.ReqSearchScClaTimeRule;
import com.ruoyi.school.course.domain.resp.time.RespClaTimeRule; import cn.xluobo.business.sc.course.domain.resp.time.RespClaTimeRule;
import com.ruoyi.school.course.domain.ScClaTimeRule; import cn.xluobo.business.sc.course.repo.model.ScClaTimeRule;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;

@ -1,8 +1,8 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.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.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.school.course.domain.ScClaTime;
import com.ruoyi.school.course.domain.req.time.ReqClaTimeCount;
/** /**
* <p> * <p>
@ -29,13 +29,4 @@ public interface IScClaTimeService extends IService<ScClaTime> {
* @return * @return
*/ */
Integer claTimeCount(ReqClaTimeCount reqClaTimeCount); Integer claTimeCount(ReqClaTimeCount reqClaTimeCount);
/**
*
* @param ruleId
* @param claId
* @return
*/
Integer selectBookCount( Long ruleId, Long claId,String courseTimeId);
} }

@ -1,9 +1,8 @@
package com.ruoyi.school.course.service; package cn.xluobo.business.sc.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.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; import java.util.List;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save