فهرست منبع

Merge remote-tracking branch 'origin/saas' into saas

hgw 3 سال پیش
والد
کامیت
ca5fdab9f8
36فایلهای تغییر یافته به همراه855 افزوده شده و 864 حذف شده
  1. 4 4
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 2 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDeviceDao.java
  3. 22 44
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserDeviceServiceImpl.java
  4. 6 1
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserDeviceMapper.xml
  5. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  6. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganizationDao.java
  7. 66 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Organization.java
  8. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DeductReasonEnum.java
  9. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSchoolTermCourseDetailService.java
  11. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportService.java
  12. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java
  13. 44 35
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  15. 8 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  16. 261 440
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  17. 14 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java
  18. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionItemPlanServiceImpl.java
  19. 119 164
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java
  20. 13 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  21. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportServiceImpl.java
  22. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  23. 27 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  24. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java
  25. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  26. 10 23
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  27. 7 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java
  28. 28 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  29. 38 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  30. 19 3
      mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml
  31. 31 30
      mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  32. 0 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseScheduleTeacherSalaryController.java
  33. 8 8
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  34. 2 4
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  35. 32 10
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  36. 0 12
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

+ 4 - 4
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -81,11 +81,11 @@ public class NewsController extends BaseController {
 			}
 		}
 
-		SysConfig cloudTeacherActiveIds = sysConfigService.findByParamName(SysConfigService.CLOUD_TEACHER_ACTIVE_BANNER_IDS);
+//		SysConfig cloudTeacherActiveIds = sysConfigService.findByParamName(SysConfigService.CLOUD_TEACHER_ACTIVE_BANNER_IDS);
 		List<Integer> excludeIds = new ArrayList<>();
