浏览代码

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

hgw 3 年之前
父节点
当前提交
3bc068adae

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -72,7 +72,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 		// 检查设备
 		String deviceNum = request.getParameter(deviceNumParameter);
 		if (StringUtils.isNotBlank(deviceNum)) {
-			sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum);
+			sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum, userInfo.getSysUser().getTenantId());
 		}
 
 		UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(SecurityConstants.USERNAME_PRINCIPAL_PREFIX + username,

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -70,7 +70,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			userInfo = sysUserService.initUser(loginEntity.getTenantId(), loginEntity.getOrganId(), loginEntity.getPhone(), clientId);
 			
 			if (StringUtils.isNotBlank(deviceNum)) {
-				sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum);
+				sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum, userInfo.getSysUser().getTenantId());
 			}
 		} else {
 			SysUser user = userInfo.getSysUser();
@@ -83,7 +83,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 				throw new LockedException("用户已注册");
 			}
 			if (StringUtils.isNotBlank(deviceNum)) {
-				sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
+				sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum, userInfo.getSysUser().getTenantId());
 			}
 			
 			if (!userInfo.getSysUser().getUserType().contains(clientId)) {

+ 2 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserDeviceService.java

@@ -16,9 +16,10 @@ public interface SysUserDeviceService extends BaseService<Integer, SysUserDevice
 	 * @param clientId
 	 * @param userId
 	 * @param deviceNum
+	 * @param tenantId
 	 * @return
 	 */
-	boolean bindDevice(String clientId, Integer userId, String deviceNum);
+	boolean bindDevice(String clientId, Integer userId, String deviceNum, Integer tenantId);
 
 	/**
 	 * 逻辑删除

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

@@ -1,20 +1,20 @@
 package com.ym.mec.auth.service.impl;
 
-import com.ym.mec.auth.api.entity.SysUserDevice;
-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.common.tenant.TenantContextHolder;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
+import com.ym.mec.auth.api.entity.SysUserDevice;
+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;
 
 @Service
 public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDevice>  implements SysUserDeviceService {
@@ -38,8 +38,7 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 	}
 
 	@Override
-	public boolean bindDevice(String clientId, Integer userId, String deviceNum) {
-		Integer tenantId = TenantContextHolder.getTenantId();
+	public boolean bindDevice(String clientId, Integer userId, String deviceNum, Integer tenantId) {
 		String paramName = null;
 		if (StringUtils.equals(clientId, "STUDENT")) {
 			paramName = "student_device_login_num";
@@ -52,19 +51,52 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 		if(StringUtils.isEmpty(configValue)){
 			return true;
 		}
-		// 检查学生是否绑定了多个设备号
-		List<SysUserDevice> studentDeviceList = queryByUserId(clientId, userId);
+		
+		if (StringUtils.equals(clientId, "STUDENT")) {
+			// 检查学生是否绑定了多个设备号
+			List<SysUserDevice> studentDeviceList = queryByUserId(clientId, userId);
 
-		if (studentDeviceList == null) {
-			studentDeviceList = new ArrayList<SysUserDevice>();
-		}
+			if (studentDeviceList == null) {
+				studentDeviceList = new ArrayList<SysUserDevice>();
+			}
+
+			List<String> deviceList = studentDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
 
-		List<String> deviceList = studentDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
+			if (!deviceList.contains(deviceNum)) {
+				if (deviceList.size() >= Integer.parseInt(configValue)) {
+					throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
+				}
+
+				SysUserDevice sysUserDevice = new SysUserDevice();
+				sysUserDevice.setUserId(userId);
+				sysUserDevice.setDeviceNum(deviceNum);
+				sysUserDevice.setBindTime(new Date());
+				sysUserDevice.setClientId(clientId);
+				sysUserDevice.setTenantId(tenantId);
+				sysUserDeviceDao.insert(sysUserDevice);
+			}
+		} else {
+			// 查询设备号是否已存在
+			List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(null, deviceNum);
 
-		if (!deviceList.contains(deviceNum)) {
-			if (deviceList.size() >= Integer.parseInt(configValue)) {
-				throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
+			if (sysUserDeviceList == null) {
+				sysUserDeviceList = new ArrayList<SysUserDevice>();
 			}
+
+			sysUserDeviceList = sysUserDeviceList.stream().filter(sud -> !StringUtils.equals(sud.getClientId(), "STUDENT")).collect(Collectors.toList());
+
+			if (sysUserDeviceList != null && sysUserDeviceList.size() > 0) {
+				boolean isBinded = sysUserDeviceList.stream().filter(sud -> sud.getUserId().equals(userId)).count() > 0;
+				if (isBinded) {
+
+					return true;
+				}
+
+				if (sysUserDeviceList.size() >= Integer.parseInt(configValue)) {
+					throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
+				}
+			}
+
 			SysUserDevice sysUserDevice = new SysUserDevice();
 			sysUserDevice.setUserId(userId);
 			sysUserDevice.setDeviceNum(deviceNum);
@@ -72,7 +104,7 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 			sysUserDevice.setClientId(clientId);
 			sysUserDeviceDao.insert(sysUserDevice);
 		}
-
+		
 		return true;
 	}
 

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

@@ -11,6 +11,7 @@ import com.ym.mec.common.service.BaseService;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 
 public interface EmployeeService extends BaseService<Integer, Employee> {
 

+ 149 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3,7 +3,8 @@ package com.ym.mec.biz.service.impl;
 import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
 import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
 
 import java.lang.reflect.InvocationTargetException;
@@ -13,24 +14,26 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.TreeSet;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.event.source.SendSeoMessageSource;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.page.WrapperUtil;
-import com.ym.mec.common.tenant.TenantContextHolder;
-
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.codehaus.jackson.map.util.BeanUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -47,21 +50,148 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.ActivityUserMapperDao;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
+import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleModifyLogDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleReviewDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.CoursesGroupDao;
+import com.ym.mec.biz.dal.dao.CoursesGroupModifyLogDao;
+import com.ym.mec.biz.dal.dao.GroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
+import com.ym.mec.biz.dal.dao.PracticeGroupSellPriceDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.TeacherDefaultPracticeGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
+import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
+import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dao.VipGroupDao;
+import com.ym.mec.biz.dal.dto.BatchCourseAdjustDto;
+import com.ym.mec.biz.dal.dto.BatchInsertCoursesDto;
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
+import com.ym.mec.biz.dal.dto.CourseMergeDto;
+import com.ym.mec.biz.dal.dto.CoursePostponeDto;
+import com.ym.mec.biz.dal.dto.CourseRepeatCheckDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleEndDto;
+import com.ym.mec.biz.dal.dto.CourseSchedulePlanDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleRateDto;
+import com.ym.mec.biz.dal.dto.CourseTimeDto;
+import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
+import com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto;
+import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.PracticeCourseDto;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto;
+import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
+import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
+import com.ym.mec.biz.dal.dto.TeacherRemarkCommitDto;
+import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
+import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.dto.VipGroupCourseAdjustInfoDto;
+import com.ym.mec.biz.dal.entity.ActivityUserMapper;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.CourseGenerateDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.CourseScheduleAuditDetailDto;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
+import com.ym.mec.biz.dal.entity.CourseScheduleModifyLog;
+import com.ym.mec.biz.dal.entity.CourseScheduleReview;
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.CoursesGroup;
+import com.ym.mec.biz.dal.entity.CoursesGroupModifyLog;
+import com.ym.mec.biz.dal.entity.Group;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
+import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
+import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.entity.PracticeGroupSellPrice;
+import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.entity.TeacherAttendance;
+import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
+import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
+import com.ym.mec.biz.dal.entity.TenantConfig;
+import com.ym.mec.biz.dal.entity.TenantConfigDetail;
+import com.ym.mec.biz.dal.entity.VipGroup;
+import com.ym.mec.biz.dal.entity.VipGroupActivity;
+import com.ym.mec.biz.dal.entity.VipGroupCategory;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.ParamEnum;
+import com.ym.mec.biz.dal.enums.PracticeGroupType;
+import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.biz.event.source.CourseEventSource;
+import com.ym.mec.biz.event.source.SendSeoMessageSource;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
+import com.ym.mec.biz.service.CourseHomeworkService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.MusicGroupTrainPlanService;
+import com.ym.mec.biz.service.PracticeGroupService;
+import com.ym.mec.biz.service.StudentServeService;
+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.biz.service.TenantAssetsInfoService;
+import com.ym.mec.biz.service.TenantConfigService;
+import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImGroupMember;
-import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
+import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.im.ImFeignService;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.ListUtil;
 import com.ym.mec.util.collection.MapUtil;
@@ -1558,7 +1688,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 
-		Date startDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get().getStartClassTime();
+		/*Date startDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get().getStartClassTime();
 		Date endDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getEndClassTime)).get().getEndClassTime();
 		if(PRACTICE.equals(existCourses.get(0).getGroupType())){
 			PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(existCourses.get(0).getMusicGroupId()));
@@ -1570,7 +1700,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					throw new BizException("调整失败: 截止时间超过课程有效期");
 				}
 			}
-		}
+		}*/
 
 		checkNewCourseSchedules(existCourses, false,false);
 		courseScheduleDao.batchUpdate(existCourses);

+ 37 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -36,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
+import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -300,7 +301,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void level(List<EmployeeLevelDto> employeeLevelDtos) {
+	public void level(List<EmployeeLevelDto> employeeLevelDtos){
 		Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
 		List<ImGroupModel> educationGroupModels = new ArrayList<>();
 		//获取用户需要加入的群组列表
@@ -389,31 +390,45 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employeeDao.updateUserDemissionDate(levelUserId);
 		//冻结用户
 		employeeDao.updateUserLock(levelUserId,1);
-		//获取用户担任教务老师、维修技师的所有乐团列表
-		List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
-		//获取用户担任教务老师的所有网管课列表
-		List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
-		//获取用户担任教务老师的所有VIP课列表
-		List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
-		if(musicGroupIds.size() > 0){
-			for (String musicGroupId : musicGroupIds) {
-				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+		ExecutorService executor = Executors.newFixedThreadPool(20);
+		CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(()->{
+			//获取用户担任教务老师、维修技师的所有乐团列表
+			List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
+			//获取用户担任教务老师的所有网管课列表
+			List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
+			//获取用户担任教务老师的所有VIP课列表
+			List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
+			Boolean refreshFlag = false;
+			if(musicGroupIds.size() > 0){
+				for (String musicGroupId : musicGroupIds) {
+					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+				}
+				refreshFlag = true;
 			}
-		}
-		if(practiceGroupIds.size() > 0){
-			for (String musicGroupId : practiceGroupIds) {
-				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+			if(practiceGroupIds.size() > 0){
+				for (String musicGroupId : practiceGroupIds) {
+					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+				}
+				refreshFlag = true;
 			}
-		}
-		if(vipGroupIds.size() > 0){
-			for (String musicGroupId : vipGroupIds) {
-				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+			if(vipGroupIds.size() > 0){
+				for (String musicGroupId : vipGroupIds) {
+					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+				}
+				refreshFlag = true;
 			}
+			return refreshFlag;
+		},executor);
+		Boolean join = refreshUserFriend.join();
+		if(join){
+			refreshUserFriend.thenRun(()->{
+				//更新群成员数量
+				imGroupDao.updateMemberNum();
+				//删除重复的群成员
+				imGroupMemberService.delRepeat();
+			});
 		}
-		//更新群成员数量
-		imGroupDao.updateMemberNum();
-		//删除重复的群成员
-		imGroupMemberService.delRepeat();
+		executor.shutdown();
 	}
 
 	@Override

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

@@ -52,13 +52,13 @@ public class SysTenantConfigServiceImpl extends BaseServiceImpl<Integer, SysTena
 
 	@Override
 	public String getTenantConfigValue(String paramName,Integer tenantId) {
-		RBucket<ConcurrentHashMap<Integer,ConcurrentHashMap<String,String>>> bucket = redissonClient.getBucket(tenantKey);
-		ConcurrentHashMap<Integer, ConcurrentHashMap<String, String>> tenantConfigMap = bucket.get();
-		ConcurrentHashMap<String, String> map = tenantConfigMap.get(tenantId);
-		if(map != null){
-			return map.get(paramName);
-		}
-		applicationEventPublisher.publishEvent(new TenantConfigChangeEvent(this,tenantId));
+//		RBucket<ConcurrentHashMap<Integer,ConcurrentHashMap<String,String>>> bucket = redissonClient.getBucket(tenantKey);
+//		ConcurrentHashMap<Integer, ConcurrentHashMap<String, String>> tenantConfigMap = bucket.get();
+//		ConcurrentHashMap<String, String> map = tenantConfigMap.get(tenantId);
+//		if(map != null){
+//			return map.get(paramName);
+//		}
+//		applicationEventPublisher.publishEvent(new TenantConfigChangeEvent(this,tenantId));
 		return sysTenantConfigDao.getConfigValue(paramName,tenantId);
 	}
 

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -246,7 +246,7 @@
             LEFT JOIN sys_user_role sur ON sur.user_id_ = e.user_id_
         </if>
         <where>
-                su.del_flag_ = 0 and su.tenant_id_ = #{tenantId}
+            su.del_flag_ = 0 and su.tenant_id_ = #{tenantId}
             <if test="lockFlag != null">
                 AND su.lock_flag_ = #{lockFlag}
             </if>
@@ -282,7 +282,7 @@
             LEFT JOIN sys_user_role sur ON sur.user_id_ = e.user_id_
         </if>
         <where>
-            su.lock_flag_ = 0 AND su.del_flag_ = 0 and su.tenant_id_ = #{tenantId}
+            su.del_flag_ = 0 and su.tenant_id_ = #{tenantId}
             <if test="organId != null">
                 AND INTE_ARRAY(e.organ_id_list_,#{organId})
             </if>

+ 12 - 3
mec-biz/src/main/resources/config/mybatis/PracticeGroupSellPriceMapper.xml

@@ -69,7 +69,7 @@
 			<if test="twiceActivityPrice != null">
 				twice_activity_price = #{twiceActivityPrice},
 			</if>
-			update_time_=NOW
+			update_time_= NOW()
 		</set>
 		WHERE organ_id_ = #{organId} and tenant_id_ = #{tenantId}
 	</update>
@@ -83,12 +83,21 @@
 	<select id="queryPage" resultMap="PracticeGroupSellPrice" parameterType="map">
 		SELECT pgsp.*,o.name_ organ_name_ FROM practice_group_sell_price pgsp
 		LEFT JOIN organization o ON o.id_ = pgsp.organ_id_
-		WHERE pgsp.tenant_id_ = #{tenantId} ORDER BY pgsp.organ_id_
+		WHERE pgsp.tenant_id_ = #{tenantId}
+		<if test="search != null and search != ''">
+			AND o.name_ LIKE CONCAT('%',#{search},'%')
+		</if>
+		ORDER BY pgsp.organ_id_
 		<include refid="global.limit" />
 	</select>
 
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM practice_group_sell_price where tenant_id_ = #{tenantId}
+		SELECT COUNT(DISTINCT pgsp.organ_id_) FROM practice_group_sell_price pgsp
+		LEFT JOIN organization o ON o.id_ = pgsp.organ_id_
+		WHERE pgsp.tenant_id_ = #{tenantId}
+		<if test="search != null and search != ''">
+			AND o.name_ LIKE CONCAT('%',#{search},'%')
+		</if>
 	</select>
 </mapper>

+ 19 - 12
mec-web/src/main/java/com/ym/mec/web/controller/PracticeGroupSellPriceController.java

@@ -1,11 +1,13 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.PracticeGroupSellPrice;
+import com.ym.mec.biz.service.PracticeGroupSellPriceService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
-
-import java.util.Date;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -14,11 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.biz.dal.entity.PracticeGroupSellPrice;
-import com.ym.mec.biz.service.PracticeGroupSellPriceService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
+import java.util.Date;
 
 @RequestMapping("practiceGroupSellPrice")
 @Api(tags = "网管课价格配置")
@@ -26,9 +24,6 @@ import com.ym.mec.common.page.QueryInfo;
 public class PracticeGroupSellPriceController extends BaseController {
 
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
-
-	@Autowired
 	private PracticeGroupSellPriceService practiceGroupSellPriceService;
 
 	@ApiOperation("分页查询")
@@ -50,7 +45,10 @@ public class PracticeGroupSellPriceController extends BaseController {
 	@PostMapping(value = "/add", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('practiceGroupSellPrice/add')")
 	public Object add(PracticeGroupSellPrice practiceGroupSellPrice) {
-
+		PracticeGroupSellPrice practiceGroupSellPrice1 = practiceGroupSellPriceService.get(practiceGroupSellPrice.getOrganId());
+		if(practiceGroupSellPrice1 != null){
+			throw new BizException("数据已存在");
+		}
 		Date date = new Date();
 		practiceGroupSellPrice.setCreateTime(date);
 		practiceGroupSellPrice.setUpdateTime(date);
@@ -66,4 +64,13 @@ public class PracticeGroupSellPriceController extends BaseController {
 		practiceGroupSellPriceService.update(practiceGroupSellPrice);
 		return succeed();
 	}
+
+	@ApiOperation("删除")
+	@PostMapping(value = "/del")
+	@ApiImplicitParam(name = "organId", value = "分部编号", required = true, dataType = "Integer", paramType = "path")
+	@PreAuthorize("@pcs.hasPermissions('practiceGroupSellPrice/del')")
+	public Object del(Integer organId) {
+		practiceGroupSellPriceService.delete(organId);
+		return succeed();
+	}
 }