测试并修改

master
15004070936 3 days ago
parent e9963d5428
commit 33905f3040

@ -18,12 +18,12 @@ public enum BusinessTableEnums {
SC_TEACHER("sc_teacher","教师",true), SC_TEACHER("sc_teacher","教师",true),
SC_COURSE("sc_course","课程",true), SC_COURSE("sc_course","课程",true),
SC_COURSE_CLA("sc_course_cla","课程班级",true), SC_COURSE_CLA("sc_course_cla","课程班级",true),
SC_STUDENT("sc_student","学生",true), SC_STUDENT("sc_student","会员",true),
SC_COURSE_TYPE("sc_course_type","课程类型",true), SC_COURSE_TYPE("sc_course_type","课程类型",true),
SC_ORDER("sc_order","订单",true), SC_ORDER("sc_order","订单",true),
SC_STUDENT_ACCOUNT("sc_student_account","学生余额账户",true), SC_STUDENT_ACCOUNT("sc_student_account","会员余额账户",true),
SC_STUDENT_COURSE("sc_student_course","学生报读课程",true), SC_STUDENT_COURSE("sc_student_course","会员报读课程",true),
SC_STUDENT_COURSE_LOG("sc_student_course_log","学生日志",true), SC_STUDENT_COURSE_LOG("sc_student_course_log","会员日志",true),
STOCK_GOODS("stock_goods","商品信息",true), STOCK_GOODS("stock_goods","商品信息",true),
STOCK_INFO("stock_info","库存信息",true), STOCK_INFO("stock_info","库存信息",true),

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020-04-28 19:08 * @date Created in 2020-04-28 19:08
*/ */

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020-06-21 10:08 * @date Created in 2020-06-21 10:08
*/ */

@ -7,7 +7,7 @@ import java.util.List;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -17,12 +17,12 @@ import java.util.List;
public class RespBusinessClaStudent implements Serializable { public class RespBusinessClaStudent implements Serializable {
/** /**
* *
*/ */
private List<RespBusinessStudent> students; private List<RespBusinessStudent> students;
/** /**
* *
*/ */
private List<Long> claStudentIds; private List<Long> claStudentIds;

@ -6,7 +6,7 @@ import java.io.Serializable;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -8,7 +8,7 @@ import java.util.List;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -1,7 +1,7 @@
package cn.xluobo.business.sc.log.enums; package cn.xluobo.business.sc.log.enums;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/12/19 10:15 * @date Created in 2020/12/19 10:15
*/ */

@ -37,7 +37,7 @@ public class ScStudentCourseLog implements Serializable {
private Long logId; private Long logId;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;
@ -120,7 +120,7 @@ public class ScStudentCourseLog implements Serializable {
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
// 学生姓名 // 会员姓名
@TableField(exist = false) @TableField(exist = false)
private String studentName; private String studentName;

@ -58,7 +58,7 @@ public class ReqBusinessSignUp {
if (null == signUpItemList || signUpItemList.size() == 0) { if (null == signUpItemList || signUpItemList.size() == 0) {
return APIResponse.toExceptionResponse("请选择报读课程"); return APIResponse.toExceptionResponse("请选择报读课程");
} else if (null == studentId) { } else if (null == studentId) {
return APIResponse.toExceptionResponse("请选择学生"); return APIResponse.toExceptionResponse("请选择会员");
} else if (null == handleDepartId) { } else if (null == handleDepartId) {
return APIResponse.toExceptionResponse("请选择经办校区"); return APIResponse.toExceptionResponse("请选择经办校区");
} else if (useBalancePay && null == balancePayValue) { } else if (useBalancePay && null == balancePayValue) {

@ -1,21 +1,13 @@
package cn.xluobo.business.sc.order.service; package cn.xluobo.business.sc.order.service;
import cn.xluobo.business.sc.log.service.IScStudentCourseLogService;
import cn.xluobo.business.sys.admin.service.ISysDeptService;
import cn.xluobo.business.sys.admin.service.ISysUserService;
import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount; import cn.xluobo.business.sys.receipt.repo.model.SysReceiptAccount;
import cn.xluobo.business.sys.receipt.service.ISysReceiptAccountService; import cn.xluobo.business.sys.receipt.service.ISysReceiptAccountService;
import cn.xluobo.business.sys.tag.service.ISysTagService;
import cn.xluobo.core.page.RespPage; import cn.xluobo.core.page.RespPage;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.core.api.APIResponse; import com.ruoyi.core.api.APIResponse;
import com.ruoyi.core.api.ApiResEnums; import com.ruoyi.core.api.ApiResEnums;
import com.ruoyi.school.course.service.IScClaTimeAttendService;
import com.ruoyi.school.course.service.IScCourseChargeService;
import com.ruoyi.school.course.service.IScCourseClaService;
import com.ruoyi.school.course.service.IScCourseService;
import com.ruoyi.school.member.domain.resp.MemberCardVO; import com.ruoyi.school.member.domain.resp.MemberCardVO;
import com.ruoyi.school.member.service.IScMemberCardService; import com.ruoyi.school.member.service.IScMemberCardService;
import com.ruoyi.school.order.domain.ScOrder; import com.ruoyi.school.order.domain.ScOrder;
@ -24,9 +16,6 @@ import com.ruoyi.school.order.domain.resp.RespOrder;
import com.ruoyi.school.order.enums.OrderStatusEnum; import com.ruoyi.school.order.enums.OrderStatusEnum;
import com.ruoyi.school.order.mapper.ScOrderMapper; import com.ruoyi.school.order.mapper.ScOrderMapper;
import com.ruoyi.school.order.service.IScOrderService; import com.ruoyi.school.order.service.IScOrderService;
import com.ruoyi.school.salary.service.ScCommissionPlansService;
import com.ruoyi.school.student.service.IScStudentAccountService;
import com.ruoyi.school.student.service.IScStudentService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -46,38 +35,11 @@ public class BusinessScOrderService {
@Autowired @Autowired
private IScOrderService scOrderService; private IScOrderService scOrderService;
@Autowired
private IScOrderDetailService orderDetailService;
@Autowired
private ISysReceiptAccountService receiptAccountService;
@Autowired
private IScOrderAccountService orderAccountService;
@Autowired
private IScCourseService scCourseService;
@Autowired
private IScCourseClaService courseClaService;
@Autowired
private IScCourseChargeService courseChargeService;
@Autowired
private IScStudentService studentService;
@Autowired
private ScCommissionPlansService commissionPlansService;
@Autowired
private ISysDeptService deptService;
@Autowired
private IScStudentAccountService studentAccountService;
@Autowired
private ISysTagService tagService;
@Autowired @Autowired
private ScOrderMapper orderMapper; private ScOrderMapper orderMapper;
@Autowired
private ISysUserService userService;
@Autowired
private IScClaTimeAttendService claTimeAttendService;
@Autowired
private IScStudentCourseLogService scStudentCourseLogService;
@Autowired @Autowired
private IScMemberCardService memberCardService; private IScMemberCardService memberCardService;

@ -106,13 +106,13 @@ public class StockInfoChange implements Serializable {
private BigDecimal salePrice; private BigDecimal salePrice;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;
/** /**
* *
*/ */
@TableField("student_name") @TableField("student_name")
private String studentName; private String studentName;

@ -1,41 +0,0 @@
package cn.xluobo.business.sys.staff.controller;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.service.columns.ISysTeacherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* Controller
* </p>
*
* @author zhangby
* @since 2020-03-17 11:27:37
*/
@RestController
@RequestMapping("/api/sys/staff")
public class SysStaffController {
@Autowired
private ISysTeacherService teacherService;
/**
* select
*
* @return
*/
@GetMapping("/list/teacherSelect")
public AjaxResult teacherSelect() {
// SysUser sysUser = new SysUser();
// sysUser.setTeacher(1);
// List<SysUser> sysUsers = teacherService.(sysUser);
return AjaxResult.success();
}
}

@ -27,7 +27,7 @@ public class ImportCourseCla extends ImportBase{
@ExcelProperty(index = 2) @ExcelProperty(index = 2)
private String deptName; private String deptName;
// D列 任课教 // D列 任课教
@ExcelProperty(index = 3) @ExcelProperty(index = 3)
private String teacherName; private String teacherName;
@ -39,7 +39,7 @@ public class ImportCourseCla extends ImportBase{
@ExcelProperty(index = 5) @ExcelProperty(index = 5)
private String recruitStatus; private String recruitStatus;
// G列 每次上课员扣除课时 // G列 每次上课员扣除课时
@ExcelProperty(index = 6) @ExcelProperty(index = 6)
private String everyStuLoseHour; private String everyStuLoseHour;

@ -5,7 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/10/12 16:08 * @date Created in 2020/10/12 16:08
*/ */
@ -13,7 +13,7 @@ import lombok.Data;
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class ImportStudentOrder extends ImportBase{ public class ImportStudentOrder extends ImportBase{
// A列 学生姓名 // A列 会员姓名
@ExcelProperty(index = 0) @ExcelProperty(index = 0)
private String studentName; private String studentName;

@ -173,9 +173,9 @@ public class ImportCourseClaListener extends AnalysisEventListener<ImportCourseC
public APIBaseResponse checkParam(ImportCourseCla data) { public APIBaseResponse checkParam(ImportCourseCla data) {
if (StringUtils.isAnyEmpty(data.getClaName(), data.getCourseName(), if (StringUtils.isAnyEmpty(data.getClaName(), data.getCourseName(),
data.getDeptName(), data.getTeacherName(), data.getOpenDate())) { data.getDeptName(), data.getTeacherName(), data.getOpenDate())) {
return APIBaseResponse.fail("请填写班级名称、课程名称、校区、任课教、开班日期"); return APIBaseResponse.fail("请填写班级名称、课程名称、校区、任课教、开班日期");
} else if (StringUtils.isEmpty(data.getEveryStuLoseHour())) { } else if (StringUtils.isEmpty(data.getEveryStuLoseHour())) {
return APIBaseResponse.fail("请填写每次上课员扣除课时数"); return APIBaseResponse.fail("请填写每次上课员扣除课时数");
} else if (data.getClaName().length() > 30) { } else if (data.getClaName().length() > 30) {
return APIBaseResponse.fail("班级名称过长,最长30!"); return APIBaseResponse.fail("班级名称过长,最长30!");
} else if (StringUtils.isNotEmpty(data.getMemo()) && data.getMemo().length() > 200) { } else if (StringUtils.isNotEmpty(data.getMemo()) && data.getMemo().length() > 200) {
@ -184,7 +184,7 @@ public class ImportCourseClaListener extends AnalysisEventListener<ImportCourseC
try { try {
new BigDecimal(data.getEveryStuLoseHour()); new BigDecimal(data.getEveryStuLoseHour());
}catch (NumberFormatException numberFormatException) { }catch (NumberFormatException numberFormatException) {
return APIBaseResponse.fail("每次上课员扣除课时数 需填写两位小数"); return APIBaseResponse.fail("每次上课员扣除课时数 需填写两位小数");
} }
if(StringUtils.isNotEmpty(data.getCapacity())){ if(StringUtils.isNotEmpty(data.getCapacity())){
try { try {
@ -199,7 +199,7 @@ public class ImportCourseClaListener extends AnalysisEventListener<ImportCourseC
String recruitStatus = recruitStatusMap.get(data.getRecruitStatus()); String recruitStatus = recruitStatusMap.get(data.getRecruitStatus());
if (null == courseId || null == teacherId) { if (null == courseId || null == teacherId) {
return APIBaseResponse.fail("根据课程名称、任课教名称无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); return APIBaseResponse.fail("根据课程名称、任课教名称无法获取对应信息,请核对填写信息或重新下载导入模板进行导入");
} else if (ObjectUtil.isEmpty(deptId)) { } else if (ObjectUtil.isEmpty(deptId)) {
return APIBaseResponse.fail("根据校区名称无法获取对应信息,请核对填写信息或重新下载导入模板进行导入"); return APIBaseResponse.fail("根据校区名称无法获取对应信息,请核对填写信息或重新下载导入模板进行导入");
} else if (StringUtils.isEmpty(recruitStatus)) { } else if (StringUtils.isEmpty(recruitStatus)) {

@ -31,6 +31,7 @@ public class SysTeacherController extends BaseController
@Autowired @Autowired
private ISysTeacherService sysTeacherService; private ISysTeacherService sysTeacherService;
/** /**
* *
*/ */
@ -91,13 +92,13 @@ public class SysTeacherController extends BaseController
/** /**
* *
*/ */
@PreAuthorize("@ss.hasPermi('system:teacher:add')") // @PreAuthorize("@ss.hasPermi('system:teacher:add')")
@Log(title = "教练信息", businessType = BusinessType.INSERT) // @Log(title = "教练信息", businessType = BusinessType.INSERT)
@PostMapping // @PostMapping
public AjaxResult add(@RequestBody SysTeacher sysTeacher) // public AjaxResult add(@RequestBody SysTeacher sysTeacher)
{ // {
return toAjax(sysTeacherService.insertSysTeacher(sysTeacher)); // return toAjax(sysTeacherService.insertSysTeacher(sysTeacher));
} // }
/** /**
* *
@ -110,13 +111,11 @@ public class SysTeacherController extends BaseController
return toAjax(sysTeacherService.updateSysTeacher(sysTeacher)); return toAjax(sysTeacherService.updateSysTeacher(sysTeacher));
} }
/** // /**
* // * 删除教练信息
*/ // */
@PostMapping("/remove") // @PostMapping("/remove")
public AjaxResult remove( @RequestBody Long[] ids) { // public AjaxResult remove( @RequestBody List<Long> ids) {
{ // return sysTeacherService.deleteSysTeacherByUserIds(ids);
return toAjax(sysTeacherService.deleteSysTeacherByUserIds(ids)); // }
}
}
} }

@ -36,7 +36,7 @@ public class ScCourseClaController {
} }
/** /**
* *
* @param * @param
* @return * @return
*/ */

@ -40,7 +40,7 @@ public class ScCourseController {
/** /**
* *
* *
* *
* @param reqSearchScCourse * @param reqSearchScCourse
* @return * @return

@ -139,12 +139,12 @@ public class ScCourseTypeController {
} }
/** /**
* * 使
* *
* @param * @param
* @return * @return
*/ */
@PutMapping("/changeCourseTypeSale") // @PutMapping("/changeCourseTypeSale")
public APIResponse changeCourseTypeSale(@RequestBody ScCourseType scCourseType) { public APIResponse changeCourseTypeSale(@RequestBody ScCourseType scCourseType) {
return scCourseTypeService.changeCourseTypeSale(scCourseType); return scCourseTypeService.changeCourseTypeSale(scCourseType);
} }

@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*;
/** /**
* <p> * <p>
* Controller * Controller
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -84,7 +84,7 @@ public class SysUser extends BaseEntity
}) })
private SysDept dept; private SysDept dept;
private Integer teacher;//是否为任课教 1是 0否 private Integer teacher;//是否为任课教 1是 0否
/** 角色对象 */ /** 角色对象 */
private List<SysRole> roles; private List<SysRole> roles;

@ -45,7 +45,7 @@ public class ScBookCourse implements Serializable {
private int bookStatus; private int bookStatus;
/** /**
* id * id
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;

@ -41,7 +41,7 @@ public class ScBookCourseLog implements Serializable {
private Date updateTime; private Date updateTime;
/** /**
* id * id
*/ */
@TableField("update_user_id") @TableField("update_user_id")
private Long updateUser; private Long updateUser;

@ -48,7 +48,7 @@ public class ScClaTime implements Serializable {
private Long claId; private Long claId;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;
@ -147,7 +147,7 @@ public class ScClaTime implements Serializable {
@TableField("real_end_time") @TableField("real_end_time")
private String realEndTime; private String realEndTime;
/** /**
* *
*/ */
@TableField("teacher_fee") @TableField("teacher_fee")
private BigDecimal teacherFee; private BigDecimal teacherFee;

@ -45,7 +45,7 @@ public class ScClaTimeAttend implements Serializable {
private Long bookId; private Long bookId;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;
@ -63,13 +63,13 @@ public class ScClaTimeAttend implements Serializable {
private Long courseId; private Long courseId;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;
/** /**
* *
*/ */
@TableField("teacher_name") @TableField("teacher_name")
private String teacherName; private String teacherName;
@ -87,7 +87,7 @@ public class ScClaTimeAttend implements Serializable {
private String attendStatus; private String attendStatus;
/** /**
* 使 * 使
*/ */
@TableField("teacher_get_cla_fee") @TableField("teacher_get_cla_fee")
private BigDecimal teacherGetClaFee; private BigDecimal teacherGetClaFee;

@ -115,7 +115,7 @@ public class ScClaTimeRule implements Serializable {
private Integer lessCnt; private Integer lessCnt;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;

@ -103,7 +103,7 @@ public class ScClaTimeRuleVo implements Serializable {
@TableField("cla_duration") @TableField("cla_duration")
private Integer claDuration; private Integer claDuration;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;

@ -47,7 +47,7 @@ public class ScClaTimeVo implements Serializable {
private String claId; private String claId;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;

@ -114,6 +114,9 @@ public class ScCourse implements Serializable {
@TableField("cla_fee") @TableField("cla_fee")
private BigDecimal claFee; private BigDecimal claFee;
@TableField("tuition_fee")
private BigDecimal tuitionFee;
@TableField(value = "depart_id", typeHandler = LongArrayTypeHandler.class,updateStrategy = FieldStrategy.IGNORED) @TableField(value = "depart_id", typeHandler = LongArrayTypeHandler.class,updateStrategy = FieldStrategy.IGNORED)
private Long[] departId; private Long[] departId;

@ -85,13 +85,13 @@ public class ScCourseClaVo implements Serializable {
private String recruitStatus; private String recruitStatus;
/** /**
* *
*/ */
@TableField("every_stu_lose_hour") @TableField("every_stu_lose_hour")
private BigDecimal everyStuLoseHour; private BigDecimal everyStuLoseHour;
/** /**
* *
*/ */
@TableField("every_tea_get_hour") @TableField("every_tea_get_hour")
private BigDecimal everyTeaGetHour; private BigDecimal everyTeaGetHour;

@ -42,7 +42,7 @@ public class ReqSearchScCourse extends ReqPageBase implements Serializable {
private String chargeType; private String chargeType;
/** /**
* *
*/ */
private Long studentId; private Long studentId;

@ -29,7 +29,7 @@ public class ReqSearchClaTime implements Serializable {
// 班级 // 班级
private String claId; private String claId;
// 学生 // 会员
private Long studentId; private Long studentId;
private Long teacherId; private Long teacherId;

@ -60,10 +60,11 @@ public class RespSearchCourse implements Serializable {
private String courseIntro; private String courseIntro;
/** /**
* *
*/ */
private Long studentCourseId; private Long studentCourseId;
private BigDecimal claFee;//教练课时费 private BigDecimal claFee;//教练课时费
private BigDecimal tuitionFee;//课程价值
private String storeNames; private String storeNames;
} }

@ -52,7 +52,7 @@ public class ClaTimeBookItem {
private String courseName; private String courseName;
//老师信息 //教练信息
private Long teacherId; private Long teacherId;
private String teacherName; private String teacherName;

@ -33,6 +33,19 @@ public class ClaTimeCalendarItem {
private int studentCount; private int studentCount;
/**
*
*/
private Integer atClassCnt;
/**
*
*/
private Integer lessCnt;
// 教室 // 教室
private String roomName; private String roomName;
@ -54,6 +67,9 @@ public class ClaTimeCalendarItem {
this.roomName = respClaTime.getRoomName(); this.roomName = respClaTime.getRoomName();
this.claColor = respClaTime.getClaColor(); this.claColor = respClaTime.getClaColor();
this.claTimeStatus = respClaTime.getStatus(); this.claTimeStatus = respClaTime.getStatus();
this.atClassCnt=respClaTime.getAtClassCnt();
this.lessCnt=respClaTime.getLessCnt();
this.studentCount=respClaTime.getStudentCount();
return this; return this;
} }

@ -18,6 +18,8 @@ public class RespClaTimeAttend {
private Long studentId; private Long studentId;
private String cardNo;
private String studentName; private String studentName;
private String claName; private String claName;

@ -46,7 +46,7 @@ public class RespClaTimeCalendar {
private String claId; private String claId;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;
@ -131,51 +131,58 @@ public class RespClaTimeCalendar {
@TableField("real_attend_cnt") @TableField("real_attend_cnt")
private Integer realAttendCnt; private Integer realAttendCnt;
/** /**
* *
*/ */
@TableField("at_class_cnt") @TableField("at_class_cnt")
private Integer atClassCnt; private Integer atClassCnt;
/**
*
*/
@TableField("less_cnt")
private Integer lessCnt;
/** /**
* *
*/ */
@TableField("memo")
private String memo; private String memo;
/** /**
* *
*/ */
@TableField("create_user")
private Long createUser; private Long createUser;
/** /**
* *
*/ */
@TableField("create_time")
private Date createTime; private Date createTime;
/** /**
* *
*/ */
@TableField("last_update_user")
private Long lastUpdateUser; private Long lastUpdateUser;
/** /**
* *
*/ */
@TableField("last_update_time")
private Date lastUpdateTime; private Date lastUpdateTime;
@TableField(exist = false)
private Long deptId; private Long deptId;
@TableField(exist = false)
private String courseName; private String courseName;
@TableField(exist = false)
private String claName; private String claName;
@TableField(exist = false)
private String deptName; private String deptName;
} }

@ -97,7 +97,7 @@ public class RespClaTimeRule {
private String endTime; private String endTime;
/** /**
* *
*/ */
@TableField("teacher_id") @TableField("teacher_id")
private Long teacherId; private Long teacherId;

@ -30,9 +30,9 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
List<RespClaTimeAttend> selectTimeAttendList(@Param("reqSearchScClaTimeAttend") ReqSearchScClaTimeAttend reqSearchScClaTimeAttend, @Param("page") Page page); List<RespClaTimeAttend> selectTimeAttendList(@Param("reqSearchScClaTimeAttend") ReqSearchScClaTimeAttend reqSearchScClaTimeAttend, @Param("page") Page page);
/** /**
* *
* *
* @param studentCourseId id * @param studentCourseId id
* @param beginDate * @param beginDate
* @param endDate * @param endDate
* @return * @return
@ -51,7 +51,7 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
, @Param("tenantId") String tenantId); , @Param("tenantId") String tenantId);
/** /**
* *
* *
* @param beginDate * @param beginDate
* @param endDate * @param endDate
@ -64,7 +64,7 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
, @Param("tenantId") String tenantId); , @Param("tenantId") String tenantId);
/** /**
* *
* *
* @param beginDate * @param beginDate
* @param endDate * @param endDate
@ -76,7 +76,7 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
BigDecimal selectMemberByDay( @Param("tenantId") String tenantId); BigDecimal selectMemberByDay( @Param("tenantId") String tenantId);
/** /**
* *
* *
* @param beginDate * @param beginDate
* @param endDate * @param endDate
@ -87,7 +87,7 @@ public interface ScClaTimeAttendMapper extends com.baomidou.mybatisplus.core.map
, @Param("tenantId") String tenantId); , @Param("tenantId") String tenantId);
/** /**
* *
* *
* *
* @param reqClaTimeCount * @param reqClaTimeCount

@ -55,7 +55,7 @@ public interface ScCourseClaMapper extends com.baomidou.mybatisplus.core.mapper.
Integer selectTenantClaCount(String tenantId); Integer selectTenantClaCount(String tenantId);
/** /**
* *
* @param claId * @param claId
* @return * @return
*/ */

@ -31,7 +31,7 @@ public interface ScCourseMapper extends BaseMapper<ScCourse> {
/** /**
* *
* *
* @param reqSearchScCourse * @param reqSearchScCourse
* @param page * @param page
* @return * @return

@ -116,7 +116,7 @@ public class BusinessClaTimeRuleService {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null); Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null);
if(bookCount.intValue()>0){ if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法修改:相关课表中有员预约!"); return APIResponse.toExceptionResponse("无法修改:相关课表中有员预约!");
} }
// 教室 // 教室
if(null != claTimeRule.getRoomId()) { if(null != claTimeRule.getRoomId()) {
@ -147,11 +147,11 @@ public class BusinessClaTimeRuleService {
} }
ScClaTimeRule claTimeRule = claTimeRuleService.getById(ruleId); ScClaTimeRule claTimeRule = claTimeRuleService.getById(ruleId);
//是否有员预约 //是否有员预约
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null); Integer bookCount= claTimeService.selectBookCount(claTimeRule.getRuleId(), claTimeRule.getClaId(),null);
if(bookCount.intValue()>0){ if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法删除:相关课表中有员预约!"); return APIResponse.toExceptionResponse("无法删除:相关课表中有员预约!");
} }

@ -209,7 +209,7 @@ public class BusinessClaTimeService {
} }
} }
if (courseIds.isEmpty()){ if (courseIds.isEmpty()){
return APIResponse.toExceptionResponse("员名下无课程"); return APIResponse.toExceptionResponse("员名下无课程");
} }
reqSearchClaTime.setCourseIds(courseIds); reqSearchClaTime.setCourseIds(courseIds);
return searchListForCalendar(reqSearchClaTime); return searchListForCalendar(reqSearchClaTime);
@ -297,10 +297,10 @@ 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()); Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId());
if(bookCount.intValue()>0){ if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法修改:有学员预约,请联系学员取消预约后再作修改!"); return APIResponse.toExceptionResponse("无法修改:有会员预约,请联系会员取消预约后再作修改!");
} }
UpdateWrapper uw = new UpdateWrapper(); UpdateWrapper uw = new UpdateWrapper();
@ -343,10 +343,10 @@ 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()); Integer bookCount= claTimeService.selectBookCount(null, null,claTime.getCourseTimeId().toString());
if(bookCount.intValue()>0){ if(bookCount.intValue()>0){
return APIResponse.toExceptionResponse("无法删除:相关课表中有学员预约,请联系学员取消预约后再进行操作!"); return APIResponse.toExceptionResponse("无法删除:相关课表中有会员预约,请联系会员取消预约后再进行操作!");
} }
claTimeService.removeById(courseTimeId); claTimeService.removeById(courseTimeId);
@ -362,26 +362,26 @@ public class BusinessClaTimeService {
.in("book_status",0,1,2) .in("book_status",0,1,2)
.eq("course_time_id",reqClaTimeAttend.getCourseTimeId()) .eq("course_time_id",reqClaTimeAttend.getCourseTimeId())
); );
if (bookCourses.size()<1)throw new RuntimeException("无员预约!"); if (bookCourses.size()<1)throw new RuntimeException("无员预约!");
//判断预约状态(未确认) //判断预约状态(未确认)
// Long needCheck= bookCourses.stream() // Long needCheck= bookCourses.stream()
// .filter(l-> StrUtil.containsAny("0,1",l.getBookStatus()+"")).count(); // .filter(l-> StrUtil.containsAny("0,1",l.getBookStatus()+"")).count();
// if (needCheck>0){ // if (needCheck>0){
// return new RestResponse().setSuccess(false).setMessage("请检查员预约状态!"); // return new RestResponse().setSuccess(false).setMessage("请检查员预约状态!");
// } // }
//判断是否有员未签到 //判断是否有员未签到
Long notCheckIn=bookCourses.stream().filter(l->l.getCheckIn()==0).count(); Long notCheckIn=bookCourses.stream().filter(l->l.getCheckIn()==0).count();
if (notCheckIn>0){ if (notCheckIn>0){
return APIResponse.toExceptionResponse("请确认学员签到情况,如无法到课请联系学员取消预约!"); return APIResponse.toExceptionResponse("请确认会员签到情况,如无法到课请联系会员取消预约!");
} }
//签到 //签到
List<ScBookCourse> checkIn=bookCourses.stream().filter(l->l.getCheckIn()==1).collect(Collectors.toList()); List<ScBookCourse> checkIn=bookCourses.stream().filter(l->l.getCheckIn()==1).collect(Collectors.toList());
ScClaTime claTime=claTimeMapper.selectById(reqClaTimeAttend.getCourseTimeId()); ScClaTime claTime=claTimeMapper.selectById(reqClaTimeAttend.getCourseTimeId());
//签到数量是否少于开课人数 //签到数量是否少于开课人数
if (claTime.getLessCnt()>checkIn.size()){ if (claTime.getLessCnt()>checkIn.size()){
return APIResponse.toExceptionResponse("员数量到不到开课标准!"); return APIResponse.toExceptionResponse("员数量到不到开课标准!");
} }
//教室使用时间及费用 //教室使用时间及费用
@ -418,10 +418,10 @@ public class BusinessClaTimeService {
claTime.setRealClaDate(reqClaTimeAttend.getRealClaDate()); claTime.setRealClaDate(reqClaTimeAttend.getRealClaDate());
claTime.setRealStartTime(reqClaTimeAttend.getRealStartTime()); claTime.setRealStartTime(reqClaTimeAttend.getRealStartTime());
claTime.setRealEndTime(reqClaTimeAttend.getRealEndTime()); claTime.setRealEndTime(reqClaTimeAttend.getRealEndTime());
claTime.setTeacherId(reqClaTimeAttend.getTeacherId()); // claTime.setTeacherId(reqClaTimeAttend.getTeacherId());
claTime.setRoomId(reqClaTimeAttend.getRoomId()); // claTime.setRoomId(reqClaTimeAttend.getRoomId());
claTime.setMemo(reqClaTimeAttend.getMemo()); claTime.setMemo(reqClaTimeAttend.getMemo());
claTime.setClassTheme(reqClaTimeAttend.getClassTheme()); // claTime.setClassTheme(reqClaTimeAttend.getClassTheme());
claTime.setVenueFee(venueFee); claTime.setVenueFee(venueFee);
claTime.setRoomUsageTime(roomUsageTime); claTime.setRoomUsageTime(roomUsageTime);
claTime.setStatus("2"); claTime.setStatus("2");

@ -39,7 +39,7 @@ public class BusinessScClaTimeAttendService {
*/ */
public RespPage<RespClaTimeAttend> searchList(ReqSearchScClaTimeAttend reqSearchScClaTimeAttend) { public RespPage<RespClaTimeAttend> searchList(ReqSearchScClaTimeAttend reqSearchScClaTimeAttend) {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
//reqSearchScClaTimeAttend.setTenantId(loginUser.getNowTenantId()); reqSearchScClaTimeAttend.setTenantId(loginUser.getNowTenantId());
RespPage<RespClaTimeAttend> page = new RespPage(reqSearchScClaTimeAttend.getPageNum(), reqSearchScClaTimeAttend.getPageSize()); RespPage<RespClaTimeAttend> page = new RespPage(reqSearchScClaTimeAttend.getPageNum(), reqSearchScClaTimeAttend.getPageSize());
List<RespClaTimeAttend> attendList = attendMapper.selectTimeAttendList(reqSearchScClaTimeAttend, page); List<RespClaTimeAttend> attendList = attendMapper.selectTimeAttendList(reqSearchScClaTimeAttend, page);
page.setRows(attendList); page.setRows(attendList);

@ -21,6 +21,8 @@ import com.ruoyi.school.course.domain.req.course.ReqSelect;
import com.ruoyi.school.course.domain.resp.course.RespScCourseDetail; import com.ruoyi.school.course.domain.resp.course.RespScCourseDetail;
import com.ruoyi.school.course.domain.resp.course.RespSearchCourse; import com.ruoyi.school.course.domain.resp.course.RespSearchCourse;
import com.ruoyi.school.course.mapper.ScCourseMapper; import com.ruoyi.school.course.mapper.ScCourseMapper;
import com.ruoyi.school.member.domain.ScMemberCardCourses;
import com.ruoyi.school.member.service.ScMemberCardCourseService;
import com.ruoyi.system.service.impl.BusinessSysDeptService; import com.ruoyi.system.service.impl.BusinessSysDeptService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -29,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
/** /**
* @author zhangbaoyu * @author zhangbaoyu
@ -64,7 +67,7 @@ public class BusinessScCourseService {
/** /**
* *
* *
* *
* @param reqSearchScCourse * @param reqSearchScCourse
* @return * @return
@ -154,7 +157,7 @@ public class BusinessScCourseService {
scCourse.setTenantId(loginUser.getNowTenantId()); scCourse.setTenantId(loginUser.getNowTenantId());
scCourse.setClaFee(reqAddScCourse.getClaFee()); scCourse.setClaFee(reqAddScCourse.getClaFee());
scCourse.setDepartId(reqAddScCourse.getPartCampus()); scCourse.setDepartId(reqAddScCourse.getPartCampus());
scCourse.setTuitionFee(reqAddScCourse.getTuitionFee());
boolean addScCourse = scCourseService.save(scCourse); boolean addScCourse = scCourseService.save(scCourse);
//默认班级 //默认班级
@ -180,15 +183,16 @@ public class BusinessScCourseService {
ScCourse updateCourse = new ScCourse(); ScCourse updateCourse = new ScCourse();
updateCourse.setCourseId(reqChangeScCourse.getCourseId()); updateCourse.setCourseId(reqChangeScCourse.getCourseId());
updateCourse.setCourseName(reqChangeScCourse.getCourseName()); updateCourse.setCourseName(reqChangeScCourse.getCourseName());
updateCourse.setCourseTypeId(reqChangeScCourse.getCourseTypeId()); // updateCourse.setCourseTypeId(reqChangeScCourse.getCourseTypeId());
updateCourse.setTeachingMode(reqChangeScCourse.getTeachingMode()); updateCourse.setTeachingMode(reqChangeScCourse.getTeachingMode());
updateCourse.setCourseIntro(reqChangeScCourse.getCourseIntro()); updateCourse.setCourseIntro(reqChangeScCourse.getCourseIntro());
updateCourse.setClaFee(reqChangeScCourse.getClaFee()); updateCourse.setClaFee(reqChangeScCourse.getClaFee());
updateCourse.setTuitionFee(reqChangeScCourse.getTuitionFee());
updateCourse.setLastUpdateUser(loginUser.getUserId()); updateCourse.setLastUpdateUser(loginUser.getUserId());
updateCourse.setLastUpdateTime(new Date()); updateCourse.setLastUpdateTime(new Date());
updateCourse.setTenantId(loginUser.getNowTenantId()); updateCourse.setTenantId(loginUser.getNowTenantId());
updateCourse.setSale("1"); updateCourse.setSale("1");
updateCourse.setDepartId(reqChangeScCourse.getPartCampus()); // updateCourse.setDepartId(reqChangeScCourse.getPartCampus());
updateCourse.setImportId(-1L); updateCourse.setImportId(-1L);
boolean updateScCourse = scCourseService.updateById(updateCourse); boolean updateScCourse = scCourseService.updateById(updateCourse);
@ -197,6 +201,8 @@ public class BusinessScCourseService {
@Autowired @Autowired
private IScCourseClaService courseClaService; private IScCourseClaService courseClaService;
@Autowired
private ScMemberCardCourseService cardCourseService;
/** /**
* *
* *
@ -207,8 +213,8 @@ public class BusinessScCourseService {
if (null == courseIds || courseIds.isEmpty()) { if (null == courseIds || courseIds.isEmpty()) {
return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE);
} }
//
// // 如课程对应在用班级,不允许删除 // 如课程对应在用班级,不允许删除
QueryWrapper<ScCourseCla> qw = new QueryWrapper<>(); QueryWrapper<ScCourseCla> qw = new QueryWrapper<>();
qw.in("course_id", courseIds); qw.in("course_id", courseIds);
int courseClaCount = courseClaService.count(qw); int courseClaCount = courseClaService.count(qw);
@ -216,7 +222,17 @@ public class BusinessScCourseService {
return APIResponse.toExceptionResponse("该课程下存在在用班级,无法删除课程"); return APIResponse.toExceptionResponse("该课程下存在在用班级,无法删除课程");
} }
// String arrayAsString = courseIds.stream()
.map(Object::toString) // 将Long转换为String
.collect(Collectors.joining(",")); // 使用逗号和空格连接字符串
//有对应的单独定义的会员卡项
int cardCourses= cardCourseService.count(new QueryWrapper<ScMemberCardCourses>()
.last(" where JSON_CONTAINS(courses, CAST("+arrayAsString+" AS JSON))"));
if (cardCourses != 0) {
return APIResponse.toExceptionResponse("已有会员卡项使用,无法删除");
}
boolean deleteScCourse = scCourseService.removeByIds(courseIds); boolean deleteScCourse = scCourseService.removeByIds(courseIds);
if (deleteScCourse) { if (deleteScCourse) {
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();

@ -116,6 +116,8 @@ public class BusinessScCourseTypeService {
if (null == scCourseType.getCourseTypeId()) { if (null == scCourseType.getCourseTypeId()) {
return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE); return APIResponse.toExceptionResponse(ApiResEnums.FAIL_WAIT_A_MINUTE);
} }
//校区是否变更 对应班级的校区修改
boolean updateScCourseType = scCourseTypeService.updateById(scCourseType); boolean updateScCourseType = scCourseTypeService.updateById(scCourseType);
if (updateScCourseType) { if (updateScCourseType) {
return APIResponse.toOkResponse(); return APIResponse.toOkResponse();
@ -167,7 +169,7 @@ public class BusinessScCourseTypeService {
/** /**
* *
* *
* @param scCourse * @param ScCourseType
* @return * @return
*/ */
public APIResponse changeCourseTypeSale(ScCourseType scCourseType) { public APIResponse changeCourseTypeSale(ScCourseType scCourseType) {

@ -17,7 +17,7 @@ import java.util.List;
public interface IScClaTimeAttendService extends com.baomidou.mybatisplus.extension.service.IService<ScClaTimeAttend> { public interface IScClaTimeAttendService extends com.baomidou.mybatisplus.extension.service.IService<ScClaTimeAttend> {
/** /**
* *
* @param studentCourseId * @param studentCourseId
* @param beginDate * @param beginDate
* @param endDate * @param endDate
@ -52,7 +52,7 @@ public interface IScClaTimeAttendService extends com.baomidou.mybatisplus.extens
BigDecimal getAttendCostHour(String beginDate, String endDate, boolean needAttend); BigDecimal getAttendCostHour(String beginDate, String endDate, boolean needAttend);
/** /**
* *
* *
* *
* @param reqClaTimeCount * @param reqClaTimeCount

@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IScCourseClaService extends IService<ScCourseCla> { public interface IScCourseClaService extends IService<ScCourseCla> {
/** /**
* *
* @param claId * @param claId
* @return * @return
*/ */

@ -67,7 +67,7 @@ public class BusinessScCourseClaService {
// //
public APIResponse searchCourseClaStudent(ReqSearchClaTime reqSearchClaTime){ public APIResponse searchCourseClaStudent(ReqSearchClaTime reqSearchClaTime){
String courseTimeId=reqSearchClaTime.getCourseTimeId(); String courseTimeId=reqSearchClaTime.getCourseTimeId();
//预约的 //预约的
List<RespCourseClaStudent> scStudentList= scCourseClaMapper.selectStudenForClaTime(courseTimeId); List<RespCourseClaStudent> scStudentList= scCourseClaMapper.selectStudenForClaTime(courseTimeId);
return APIResponse.toAPIResponse(scStudentList); return APIResponse.toAPIResponse(scStudentList);
} }
@ -166,7 +166,7 @@ public class BusinessScCourseClaService {
scCourseClaVo.setDeptName(sysDept.getDeptName()); scCourseClaVo.setDeptName(sysDept.getDeptName());
} }
// 教 // 教
if (null != courseCla.getStaffId()) { if (null != courseCla.getStaffId()) {
SysUser staff = userService.selectUserById(courseCla.getStaffId()); SysUser staff = userService.selectUserById(courseCla.getStaffId());
scCourseClaVo.setTeacherName(staff.getNickName()); scCourseClaVo.setTeacherName(staff.getNickName());
@ -201,13 +201,13 @@ public class BusinessScCourseClaService {
ScCourseCla cla = scCourseCla.getScCourseCla(loginUser); ScCourseCla cla = scCourseCla.getScCourseCla(loginUser);
// 教是否存在 // 教是否存在
SysUser teacher = userService.selectUserById(scCourseCla.getStaffId()); SysUser teacher = userService.selectUserById(scCourseCla.getStaffId());
if (ObjectUtil.isNotEmpty(teacher)) { if (ObjectUtil.isEmpty(teacher)) {
// return APIResponse.toExceptionResponse("教师不存在,请重新选择后提交。"); return APIResponse.toExceptionResponse("教练不存在,请重新选择后提交。");
cla.setTeacherName(teacher.getNickName());
}
}
cla.setTeacherName(teacher.getNickName());
APIBaseResponse checkParam = cla.checkParam(); APIBaseResponse checkParam = cla.checkParam();
if (!checkParam.isSuccess()) { if (!checkParam.isSuccess()) {
@ -241,10 +241,10 @@ public class BusinessScCourseClaService {
return APIResponse.toExceptionResponse("课程不存在,请重新选择后提交。"); return APIResponse.toExceptionResponse("课程不存在,请重新选择后提交。");
} }
// 教是否存在 // 教是否存在
SysUser teacher = userService.selectUserById(scCourseCla.getStaffId()); SysUser teacher = userService.selectUserById(scCourseCla.getStaffId());
if (null == teacher) { if (null == teacher) {
return APIResponse.toExceptionResponse("教不存在,请重新选择后提交。"); return APIResponse.toExceptionResponse("教不存在,请重新选择后提交。");
} }
// 修改课程,校验是否允许修改所属课程 // 修改课程,校验是否允许修改所属课程

@ -35,7 +35,7 @@ public class ScCourseClaServiceImpl extends ServiceImpl<ScCourseClaMapper, ScCou
// qw.eq("cla_id", claId); // qw.eq("cla_id", claId);
// int count = studentCourseService.count(qw); // int count = studentCourseService.count(qw);
// if (count != 0) { // if (count != 0) {
// return APIBaseResponse.fail("当前班级有报读员,无法变更所属课程."); // return APIBaseResponse.fail("当前班级有报读员,无法变更所属课程.");
// } // }
// //
// QueryWrapper<ScClaTime> qwClaTime = new QueryWrapper<>(); // QueryWrapper<ScClaTime> qwClaTime = new QueryWrapper<>();

@ -37,7 +37,7 @@ public class DashboardData {
// 今日实消课时 // 今日实消课时
private BigDecimal todayRealCostHour; private BigDecimal todayRealCostHour;
// 员数量 // 员数量
private Integer studentCnt; private Integer studentCnt;
// 班级数量 // 班级数量
@ -46,7 +46,7 @@ public class DashboardData {
// 课程数量 // 课程数量
private Integer courseCnt; private Integer courseCnt;
// 余额小于200元员数量 // 余额小于200元员数量
private Integer feeWillExpireCnt; private Integer feeWillExpireCnt;
// 按期缴费 即将过期人数 // 按期缴费 即将过期人数

@ -14,7 +14,7 @@ import java.util.Date;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -28,7 +28,7 @@ public class ScStudent implements Serializable {
/** /**
* id * id
*/ */
@TableId(value = "student_id", type = IdType.ASSIGN_ID) @TableId(value = "student_id", type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@ -48,7 +48,7 @@ public class ScStudent implements Serializable {
private Long schoolId; private Long schoolId;
/** /**
* *
*/ */
@TableField("student_name") @TableField("student_name")
private String studentName; private String studentName;

@ -4,7 +4,7 @@ import com.ruoyi.common.page.ReqPageBase;
import lombok.Data; import lombok.Data;
/** /**
* select * select
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020-06-19 08:41 * @date Created in 2020-06-19 08:41

@ -10,7 +10,7 @@ import java.util.Date;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -12,7 +12,7 @@ import java.util.List;
/** /**
* <p> * <p>
* Mapper * Mapper
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -25,21 +25,21 @@ public interface ScStudentMapper extends com.baomidou.mybatisplus.core.mapper.Ba
List<RespSearchStudent> selectForSelect(@Param("studentSelect") ReqStudentSelect studentSelect, @Param("page") Page page); List<RespSearchStudent> selectForSelect(@Param("studentSelect") ReqStudentSelect studentSelect, @Param("page") Page page);
/** /**
* *
* @param reqSearchScStudent * @param reqSearchScStudent
* @return * @return
*/ */
List<RespSearchStudent> selectAllStudent(ReqSearchScStudent reqSearchScStudent); List<RespSearchStudent> selectAllStudent(ReqSearchScStudent reqSearchScStudent);
/** /**
* *
* @param reqDeptCondition * @param reqDeptCondition
* @return * @return
*/ */
// Integer selectStudentCount(ReqDeptCondition reqDeptCondition); // Integer selectStudentCount(ReqDeptCondition reqDeptCondition);
/** /**
* *
* @param tenantId * @param tenantId
* @return * @return
*/ */

@ -147,17 +147,26 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
if (dto.getChargeType().equals("count")){ if (dto.getChargeType().equals("count")){
card.setRemainingCount(card.getTotalCount()); card.setRemainingCount(card.getTotalCount());
card.setCountFee(card.getPrice().divide(card.getTotalCount())); if (BigDecimal.ZERO.equals(card.getPrice())||BigDecimal.ZERO.equals(card.getTotalCount())){
card.setCountFee(new BigDecimal(0));
}else {
card.setCountFee(card.getPrice().divide(card.getTotalCount(),2, RoundingMode.HALF_UP));
}
} }
if (dto.getChargeType().equals("total_fee")){ if (dto.getChargeType().equals("total_fee")){
card.setRemainingTotalFee(card.getTotalFee()); card.setRemainingTotalFee(card.getTotalFee());
card.setDayFee(card.getPrice().divide(new BigDecimal(card.getTotalDays())));
} }
// if (dto.getChargeType().equals("days")){ if (dto.getChargeType().equals("days")){
// card.setRemainingDays(card.getTotalDays()); if (BigDecimal.ZERO.equals(card.getPrice()) || BigDecimal.ZERO.equals(card.getTotalDays())) {
// } card.setDayFee(new BigDecimal(0));
}else {
card.setDayFee(card.getPrice().divide(new BigDecimal(card.getTotalDays()),2, RoundingMode.HALF_UP));
}
}
// 设置默认到期日期(根据卡类型) // 设置默认到期日期(根据卡类型)
// if (card.getExpiryDate() == null && cardType.getValidDays() != null) { // if (card.getExpiryDate() == null && cardType.getValidDays() != null) {
// LocalDate activationDate = card.getActivationDate() != null ? // LocalDate activationDate = card.getActivationDate() != null ?
@ -268,7 +277,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
//判断预约状态 //判断预约状态
//预约状态:0->预约中1->教练确认2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败; //预约状态:0->预约中1->教练确认2->店长确认/预约成功/待上课 3->已取消;4- >已完成/待评价;5- >预约失败;
if (StrUtil.containsAny("3,4,5",bookCourse.getBookStatus()+"")){ if (StrUtil.containsAny("3,4,5",bookCourse.getBookStatus()+"")){
return APIResponse.toExceptionResponse("请检查员预约状态!"); return APIResponse.toExceptionResponse("请检查员预约状态!");
} }
ScMemberCard memberCard=memberCardService.getOne(new QueryWrapper<ScMemberCard>() ScMemberCard memberCard=memberCardService.getOne(new QueryWrapper<ScMemberCard>()
@ -291,7 +300,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
if (memberCard.getRemainingCount().compareTo(bookCourse.getDeductCnt())>-1){ if (memberCard.getRemainingCount().compareTo(bookCourse.getDeductCnt())>-1){
addClaTimeAttend.setPayHour(bookCourse.getDeductCnt()); addClaTimeAttend.setPayHour(bookCourse.getDeductCnt());
addClaTimeAttend.setCountBefore(memberCard.getRemainingCount()); addClaTimeAttend.setCountBefore(memberCard.getRemainingCount());
addClaTimeAttend.setPayFee(memberCard.getPrice().divide(memberCard.getTotalCount(),2, RoundingMode.HALF_UP)); addClaTimeAttend.setPayFee(memberCard.getCountFee().multiply(bookCourse.getDeductCnt()));
BigDecimal countAfter= memberCard.getRemainingCount().subtract(bookCourse.getDeductCnt()); BigDecimal countAfter= memberCard.getRemainingCount().subtract(bookCourse.getDeductCnt());
addClaTimeAttend.setCountAfter(countAfter); addClaTimeAttend.setCountAfter(countAfter);
memberCard.setRemainingCount(countAfter); memberCard.setRemainingCount(countAfter);
@ -312,6 +321,11 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
return APIResponse.toExceptionResponse("会员卡剩余金额不足,请充值后重新预约!"); return APIResponse.toExceptionResponse("会员卡剩余金额不足,请充值后重新预约!");
} }
} }
// if (chargeType.equals("days")){
// addClaTimeAttend.setPayFee(memberCard.getDayFee());
//
// }
bookCourse.setUserId(SecurityUtils.getUserId()); bookCourse.setUserId(SecurityUtils.getUserId());
bookCourse.setCheckIn(1); bookCourse.setCheckIn(1);
bookCourse.setCheckInTime(new Date()); bookCourse.setCheckInTime(new Date());
@ -321,7 +335,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
claTime.setRealAttendCnt(claTime.getRealAttendCnt()+1); claTime.setRealAttendCnt(claTime.getRealAttendCnt()+1);
//上课记录 //上课记录
addClaTimeAttend.setBookId(bookCourse.getId()); addClaTimeAttend.setBookId(bookCourse.getId());
addClaTimeAttend.setMemberCardId(memberCard.getMemberId()); addClaTimeAttend.setMemberCardId(memberCard.getId());
addClaTimeAttend.setCourseTimeId(courseTimeId); addClaTimeAttend.setCourseTimeId(courseTimeId);
addClaTimeAttend.setStudentId(bookCourse.getStudentId()); addClaTimeAttend.setStudentId(bookCourse.getStudentId());
addClaTimeAttend.setClaId(claTime.getClaId()); addClaTimeAttend.setClaId(claTime.getClaId());

@ -60,7 +60,7 @@ public class ScMemberCardTypesServiceImpl extends ServiceImpl<ScMemberCardTypesM
List<ReqAddMemberChargeItem> list=cardChargeService.getByMemberId(l.getCardTypeId()); List<ReqAddMemberChargeItem> list=cardChargeService.getByMemberId(l.getCardTypeId());
l.setFeeModeHourList(list); l.setFeeModeHourList(list);
} }
//限制教 //限制教
if (l.getRestrictedTeacher().equals("2") ){ if (l.getRestrictedTeacher().equals("2") ){
List<SysUser> users= userService.selectUserByIds(l.getTeacherList()); List<SysUser> users= userService.selectUserByIds(l.getTeacherList());
String userNames= users.stream().map(SysUser::getNickName).collect(Collectors.joining(",")); String userNames= users.stream().map(SysUser::getNickName).collect(Collectors.joining(","));
@ -84,7 +84,7 @@ public class ScMemberCardTypesServiceImpl extends ServiceImpl<ScMemberCardTypesM
} }
if (null == studentId) { if (null == studentId) {
return APIResponse.toExceptionResponse("请选择员"); return APIResponse.toExceptionResponse("请选择员");
} }
ScMemberCardTypes memberCardType=this.getById(cardTypeId); ScMemberCardTypes memberCardType=this.getById(cardTypeId);

@ -45,13 +45,13 @@ public class ScOrder implements Serializable {
private String tenantId; private String tenantId;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;
/** /**
* *
*/ */
@TableField("student_name") @TableField("student_name")
private String studentName; private String studentName;

@ -14,7 +14,7 @@ import java.io.Serializable;
@Data @Data
public class ReqSearchScOrder extends ReqPageBase implements Serializable { public class ReqSearchScOrder extends ReqPageBase implements Serializable {
// //
private Long studentId; private Long studentId;
// 经办日期 // 经办日期

@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
* *
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/9/2 14:03 * @date Created in 2020/9/2 14:03
@ -19,7 +19,7 @@ public class ScStudentAccountController {
private BusinessScStudentAccountService accountService; private BusinessScStudentAccountService accountService;
/** /**
* *
* *
* @param studentId * @param studentId
* @return * @return

@ -11,7 +11,7 @@ import java.math.BigDecimal;
@Data @Data
public class ReqClaTimeAttendItem { public class ReqClaTimeAttendItem {
// 学生 // 会员
private Long studentCourseId; private Long studentCourseId;
// 1到课 2请假 3缺勤 // 1到课 2请假 3缺勤
@ -20,7 +20,7 @@ public class ReqClaTimeAttendItem {
// 备注 // 备注
private String memo; private String memo;
// 学生消耗课时 // 会员消耗课时
private BigDecimal stuLoseHour; private BigDecimal stuLoseHour;
} }

@ -4,7 +4,7 @@ import com.ruoyi.common.page.ReqDeptCondition;
import lombok.Data; import lombok.Data;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/10/8 22:03 * @date Created in 2020/10/8 22:03
*/ */

@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020-06-20 12:30 * @date Created in 2020-06-20 12:30
*/ */

@ -3,7 +3,7 @@ package com.ruoyi.school.student.domain.req;
import lombok.Data; import lombok.Data;
/** /**
* *
* *
* *
* @author zhangbaoyu * @author zhangbaoyu

@ -4,7 +4,7 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/9/2 15:48 * @date Created in 2020/9/2 15:48
*/ */

@ -8,8 +8,8 @@ import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
* *
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/9/28 16:51 * @date Created in 2020/9/28 16:51
*/ */
@ -18,7 +18,7 @@ public class RespCourseClaStudent {
private Long courseTimeId; private Long courseTimeId;
//员信息 //员信息
private Long studentId; private Long studentId;
private String studentName; private String studentName;
@ -72,7 +72,7 @@ public class RespCourseClaStudent {
//---------------- 签到成功的 //---------------- 签到成功的
/** /**
* *

@ -9,7 +9,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/12/21 20:28 * @date Created in 2020/12/21 20:28
*/ */

@ -6,7 +6,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* *
* @author zhangbaoyu * @author zhangbaoyu
* @date Created in 2020/10/8 22:02 * @date Created in 2020/10/8 22:02
*/ */

@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/** /**
* <p> * <p>
* Mapper * Mapper
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -14,7 +14,7 @@ import java.util.Date;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -35,7 +35,7 @@ public class ScStudentAccount implements Serializable {
private Long accountId; private Long accountId;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;

@ -38,7 +38,7 @@ public class ScStudentAccountLog implements Serializable {
private String accountId; private String accountId;
/** /**
* *
*/ */
@TableField("student_id") @TableField("student_id")
private Long studentId; private Long studentId;

@ -19,7 +19,7 @@ public class BusinessScStudentAccountService {
private IScStudentAccountService accountService; private IScStudentAccountService accountService;
/** /**
* *
* *
* @param studentId * @param studentId
* @return * @return

@ -91,7 +91,7 @@ public class BusinessScStudentService {
public APIResponse addScStudent(ScStudent scStudent) { public APIResponse addScStudent(ScStudent scStudent) {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
// 保存学生信息 // 保存会员信息
insertAppUser(scStudent); insertAppUser(scStudent);
@ -101,7 +101,7 @@ public class BusinessScStudentService {
); );
if(i>0){ if(i>0){
throw new RuntimeException("使用该手机号注册的员已经存在,请勿重复添加!"); throw new RuntimeException("使用该手机号注册的员已经存在,请勿重复添加!");
} }
scStudent.setTenantId(SecurityUtils.getLoginUser().getNowTenantId()); scStudent.setTenantId(SecurityUtils.getLoginUser().getNowTenantId());
@ -147,12 +147,12 @@ public class BusinessScStudentService {
); );
if(i>0){ if(i>0){
throw new RuntimeException("使用该手机号注册的员已经存在,请勿重复添加!"); throw new RuntimeException("使用该手机号注册的员已经存在,请勿重复添加!");
} }
} }
// 更新学生信息 // 更新会员信息
scStudent.setLastUpdateUser(loginUser.getUserId()); scStudent.setLastUpdateUser(loginUser.getUserId());
scStudent.setLastUpdateTime(new Date()); scStudent.setLastUpdateTime(new Date());
boolean updateScStudent = scStudentService.updateById(scStudent); boolean updateScStudent = scStudentService.updateById(scStudent);
@ -177,7 +177,7 @@ public class BusinessScStudentService {
int studentCourseCount = memberCardService.count(new QueryWrapper<ScMemberCard>() int studentCourseCount = memberCardService.count(new QueryWrapper<ScMemberCard>()
.in("member_id", Arrays.asList(studentIds))); .in("member_id", Arrays.asList(studentIds)));
if (studentCourseCount != 0) { if (studentCourseCount != 0) {
return APIResponse.toExceptionResponse("学生已办理会员卡,无法删除"); return APIResponse.toExceptionResponse("会员已办理会员卡,无法删除");
} }
boolean deleteScStudent = scStudentService.removeByIds(Arrays.asList(studentIds)); boolean deleteScStudent = scStudentService.removeByIds(Arrays.asList(studentIds));

@ -7,7 +7,7 @@ import java.math.BigDecimal;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -16,14 +16,14 @@ import java.math.BigDecimal;
public interface IScStudentAccountService extends IService<ScStudentAccount> { public interface IScStudentAccountService extends IService<ScStudentAccount> {
/** /**
* *
* @param studentId * @param studentId
* @return * @return
*/ */
BigDecimal selectStudentAccountBalance(Long studentId); BigDecimal selectStudentAccountBalance(Long studentId);
/** /**
* *
* @param studentId * @param studentId
* @param addBalance * @param addBalance
* @param userId * @param userId

@ -10,7 +10,7 @@ import java.util.List;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby
@ -23,9 +23,9 @@ public interface IScStudentService extends com.baomidou.mybatisplus.extension.se
Long selectIdByName(String studentName); Long selectIdByName(String studentName);
/** /**
* *
* @param max * @param max
* @return ID * @return ID
*/ */
RespPage<ScStudent> selectStudentList(Integer max); RespPage<ScStudent> selectStudentList(Integer max);

@ -13,7 +13,7 @@ import java.util.Date;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -16,7 +16,7 @@ import java.util.List;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author zhangby * @author zhangby

@ -19,8 +19,8 @@ public class SysTeacher extends BaseEntity
/** 员工id */ /** 员工id */
private Long userId; private Long userId;
/** 老师名称 */ /** 教练名称 */
@Excel(name = "老师名称") @Excel(name = "教练名称")
private String teacherName; private String teacherName;
/** 头像 */ /** 头像 */

@ -2,6 +2,7 @@ package com.ruoyi.system.mapper.colums;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.columns.SysTeacher; import com.ruoyi.system.domain.columns.SysTeacher;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -60,5 +61,5 @@ public interface SysTeacherMapper
* @param userIds * @param userIds
* @return * @return
*/ */
public int deleteSysTeacherByUserIds(Long[] userIds); public int deleteSysTeacherByUserIds(@Param("userIds") List<Long> userIds);
} }

@ -1,5 +1,6 @@
package com.ruoyi.system.service.columns; package com.ruoyi.system.service.columns;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.columns.SysTeacher; import com.ruoyi.system.domain.columns.SysTeacher;
@ -51,7 +52,7 @@ public interface ISysTeacherService
* @param userIds * @param userIds
* @return * @return
*/ */
public int deleteSysTeacherByUserIds(Long[] userIds); public AjaxResult deleteSysTeacherByUserIds(List<Long> userIds);
/** /**
* *
@ -60,4 +61,6 @@ public interface ISysTeacherService
* @return * @return
*/ */
public int deleteSysTeacherByUserId(Long userId); public int deleteSysTeacherByUserId(Long userId);
boolean isUsed(List<Long> userIds);
} }

@ -1,6 +1,16 @@
package com.ruoyi.system.service.columns.impl; package com.ruoyi.system.service.columns.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.school.course.domain.ScClaTime;
import com.ruoyi.school.course.domain.ScClaTimeRule;
import com.ruoyi.school.course.domain.ScCourseCla;
import com.ruoyi.school.course.service.IScClaTimeRuleService;
import com.ruoyi.school.course.service.IScClaTimeService;
import com.ruoyi.school.course.service.IScCourseClaService;
import com.ruoyi.school.member.domain.ScMemberCardTypes;
import com.ruoyi.school.member.service.ScMemberCardTypesService;
import com.ruoyi.system.domain.columns.SysTeacher; import com.ruoyi.system.domain.columns.SysTeacher;
import com.ruoyi.system.mapper.colums.SysTeacherMapper; import com.ruoyi.system.mapper.colums.SysTeacherMapper;
import com.ruoyi.system.service.columns.ISysTeacherService; import com.ruoyi.system.service.columns.ISysTeacherService;
@ -9,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* Service * Service
@ -22,6 +33,17 @@ public class SysTeacherServiceImpl implements ISysTeacherService
@Autowired @Autowired
private SysTeacherMapper sysTeacherMapper; private SysTeacherMapper sysTeacherMapper;
@Autowired
private IScCourseClaService claService;
@Autowired
private IScClaTimeRuleService claTimeRuleService;
@Autowired
private ScMemberCardTypesService cardTypesService;
@Autowired
private IScClaTimeService claTimeService;
/** /**
* *
* *
@ -47,7 +69,7 @@ public class SysTeacherServiceImpl implements ISysTeacherService
} }
/** /**
* *
* @param sysTeacher * @param sysTeacher
* @return * @return
*/ */
@ -90,9 +112,14 @@ public class SysTeacherServiceImpl implements ISysTeacherService
* @return * @return
*/ */
@Override @Override
public int deleteSysTeacherByUserIds(Long[] userIds) public AjaxResult deleteSysTeacherByUserIds(List<Long> userIds)
{ {
return sysTeacherMapper.deleteSysTeacherByUserIds(userIds);
if (isUsed(userIds)){
return AjaxResult.error("该教练已经排课,或在会员卡项中被单独定义,无法删除!");
}
sysTeacherMapper.deleteSysTeacherByUserIds(userIds);
return AjaxResult.success();
} }
/** /**
@ -104,6 +131,35 @@ public class SysTeacherServiceImpl implements ISysTeacherService
@Override @Override
public int deleteSysTeacherByUserId(Long userId) public int deleteSysTeacherByUserId(Long userId)
{ {
return sysTeacherMapper.deleteSysTeacherByUserId(userId); return sysTeacherMapper.deleteSysTeacherByUserId(userId);
} }
public boolean isUsed(List<Long> userIds){
int claCount=claService.count(new QueryWrapper<ScCourseCla>().in("staff_id", userIds));
if (claCount>0 ){
return true;
}
int timeRuleCount=claTimeRuleService.count(new QueryWrapper<ScClaTimeRule>().in("teacher_id",userIds));
if (timeRuleCount>0 ){
return true;
}
String arrayAsString = userIds.stream()
.map(Object::toString) // 将Long转换为String
.collect(Collectors.joining(",")); // 使用逗号和空格连接字符串
int cardTypesCount=cardTypesService.count(new QueryWrapper<ScMemberCardTypes>()
.last(" and JSON_CONTAINS(teacher_list, CAST("+arrayAsString+" AS JSON))")
);
if (cardTypesCount>0 ){
return true;
}
int claTimeCount=claTimeService.count(new QueryWrapper<ScClaTime>().in("teacher_id",userIds));
if (claTimeCount>0 ){
return true;
}
return false;
}
} }

@ -242,10 +242,10 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
return RestResponse.failure(dbTenant.getTenantName() + ",此租户信息不允许删除"); return RestResponse.failure(dbTenant.getTenantName() + ",此租户信息不允许删除");
} }
// 是否有学生/课程/班级 // 是否有会员/课程/班级
int contentCount = baseMapper.tenantHaveContent(tenantId); int contentCount = baseMapper.tenantHaveContent(tenantId);
if (contentCount > 0) { if (contentCount > 0) {
return RestResponse.failure("租户下有员,无法删除"); return RestResponse.failure("租户下有员,无法删除");
} }
} }
String joinedString = String.join(",", tenantIds); String joinedString = String.join(",", tenantIds);

@ -13,12 +13,14 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.AppUser; import com.ruoyi.system.domain.AppUser;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.domain.columns.SysTeacher;
import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper; import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.YjAppUserService; import com.ruoyi.system.service.YjAppUserService;
import com.ruoyi.system.service.columns.ISysTeacherService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -26,6 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -56,6 +59,9 @@ public class SysUserServiceImpl implements ISysUserService
@Autowired @Autowired
private YjAppUserService appUserService; private YjAppUserService appUserService;
@Autowired
private ISysTeacherService teacherService;
/** /**
* *
* *
@ -229,9 +235,20 @@ public class SysUserServiceImpl implements ISysUserService
insertUserRole(user); insertUserRole(user);
//新增app用户 //新增app用户
insertAppUser(user); insertAppUser(user);
//关联teacher表
Long[] roles = user.getRoleIds();
if (Arrays.stream(roles)
.anyMatch(new Long(104)::equals)){
SysTeacher teacher=new SysTeacher();
teacher.setUserId(user.getUserId());
teacher.setTeacherName(user.getNickName());
teacherService.insertSysTeacher(teacher);
}
return rows; return rows;
} }
//关联app账号 //关联app账号
public void insertAppUser(SysUser user){ public void insertAppUser(SysUser user){
AppUser appUser=appUserService.getOne(new QueryWrapper<AppUser>().eq("phone_number",user.getPhonenumber())); AppUser appUser=appUserService.getOne(new QueryWrapper<AppUser>().eq("phone_number",user.getPhonenumber()));
@ -287,7 +304,32 @@ public class SysUserServiceImpl implements ISysUserService
public int updateUser(SysUser user) public int updateUser(SysUser user)
{ {
Long userId = user.getUserId(); Long userId = user.getUserId();
// 删除用户与角色关联 // 修改用户与教练表关联
// 1.是否原为教练
int dbHasTeacherRole= userRoleMapper.countRoleAndUserId(new Long(104),userId);
Long[] roles = user.getRoleIds();
//2.新权限中是否含有教练角色
if (Arrays.stream(roles)
.anyMatch(new Long(104)::equals)){
//3.新增有教练角色,判断原有角色是否包含教练
if (dbHasTeacherRole<1){
//3.1.原来没有,则新增教练表数据
SysTeacher teacher=new SysTeacher();
teacher.setUserId(userId);
teacher.setTeacherName(user.getNickName());
teacherService.insertSysTeacher(teacher);
}
}else {
//4.新增无教练角色,判断原有角色是否包含教练
if (dbHasTeacherRole>0 ){
//4.1原来有,则判断教练表数据是否被使用
if (teacherService.isUsed(Arrays.asList(userId))){
throw new RuntimeException("该员工作为教练已经排课,或在会员卡项中被单独定义,无法删除教练角色!");
}else {
teacherService.deleteSysTeacherByUserId(userId);
}
}
}
userRoleMapper.deleteUserRoleByUserId(userId); userRoleMapper.deleteUserRoleByUserId(userId);
// 新增用户与角色管理 // 新增用户与角色管理
insertUserRole(user); insertUserRole(user);
@ -308,6 +350,28 @@ public class SysUserServiceImpl implements ISysUserService
@Transactional @Transactional
public void insertUserAuth(Long userId, Long[] roleIds) public void insertUserAuth(Long userId, Long[] roleIds)
{ {
// 1.是否原为教练 2.是 校验是否被使用
int dbHasTeacherRole= userRoleMapper.countRoleAndUserId(new Long(104),userId);
if (Arrays.stream(roleIds)
.anyMatch(new Long(104)::equals)){
//关联teacher表 新增的教练权限
if (dbHasTeacherRole<1){
SysTeacher teacher=new SysTeacher();
teacher.setUserId(userId);
teacher.setTeacherName(this.selectUserById(userId).getNickName());
teacherService.insertSysTeacher(teacher);
}
}else {
if (dbHasTeacherRole>0 ){
if (teacherService.isUsed(Arrays.asList(userId))){
throw new RuntimeException("该员工作为教练已经排课,或在会员卡项中被单独定义,无法删除教练角色!");
}else{
teacherService.deleteSysTeacherByUserId(userId);
}
}
}
userRoleMapper.deleteUserRoleByUserId(userId); userRoleMapper.deleteUserRoleByUserId(userId);
insertUserRole(userId, roleIds); insertUserRole(userId, roleIds);
} }
@ -405,6 +469,7 @@ public class SysUserServiceImpl implements ISysUserService
/** /**
* *
* *
@ -452,10 +517,23 @@ public class SysUserServiceImpl implements ISysUserService
@Transactional @Transactional
public int deleteUserByIds(Long[] userIds) public int deleteUserByIds(Long[] userIds)
{ {
//取消与app登录用户的关联
for (Long userId : userIds) for (Long userId : userIds)
{ {
// 1.是否原为教练 2.是 校验是否被使用
int dbHasTeacherRole= userRoleMapper.countRoleAndUserId(new Long(104),userId);
if (dbHasTeacherRole>0 ){
if (teacherService.isUsed(Arrays.asList(userId))){
throw new RuntimeException("该员工作为教练已经排课,或在会员卡项中被单独定义,无法删除!");
}
//关联teacher 表
if (ObjectUtil.isNotEmpty(teacherService.selectSysTeacherByUserId(userId))){
teacherService.deleteSysTeacherByUserId(userId);
}
}
checkUserAllowed(new SysUser(userId)); checkUserAllowed(new SysUser(userId));
//取消与app登录用户的关联
removeAppUserManager(userId); removeAppUserManager(userId);
} }
// 删除用户与角色关联 // 删除用户与角色关联

@ -119,9 +119,9 @@ introduce},</if>
delete from sys_teacher where user_id = #{userId} delete from sys_teacher where user_id = #{userId}
</delete> </delete>
<delete id="deleteSysTeacherByUserIds" parameterType="String"> <delete id="deleteSysTeacherByUserIds" parameterType="arraylist">
delete from sys_teacher where user_id in delete from sys_teacher where user_id in
<foreach item="userId" collection="array" open="(" separator="," close=")"> <foreach item="userId" collection="userIds" open="(" separator="," close=")">
#{userId} #{userId}
</foreach> </foreach>
</delete> </delete>

@ -3,8 +3,14 @@
<mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeAttendMapper"> <mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeAttendMapper">
<select id="selectTimeAttendList" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeAttend"> <select id="selectTimeAttendList" resultType="com.ruoyi.school.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.teacher_id,cta.teacher_name,cta.attend_status,cta.pay_hour,cta.pay_fee, (select card_no from sc_member_cards where sc_member_cards.id=cta.member_card_id) as card_no,
cta.charge_type,
cta.teacher_id,
cta.teacher_name,
cta.attend_status,
cta.pay_hour,
cta.pay_fee,
cta.memo, cta.memo,
ct.real_cla_date,ct.real_start_time,ct.real_end_time,cta.create_time, ct.real_cla_date,ct.real_start_time,ct.real_end_time,cta.create_time,
scc.cla_name scc.cla_name
@ -31,11 +37,6 @@
<if test="reqSearchScClaTimeAttend.deptId != null"> <if test="reqSearchScClaTimeAttend.deptId != null">
and scc.depart_id=#{reqSearchScClaTimeAttend.deptId} and scc.depart_id=#{reqSearchScClaTimeAttend.deptId}
</if> </if>
<if test="reqSearchScClaTimeAttend.deptId == null and reqSearchScClaTimeAttend.userId != null and reqSearchScClaTimeAttend.userId != ''">
and exists(select 1 from sys_user_dept ud
where ud.user_id=#{reqSearchScClaTimeAttend.userId}
and (ud.dept_id=scc.depart_id or ud.dept_id=-1))
</if>
order by cta.attend_id desc order by cta.attend_id desc
</select> </select>
<select id="selectStudentAttendCount" resultType="int"> <select id="selectStudentAttendCount" resultType="int">

@ -7,7 +7,8 @@
b.cla_id, b.cla_id,
b.cla_date, b.cla_date,
WEEKDAY(b.cla_date) + 1 as week_day, 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.source,
b.status, b.status,
@ -18,7 +19,11 @@
course.course_name, course.course_name,
s.user_id as teacher_id, s.user_id as teacher_id,
s.nick_name as staff_name, s.nick_name as staff_name,
r.room_id,r.room_name r.room_id,
r.room_name,
b.book_attend_cnt as student_count,
b.less_cnt,
b.at_class_cnt
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

@ -3,7 +3,8 @@
<mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeRuleMapper"> <mapper namespace="com.ruoyi.school.course.mapper.ScClaTimeRuleMapper">
<select id="selectByCondition" resultType="com.ruoyi.school.course.domain.resp.time.RespClaTimeRule"> <select id="selectByCondition" resultType="com.ruoyi.school.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
where a.cla_id = b.cla_id and a.course_id=c.course_id and b.teacher_id=d.user_id and a.tenant_id=#{reqSearchScClaTimeRule.tenantId} where a.cla_id = b.cla_id and a.course_id=c.course_id and b.teacher_id=d.user_id and a.tenant_id=#{reqSearchScClaTimeRule.tenantId}

@ -11,9 +11,9 @@
sd.dept_name, sd.dept_name,
(select group_concat(fcn_dict_name_list(r.week_day,'week_day'),' ',substr(r.start_time,1,5),'~',substr(r.end_time,1,5),' (',r.begin_date,'~',r.end_date,')' SEPARATOR ';') (select group_concat(fcn_dict_name_list(r.week_day,'week_day'),' ',substr(r.start_time,1,5),'~',substr(r.end_time,1,5),' (',r.begin_date,'~',r.end_date,')' SEPARATOR ';')
from sc_cla_time_rule r from sc_cla_time_rule r
where a.cla_id=r.cla_id where r.cla_id=a.cla_id
and r.rule_type='1' and r.rule_type='1'
and repeat_type in ('1','3') and r.repeat_type in ('1','3')
and (date_format(now(),'%Y-%m-%d') between r.begin_date and r.end_date or date_format(now(),'%Y-%m-%d') <![CDATA[ < ]]> r.begin_date)) as week_day and (date_format(now(),'%Y-%m-%d') between r.begin_date and r.end_date or date_format(now(),'%Y-%m-%d') <![CDATA[ < ]]> r.begin_date)) as week_day
from sc_course_cla a from sc_course_cla a
left join sc_course b on a.course_id=b.course_id left join sc_course b on a.course_id=b.course_id
@ -31,11 +31,6 @@
<if test="reqSearchScCourseCla.departId != null"> <if test="reqSearchScCourseCla.departId != null">
and a.depart_id=#{reqSearchScCourseCla.departId} and a.depart_id=#{reqSearchScCourseCla.departId}
</if> </if>
<if test="reqSearchScCourseCla.deptId == null and reqSearchScCourseCla.userId != null and reqSearchScCourseCla.userId != ''">
and exists(select 1 from sys_user_dept ud
where ud.user_id=#{reqSearchScCourseCla.userId}
and (ud.dept_id=a.depart_id or ud.dept_id=-1))
</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>

@ -16,7 +16,8 @@
a.create_time, a.create_time,
a.sale, a.sale,
a.course_intro, a.course_intro,
a.cla_fee a.cla_fee,
a.tuition_fee
from sc_course a 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_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} where a.delete_flag='0' and a.tenant_id=#{reqSearchScCourse.tenantId}
@ -37,6 +38,7 @@
</if> </if>
order by a.sale desc,a.create_time desc order by a.sale desc,a.create_time desc
</select> </select>
<select id="selectCourseListWithStudentCourse" resultType="com.ruoyi.school.course.domain.resp.course.RespSearchCourse"> <select id="selectCourseListWithStudentCourse" resultType="com.ruoyi.school.course.domain.resp.course.RespSearchCourse">
select a.course_id, select a.course_id,
a.course_name, a.course_name,

Loading…
Cancel
Save