-		if(Objects.nonNull(cloudTeacherActiveIds)&&StringUtils.isNotBlank(cloudTeacherActiveIds.getParanValue())){
-			excludeIds = Arrays.stream(cloudTeacherActiveIds.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
-		}
+//		if(Objects.nonNull(cloudTeacherActiveIds)&&StringUtils.isNotBlank(cloudTeacherActiveIds.getParanValue())){
+//			excludeIds = Arrays.stream(cloudTeacherActiveIds.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
+//		}
 
 		if (user == null || user.getId() == null) {
 			queryInfo.setOrganId(43);

+ 2 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDeviceDao.java

@@ -12,4 +12,6 @@ public interface SysUserDeviceDao extends BaseDAO<Integer, SysUserDevice> {
 	List<SysUserDevice> queryByUserId(@Param("clientId") String clientId, @Param("userId") Integer userId);
 
 	List<SysUserDevice> queryByDeviceNum(@Param("clientId") String clientId, @Param("deviceNum") String deviceNum);
+
+	String getDeviceConfig(@Param("paramName") String paramName, @Param("tenantId") Integer tenantId);
 }

+ 22 - 44
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserDeviceServiceImpl.java

@@ -5,7 +5,7 @@ import com.ym.mec.auth.dal.dao.SysUserDeviceDao;
 import com.ym.mec.auth.service.SysUserDeviceService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.web.WebFeignService;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -21,8 +21,6 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 	
 	@Autowired
 	private SysUserDeviceDao sysUserDeviceDao;
-	@Autowired
-	private WebFeignService webFeignService;
 
 	@Override
 	public BaseDAO<Integer, SysUserDevice> getDAO() {
@@ -41,52 +39,32 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 
 	@Override
 	public boolean bindDevice(String clientId, Integer userId, String deviceNum) {
+		Integer tenantId = TenantContextHolder.getTenantId();
+		String paramName = null;
 		if (StringUtils.equals(clientId, "STUDENT")) {
-			// 检查学生是否绑定了多个设备号
-			List<SysUserDevice> studentDeviceList = queryByUserId(clientId, userId);
-
-			if (studentDeviceList == null) {
-				studentDeviceList = new ArrayList<SysUserDevice>();
-			}
-
-			List<String> deviceList = studentDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
-
-			if (!deviceList.contains(deviceNum)) {
-				if (deviceList.size() >= 5) {
-					throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
-				}
-				SysUserDevice sysUserDevice = new SysUserDevice();
-				sysUserDevice.setUserId(userId);
-				sysUserDevice.setDeviceNum(deviceNum);
-				sysUserDevice.setBindTime(new Date());
-				sysUserDevice.setClientId(clientId);
-				sysUserDeviceDao.insert(sysUserDevice);
-			}
-		} else {
-			if(StringUtils.equals(clientId, "TEACHER")){
-
-			}
-			if(StringUtils.equals(clientId, "SYSTEM")){
-
-			}
-			// 查询设备号是否已存在
-			List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(null, deviceNum);
-
-			if (sysUserDeviceList == null) {
-				sysUserDeviceList = new ArrayList<SysUserDevice>();
-			}
-
-			sysUserDeviceList = sysUserDeviceList.stream().filter(sud -> !StringUtils.equals(sud.getClientId(), "STUDENT")).collect(Collectors.toList());
+			paramName = "student_device_login_num";
+		}else if(StringUtils.equals(clientId, "TEACHER")){
+			paramName = "teacher_device_login_num";
+		}else {
+			paramName = "edu_device_login_num";
+		}
+		String configValue = sysUserDeviceDao.getDeviceConfig(paramName,tenantId);
+		if(StringUtils.isEmpty(configValue)){
+			return true;
+		}
+		// 检查学生是否绑定了多个设备号
+		List<SysUserDevice> studentDeviceList = queryByUserId(clientId, userId);
 
-			if (sysUserDeviceList != null && sysUserDeviceList.size() > 0) {
-				if (sysUserDeviceList.stream().filter(sud -> sud.getUserId().equals(userId)).count() > 0) {
+		if (studentDeviceList == null) {
+			studentDeviceList = new ArrayList<SysUserDevice>();
+		}
 
-					return true;
-				}
+		List<String> deviceList = studentDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
 
-				throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
+		if (!deviceList.contains(deviceNum)) {
+			if (deviceList.size() >= Integer.parseInt(configValue)) {
+				throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
 			}
-
 			SysUserDevice sysUserDevice = new SysUserDevice();
 			sysUserDevice.setUserId(userId);
 			sysUserDevice.setDeviceNum(deviceNum);

+ 6 - 1
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserDeviceMapper.xml

@@ -124,5 +124,10 @@
 			and client_id_ = #{clientId}
 		</if>
 	</select>
-	
+	<select id="getDeviceConfig" resultType="java.lang.String">
+		SELECT CASE WHEN stc.id_ IS NULL THEN sc.paran_value_ ELSE stc.param_value_ END paran_value_ FROM sys_config sc
+		LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND sc.group_ = #{tenantId}
+		WHERE sc.group_ IS NOT NULL AND sc.group_ != '' AND sc.param_name_ = #{paramName}
+	</select>
+
 </mapper>

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -579,4 +579,6 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	List<Integer> getTodayHasCourseTeacherIds();
 
     void deletePreCourse(String musicGroupId);
+
+	void batchUpdateSalary(@Param("courseScheduleTeacherSalaries") List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganizationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
+import sun.jvm.hotspot.opto.HaltNode;
 
 import java.util.List;
 import java.util.Map;
@@ -59,4 +60,5 @@ public interface OrganizationDao extends BaseDAO<Integer, Organization> {
 	List<Organization> findAllOrgans();
 
 	List<Organization> getActivityOrgans();
+
 }

+ 66 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Organization.java

@@ -58,6 +58,72 @@ public class Organization {
 	@ApiModelProperty(value = "子节点列表",required = false)
 	private List<Organization> organizations;
 
+	@ApiModelProperty(value = "分部经理",required = false)
+	private String organManager;
+
+	@ApiModelProperty(value = "乐团主管",required = false)
+	private String educationId;
+
+	@ApiModelProperty(value = "维修技师",required = false)
+	private String repairId;
+
+	@ApiModelProperty(value = "分部经理",required = false)
+	private String organManagerName;
+
+	@ApiModelProperty(value = "乐团主管",required = false)
+	private String educationName;
+
+	@ApiModelProperty(value = "维修技师",required = false)
+	private String repairName;
+
+	public String getOrganManagerName() {
+		return organManagerName;
+	}
+
+	public void setOrganManagerName(String organManagerName) {
+		this.organManagerName = organManagerName;
+	}
+
+	public String getEducationName() {
+		return educationName;
+	}
+
+	public void setEducationName(String educationName) {
+		this.educationName = educationName;
+	}
+
+	public String getRepairName() {
+		return repairName;
+	}
+
+	public void setRepairName(String repairName) {
+		this.repairName = repairName;
+	}
+
+	public String getOrganManager() {
+		return organManager;
+	}
+
+	public void setOrganManager(String organManager) {
+		this.organManager = organManager;
+	}
+
+	public String getEducationId() {
+		return educationId;
+	}
+
+	public void setEducationId(String educationId) {
+		this.educationId = educationId;
+	}
+
+	public String getRepairId() {
+		return repairId;
+	}
+
+	public void setRepairId(String repairId) {
+		this.repairId = repairId;
+	}
+
 	public String getAreaName() {
 		return areaName;
 	}

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/DeductReasonEnum.java

@@ -9,12 +9,14 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum DeductReasonEnum implements BaseEnum<String,DeductReasonEnum> {
     SIGN_IN_TIME_ERR("SIGN_IN_TIME_ERR", "签到时间异常", ""),
     SIGN_OUT_TIME_ERR("SIGN_OUT_TIME_ERR", "签退时间异常", ""),
-    GPS_ERR("GPS_ERR", "位置异常", ""),
+    GPS_ERR_IN("GPS_ERR", "位置异常", ""),
+    GPS_ERR_OUT("GPS_ERR", "位置异常", ""),
     NOT_SETTLEMENT("NOT_SETTLEMENT", "不结算课酬", "特殊老师不结算课酬"),
-    TRAIL("TRAIL", "试用期扣减", "试用期老师课酬按正式老师的80%计算"),
+    TRAIL("TRAIL", "试用期扣减", "试用期老师课酬按系统配置的折扣计算"),
 
     //收入
     SALARY("SALARY", "基本课酬", "课时应发课酬"),
+    SUBSIDY("SUBSIDY", "课程补贴", "课程补贴"),
     COURSE_SUBSIDY("COURSE_SUBSIDY", "课酬调剂", "课时课酬调剂金额");
 
     private String code;

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -206,7 +206,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @date 2020/12/25 0025
      * @return void
      */
-    void salaryMarkNew(Date startDay);
+    void salaryMarkNew(Date startDay,Integer tenantId);
 
     /**
      * @describe 工资奖金标记
@@ -214,7 +214,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @date 2020/12/25 0025
      * @return void
      */
-    void salaryMark();
+//    void salaryMark();
 
     /**
      * @describe 组合工资,使其最接近给定的金额
@@ -235,7 +235,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @return void
      */
     void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
-                                           List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated);
+                                           List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, String attendanceRange, Boolean updated);
 
     /**
      * @describe 计算VIP课教师实际课酬
@@ -246,7 +246,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @return void
      */
     void calVipCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
-                                         List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated);
+                                         List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, String attendanceRange, Boolean updated);
 
     /**
      * @describe 计算网管课教师实际课酬

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSchoolTermCourseDetailService.java

@@ -10,5 +10,5 @@ public interface MusicGroupSchoolTermCourseDetailService extends BaseService<Int
 
     HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
 
-    void musicSchoolTermPush();
+    void musicSchoolTermPush(Integer tenantId);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportService.java

@@ -8,6 +8,6 @@ import java.util.List;
 
 public interface OperatingReportService extends BaseService<Integer, OperatingReport> {
 
-    Boolean statistics();
+    Boolean statistics(Integer tenantId);
 
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java

@@ -41,4 +41,8 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @param id
      */
     Map<Integer, String> getGradeList(Integer id);
+
+    int updateOrgan(Organization organization);
+
+    Long add(Organization organization);
 }

+ 44 - 35
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -20,10 +20,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
     //自动确认收货时间
     String AUTO_AFFIRM_RECEIVE_TIME = "auto_affirm_receive_time";
-    //各声部不购买会员入团资格限制学员数
-    String MEMBER_GROUP_FEE_STUDENT_NUM = "member_group_fee_student_num";
-    //会员团每学期赠送课程分钟数
-    String MEMBER_GROUP_TERM_GIVE_COURSE_TIME = "member_group_term_give_course_time";
     //提醒老师创建新的缴费项目,距离缴费项有效期前{}天
     String PUSH_CREATE_PAYMENT_CALENDER = "push_create_payment_calender";
 
@@ -35,14 +31,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String OFFLINE_ADVANCE_SIGN_IN_LATE_MINUTES = "offline_advance_sign_in_late_minutes";
     //线下课课程结束前指定时间签退为异常
     String OFFLINE_ADVANCE_SIGN_OUT_MINUTES = "offline_advance_sign_out_minutes";
-
-    //线上课课程开始前指定时间打卡为正常签到
-    String ONLINE_ADVANCE_SIGN_IN_MINUTES = "online_advance_sign_in_minutes";
-    //线上课课程开始后指定时间内签到为迟到
-    String ONLINE_ADVANCE_SIGN_IN_LATE_MINUTES = "online_advance_sign_in_late_minutes";
-    //线上课课程结束前指定时间内签退为早退
-    String ONLINE_EARLY_SIGN_OUT_MINUTES = "online_early_sign_out_minutes";
-
     //线下课老师异常签到扣减课酬金额
     String OFFLINE_ERROR_SIGN_IN_CUT_SALARY = "offline_error_sign_in_cut_salary";
     //线下课老师异常签到扣减课酬单位(1、元,2、百分比)
@@ -71,20 +59,34 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String OFFLINE_NO_SIGN_OUT_CUT_SALARY = "offline_no_sign_out_cut_salary";
     //线下课老师异常签退扣减课酬单位(1、元,2、百分比)
     String OFFLINE_NO_SIGN_OUT_CUT_SALARY_UNIT = "offline_no_sign_out_cut_salary_unit";
+    //vip课开课前可点名时间段,开课前{}分钟
+    String ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP = "enable_student_attendance_befor_course_start_time_range_vip";
     //vip课程可更新学生签到状态时间限制,课程结束后{}分钟
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP = "enable_student_attendance_time_range_vip";
+    //如果没有签退,{}分钟后自动发送推送信息
+    String SIGN_OUT_MESSAGE_PUSH_MINUTE = "sign_out_message_push_minute";
+    //乐团课老师课程结束后可正常签退时间范围为课程结束后{}分钟内
+    String ADVANCE_SIGN_OUT_MINUTES = "advance_sign_out_minutes";
 
+    //线上连堂课间隔时间
+    String ONLINE_CONTINUE_COURSE_TIME = "online_continue_course_time";
+    //线上课课程开始前指定时间打卡为正常签到
+    String ONLINE_ADVANCE_SIGN_IN_MINUTES = "online_advance_sign_in_minutes";
+    //线上课课程开始后指定时间内签到为迟到
+    String ONLINE_ADVANCE_SIGN_IN_LATE_MINUTES = "online_advance_sign_in_late_minutes";
+    //线上课课程结束前指定时间内签退为早退
+    String ONLINE_EARLY_SIGN_OUT_MINUTES = "online_early_sign_out_minutes";
     //线上课老师迟到扣减课酬金额
     String ONLINE_LATE_CUT_SALARY = "online_late_cut_salary";
     //线上课老师迟到扣减课酬单位(1、元,2、百分比)
     String ONLINE_LATE_CUT_SALARY_UNIT = "online_late_cut_salary_unit";
-    //线下课老师旷课扣减课酬金额
+    //线课老师旷课扣减课酬金额
     String ONLINE_LEVEL_SIGN_IN_CUT_SALARY = "online_level_sign_in_cut_salary";
-    //线下课老师旷课扣减课酬单位(1、元,2、百分比)
+    //线课老师旷课扣减课酬单位(1、元,2、百分比)
     String ONLINE_LEVEL_SIGN_IN_CUT_SALARY_UNIT = "online_level_sign_in_cut_salary_unit";
-    //线课老师旷课扣减课酬金额
+    //线课老师旷课扣减课酬金额
     String ONLINE_NO_SIGN_IN_CUT_SALARY = "online_no_sign_in_cut_salary";
-    //线课老师旷课扣减课酬单位(1、元,2、百分比)
+    //线课老师旷课扣减课酬单位(1、元,2、百分比)
     String ONLINE_NO_SIGN_IN_CUT_SALARY_UNIT = "online_no_sign_in_cut_salary_unit";
     //线上课老师异常签退扣减课酬金额
     String ONLINE_ERROR_SIGN_OUT_CUT_SALARY = "online_error_sign_out_cut_salary";
@@ -123,8 +125,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String LABOUR_TEACHER_SALARY = "labour_teacher_salary";
     //劳务考勤申诉时间限制方式(1、固定时间、2、固定日期)
     String LABOUR_TEACHER_SALARY_TYPE = "labour_teacher_salary_type";
-    //线上连堂课间隔时间
-    String ONLINE_CONTINUE_COURSE_TIME = "online_continue_course_time";
     //线下连堂课间隔时间
     String OFFLINE_CONTINUE_COURSE_MINUTES = "offline_continue_course_minutes";
     //陪练课可选老师的分部
@@ -151,7 +151,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String REFUND_PERIOD = "refund_period";
 
     //服务异常提醒
-
     //学员当月请假指定次数及以上提醒异常请假
     String STUDENT_ERROR_LEAVE_NUM = "student_error_leave_num";
     //上课时间在指定时间段内提醒时间安排异常
@@ -163,6 +162,31 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String COURSE_BEFORE_BUFFER_TIME = "course_before_buffer_time";
     //对外课程课后缓冲时间{}分钟
     String COURSE_AFTER_BUFFER_TIME = "course_after_buffer_time";
+    //全职资源公摊金额
+    String FULL_JOB_FEE = "full_job_fee";
+
+    //乐保
+    //是否开启乐保
+    String MUSICAL_REPAIR_OPEN_FLAG = "musical_repair_open_flag";
+    //一年期乐保零售价
+    String ONE_YEAR_MUSICAL_REPAIR_AMOUNT = "one_year_musical_repair_amount";
+    //一年期乐保原价
+    String ONE_YEAR_MUSICAL_REPAIR_ORIGINAL_AMOUNT = "one_year_musical_repair_original_amount";
+
+
+    //乐团配置
+    //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
+    String REMIND_COURSE_TIME = "remind_course_time";
+    //会员结束前15天自动创建乐团续费(默认提前15天)
+    String AUTO_CREATE_MEMBER_RENEW = "auto_create_member_renew";
+    //会员团每学期赠送课程分钟数
+    String MEMBER_GROUP_TERM_GIVE_COURSE_TIME = "member_group_term_give_course_time";
+    //各声部不购买会员入团资格限制学员数
+    String MEMBER_GROUP_FEE_STUDENT_NUM = "member_group_fee_student_num";
+    //考级活动开始时间
+    String DEGREE_ACTIVITY_START_TIME = "degree_activity_start_time";
+    //考级活动开始时间
+    String DEGREE_ACTIVITY_END_TIME = "degree_activity_end_time";
 
     public static final String BASE_API_URL = "base_api_url";
 
@@ -181,8 +205,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String OFFLINE_SIGN_IN_EARLY_FORWARD_TIME = "offline_sign_in_early_forward_time";
 
-    String ADVANCE_SIGN_OUT_MINUTES = "advance_sign_out_minutes";
-
     /**
      * 最早请假提前时间
      */
@@ -204,12 +226,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     public static final String HIGH_GRADIENT_SETTLEMENT_RULE = "high_gradient_settlement_rule";
 
-    /**
-     * 如果没有签退,{}分钟后自动发送推送信息
-     */
-    public static final String SIGN_OUT_MESSAGE_PUSH_MINUTE = "sign_out_message_push_minute";
-
-    String USER_DEFAULT_HEAD_URL = "user_default_head_url";
     String STUDENT_APPLY_URL = "student_apply_url";
     String SERVER_PHONE = "server_phone";
 
@@ -225,12 +241,10 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String ENABLE_SIGN_OUT_TIME_RANGE = "enable_sign_out_time_range";
 
     /**
-     * 可更新学生签到状态时间限制,课程结束后{}分钟
+     * 可更新学生签到状态时间限制,课程结束后{}分钟(和前端核实过,乐团的已弃用)
      */
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
 
-    String ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP = "enable_student_attendance_befor_course_start_time_range_vip";
-
     /**
      * @describe 陪练课课酬
      */
@@ -320,17 +334,12 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
 
-    //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
-    String REMIND_COURSE_TIME = "remind_course_time";
-
     //会员结束前15天提醒学员续费(默认提前15天)
     String PUSH_MEMBER_RENEW = "push_member_renew";
 
     //试用会员结束前3天提醒学员续费(默认提前3天)
     String EXPERIENCE_PUSH_MEMBER_RENEW = "experience_push_member_renew";
 
-    //会员结束前15天自动创建乐团续费(默认提前15天)
-    String AUTO_CREATE_MEMBER_RENEW = "auto_create_member_renew";
 
     //会员结束前15天提醒学员续费(默认提前5天)
     String PUSH_MEMBER_RENEW_AGAIN = "push_member_renew_again";

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -70,7 +70,7 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * 推送未签退消息提醒
 	 * @return
 	 */
-	boolean pushNoSignOutMessage();
+	boolean pushNoSignOutMessage(Integer tenantId);
 
 	/**
 	 * @describe 根据日期获取部门下异常签到的课程记录

+ 8 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -217,10 +217,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
-        sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE,user.getTenantId());
-        SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
+        String sysConfigVip = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP,user.getTenantId());
         currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
-        currentCourseDetail.setEnableStudentAttendanceTimeRangeVip(sysConfigVip.getParanValue(Integer.class));
+        currentCourseDetail.setEnableStudentAttendanceTimeRangeVip(StringUtils.isEmpty(sysConfigVip)?0:Integer.parseInt(sysConfigVip));
         int studentNum = studentAttendanceDao.countByCourseSchedule(courseID);
         if (Objects.nonNull(studentNum)) {
             currentCourseDetail.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
@@ -1051,9 +1050,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             throw new BizException("用户机构信息异常");
         }
         Date now = new Date();
-        SysConfig studentAttendanceAfterTimeConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
-		SysConfig courseBeforeBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_BEFORE_BUFFER_TIME);
-		SysConfig courseAfterBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_AFTER_BUFFER_TIME);
+		String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP, user.getTenantId());
+		String courseBeforeBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME, user.getTenantId());
+		String courseAfterBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, user.getTenantId());
         Map<String, Object> result = new HashMap<>(3);
         result.put("vipAppealDaysRange", sysConfigDao.findConfigValue(SysConfigService.VIP_APPEAL_DAYS_RANGE));
 		String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS, user.getTenantId());
@@ -1063,9 +1062,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		result.put("advanceLeaveHours", advanceLeaveHours);
         result.put("earliestTimeForLeave", Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.EARLIEST_TIME_FOR_LEAVE)));
-        result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
-		result.put("courseBeforeBufferTime", courseBeforeBufferTime.getParanValue(Integer.class));
-		result.put("courseAfterBufferTime", courseAfterBufferTime.getParanValue(Integer.class));
+        result.put("joinRoomBeforeTime",StringUtils.isEmpty(configValue)?0:Integer.parseInt(configValue));
+		result.put("courseBeforeBufferTime", StringUtils.isEmpty(courseBeforeBufferTime)?5:Integer.parseInt(courseBeforeBufferTime));
+		result.put("courseAfterBufferTime", StringUtils.isEmpty(courseAfterBufferTime)?10:Integer.parseInt(courseAfterBufferTime));
 //		List<Integer> quitClassGroupIds=classGroupStudentMapperDao.findClassGroupIdByUserAndCourseDateAndStatus(user.getId(),classDate, ClassGroupStudentStatusEnum.QUIT.getCode());
         List<CourseScheduleDto> studentCourseSchedulesWithDate = courseScheduleDao.getStudentCourseSchedulesWithDate(classDate, user.getId().longValue(), null);
         List<Long> courseScheduleIds = studentCourseSchedulesWithDate.stream()

+ 261 - 440
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -246,9 +246,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         //试用期课酬规则
         String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
-        Integer probationTeacherSalary = 100;
+        double probationTeacherSalary = 100;
         if(StringUtils.isNotEmpty(configValue2)){
-            probationTeacherSalary = Integer.parseInt(configValue2);
+            probationTeacherSalary = Double.parseDouble(configValue2);
         }
 
         for (int i = 0; i < someDayAgoTeacherCourseSalaryNoSettlement.size(); i++) {
@@ -326,7 +326,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             courseScheduleTeacherSalary.setBelongToDaya(false);
         }
         if(someDayAgoTeacherCourseSalaryNoSettlement != null && someDayAgoTeacherCourseSalaryNoSettlement.size() > 0){
-            courseScheduleTeacherSalaryDao.batchUpdate(someDayAgoTeacherCourseSalaryNoSettlement);
+            courseScheduleTeacherSalaryDao.batchUpdateSalary(someDayAgoTeacherCourseSalaryNoSettlement);
         }
     }
 
@@ -354,9 +354,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         //试用期课酬规则
         String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
-        Integer probationTeacherSalary = 100;
+        double probationTeacherSalary = 100;
         if(StringUtils.isNotEmpty(configValue2)){
-            probationTeacherSalary = Integer.parseInt(configValue2);
+            probationTeacherSalary = Double.parseDouble(configValue2);
         }
         //获取未结算课程编号列表
         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
@@ -460,17 +460,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             courseScheduleTeacherSalary.setBelongToDaya(false);
         }
         if(someDayAgoTeacherCourseSalaryNoSettlement.size() > 0){
-            courseScheduleTeacherSalaryDao.batchUpdate(someDayAgoTeacherCourseSalaryNoSettlement);
+            courseScheduleTeacherSalaryDao.batchUpdateSalary(someDayAgoTeacherCourseSalaryNoSettlement);
         }
     }
 
     Boolean isTrail(Teacher teacher,Date classDate){
         //判断课程是否在试用期内
         boolean trail = false;
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&classDate.compareTo(teacher.getEntryDate())>=0){
+        if(Objects.nonNull(teacher) && Objects.nonNull(teacher.getEntryDate())
+                && classDate.compareTo(teacher.getEntryDate()) >= 0){
             trail = true;
         }
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&classDate.compareTo(teacher.getFormalStaffDate())>=0){
+        if(Objects.nonNull(teacher) && Objects.nonNull(teacher.getFormalStaffDate())
+                && classDate.compareTo(teacher.getFormalStaffDate())>=0){
             trail = false;
         }
         return trail;
@@ -636,7 +638,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         return getCutAmount(cutSalary,cutSalaryUnit,salary);
     }
 
-    public Boolean getSignRange(String schoolLongitudeLatitude,String longitudeLatitude,double attendanceRange){
+    public Boolean getSignRange(String schoolLongitudeLatitude,String longitudeLatitude,String gpsRange){
+        if(StringUtils.isEmpty(gpsRange)){
+            return true;
+        }
+        double attendanceRange = Double.parseDouble(gpsRange);
         Boolean signRange = false;
         if(Objects.nonNull(schoolLongitudeLatitude) && StringUtils.isNotBlank(longitudeLatitude)){
             double signInDistance = MapUtil.distance(longitudeLatitude,schoolLongitudeLatitude);
@@ -654,7 +660,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if(cutSalaryUnit.equals("1")){
             return new BigDecimal(cutSalary);
         }else {
-            return teacherSalary.multiply(new BigDecimal(Integer.parseInt(cutSalary)/100));
+            return teacherSalary.multiply(new BigDecimal(cutSalary).divide(new BigDecimal(100)));
         }
     }
 
@@ -689,16 +695,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 .collect(Collectors.toMap(CourseSchedule::getId, courseSchedule -> courseSchedule));
 
         //定位范围
-        String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
-        double attendanceRange = 0;
-        if(StringUtils.isNotEmpty(gpsRange)){
-            attendanceRange = Double.valueOf(gpsRange);
-        }
+        String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
           //试用期课酬规则
         String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
-        Integer probationTeacherSalary = 100;
+        double probationTeacherSalary = 100;
         if(StringUtils.isNotEmpty(configValue2)){
-            probationTeacherSalary = Integer.parseInt(configValue2);
+            probationTeacherSalary = Double.parseDouble(configValue2);
         }
 
         //教师签到记录
@@ -783,7 +785,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                         signInRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignInLongitudeLatitude(),attendanceRange);
                     }
                     Boolean signOutRange = false;
-                    if(teacherAttendance != null || StringUtils.isNotEmpty(teacherAttendance.getSignOutLongitudeLatitude())){
+                    if(teacherAttendance != null && StringUtils.isNotEmpty(teacherAttendance.getSignOutLongitudeLatitude())){
                         signOutRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignOutLongitudeLatitude(),attendanceRange);
                     }
                     if(!signInRange){
@@ -819,7 +821,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             courseScheduleTeacherSalary.setSettlementTime(now);
         }
         if(courseScheduleTeacherSalaries != null && courseScheduleTeacherSalaries.size() > 0){
-            courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
+            courseScheduleTeacherSalaryDao.batchUpdateSalary(courseScheduleTeacherSalaries);
         }
     }
 
@@ -1457,7 +1459,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
-    public void salaryMarkNew(Date startDay) {
+    public void salaryMarkNew(Date startDay,Integer tenantId) {
         Date now = new Date();
         Date date = DateUtil.addMonths(now, -1);
         if(Objects.nonNull(startDay)){
@@ -1471,10 +1473,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if(CollectionUtils.isEmpty(salaries)){
             return;
         }
-        SysConfig dayaBaseSalaryAmountConfig = sysConfigService.findByParamName(SysConfigService.DAYA_BASE_SALARY_AMOUNT);
+        String dayaBaseSalaryAmountConfig = sysTenantConfigService.getTenantConfigValue(SysConfigService.DAYA_BASE_SALARY_AMOUNT,tenantId);
         BigDecimal dayaBaseSalaryAmount = new BigDecimal(4000);
-        if(Objects.nonNull(dayaBaseSalaryAmountConfig)&&StringUtils.isNotBlank(dayaBaseSalaryAmountConfig.getParanValue())){
-            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig.getParanValue());
+        if(StringUtils.isEmpty(dayaBaseSalaryAmountConfig)){
+            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig);
         }
 
         Map<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMap = salaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getUserId));
@@ -1504,52 +1506,52 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void salaryMark() {
-        Date now = new Date();
-        Date date = DateUtil.addMonths(now, -1);
-        String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
-        String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
-
-        int isSalaryGroupTypes = redisTemplate.opsForSet().size(CourseScheduleTeacherSalaryService.TASK_KEY).intValue();
-        if(isSalaryGroupTypes<3){
-            return;
-        }
-        redisTemplate.delete(CourseScheduleTeacherSalaryService.TASK_KEY);
-        List<CourseScheduleTeacherSalary> salaries = courseScheduleTeacherSalaryDao.getIsSalaryWithDate(startDate, endDate);
-        if(CollectionUtils.isEmpty(salaries)){
-            return;
-        }
-        SysConfig dayaBaseSalaryAmountConfig = sysConfigService.findByParamName(SysConfigService.DAYA_BASE_SALARY_AMOUNT);
-        BigDecimal dayaBaseSalaryAmount = new BigDecimal(4000);
-        if(Objects.nonNull(dayaBaseSalaryAmountConfig)&&StringUtils.isNotBlank(dayaBaseSalaryAmountConfig.getParanValue())){
-            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig.getParanValue());
-        }
-
-        Map<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMap = salaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getUserId));
-        List<CourseScheduleTeacherSalary> updateRecords = new ArrayList<>();
-        for (Map.Entry<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMapEntry : teacherSalariesMap.entrySet()) {
-            List<CourseScheduleTeacherSalary> teacherSalaries = teacherSalariesMapEntry.getValue();
-            List<BigDecimal> amounts = teacherSalaries.stream().map(CourseScheduleTeacherSalary::getActualSalary).collect(Collectors.toList());
-            List<BigDecimal> resultAmounts = salaryComposition(amounts, dayaBaseSalaryAmount);
-            for (BigDecimal resultAmount : resultAmounts) {
-                Iterator<CourseScheduleTeacherSalary> iterator = teacherSalaries.iterator();
-                while (iterator.hasNext()){
-                    CourseScheduleTeacherSalary teacherSalary = iterator.next();
-                    if(teacherSalary.getActualSalary().compareTo(resultAmount)==0){
-                        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-                        courseScheduleTeacherSalary.setId(teacherSalary.getId());
-                        courseScheduleTeacherSalary.setBelongToDaya(true);
-                        updateRecords.add(courseScheduleTeacherSalary);
-                        iterator.remove();
-                        break;
-                    }
-                }
-            }
-        }
-        courseScheduleTeacherSalaryDao.batchUpdate(updateRecords);
-    }
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public void salaryMark() {
+//        Date now = new Date();
+//        Date date = DateUtil.addMonths(now, -1);
+//        String startDate = DateUtil.format(DateUtil.getFirstDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
+//        String endDate = DateUtil.format(DateUtil.getLastDayOfMonth(date),DateUtil.DEFAULT_PATTERN);
+//
+//        int isSalaryGroupTypes = redisTemplate.opsForSet().size(CourseScheduleTeacherSalaryService.TASK_KEY).intValue();
+//        if(isSalaryGroupTypes<3){
+//            return;
+//        }
+//        redisTemplate.delete(CourseScheduleTeacherSalaryService.TASK_KEY);
+//        List<CourseScheduleTeacherSalary> salaries = courseScheduleTeacherSalaryDao.getIsSalaryWithDate(startDate, endDate);
+//        if(CollectionUtils.isEmpty(salaries)){
+//            return;
+//        }
+//        String dayaBaseSalaryAmountConfig = sysTenantConfigService.getTenantConfigValue(SysConfigService.DAYA_BASE_SALARY_AMOUNT,tenantId);
+//        BigDecimal dayaBaseSalaryAmount = new BigDecimal(4000);
+//        if(StringUtils.isEmpty(dayaBaseSalaryAmountConfig)){
+//            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig);
+//        }
+//
+//        Map<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMap = salaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getUserId));
+//        List<CourseScheduleTeacherSalary> updateRecords = new ArrayList<>();
+//        for (Map.Entry<Integer, List<CourseScheduleTeacherSalary>> teacherSalariesMapEntry : teacherSalariesMap.entrySet()) {
+//            List<CourseScheduleTeacherSalary> teacherSalaries = teacherSalariesMapEntry.getValue();
+//            List<BigDecimal> amounts = teacherSalaries.stream().map(CourseScheduleTeacherSalary::getActualSalary).collect(Collectors.toList());
+//            List<BigDecimal> resultAmounts = salaryComposition(amounts, dayaBaseSalaryAmount);
+//            for (BigDecimal resultAmount : resultAmounts) {
+//                Iterator<CourseScheduleTeacherSalary> iterator = teacherSalaries.iterator();
+//                while (iterator.hasNext()){
+//                    CourseScheduleTeacherSalary teacherSalary = iterator.next();
+//                    if(teacherSalary.getActualSalary().compareTo(resultAmount)==0){
+//                        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+//                        courseScheduleTeacherSalary.setId(teacherSalary.getId());
+//                        courseScheduleTeacherSalary.setBelongToDaya(true);
+//                        updateRecords.add(courseScheduleTeacherSalary);
+//                        iterator.remove();
+//                        break;
+//                    }
+//                }
+//            }
+//        }
+//        courseScheduleTeacherSalaryDao.batchUpdate(updateRecords);
+//    }
 
     @Override
     public List<BigDecimal> salaryComposition(List<BigDecimal> salaries, BigDecimal targetSalary) {
@@ -1596,8 +1598,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
     @Override
     public void calMusicCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
-                                                  List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated) {
+                                                  List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, String attendanceRange, Boolean updated) {
+
 
+        //教师课酬
         if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
             //不结算课酬
             if(updated){
@@ -1609,223 +1613,100 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             return;
         }
 
-        BigDecimal teacherSalary = courseScheduleTeacherSalary.getExpectSalary();
-
-        if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
-            List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
-
-            teacherSalary = teacherSalary.add(courseScheduleTeacherSalary.getSubsidy());
-            if(BigDecimal.ZERO.compareTo(teacherSalary)>0){
-                teacherSalary = new BigDecimal(0);
-            }
-
-            BigDecimal expectTeacherSalary = teacherSalary;
-
-            //判断课程是否在试用期内
-            boolean trail = false;
-
-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){
-                trail = true;
-            }
-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
-                trail = false;
-            }
-
-            //如果上课日期在试用期内按80%结算
-            if(trail){
-                teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, expectTeacherSalary.subtract(teacherSalary)));
-            }
-
-            //扣除费用
-            BigDecimal deductCost = new BigDecimal(0);
-
-            TeacherAttendance teacherAttendance = teacherAttendances.get(0);
-            if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
-                //未签到扣除全部课酬
-                deductCost = deductCost.add(teacherSalary.abs());
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
-            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-                //异常签到
-                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
-                float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
-                if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
-                    //课程开始前1分钟至开始后3分钟进入教室
-                    deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
-                }else if(signCourseTimeBetween<=-3){
-                    //课程开始后3分钟后进入教室
-                    deductCost = deductCost.add(teacherSalary.abs());
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
-                }
-            }
-
-            if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
-                //未签退扣除一半课酬
-                deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
-            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
-                //异常签退
-                int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
-                float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
-
-                if(signOutCourseTimeBetween>3){
-                    //课程开始前20分钟至开始后3分钟退出教室
-                    deductCost = deductCost.add(teacherSalary.abs());
-//                    deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
-                }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
-                    //课程结束前3分钟后至课程结束前退出教室
-                    deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-//                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
-                }
-            }
-
-            BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
-
-            //更新教师结算信息
-            courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
-            courseScheduleTeacherSalary.setDeductReasons(deductReasons);
-        }else{
-            List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
+        List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 
+        BigDecimal teacherSalary = courseScheduleTeacherSalary.getExpectSalary();
+        if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
+            courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
+        }
+        if(BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getSubsidy()) != 0){
             teacherSalary = teacherSalary.add(courseScheduleTeacherSalary.getSubsidy());
-            if(BigDecimal.ZERO.compareTo(teacherSalary)>0){
-                teacherSalary = new BigDecimal(0);
-            }
-
-            BigDecimal expectTeacherSalary = teacherSalary;
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SUBSIDY, courseScheduleTeacherSalary.getSubsidy()));
+        }
+        if(BigDecimal.ZERO.compareTo(teacherSalary) > 0){
+            teacherSalary = new BigDecimal(0);
+        }
 
-            //判断课程是否在试用期内
-            boolean trail = false;
+        Integer tenantId = TenantContextHolder.getTenantId();
 
-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){
-                trail = true;
-            }
-            if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
-                trail = false;
-            }
+        //试用期课酬规则
+        String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
+        Integer probationTeacherSalary = 100;
+        if(StringUtils.isNotEmpty(configValue2)){
+            probationTeacherSalary = Integer.parseInt(configValue2);
+        }
+        //如果上课日期在试用期内按80%结算
+        BigDecimal expectTeacherSalary = teacherSalary;
+        if(isTrail(teacher,courseSchedule.getClassDate())){
+            teacherSalary = teacherSalary.multiply(new BigDecimal(probationTeacherSalary / 100));
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, expectTeacherSalary.subtract(teacherSalary)));
+        }
 
-            //如果上课日期在试用期内按80%结算
-            if(trail){
-                teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
-//                deductReasons.add("未转正");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, expectTeacherSalary.subtract(teacherSalary)));
+        //扣除费用
+        BigDecimal deductCost = BigDecimal.ZERO;
+        //获取签到状态
+        TeachModeEnum teachMode = courseScheduleTeacherSalary.getCourseSchedule().getTeachMode();
+        TeacherAttendance teacherAttendance = null;
+        if(teacherAttendances != null && teacherAttendances.size() > 0){
+            teacherAttendance = teacherAttendances.get(0);
+        }
+        if(teacherAttendance == null){
+            teacherAttendance = new TeacherAttendance();
+        }
+        if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+            SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+            BigDecimal signInDeductCost = getSignInDeduce(teacherSalary, signInStatus, teachMode,tenantId);
+            if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                deductCost = deductCost.add(signInDeductCost);
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.subtract(signInDeductCost)));
             }
-
-            //扣除费用
-            BigDecimal deductCost = BigDecimal.ZERO;
-
-            TeacherAttendance teacherAttendance = null;
-            if(!CollectionUtils.isEmpty(teacherAttendances)){
-                teacherAttendance = teacherAttendances.get(0);
+        }
+        if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+            SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+            BigDecimal signOutDeductCost = getSignInDeduce(teacherSalary, signOutStatus, teachMode,tenantId);
+            if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                deductCost = deductCost.add(signOutDeductCost);
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.subtract(signOutDeductCost)));
             }
+        }
 
-            boolean signInInRange = false;
-            boolean signOutInRange = false;
-            if(Objects.nonNull(school)&&Objects.nonNull(school.getLongitudeLatitude())
-                    &&Objects.nonNull(teacherAttendance)
-                    &&StringUtils.isNotBlank(teacherAttendance.getSignInLongitudeLatitude())
-                    &&StringUtils.isNotBlank(teacherAttendance.getSignOutLongitudeLatitude())){
-                double signInDistance = MapUtil.distance(teacherAttendance.getSignInLongitudeLatitude(),
-                        school.getLongitudeLatitude());
-                if (signInDistance <= attendanceRange) {
-                    signInInRange = true;
+        //经纬度是否正常
+        if(teachMode == TeachModeEnum.OFFLINE){
+            if(school != null){
+                Boolean signInRange = false;
+                if(teacherAttendance != null && StringUtils.isNotEmpty(teacherAttendance.getSignInLongitudeLatitude())){
+                    signInRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignInLongitudeLatitude(),attendanceRange);
                 }
-                double signOutDistance = MapUtil.distance(teacherAttendance.getSignOutLongitudeLatitude(),
-                        school.getLongitudeLatitude());
-                if (signOutDistance <= attendanceRange) {
-                    signOutInRange = true;
-                }
-            }
-
-            BigDecimal gpsDeductAmount = new BigDecimal("0");
-
-            if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
-                //无签到记录扣除全部课酬
-                deductCost = deductCost.add(teacherSalary.abs());
-//                deductReasons.add("未签到扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
-            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
-                float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
-                if(signCourseTimeBetween>0&&signCourseTimeBetween<=20){
-                    //未提前20分钟打卡扣除50元
-                    deductCost = deductCost.add(new BigDecimal(50));
-//                    deductReasons.add("未提前20分钟打卡扣除50元");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, new BigDecimal(50)));
-                }else if(signCourseTimeBetween<=0&&signCourseTimeBetween>-30){
-                    //迟到30分钟内扣除一半课酬
-                    deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)).abs());
-//                    deductReasons.add("迟到30分钟内扣除一半课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.divide(new BigDecimal(2)).abs()));
-                }else if(signCourseTimeBetween<=-30){
-                    //迟到30分钟及以上扣除全部课酬
-                    deductCost = deductCost.add(teacherSalary.abs());
-//                    deductReasons.add("迟到30分钟及以上扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.abs()));
+                Boolean signOutRange = false;
+                if(teacherAttendance != null || StringUtils.isNotEmpty(teacherAttendance.getSignOutLongitudeLatitude())){
+                    signOutRange = getSignRange(school.getLongitudeLatitude(),teacherAttendance.getSignOutLongitudeLatitude(),attendanceRange);
                 }
-                if(!signInInRange){
-                    //签到经纬度异常扣除50
-                    deductCost = deductCost.add(new BigDecimal(50));
-//                    deductReasons.add("签到经纬度异常扣除50");
-                    gpsDeductAmount =  new BigDecimal(50);
+                if(!signInRange){
+                    String c = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY, tenantId);
+                    String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
+                    BigDecimal signInGpsCutAmount = getCutAmount(c, c1, teacherSalary);
+                    if(signInGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
+                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, teacherSalary.subtract(signInGpsCutAmount)));
+                    }
                 }
-            }else{
-                signInInRange = true;
-            }
-
-            if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignOutStatus())){
-                //未签退扣除全部课酬
-                deductCost = deductCost.add(teacherSalary.abs());
-//                deductReasons.add("未签退扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
-            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
-                int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
-                float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float) 60;
-                if(signOutCourseTimeBetween>3){
-                    //早退
-                    deductCost = deductCost.add(teacherSalary.abs());
-//                    deductReasons.add("早退扣除全部课酬");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.abs()));
-                }else if((signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0)||signOutCourseTimeBetween>=3600){
-                    //异常签退,扣除50元
-                    deductCost = deductCost.add(new BigDecimal(50));
-//                    deductReasons.add("异常签退,扣除50元");
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, new BigDecimal(50)));
-                }else{
-                    //签退经纬度异常,扣除50元
-                    deductCost = deductCost.add(new BigDecimal(50));
-//                    deductReasons.add("签退经纬度异常,扣除50元");
-                    gpsDeductAmount =  new BigDecimal(50);
+                if(!signOutRange){
+                    String c = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY, tenantId);
+                    String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
+                    BigDecimal signOutGpsCutAmount = getCutAmount(c, c1, teacherSalary);
+                    if(signOutGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
+                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, teacherSalary.subtract(signOutGpsCutAmount)));
+                    }
                 }
-            }else{
-                signOutInRange = true;
-            }
-
-            if(!signInInRange&&!signOutInRange){
-                //签到签退GPS定位在指定距离外
-                deductCost = deductCost.add(teacherSalary.abs());
-//                deductReasons.add("签到签退GPS定位在指定距离外,扣除全部课酬");
-                gpsDeductAmount = teacherSalary.abs();
             }
-
-            if(BigDecimal.ZERO.compareTo(gpsDeductAmount)<0){
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR, gpsDeductAmount));
-            }
-
-            BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
-
-            //更新教师结算信息
-            courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
-            courseScheduleTeacherSalary.setDeductReasons(deductReasons);
         }
+        BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
+        courseScheduleTeacherSalary.setDeductReasons(deductReasons);
+        courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
     }
 
     @Override
     public void calVipCourseTeacherActualSalary(CourseSchedule courseSchedule, CourseScheduleTeacherSalary courseScheduleTeacherSalary,
-                                                List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, double attendanceRange, Boolean updated) {
+                                                List<TeacherAttendance> teacherAttendances, School school, Teacher teacher, String attendanceRange, Boolean updated) {
         List<TeacherSalaryDeductReasonDto> deductReasons = new ArrayList<>();
 
         if(StringUtils.isNotBlank(courseScheduleTeacherSalary.getDeductionReason())&&"不结算课酬".equals(courseScheduleTeacherSalary.getDeductionReason())){
@@ -1837,97 +1718,81 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
             return;
         }
-        
-        BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
 
-        expectSalary = expectSalary.add(courseScheduleTeacherSalary.getSubsidy());
-        if(BigDecimal.ZERO.compareTo(expectSalary)>0){
+        BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
+        if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
+            courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
+        }
+        if(BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getSubsidy()) != 0){
+            expectSalary = expectSalary.add(courseScheduleTeacherSalary.getSubsidy());
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SUBSIDY, courseScheduleTeacherSalary.getSubsidy()));
+        }
+        if(BigDecimal.ZERO.compareTo(expectSalary) > 0){
             expectSalary = new BigDecimal(0);
         }
 
-        BigDecimal expectTeacherSalary = expectSalary;
-
-        //判断课程是否在试用期内
-        boolean trail = false;
+        Integer tenantId = TenantContextHolder.getTenantId();
 
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){
-            trail = true;
-        }
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
-            trail = false;
+        //试用期课酬规则
+        String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
+        Integer probationTeacherSalary = 100;
+        if(StringUtils.isNotEmpty(configValue2)){
+            probationTeacherSalary = Integer.parseInt(configValue2);
         }
-
         //如果上课日期在试用期内按80%结算
-        if(trail){
-            expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
-//            deductReasons.add("未转正");
+        BigDecimal expectTeacherSalary = expectSalary;
+        if(isTrail(teacher,courseSchedule.getClassDate())){
+            expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary / 100));
             deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, expectTeacherSalary.subtract(expectSalary)));
         }
-
         //扣除费用
-        BigDecimal deductCost = new BigDecimal(0);
-        BigDecimal gpsDeductAmount = new BigDecimal("0");
-
-        if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignInStatus())){
-            //未签到扣除全部课酬
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("未签到扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
-        }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
-            //异常签到
-            int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignInTime(), courseSchedule.getStartClassTime());
-            float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
-            if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
-                //课程开始前1分钟至开始后3分钟进入教室
-                deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
-//                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
-            }else if(signCourseTimeBetween<=-3){
-                //课程开始后3分钟后进入教室
-                deductCost = deductCost.add(expectSalary.abs());
-//                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
-            }
-        }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
-            gpsDeductAmount = expectSalary.abs();
-        }
-
-        if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendances.get(0).getSignOutStatus())){
-            //未签退扣除全部课酬
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("未签退扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
-        }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignOutStatus())&&TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())){
-            //异常签退
-            int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendances.get(0).getSignOutTime(), courseSchedule.getEndClassTime());
-            float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
-
-            if(signOutCourseTimeBetween>3){
-                //课程开始前20分钟至开始后3分钟退出教室
-                deductCost = deductCost.add(expectSalary.abs());
-//                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
-            }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
-                //课程结束前3分钟后至课程结束前退出教室
-                deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
-//                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
-            }
-        }else if(YesOrNoEnum.NO.equals(teacherAttendances.get(0).getSignInStatus())&&TeachModeEnum.OFFLINE.equals(courseSchedule.getTeachMode())){
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
-            gpsDeductAmount = expectSalary.abs();
-        }
-
-        if(BigDecimal.ZERO.compareTo(gpsDeductAmount)<0){
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR, gpsDeductAmount));
+        BigDecimal deductCost = BigDecimal.ZERO;
+        TeachModeEnum teachMode = courseSchedule.getTeachMode();
+        if(TeachModeEnum.OFFLINE == teachMode){
+            if(true){
+                String c = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY, tenantId);
+                String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
+                BigDecimal signInGpsCutAmount = getCutAmount(c, c1, expectSalary);
+                if(signInGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, expectSalary.subtract(signInGpsCutAmount)));
+                }
+            }
+            if(true){
+                String c = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY, tenantId);
+                String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
+                BigDecimal signOutGpsCutAmount = getCutAmount(c, c1, expectSalary);
+                if(signOutGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, expectSalary.subtract(signOutGpsCutAmount)));
+                }
+            }
+        }else {
+            TeacherAttendance teacherAttendance = null;
+            if(teacherAttendances != null && teacherAttendances.size() > 0){
+                teacherAttendance = teacherAttendances.get(0);
+            }
+            if(teacherAttendance == null){
+                teacherAttendance = new TeacherAttendance();
+            }
+            if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+                SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+                BigDecimal signInDeductCost = getSignInDeduce(expectSalary, signInStatus, teachMode,tenantId);
+                if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                    deductCost = deductCost.add(signInDeductCost);
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.subtract(signInDeductCost)));
+                }
+            }
+            if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+                SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+                BigDecimal signOutDeductCost = getSignInDeduce(expectSalary, signOutStatus, teachMode,tenantId);
+                if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                    deductCost = deductCost.add(signOutDeductCost);
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.subtract(signOutDeductCost)));
+                }
+            }
         }
-
+        courseScheduleTeacherSalary.setDeductReasons(deductReasons);
         BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
         courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
-        courseScheduleTeacherSalary.setDeductReasons(deductReasons);
     }
 
     @Override
@@ -1944,89 +1809,65 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
             return;
         }
-        
-        BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
+        Integer tenantId = TenantContextHolder.getTenantId();
 
-        expectSalary = expectSalary.add(courseScheduleTeacherSalary.getSubsidy());
-        if(BigDecimal.ZERO.compareTo(expectSalary)>0){
-            expectSalary = new BigDecimal(0);
+        BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
+        if(Objects.isNull(courseScheduleTeacherSalary.getSubsidy())){
+            courseScheduleTeacherSalary.setSubsidy(BigDecimal.ZERO);
         }
-
-        BigDecimal expectTeacherSalary = expectSalary;
-
-        //判断课程是否在试用期内
-        boolean trail = false;
-
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getEntryDate())&&courseSchedule.getClassDate().compareTo(teacher.getEntryDate())>=0){
-            trail = true;
+        if(BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getSubsidy()) != 0){
+            expectSalary = expectSalary.add(courseScheduleTeacherSalary.getSubsidy());
+            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SUBSIDY, courseScheduleTeacherSalary.getSubsidy()));
         }
-        if(Objects.nonNull(teacher)&&Objects.nonNull(teacher.getFormalStaffDate())&&courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())>=0){
-            trail = false;
+        if(BigDecimal.ZERO.compareTo(expectSalary) > 0){
+            expectSalary = new BigDecimal(0);
         }
 
         //如果上课日期在试用期内按80%结算
-        if(trail){
-            expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
-//            deductReasons.add("未转正");
+        //试用期课酬规则
+        String configValue2 = sysTenantConfigService.getTenantConfigValue(SysConfigService.PROBATION_TEACHER_SALARY,tenantId);
+        Integer probationTeacherSalary = 100;
+        if(StringUtils.isNotEmpty(configValue2)){
+            probationTeacherSalary = Integer.parseInt(configValue2);
+        }
+        BigDecimal expectTeacherSalary = expectSalary;
+        if(isTrail(teacher,courseSchedule.getClassDate())){
+            expectSalary = expectSalary.multiply(new BigDecimal(probationTeacherSalary / 100));
             deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.TRAIL, expectTeacherSalary.subtract(expectSalary)));
         }
 
         //扣除费用
-        BigDecimal deductCost = new BigDecimal(0);
+        BigDecimal deductCost = BigDecimal.ZERO;
 
+        //获取签到状态
+        TeachModeEnum teachMode = courseScheduleTeacherSalary.getCourseSchedule().getTeachMode();
         TeacherAttendance teacherAttendance = null;
-        if(!CollectionUtils.isEmpty(teacherAttendances)){
+        if(teacherAttendances != null && teacherAttendances.size() > 0){
             teacherAttendance = teacherAttendances.get(0);
         }
-        if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
-            //未签到扣除全部课酬
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("未签到扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
-        }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-            //异常签到
-            int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
-            float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
-            if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
-                //课程开始前1分钟至开始后3分钟进入教室
-                deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
-//                deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
-            }else if(signCourseTimeBetween<=-3){
-                //课程开始后3分钟后进入教室
-                deductCost = deductCost.add(expectSalary.abs());
-//                deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.abs()));
-            }
-        }
-
-        if(CollectionUtils.isEmpty(teacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
-            //未签退扣除全部课酬
-            deductCost = deductCost.add(expectSalary.abs());
-//            deductReasons.add("未签退扣除全部课酬");
-            deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
-        }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
-            //异常签退
-            int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
-            float signOutCourseTimeBetween = (float)signOutCourseTimeBetweenSeconds/(float)60;
-
-            if(signOutCourseTimeBetween>3){
-                //课程开始前20分钟至开始后3分钟退出教室
-                deductCost = deductCost.add(expectSalary.abs());
-//                deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.abs()));
-            }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
-                //课程结束前3分钟后至课程结束前退出教室
-                deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)).abs());
-//                deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.divide(new BigDecimal(2)).abs()));
+        if(teacherAttendance == null){
+            teacherAttendance = new TeacherAttendance();
+        }
+        if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignInStatus() == YesOrNoEnum.NO){
+            SalarySettlementSignEnum signInStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+            BigDecimal signInDeductCost = getSignInDeduce(expectSalary, signInStatus, teachMode,tenantId);
+            if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                deductCost = deductCost.add(signInDeductCost);
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, signInDeductCost));
+            }
+        }
+        if(teacherAttendance.getSignInStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
+            SalarySettlementSignEnum signOutStatus = getSignInStatus(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime(), teachMode,tenantId);
+            BigDecimal signOutDeductCost = getSignInDeduce(expectSalary, signOutStatus, teachMode,tenantId);
+            if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
+                deductCost = deductCost.add(signOutDeductCost);
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, signOutDeductCost));
             }
         }
 
         BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
-
-        courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
         courseScheduleTeacherSalary.setDeductReasons(deductReasons);
+        courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
     }
 
     @Override
@@ -2035,6 +1876,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             TeacherIncomeReviewDto teacherSalaryOverview = new TeacherIncomeReviewDto();
             return teacherSalaryOverview;
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
 
         if(StringUtils.isBlank(queryInfo.getStartDay())){
             LocalDate nowDate = LocalDate.now();
@@ -2077,18 +1919,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
 
         //签到GPS范围
-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-        double attendanceRange = 0;
-        if(Objects.nonNull(sysConfig)){
-            attendanceRange = Double.valueOf(sysConfig.getParanValue());
-        }
-
-        //签到GPS范围VIP
-//        SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-//        double vipAttendanceRange = 0;
-//        if(Objects.nonNull(vipSysConfig)){
-//            vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
-//        }
+        String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
 
         //教师签到记录
         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);
@@ -2138,10 +1969,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         BigDecimal monthActualIncome = teacherSalaries.stream().map(CourseScheduleTeacherSalary::getActualSalary).reduce(BigDecimal.ZERO, BigDecimal::add);
         teacherSalaryOverview.setThisMonthActualIncome(monthActualIncome);
 
-        SysConfig dayaBaseSalaryAmountConfig = sysConfigService.findByParamName(SysConfigService.DAYA_BASE_SALARY_AMOUNT);
+        String dayaBaseSalaryAmountConfig = sysTenantConfigService.getTenantConfigValue(SysConfigService.DAYA_BASE_SALARY_AMOUNT,tenantId);
         BigDecimal dayaBaseSalaryAmount = new BigDecimal(4000);
-        if(Objects.nonNull(dayaBaseSalaryAmountConfig)&&StringUtils.isNotBlank(dayaBaseSalaryAmountConfig.getParanValue())){
-            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig.getParanValue());
+        if(StringUtils.isEmpty(dayaBaseSalaryAmountConfig)){
+            dayaBaseSalaryAmount = new BigDecimal(dayaBaseSalaryAmountConfig);
         }
 
         if(monthActualIncome.compareTo(dayaBaseSalaryAmount)>0){
@@ -2151,8 +1982,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             teacherSalaryOverview.setDayaIncome(monthActualIncome);
         }
 
-        teacherSalaryOverview.setAttendanceRange(attendanceRange);
-        teacherSalaryOverview.setVipAttendanceRange(attendanceRange);
+        teacherSalaryOverview.setAttendanceRange(StringUtils.isEmpty(attendanceRange)?0:Double.parseDouble(attendanceRange));
+        teacherSalaryOverview.setVipAttendanceRange(StringUtils.isEmpty(attendanceRange)?0:Double.parseDouble(attendanceRange));
 
         return teacherSalaryOverview;
     }
@@ -2169,6 +2000,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             pageInfo.setRows(Collections.EMPTY_LIST);
             return pageInfo;
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
 
         int count = courseScheduleDao.countTeacherCourse(params);
         pageInfo.setTotal(count);
@@ -2194,18 +2026,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             }
 
             //签到GPS范围
-            SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-            double attendanceRange = 0;
-            if(Objects.nonNull(sysConfig)){
-                attendanceRange = Double.valueOf(sysConfig.getParanValue());
-            }
-
-            //签到GPS范围VIP
-//            SysConfig vipSysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE_VIP);
-//            double vipAttendanceRange = 0;
-//            if(Objects.nonNull(vipSysConfig)){
-//                vipAttendanceRange = Double.valueOf(vipSysConfig.getParanValue());
-//            }
+            String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
 
             //教师签到记录
             List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(courseIds);

+ 14 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -9,10 +9,11 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.DegreeRegistrationActivityDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,9 +24,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dto.PageInfoDegree;
 import com.ym.mec.biz.dal.page.DegreeQueryInfo;
-import com.ym.mec.biz.service.DegreeRegistrationService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -38,34 +36,24 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
     @Autowired
     private DegreeRegistrationDao degreeRegistrationDao;
-
     @Autowired
     private SporadicChargeInfoDao sporadicChargeInfoDao;
-
     @Autowired
     private IdGeneratorService idGeneratorService;
-
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
-
-    @Autowired
-    private StudentPaymentOrderDao studentPaymentOrderDao;
-
     @Autowired
     private SysConfigDao sysConfigDao;
-
+    @Autowired
+    private SysTenantConfigService sysTenantConfigService;
     @Autowired
     private PayService payService;
-
     @Autowired
     private PracticeGroupSellPriceDao practiceGroupSellPriceDao;
-
     @Autowired
     private StudentDao studentDao;
-
     @Autowired
     private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
-
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
 
@@ -73,7 +61,6 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
     public BaseDAO<Integer, DegreeRegistration> getDAO() {
         return degreeRegistrationDao;
     }
-
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public HttpResponseResult pay(DegreeRegistrationActivityDto degreeRegistration) throws Exception {
@@ -94,13 +81,21 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
         degreeRegistration.setActivityTag(ACTIVITY_TAG);
 
+        Integer tenantId = TenantContextHolder.getTenantId();
+
         Date nowDate = new Date();
-        String startTimeStr = sysConfigDao.findConfigValue("degree_activity_start_time");
+        String startTimeStr = sysTenantConfigService.getTenantConfigValue(SysConfigService.DEGREE_ACTIVITY_START_TIME,tenantId);
+        if(StringUtils.isEmpty(startTimeStr)){
+            throw new BizException("活动还未开始,谢谢关注");
+        }
         Date startTime = DateUtil.stringToDate(startTimeStr);
         if (startTime.compareTo(nowDate) > 0) {
             throw new BizException("活动还未开始,谢谢关注");
         }
-        String endTimeStr = sysConfigDao.findConfigValue("degree_activity_end_time");
+        String endTimeStr = sysTenantConfigService.getTenantConfigValue(SysConfigService.DEGREE_ACTIVITY_END_TIME,tenantId);
+        if(StringUtils.isEmpty(endTimeStr)){
+            throw new BizException("活动还未开始,谢谢关注");
+        }
         Date endTime = DateUtil.stringToDate(endTimeStr);
         if (endTime.compareTo(nowDate) <= 0) {
             throw new BizException("活动已结束,谢谢关注");

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/InspectionItemPlanServiceImpl.java

@@ -7,12 +7,15 @@ import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.InspectionItemPlanQueryInfo;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysTenantConfigService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ym.mec.biz.service.InspectionItemPlanService;
@@ -40,6 +43,8 @@ public class InspectionItemPlanServiceImpl extends BaseServiceImpl<Long, Inspect
     private SysMessageService sysMessageService;
     @Autowired
     private SchoolDao schoolDao;
+    @Autowired
+    private SysTenantConfigService sysTenantConfigService;
 
     @Override
     public BaseDAO<Long, InspectionItemPlan> getDAO() {
@@ -51,7 +56,13 @@ public class InspectionItemPlanServiceImpl extends BaseServiceImpl<Long, Inspect
     public PageInfo<InspectionItemPlan> getPageList(InspectionItemPlanQueryInfo queryInfo) {
         PageInfo<InspectionItemPlan> pageInfo = this.queryPage(queryInfo);
         if (pageInfo.getRows().size() > 0) {
-            Integer attendanceRange = Integer.valueOf(sysConfigDao.findConfigValue(SysConfigService.ATTENDANCE_RANGE));
+            Integer tenantId = TenantContextHolder.getTenantId();
+            //签到GPS范围
+            String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+            Integer attendanceRange = 0;
+            if(StringUtils.isNotEmpty(gpsRange)){
+                attendanceRange = Integer.parseInt(gpsRange);
+            }
             List<Long> planIds = pageInfo.getRows().stream().map(InspectionItemPlan::getId).collect(Collectors.toList());
             List<CheckItemDto> lastCheckItems = inspectionItemPlanConclusionDao.getLastCheckItem(planIds);
             for (InspectionItemPlan row : pageInfo.getRows()) {

+ 119 - 164
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -49,6 +49,8 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 	@Autowired
 	private SysConfigDao sysConfigDao;
 	@Autowired
+	private SysTenantConfigService sysTenantConfigService;
+	@Autowired
 	private SysMessageService sysMessageService;
 	@Autowired
 	private TeacherDao teacherDao;
@@ -166,191 +168,144 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void musicSchoolTermPush() {
-		Object o = redisCache.get("musicSchoolTermPush");
-		if(o != null){
-			return;
-		}
-		String remindCourseTime = sysConfigDao.findConfigValue(SysConfigService.REMIND_COURSE_TIME);
-		if(StringUtils.isEmpty(remindCourseTime)){
-			remindCourseTime = "14";
-		}
-		//获取当前学期截止前14天的乐团,并提醒教务老师排课
-		List<String> musicGroupIds = musicGroupSchoolTermCourseDetailDao.queryPushCourseTermMusicIds(remindCourseTime);
-		if(musicGroupIds.size() > 0){
-			List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
-			List<Integer> educationIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
-			Map<Integer, String> educationPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(educationIds,",")));
-			for (MusicGroup musicGroup : musicGroupList) {
-				Map<Integer,String> userMap = new HashMap<>(1);
-				userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
-				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-						MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
-						userMap,
-						null,
-						0,
-						null,
-						null,
-						musicGroup.getName());
-				Map<Integer,String> userMap1 = new HashMap<>(1);
-				userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
-				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-						MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
-						userMap1,
-						null,
-						0,
-						null,
-						"SYSTEM",
-						musicGroup.getName());
+	public void musicSchoolTermPush(Integer tenantId) {
+		String remindCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.REMIND_COURSE_TIME,tenantId);
+		if(StringUtils.isNotEmpty(remindCourseTime)){
+			//获取当前学期截止前14天的乐团,并提醒教务老师排课
+			List<String> musicGroupIds = musicGroupSchoolTermCourseDetailDao.queryPushCourseTermMusicIds(remindCourseTime);
+			if(musicGroupIds.size() > 0){
+				List<MusicGroup> musicGroupList = musicGroupDao.getMusicGroupByIds(musicGroupIds);
+				List<Integer> educationIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toList());
+				Map<Integer, String> educationPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(educationIds,",")));
+				for (MusicGroup musicGroup : musicGroupList) {
+					Map<Integer,String> userMap = new HashMap<>(1);
+					userMap.put(musicGroup.getEducationalTeacherId(),educationPhoneMap.get(musicGroup.getEducationalTeacherId()));
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+							MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
+							userMap,
+							null,
+							0,
+							null,
+							null,
+							musicGroup.getName());
+					Map<Integer,String> userMap1 = new HashMap<>(1);
+					userMap1.put(musicGroup.getEducationalTeacherId(),musicGroup.getEducationalTeacherId().toString());
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+							MessageTypeEnum.SYSTEM_REMIND_EDUCATION_COURSE_TIME,
+							userMap1,
+							null,
+							0,
+							null,
+							"SYSTEM",
+							musicGroup.getName());
+				}
 			}
 		}
+		//提醒会员续费
+		String pushMemberRenewAgain = sysTenantConfigService.getTenantConfigValue(SysConfigService.PUSH_MEMBER_RENEW_AGAIN,tenantId);
 		String memberName = "黄金会员";
 		MemberRankSetting memberRankSetting = memberRankSettingDao.get(1);
 		if(memberRankSetting != null){
 			memberName = memberRankSetting.getName();
 		}
-		Date date = new Date();
-		//试用会员结束3天提醒学员缴费
-//		String experiencePushMemberRenew = sysConfigDao.findConfigValue(SysConfigService.EXPERIENCE_PUSH_MEMBER_RENEW);
-//		if(StringUtils.isEmpty(experiencePushMemberRenew)){
-//			experiencePushMemberRenew = "3";
-//		}
-//		List<Integer> studentIds = studentDao.queryPushMemberRenew(experiencePushMemberRenew);
-		/*if(studentIds.size() > 0){
-			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIds,",")));
-			Map<Integer,String> userMap = new HashMap<>(studentIds.size());
-			Map<Integer,String> userMap1 = new HashMap<>(studentIds.size());
-			for (Integer studentId : studentIds) {
-				userMap.put(studentId,studentPhoneMap.get(studentId));
-				userMap1.put(studentId,studentId.toString());
-			}
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
-					userMap,
-					null,
-					0,
-					null,
-					null,memberName,pushMemberRenew);
-
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
-					userMap1,
-					null,
-					0,
-					null,
-					"STUDENT",memberName,pushMemberRenew);
-		}*/
-		//会员结束前5天提醒学员续费
-		String pushMemberRenewAgain = sysConfigDao.findConfigValue(SysConfigService.PUSH_MEMBER_RENEW_AGAIN);
-		if(StringUtils.isEmpty(pushMemberRenewAgain)){
-			pushMemberRenewAgain = "5";
-		}
-		List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewAgain);
-		if(studentIdList.size() > 0){
-			Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
-			Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
-			Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
-			for (Integer studentId : studentIdList) {
-				userMap.put(studentId,studentPhoneMap.get(studentId));
-				userMap1.put(studentId,studentId.toString());
-			}
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
-					userMap,
-					null,
-					0,
-					null,
-					null,memberName,pushMemberRenewAgain);
-
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-					MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
-					userMap1,
-					null,
-					0,
-					null,
-					"STUDENT",memberName,pushMemberRenewAgain);
-		}
-
-
-		//会员结束前15天自动创建乐团续费(默认提前15天)
-		String autoCreateMemberRenew = sysConfigDao.findConfigValue(SysConfigService.AUTO_CREATE_MEMBER_RENEW);
-		if(StringUtils.isEmpty(autoCreateMemberRenew)){
-			autoCreateMemberRenew = "15";
-		}
-		Map<String,String> studentMusicMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryAutoCreateStudentMap(autoCreateMemberRenew));
-		if(studentMusicMap.size() > 0){
-			for (String musicGroupId : studentMusicMap.keySet()) {
-				MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-				// 所有缴费项目已完成排课才能创建下一个缴费项目
-//				String orignBatchNo = musicGroupPaymentStudentCourseDetailService.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, null, null,null);
-//				if (StringUtils.isNoneBlank(orignBatchNo)) {
-//					logger.error("自动创建缴费项目失败,{} 乐团存在未排课的缴费项目",musicGroup.getName());
-//					continue;
-//				}
-				MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), memberRankSetting.getId());
-				if(memberFee == null){
-					Organization organization = organizationDao.get(musicGroup.getOrganId());
-					logger.error("自动创建缴费项目失败,{} 分部会员收费标准未配置",organization.getName());
-					continue;
-				}
-				//创建缴费项目
-				MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto = new MusicGroupPaymentCalenderDto();
-				musicGroupPaymentCalenderDto.setMusicGroupId(musicGroupId);
-				musicGroupPaymentCalenderDto.setMemberValidDate(6);
-				musicGroupPaymentCalenderDto.setMemo("系统自动创建缴费项目");
-				musicGroupPaymentCalenderDto.setMemberRankSettingId(memberRankSetting.getId());
-				musicGroupPaymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
-				musicGroupPaymentCalenderDto.setPaymentType(MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW);
-				musicGroupPaymentCalenderDto.setPaymentPattern(1);
-				musicGroupPaymentCalenderDto.setMemberPaymentAmount(memberFee.getGroupPurchaseHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP));
-				musicGroupPaymentCalenderDto.setAutoCreate(true);
-				musicGroupPaymentCalenderDto.setIsGiveMusicNetwork(false);
-				List<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = new ArrayList<>();
-				MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange range = new MusicGroupPaymentCalenderDto().new MusicGroupPaymentDateRange();
-				range.setStartPaymentDate(date);
-				range.setDeadlinePaymentDate(DateUtil.addMonths(date,1));
-				musicGroupPaymentDateRangeList.add(range);
-				musicGroupPaymentCalenderDto.setMusicGroupPaymentDateRangeList(musicGroupPaymentDateRangeList);
-				String batchNo = "";
-				try {
-					batchNo = musicGroupPaymentCalenderService.create(musicGroupPaymentCalenderDto);
-				}catch (Exception e){
-					logger.error("{} 乐团自动创建缴费项目失败,失败原因:{}",musicGroup.getName(),e.getMessage());
-					continue;
-				}
-				MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.findByBatchNo(batchNo).get(0);
-				Set<Integer> userIdList = Arrays.stream(studentMusicMap.get(musicGroupId).split(",")).map(Integer::new).collect(Collectors.toSet());
-				musicGroupPaymentCalenderDetailService.batchAdd(calender.getId(),userIdList,musicGroup,true);
-				Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(studentMusicMap.get(musicGroupId)));
-				Map<Integer,String> userMap = new HashMap<>(userIdList.size());
-				Map<Integer,String> userMap1 = new HashMap<>(userIdList.size());
-				for (Integer studentId : userIdList) {
+		if(StringUtils.isNotEmpty(pushMemberRenewAgain)){
+			List<Integer> studentIdList = studentDao.queryPushMemberRenew(pushMemberRenewAgain);
+			if(studentIdList.size() > 0){
+				Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(studentIdList,",")));
+				Map<Integer,String> userMap = new HashMap<>(studentIdList.size());
+				Map<Integer,String> userMap1 = new HashMap<>(studentIdList.size());
+				for (Integer studentId : studentIdList) {
 					userMap.put(studentId,studentPhoneMap.get(studentId));
 					userMap1.put(studentId,studentId.toString());
 				}
-				String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
-				String pushUrl = baseApiUrl + "/#/musicGroupRenew?calenderId=" + calender.getId() + "&id=" + musicGroupId;
-				String sortUrl = HttpUtil.getSortUrl(pushUrl);
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
-						MessageTypeEnum.SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
+						MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
 						userMap,
 						null,
 						0,
-						sortUrl,
-						null,memberName,autoCreateMemberRenew,sortUrl);
+						null,
+						null,memberName,pushMemberRenewAgain);
 
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-						MessageTypeEnum.PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
+						MessageTypeEnum.STUDENT_MEMBER_RENEW_MESSAGE,
 						userMap1,
 						null,
 						0,
-						"4?" + pushUrl,
-						"STUDENT",memberName,autoCreateMemberRenew);
+						null,
+						"STUDENT",memberName,pushMemberRenewAgain);
+			}
+		}
+
+		Date date = new Date();
+		//会员结束前15天自动创建乐团续费(默认提前15天)
+		String autoCreateMemberRenew = sysTenantConfigService.getTenantConfigValue(SysConfigService.AUTO_CREATE_MEMBER_RENEW,tenantId);
+		if(StringUtils.isNotEmpty(autoCreateMemberRenew)){
+			Map<String,String> studentMusicMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryAutoCreateStudentMap(autoCreateMemberRenew));
+			if(studentMusicMap.size() > 0){
+				for (String musicGroupId : studentMusicMap.keySet()) {
+					MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+					MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), memberRankSetting.getId());
+					if(memberFee == null){
+						Organization organization = organizationDao.get(musicGroup.getOrganId());
+						logger.error("自动创建缴费项目失败,{} 分部会员收费标准未配置",organization.getName());
+						continue;
+					}
+					//创建缴费项目
+					MusicGroupPaymentCalenderDto musicGroupPaymentCalenderDto = new MusicGroupPaymentCalenderDto();
+					musicGroupPaymentCalenderDto.setMusicGroupId(musicGroupId);
+					musicGroupPaymentCalenderDto.setMemberValidDate(6);
+					musicGroupPaymentCalenderDto.setMemo("系统自动创建缴费项目");
+					musicGroupPaymentCalenderDto.setMemberRankSettingId(memberRankSetting.getId());
+					musicGroupPaymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
+					musicGroupPaymentCalenderDto.setPaymentType(MusicGroupPaymentCalender.PaymentType.MUSIC_RENEW);
+					musicGroupPaymentCalenderDto.setPaymentPattern(1);
+					musicGroupPaymentCalenderDto.setMemberPaymentAmount(memberFee.getGroupPurchaseHalfYearFee().setScale(0, BigDecimal.ROUND_HALF_UP));
+					musicGroupPaymentCalenderDto.setAutoCreate(true);
+					musicGroupPaymentCalenderDto.setIsGiveMusicNetwork(false);
+					List<MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = new ArrayList<>();
+					MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange range = new MusicGroupPaymentCalenderDto().new MusicGroupPaymentDateRange();
+					range.setStartPaymentDate(date);
+					range.setDeadlinePaymentDate(DateUtil.addMonths(date,1));
+					musicGroupPaymentDateRangeList.add(range);
+					musicGroupPaymentCalenderDto.setMusicGroupPaymentDateRangeList(musicGroupPaymentDateRangeList);
+					String batchNo = "";
+					try {
+						batchNo = musicGroupPaymentCalenderService.create(musicGroupPaymentCalenderDto);
+					}catch (Exception e){
+						logger.error("{} 乐团自动创建缴费项目失败,失败原因:{}",musicGroup.getName(),e.getMessage());
+						continue;
+					}
+					MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.findByBatchNo(batchNo).get(0);
+					Set<Integer> userIdList = Arrays.stream(studentMusicMap.get(musicGroupId).split(",")).map(Integer::new).collect(Collectors.toSet());
+					musicGroupPaymentCalenderDetailService.batchAdd(calender.getId(),userIdList,musicGroup,true);
+					Map<Integer, String> studentPhoneMap = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(studentMusicMap.get(musicGroupId)));
+					Map<Integer,String> userMap = new HashMap<>(userIdList.size());
+					Map<Integer,String> userMap1 = new HashMap<>(userIdList.size());
+					for (Integer studentId : userIdList) {
+						userMap.put(studentId,studentPhoneMap.get(studentId));
+						userMap1.put(studentId,studentId.toString());
+					}
+					String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+					String pushUrl = baseApiUrl + "/#/musicGroupRenew?calenderId=" + calender.getId() + "&id=" + musicGroupId;
+					String sortUrl = HttpUtil.getSortUrl(pushUrl);
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS,
+							MessageTypeEnum.SMS_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
+							userMap,
+							null,
+							0,
+							sortUrl,
+							null,memberName,autoCreateMemberRenew,sortUrl);
+
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+							MessageTypeEnum.PUSH_AUTO_STUDENT_MEMBER_RENEW_MESSAGE,
+							userMap1,
+							null,
+							0,
+							"4?" + pushUrl,
+							"STUDENT",memberName,autoCreateMemberRenew);
+				}
 			}
 		}
-		redisCache.getRedisTemplate().opsForValue().set("musicSchoolTermPush","musicSchoolTermPush",
-		23,
-		TimeUnit.HOURS);
 	}
 
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){

+ 13 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -33,6 +33,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -676,6 +677,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if(musicGroupRegCalender == null){
         	throw new BizException("缴费信息不存在");
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
 
         Integer userId = studentRegistration.getUserId();
 
@@ -756,8 +758,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         //乐器保养
         if (registerPayDto.getBuyMaintenance()) {
-            BigDecimal maintenancePrice = new BigDecimal(sysConfigDao.findConfigValue("maintenance_price"));
-            orderAmount = orderAmount.add(maintenancePrice);
+            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT, tenantId);
+            if(StringUtils.isEmpty(configValue)){
+                throw new BizException("乐保价格异常,请联系指导老师");
+            }
+            orderAmount = orderAmount.add(new BigDecimal(configValue));
         }
         
         studentRegistration.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());
@@ -925,6 +930,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (studentRegistration == null) {
             throw new BizException("报名信息有误,请核查");
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
 
         Integer userId = studentRegistration.getUserId();
 
@@ -1036,8 +1042,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         if (registerPayDto.getBuyMaintenance()) {
-            BigDecimal maintenancePrice = new BigDecimal(sysConfigDao.findConfigValue("maintenance_price"));
-            orderAmount = orderAmount.add(maintenancePrice);
+            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT, tenantId);
+            if(StringUtils.isEmpty(configValue)){
+                throw new BizException("乐保价格异常,请联系指导老师");
+            }
+            orderAmount = orderAmount.add(new BigDecimal(configValue));
         }
 
         studentRegistration.setMusicGroupPaymentCalenderId(musicGroupRegCalender.getId());

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportServiceImpl.java

@@ -8,9 +8,13 @@ import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.ExpenditureTypeEnum;
 import com.ym.mec.biz.service.OperatingReportService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysTenantConfigService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +36,8 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
+    private SysTenantConfigService sysTenantConfigService;
+    @Autowired
     private OrganizationDao organizationDao;
 
 
@@ -42,7 +48,7 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean statistics() {
+    public Boolean statistics(Integer tenantId) {
         Date nowDate = new Date();
         Date startTime = DateUtil.getFirstDayOfMonth(DateUtil.addDays1(nowDate, -1));
         Date endTime = DateUtil.getLastTimeWithDay(DateUtil.getLastDayOfMonth(startTime));
@@ -51,7 +57,11 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
         Map<Integer, OperatingReport> organOperating = new HashMap<>();
 
         //1.1 获取分部的全职资源数的分摊费用
-        BigDecimal fullJobFee = new BigDecimal(sysConfigDao.findConfigValue("full_job_fee"));
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.FULL_JOB_FEE, tenantId);
+        if(StringUtils.isEmpty(configValue)){
+            throw new BizException("请配置全职资源公摊金额");
+        }
+        BigDecimal fullJobFee = new BigDecimal(configValue);
         List<OrganFullJobResourceNumDto> organFullJobResources = cooperationOrganDao.getOrganFullJobResourceNum();
         for (OrganFullJobResourceNumDto organFullJobResource : organFullJobResources) {
             OperatingReport operatingReport = new OperatingReport();

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java

@@ -1,13 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
 import com.ym.mec.biz.dal.enums.GradeTypeEnum;
 import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
 import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -25,6 +28,8 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	@Autowired
 	private OrganizationDao organizationDao;
 	@Autowired
+	private TeacherDao teacherDao;
+	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
 	@Override
@@ -105,4 +110,33 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		}
 		return gradeMap;
 	}
+
+	@Override
+	public int updateOrgan(Organization organization) {
+		return organizationDao.update(initOrganization(organization));
+	}
+
+	@Override
+	public Long add(Organization organization) {
+		return organizationDao.insert(initOrganization(organization));
+	}
+
+	private Organization initOrganization(Organization organization){
+		if(StringUtils.isNotEmpty(organization.getOrganManager())){
+			organization.setOrganManagerName(teacherDao.queryTeacherNameByTeacherIds(organization.getOrganManager()));
+		}else {
+			organization.setOrganManagerName("");
+		}
+		if(StringUtils.isNotEmpty(organization.getEducationId())){
+			organization.setEducationName(teacherDao.queryTeacherNameByTeacherIds(organization.getEducationId()));
+		}else {
+			organization.setEducationName("");
+		}
+		if(StringUtils.isNotEmpty(organization.getRepairId())){
+			organization.setRepairName(teacherDao.queryTeacherNameByTeacherIds(organization.getRepairId()));
+		}else {
+			organization.setRepairName("");
+		}
+		return organization;
+	}
 }

+ 27 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -14,6 +14,7 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.SysTenantConfigService;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -130,6 +131,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
         if (TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())) {
             throw new BizException("线上课程请进入房间授课");
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
         Date date = new Date();
         SysConfig attendanceTimeRange;
         if (courseSchedule.getGroupType().equals(GroupType.MUSIC)) {
@@ -141,15 +143,21 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                 throw new BizException("乐团课禁止跨天点名");
             }
         } else {
-            SysConfig beforeAttendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
-            int courseStartTime = DateUtil.minutesBetween(date, courseSchedule.getStartClassTime());
-            if (date.before(courseSchedule.getStartClassTime()) && courseStartTime > beforeAttendanceTimeRange.getParanValue(Integer.class)) {
-                throw new BizException("VIP课开课前{}分钟禁止点名", beforeAttendanceTimeRange.getParanValue(Integer.class));
+            String sysConfigVip = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP,tenantId);
+            if(StringUtils.isNotEmpty(sysConfigVip)){
+                int i = Integer.parseInt(sysConfigVip);
+                int courseStartTime = DateUtil.minutesBetween(date, courseSchedule.getStartClassTime());
+                if (date.before(courseSchedule.getStartClassTime()) && courseStartTime > i) {
+                    throw new BizException("VIP课开课前{}分钟禁止点名", i);
+                }
             }
-            attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
-            int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
-            if (date.after(courseSchedule.getEndClassTime()) && courseEndTime > attendanceTimeRange.getParanValue(Integer.class)) {
-                throw new BizException("VIP课结束{}分钟后禁止点名",attendanceTimeRange.getParanValue(Integer.class));
+            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, tenantId);
+            if(StringUtils.isNotEmpty(configValue)){
+                int i = Integer.parseInt(sysConfigVip);
+                int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
+                if (date.after(courseSchedule.getEndClassTime()) && courseEndTime > i) {
+                    throw new BizException("VIP课结束{}分钟后禁止点名",i);
+                }
             }
         }
 
@@ -247,13 +255,18 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                     schoolDao.update(school);
                 }
             } else {
-                SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-                double attendanceRange = Double.valueOf(sysConfig.getParanValue());
-                double distance = MapUtil.distance(studentAttendanceInfos.getSignInLongitudeLatitude(),
-                        school.getLongitudeLatitude());
-                if (distance > attendanceRange) {
-                    isInScore = false;
+                //签到GPS范围
+                String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+                if(StringUtils.isEmpty(gpsRange)){
+                    isInScore = true;
+                }else {
+                    double attendanceRange = Double.parseDouble(gpsRange);
+                    double distance = MapUtil.distance(studentAttendanceInfos.getSignInLongitudeLatitude(),
+                            school.getLongitudeLatitude());
+                    if (distance > attendanceRange) {
+                        isInScore = false;
 //                    teacherAttendanceMemo = "打卡地点距离教学点" + distance + "米";
+                    }
                 }
             }
         }

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java

@@ -9,6 +9,8 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,6 +58,8 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
+    private SysTenantConfigService sysTenantConfigService;
+    @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
@@ -91,7 +95,12 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
             throw new BizException("所选乐器不存在,请核查");
         }
         Integer userId = studentInstrument.getStudentId();
-        BigDecimal orderAmount = new BigDecimal(sysConfigDao.findConfigValue("maintenance_price"));
+        Integer tenantId = TenantContextHolder.getTenantId();
+        String maintenancePrice = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT, tenantId);
+        if(StringUtils.isEmpty(maintenancePrice)){
+            throw new BizException("乐保价格异常,请联系指导老师");
+        }
+        BigDecimal orderAmount = new BigDecimal(maintenancePrice);
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(maintenancePayDto.getCouponIdList(),orderAmount,true);
         BigDecimal amount = studentPaymentOrder.getActualAmount();
         if (amount.compareTo(maintenancePayDto.getAmount()) != 0) {

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -25,6 +25,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -600,6 +601,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentPaymentOrderDetail.setUpdateTime(date);
         studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
         studentPaymentOrderDetailList.add(studentPaymentOrderDetail);*/
+        Integer tenantId = TenantContextHolder.getTenantId();
         //乐器及打包辅件
         String maintenanceGoodsId = "";
         if (goodsGroups != null && goodsGroups.size() > 0) {
@@ -667,7 +669,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if ("".equals(maintenanceGoodsId)) {
                 throw new BizException("有乐器才能购买乐保,请核查");
             }
-            BigDecimal maintenancePrice = new BigDecimal(sysConfigDao.findConfigValue("maintenance_price"));
+            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT, tenantId);
+            if(StringUtils.isEmpty(configValue)){
+                throw new BizException("乐保价格异常,请联系指导老师");
+            }
+            BigDecimal maintenancePrice = new BigDecimal(configValue);
             StudentPaymentOrderDetail maintenanceOrderDetail = new StudentPaymentOrderDetail();
             maintenanceOrderDetail.setType(OrderDetailTypeEnum.MAINTENANCE);
             maintenanceOrderDetail.setPrice(maintenancePrice);

+ 10 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -17,6 +17,8 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.service.*;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,10 +75,6 @@ import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.CloudTeacherActiveQueryInfo;
 import com.ym.mec.biz.dal.page.OrganCloudStudyStudentDataQueryInfo;
 import com.ym.mec.biz.dal.page.StudentQueryInfo;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -107,6 +105,8 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
+    private SysTenantConfigService sysTenantConfigService;
+    @Autowired
     private SysMessageService sysMessageService;
     @Autowired
     private SysMusicCompareRecordDao sysMusicCompareRecordDao;
@@ -823,27 +823,12 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(!CollectionUtils.isEmpty(organsNewCloudStudyNumMapList)){
             organsNewCloudStudyNumMap = MapUtil.convertIntegerMap(organsNewCloudStudyNumMapList);
         }
-//        //获取新增人数占比(已上乐团课小于等于4)
-//        //获取有在读学员的乐团编号
-//        //获取有在读学员的学员编号
-//        List<String> musicGroupIds = studentRegistrationDao.findMusicGroupIds();
-//        List<Integer> studentIdList = studentRegistrationDao.findStudentIds();
-//        List<BaseMapDto<Integer, Long>> studentMusicCourseNum = studentDao.getOrganCloudNewStudentNum(musicGroupIds,studentIdList);
-//        //获取有乐团没排课的数据
-//        List<Integer> noCourseStudentIdList = studentRegistrationDao.findNoCourseStudentIds();
-//        List<Integer> userIdList = new ArrayList<>();
-//        if(!CollectionUtils.isEmpty(studentMusicCourseNum)){
-//            List<BaseMapDto<Integer, Long>> collect = studentMusicCourseNum.stream().filter(e -> e.getValue() < 5).collect(Collectors.toList());
-//            userIdList = collect.stream().map(e -> e.getKey()).collect(Collectors.toList());
-//        }
-//        userIdList.addAll(noCourseStudentIdList);
-//        List<Map<Long, Long>> organsNewCloudNewStudentNumMapList = studentDao.groupOrganId(organIds,userIdList);
-//        Map<String, Long> organsNewCloudNewStudentNumMap = MapUtil.convertIntegerMap(organsNewCloudNewStudentNumMapList);
         List<IndexBaseMonthData> withDayAndDataType = indexBaseMonthDataDao.getWithDayAndDataType(LocalDate.now().toString(), CLOUD_NEW_STUDENT_NUM);
         Map<Integer, Integer> organsNewCloudNewStudentNumMap = withDayAndDataType.stream().collect(Collectors.toMap(IndexBaseMonthData::getOrganId, e -> e.getActivateNum().intValue(), (e1, e2) -> e1));
 
+        Integer tenantId = TenantContextHolder.getTenantId();
         //获取分部目标
-        String cloudTeacherActiveTarget = sysConfigDao.findConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET);
+        String cloudTeacherActiveTarget = sysTenantConfigService.getTenantConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET,tenantId);
         if(StringUtils.isEmpty(cloudTeacherActiveTarget)){
             return null;
         }
@@ -903,8 +888,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(StringUtils.isNotBlank(queryInfo.getOrganIds())&&CollectionUtils.isEmpty(organIds)){
             return pageInfo;
         }
+        Integer tenantId = TenantContextHolder.getTenantId();
         //获取分部目标
-        String cloudTeacherActiveTarget = sysConfigDao.findConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET);
+        String cloudTeacherActiveTarget = sysTenantConfigService.getTenantConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET,tenantId);
         if(StringUtils.isEmpty(cloudTeacherActiveTarget)){
             return null;
         }
@@ -1125,8 +1111,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     public Map<String,Object> countCloudTeacherActive(List<Integer> organIdList, CloudTeacherActiveQueryInfo queryInfo) {
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
+        Integer tenantId = TenantContextHolder.getTenantId();
         //获取分部目标
-        String cloudTeacherActiveTarget = sysConfigDao.findConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET);
+        String cloudTeacherActiveTarget = sysTenantConfigService.getTenantConfigValue(SysConfigService.CLOUD_TEACHER_ACTIVE_TARGET,tenantId);
         if(StringUtils.isEmpty(cloudTeacherActiveTarget)){
             return null;
         }

+ 7 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -14,14 +14,12 @@ import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysMusicCompareRecordService;
-import com.ym.mec.biz.service.SysMusicCompareWeekDataService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
@@ -62,6 +60,8 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 
 	@Autowired
 	private SysConfigDao sysConfigDao;
+	@Autowired
+	private SysTenantConfigService sysTenantConfigService;
 
 	@Autowired
 	private MusicGroupDao musicGroupDao;
@@ -369,6 +369,7 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		if(StringUtils.isNotEmpty(sort)){
 			queryInfo.setSort(sort.equals("trainNum")?"train_num_":sort.equals("totalPlayTime")?"total_play_time_":sort.equals("recordNum")?"record_num_":"train_day_");
 		}
+		Integer tenantId = TenantContextHolder.getTenantId();
 		MapUtil.populateMap(params, queryInfo);
 		Integer visitFlag = 0;
 		if(queryInfo.getVisitFlag() != null && queryInfo.getVisitFlag()){
@@ -394,12 +395,12 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 			}
 			params.put("having",1);
 		}
-		String totalTime = sysConfigDao.findConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TOTAL_PLAY_TIME);
+		String totalTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TOTAL_PLAY_TIME,tenantId);
 		if(StringUtils.isEmpty(totalTime)){
 			totalTime = "80";
 		}
 		params.put("totalTime",Integer.parseInt(totalTime));
-		String trainNum = sysConfigDao.findConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TRAIN_NUM);
+		String trainNum = sysTenantConfigService.getTenantConfigValue(SysConfigService.STUDENT_CLOUD_TEACHER_TRAIN_NUM,tenantId);
 		if(StringUtils.isEmpty(trainNum)){
 			trainNum = "4";
 		}

+ 28 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -95,6 +95,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(Objects.isNull(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId())){
 			throw new BizException("请选择课程!");
 		}
+		Integer tenantId = TenantContextHolder.getTenantId();
 
 		Map<String,Object> result=new HashMap<>();
 
@@ -166,13 +167,17 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					isInScore = false;
 				}
 			}else{
-			    teacherAttendance.setSignInLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude());
-				SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-				double attendanceRange = Double.valueOf(sysConfig.getParanValue());
-				double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude(),
-						school.getLongitudeLatitude());
-				if(distance>attendanceRange){
-					isInScore=false;
+				//签到GPS范围
+				String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+				if(StringUtils.isEmpty(gpsRange)){
+					isInScore = true;
+				}else {
+					double attendanceRange = Double.parseDouble(gpsRange);
+					double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignInLongitudeLatitude(),
+							school.getLongitudeLatitude());
+					if(distance>attendanceRange){
+						isInScore=false;
+					}
 				}
 			}
 
@@ -234,12 +239,16 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				}
 			}else if(StringUtils.isNotBlank(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutLongitudeLatitude())){
 			    teacherAttendance.setSignOutLongitudeLatitude(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutLongitudeLatitude());
-				SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ATTENDANCE_RANGE);
-				double attendanceRange = Double.valueOf(sysConfig.getParanValue());
-				double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutLongitudeLatitude(),
-						school.getLongitudeLatitude());
-				if(distance<=attendanceRange){
-					isInScore=true;
+				String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+				if(StringUtils.isNotEmpty(gpsRange)){
+					double attendanceRange = Double.parseDouble(gpsRange);
+					double distance = MapUtil.distance(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutLongitudeLatitude(),
+							school.getLongitudeLatitude());
+					if(distance <= attendanceRange){
+						isInScore = true;
+					}
+				}else {
+					isInScore = true;
 				}
 			}
 
@@ -565,9 +574,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	}
 
 	@Override
-	public boolean pushNoSignOutMessage() {
-		Integer minutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.SIGN_OUT_MESSAGE_PUSH_MINUTE));;
-
+	public boolean pushNoSignOutMessage(Integer tenantId) {
+		String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.SIGN_OUT_MESSAGE_PUSH_MINUTE, tenantId);
+		if(StringUtils.isEmpty(configValue)){
+			return true;
+		}
+		Integer minutes = Integer.parseInt(configValue);
 		List<Mapper> list = teacherAttendanceDao.queryNoSignOutListByOverMinutes(minutes);
 		if(CollectionUtils.isEmpty(list)){
 			return true;

+ 38 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -536,8 +536,45 @@
     <update id="updateEnableChangeSalaryByClassGroup">
 		UPDATE course_schedule_teacher_salary SET enable_change_salary_ = #{enableChangeSalary} WHERE class_group_id_=#{classGroupId}
 	</update>
+	<update id="batchUpdateSalary">
+		<foreach collection="courseScheduleTeacherSalaries" item="bean" separator=";">
+			UPDATE course_schedule_teacher_salary
+			<set>
+				<if test="bean.expectSalary != null">
+					expect_salary_ = #{bean.expectSalary},
+				</if>
+				<if test="bean.settlementTime != null">
+					settlement_time_ = #{bean.settlementTime},
+				</if>
+				<if test="bean.updateTime != null">
+					update_time_ = now(),
+				</if>
+				<if test="bean.actualSalary != null">
+					actual_salary_ = #{bean.actualSalary},
+				</if>
+				<if test="bean.reduceSalary != null">
+					reduce_salary = #{bean.reduceSalary},
+				</if>
+				<if test="bean.confirmStatus != null">
+					confirm_status_ = #{bean.confirmStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+				</if>
+				<if test="bean.memo != null">
+					memo_ = #{bean.memo},
+				</if>
+				<if test="bean.deductionReason != null">
+					deduction_reason_ = #{bean.deductionReason},
+				</if>
+				<if test="bean.belongToDaya != null">
+					belong_to_daya_ = #{bean.belongToDaya},
+				</if>
+				<if test="bean.enableChangeSalary != null">
+					enable_change_salary_ = #{bean.enableChangeSalary},
+				</if>
+			</set> WHERE id_ = #{bean.id}
+		</foreach>
+	</update>
 
-    <select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
+	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
 	<select id="countActualAmount" resultType="java.util.Map">

+ 19 - 3
mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml

@@ -18,6 +18,12 @@
         <result column="linkman_" property="linkman"/>
         <result column="mobile_" property="mobile"/>
         <result column="address_" property="address"/>
+        <result column="organ_manager_" property="organManager"/>
+        <result column="education_id_" property="educationId"/>
+        <result column="repair_id_" property="repairId"/>
+        <result column="organ_manager_name_" property="organManagerName"/>
+        <result column="education_name_" property="educationName"/>
+        <result column="repair_name_" property="repairName"/>
         <result column="grade_type_" property="gradeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
@@ -34,8 +40,12 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Organization" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
-        INSERT INTO organization (id_,name_,area_id_,create_time_,update_time_,register_date_,linkman_,mobile_,address_,grade_type_)
-        VALUES(#{id},#{name},#{areaId},now(),now(),#{registerDate},#{linkman},#{mobile},#{address},#{gradeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        INSERT INTO organization (id_,name_,area_id_,create_time_,update_time_,
+                                  register_date_,linkman_,mobile_,address_,grade_type_,organ_manager_,education_id_,repair_id_,
+                                  organ_manager_name_,education_name_,repair_name_)
+        VALUES(#{id},#{name},#{areaId},now(),now(),#{registerDate},#{linkman},#{mobile},#{address},
+               #{gradeType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+               ,#{organManager},#{educationId},#{repairId},#{organManagerName},#{educationName},#{repairName})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -45,6 +55,12 @@
             <if test="delFlag != null">
                 del_flag_ = #{delFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+                organ_manager_ = #{organManager},
+                education_id_ = #{educationId},
+                repair_id_ = #{repairId},
+                organ_manager_name_ = #{organManagerName},
+                education_name_ = #{educationName},
+                repair_name_ = #{repairName},
             <if test="areaId != null">
                 area_id_ = #{areaId},
             </if>
@@ -91,7 +107,7 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="Organization" parameterType="map">
-        SELECT o.*,sa.name_ area_name_ FROM organization o
+        SELECT o.*,sa.name_ area_name_  FROM organization o
         LEFT JOIN sys_area sa ON o.area_id_ = sa.id_
         <include refid="queryPageSql"/>
          ORDER BY id_

+ 31 - 30
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -78,36 +78,37 @@ public class MemberRankController extends BaseController {
 	@ApiOperation(value = "2021-09活动购买会员")
 	@PostMapping("/activeBuy")
 	public HttpResponseResult ActiveBuy(@RequestBody MemberPayParamDto memberPayParamDto) throws Exception {
-		Date nowTime = new Date();
-		String startTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_start_time");
-		Date startTime = DateUtil.stringToDate(startTimeStr);
-		if (startTime.compareTo(nowTime) > 0) {
-			throw new BizException("活动还未开始,谢谢关注");
-		}
-		String endTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_end_time");
-		Date endTime = DateUtil.stringToDate(endTimeStr);
-		if (endTime.compareTo(nowTime) <= 0) {
-			throw new BizException("活动已结束,谢谢关注");
-		}
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		if(sysUser.getOrganId() == 43){
-			throw new BizException("活动仅对乐团老生学员开放");
-		}
-		//买2赠1、买3赠2
-		Integer buyNum = memberPayParamDto.getBuyNum();
-		int giveNum = buyNum == 2?1:buyNum == 3?2:0;
-		String remark = buyNum == 2?"2赠1":buyNum == 3?"3赠2":buyNum == 1?"单月":"其他";
-		return memberRankSettingService.ActiveBuy(sysUser.getId(),
-				memberPayParamDto.getMemberRankId(),
-				PeriodEnum.MONTH,
-				memberPayParamDto.getAmount(),
-				memberPayParamDto.isUseBalance(),
-				buyNum,
-				giveNum,
-				202109,remark,memberPayParamDto.isRepay());
+		throw new BizException("活动已结束,谢谢关注");
+//		Date nowTime = new Date();
+//		String startTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_start_time");
+//		Date startTime = DateUtil.stringToDate(startTimeStr);
+//		if (startTime.compareTo(nowTime) > 0) {
+//			throw new BizException("活动还未开始,谢谢关注");
+//		}
+//		String endTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_end_time");
+//		Date endTime = DateUtil.stringToDate(endTimeStr);
+//		if (endTime.compareTo(nowTime) <= 0) {
+//			throw new BizException("活动已结束,谢谢关注");
+//		}
+//		SysUser sysUser = sysUserFeignService.queryUserInfo();
+//		if (sysUser == null) {
+//			return failed(HttpStatus.FORBIDDEN, "请登录");
+//		}
+//		if(sysUser.getOrganId() == 43){
+//			throw new BizException("活动仅对乐团老生学员开放");
+//		}
+//		//买2赠1、买3赠2
+//		Integer buyNum = memberPayParamDto.getBuyNum();
+//		int giveNum = buyNum == 2?1:buyNum == 3?2:0;
+//		String remark = buyNum == 2?"2赠1":buyNum == 3?"3赠2":buyNum == 1?"单月":"其他";
+//		return memberRankSettingService.ActiveBuy(sysUser.getId(),
+//				memberPayParamDto.getMemberRankId(),
+//				PeriodEnum.MONTH,
+//				memberPayParamDto.getAmount(),
+//				memberPayParamDto.isUseBalance(),
+//				buyNum,
+//				giveNum,
+//				202109,remark,memberPayParamDto.isRepay());
 	}
 	
     @ApiOperation(value = "查询订单列表")

+ 0 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseScheduleTeacherSalaryController.java

@@ -88,9 +88,6 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
         }
         queryInfo.setTeacherId(sysUser.getId());
         queryInfo.setCourseStatus(CourseStatusEnum.OVER);
-//        if(StringUtils.isBlank(queryInfo.getStartDay())){
-//            queryInfo.setStartDay("2021-03-01");
-//        }
         return succeed(courseScheduleTeacherSalaryService.getTeacherSalaryOverview(queryInfo));
     }
 

+ 8 - 8
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -90,20 +90,20 @@ public class TeacherCourseScheduleController extends BaseController {
         }
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         SysConfig offlineSignInEarlyForwardTime = sysConfigService.findByParamName(SysConfigService.OFFLINE_SIGN_IN_EARLY_FORWARD_TIME);
-        SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
-        SysConfig courseBeforeBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_BEFORE_BUFFER_TIME);
-        SysConfig courseAfterBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_AFTER_BUFFER_TIME);
-        SysConfig studentAttendanceAfterTimeConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
+        String configValue1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, user.getTenantId());
+        String courseBeforeBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME, user.getTenantId());
+        String courseAfterBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, user.getTenantId());
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP, user.getTenantId());
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type,user.getTenantId());
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealHoursRange",4);
         result.put("offlineSignInEarlyForwardTime", offlineSignInEarlyForwardTime.getParanValue(Integer.class));
         result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
-        result.put("enableStudentAttendanceTimeRangeVip",sysConfigVip.getParanValue(Integer.class));
-        result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
-        result.put("courseBeforeBufferTime", courseBeforeBufferTime.getParanValue(Integer.class));
-        result.put("courseAfterBufferTime", courseAfterBufferTime.getParanValue(Integer.class));
+        result.put("enableStudentAttendanceTimeRangeVip",StringUtils.isEmpty(configValue1)?0:Integer.parseInt(configValue1));
+        result.put("joinRoomBeforeTime",StringUtils.isEmpty(configValue)?0:Integer.parseInt(configValue));
+        result.put("courseBeforeBufferTime", StringUtils.isEmpty(courseBeforeBufferTime)?10:Integer.parseInt(courseBeforeBufferTime));
+        result.put("courseAfterBufferTime", StringUtils.isEmpty(courseAfterBufferTime)?10:Integer.parseInt(courseAfterBufferTime));
         return succeed(result);
     }
 

+ 2 - 4
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java

@@ -8,11 +8,9 @@ import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -64,7 +62,7 @@ public class OrganizationController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('organization/add')")
     public Object add(Organization organization){
-        return succeed(organizationService.insert(organization));
+        return succeed(organizationService.add(organization));
     }
 
     @ApiOperation(value = "根据分部编号删除分部")
@@ -79,7 +77,7 @@ public class OrganizationController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('organization/update')")
     public Object update(Organization organization){
         organization.setUpdateTime(new Date());
-        return succeed(organizationService.update(organization));
+        return succeed(organizationService.updateOrgan(organization));
     }
 
     @ApiOperation(value = "根据分部编号查询分部详情")

+ 32 - 10
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -240,7 +240,12 @@ public class TaskController extends BaseController {
 	@GetMapping("/pushNoSignOutMessage")
 	// 推送未签退消息提醒
 	public void pushNoSignOutMessage() {
-		teacherAttendanceService.pushNoSignOutMessage();
+		List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
+		if(tenantInfos != null && tenantInfos.size() > 0){
+			for (TenantInfo tenantInfo : tenantInfos) {
+				teacherAttendanceService.pushNoSignOutMessage(tenantInfo.getId());
+			}
+		}
 	}
 
 	@GetMapping("/studentCoursesScheduleRemind")
@@ -379,7 +384,12 @@ public class TaskController extends BaseController {
 	//经营报表
 	@GetMapping("/operatingReport")
 	public void operatingReport(){
-		operatingReportService.statistics();
+		List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
+		if(tenantInfos != null && tenantInfos.size() > 0){
+			for (TenantInfo tenantInfo : tenantInfos) {
+				operatingReportService.statistics(tenantInfo.getId());
+			}
+		}
 	}
 
 	@GetMapping("/updateCourseActualPrice")
@@ -435,7 +445,12 @@ public class TaskController extends BaseController {
 	//大雅基本工资标记
 	@GetMapping("/salaryMarkNew")
 	public void salaryMarkNew(Date startDay){
-		courseScheduleTeacherSalaryService.salaryMarkNew(startDay);
+		List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
+		if(tenantInfos != null && tenantInfos.size() > 0){
+			for (TenantInfo tenantInfo : tenantInfos) {
+				courseScheduleTeacherSalaryService.salaryMarkNew(startDay,tenantInfo.getId());
+			}
+		}
 	}
 
 	//处理未生效的乐团云教练订单
@@ -465,12 +480,19 @@ public class TaskController extends BaseController {
 	@ApiOperation("每天10点推送排课、续费提醒")
 	@GetMapping(value = "/musicSchoolTermPush")
 	public void musicSchoolTermPush() {
-//		Boolean success = redisCache.getRedisTemplate().opsForValue().setIfAbsent("musicSchoolTermPush","musicSchoolTermPush",
-//				23,
-//				TimeUnit.HOURS);
-//		if(success){
-			musicGroupSchoolTermCourseDetailService.musicSchoolTermPush();
-//		}
+		Object o = redisCache.get("musicSchoolTermPush");
+		if(o != null){
+			return;
+		}
+		List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
+		if(tenantInfos != null && tenantInfos.size() > 0){
+			for (TenantInfo tenantInfo : tenantInfos) {
+				musicGroupSchoolTermCourseDetailService.musicSchoolTermPush(tenantInfo.getId());
+			}
+		}
+		redisCache.getRedisTemplate().opsForValue().set("musicSchoolTermPush","musicSchoolTermPush",
+				23,
+				TimeUnit.HOURS);
 	}
 
 	@ApiOperation("会员到期后清空会员信息")
@@ -494,6 +516,6 @@ public class TaskController extends BaseController {
 	@ApiOperation("标记进行中乐团在读学员+VIP、网管有课学员总数(除弦乐声部、去重,去除在云教练的乐团的学员")
 	@GetMapping(value = "/remarkCountFlag")
 	public void remarkCountFlag(){
-		studentService.remarkCountFlag();
+//		studentService.remarkCountFlag();
 	}
 }

+ 0 - 12
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -168,18 +168,6 @@ public class VipGroupActivityController extends BaseController {
         activityQueryDto.setOrganId(student.getOrganId().toString());
         activityQueryDto.setEnable(true);
         List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(activityQueryDto);
-
-//        SysConfig doubleElevenIdConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
-//        if(Objects.nonNull(doubleElevenIdConfig)&&StringUtils.isNotBlank(doubleElevenIdConfig.getParanValue())){
-//            Set<Integer> activityIds = Arrays.stream(doubleElevenIdConfig.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toSet());
-//            Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
-//            while(iterator.hasNext()){
-//                VipGroupActivity vipGroupActivity = iterator.next();
-//                if(activityIds.contains(vipGroupActivity.getId())){
-//                    iterator.remove();
-//                }
-//            }
-//        }
         return succeed(vipGroupActivities);
     }