浏览代码

Merge remote-tracking branch 'origin/master'

Joburgess 5 年之前
父节点
当前提交
5898a5851b
共有 27 个文件被更改,包括 487 次插入175 次删除
  1. 10 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUserRole.java
  2. 52 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/PermissionCheckService.java
  3. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java
  5. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/JobTypeEnum.java
  6. 1 2
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentWithdrawService.java
  7. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  8. 58 42
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  10. 25 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java
  11. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java
  12. 7 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  13. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java
  14. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/security/PermissionCheckService.java
  15. 1 0
      mec-im/src/main/java/com/ym/service/Impl/HereWhiteServiceImpl.java
  16. 4 12
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  17. 46 15
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  18. 32 42
      mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  19. 4 15
      mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java
  20. 7 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java
  21. 13 1
      mec-thirdparty/pom.xml
  22. 79 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/RsqMsg.java
  23. 51 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayFeignService.java
  24. 0 21
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqQueryService.java
  25. 50 0
      mec-web/src/main/java/com/ym/mec/web/config/PermissionCheckService.java
  26. 0 5
      mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java
  27. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

+ 10 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUserRole.java

@@ -7,6 +7,16 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
  * 对应数据库表(sys_user_role):
  */
 public class SysUserRole {
+	//分部经理
+	public static Integer SECTION_MANAGER = 3;
+	//教务老师
+	public static Integer EDUCATIONAL_TEACHER = 4;
+	//运营主管
+	public static Integer OPERATION_EXECUTIVE = 5;
+	//招生主管
+	public static Integer ADMISSIONS_DIRECTOR = 6;
+	//教学主任
+	public static Integer DEAN_OF_STUDIES = 7;
 
 	/** 用户ID */
 	@ApiModelProperty(value = "用户ID",required = false)

+ 52 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/PermissionCheckService.java

@@ -0,0 +1,52 @@
+package com.ym.mec.auth.config;
+
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
+
+@Component("pcs")
+public class PermissionCheckService {
+
+	@Autowired
+	private SysUserService sysUserService;
+
+	public boolean hasPermissions(String... permissions) {
+		Authentication authentication = SecurityUtils.getAuthentication();
+		if (authentication == null) {
+			return false;
+		}
+
+		AuthUser authUser = SecurityUtils.getUser();
+		SysUser user = sysUserService.get(authUser.getUserId());
+		if (user.getIsSuperAdmin()) {
+			return true;
+		}
+
+		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
+
+		for (String perm : permissions) {
+			for (GrantedAuthority authority : authorities) {
+				if (StringUtils.equalsIgnoreCase(perm, authority.getAuthority())) {
+					return true;
+				}
+			}
+		}
+
+		return false;
+	}
+
+	public boolean hasRoles(String... roles) {
+
+		return hasPermissions(roles);
+	}
+
+}

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

@@ -59,13 +59,13 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	
 	/**
 	 * 批量更新指定老师所教学班级的报酬(课酬、补贴)
-	 * @param classGrpupId 班级编号
+	 * @param classGroupId 班级编号
 	 * @param userId 老师编号
 	 * @param salary 课酬
 	 * @param subsidy 补贴
 	 * @return
 	 */
-	int batchUpdateWages(@Param("classGrpupId") Integer classGrpupId, @Param("userId") Integer userId, @Param("salary") BigDecimal salary,
+	int batchUpdateWages(@Param("classGroupId") Integer classGroupId, @Param("userId") Integer userId, @Param("salary") BigDecimal salary,
 			@Param("subsidy") BigDecimal subsidy);
 
 	/**

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.entity.MusicGroup;
@@ -133,4 +134,11 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return
      */
     List<Map<Integer,String>> queryTeacherMap(String musicGroupId);
+
+    /**
+     * 根据角色编号获取有权限的用户列表
+     * @param roleIds
+     * @return
+     */
+    Set<Integer> queryUserIdByRoleId(@Param("roleIds") Set<Integer> roleIds);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/JobTypeEnum.java

@@ -4,7 +4,8 @@ import com.ym.mec.common.enums.BaseEnum;
 
 //职务类型(指导老师、教务老师、教学主管)
 public enum JobTypeEnum implements BaseEnum<String, JobTypeEnum> {
-	ADVISER("ADVISER", "指导老师"), ACADEMIC("ACADEMIC", "教务老师"), TEACHING("TEACHING", "教学主管"), ASSISTANT("ASSISTANT", "助教");
+	ADVISER("ADVISER", "指导老师"), ACADEMIC("ACADEMIC", "教务老师"),
+	TEACHING("TEACHING", "教学主管"), ASSISTANT("ASSISTANT", "助教");
 
 	private String code;
 

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

@@ -32,9 +32,8 @@ public interface StudentWithdrawService extends BaseService<Integer, StudentWith
 
 	/**
 	 *  新增提现记录
-	 * @param userId
 	 * @param bankCardNo
 	 * @param amount
 	 */
-	void apply(Integer userId, String bankCardNo, BigDecimal amount) throws Exception;
+	void apply(String bankCardNo, BigDecimal amount) throws Exception;
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 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.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
@@ -68,6 +69,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private ClassGroupDao classGroupDao;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private MusicGroupDao musicGroupDao;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -464,6 +467,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(oldCourseScheduleList.size()!=newCourseSchedules.size()){
 			throw new BizException("课程信息错误");
 		}
+		Integer courseScheduleId = null;
 
 		Date now=new Date();
 		//明天日期
@@ -574,6 +578,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT,
 					map,null,0,"","");
 		}
+//		Set<Integer> roleIds = new HashSet<>(1);
+//		roleIds.add(SysUserRole.SECTION_MANAGER);
+//		classGroupDao.get();
+//		sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_COURSE_CHANGE,
+//				teacher.getRealName());
 	}
 
 	@Transactional(rollbackFor = Exception.class)
@@ -755,6 +764,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		courseScheduleComplaints.setUserId(user.getId());
 		courseScheduleComplaints.setStatus(AuditStatusEnum.ING);
 		courseScheduleComplaintsDao.insert(courseScheduleComplaints);
+		//学员提起申诉通知
+		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleComplaints.getCourseScheduleId());
+		Set<Integer> roleIds = new HashSet<>(1);
+		roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+		sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_STUDENT_APPEAL,courseSchedule.getName(),user.getUsername());
 	}
 
 	@Override

+ 58 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -11,6 +11,9 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,51 +23,13 @@ import org.springframework.transaction.annotation.Transactional;
 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.biz.dal.dao.ChargeTypeDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
-import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 import com.ym.mec.biz.dal.dto.MusicCardDto;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
 import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
-import com.ym.mec.biz.dal.entity.ApprovalStatus;
-import com.ym.mec.biz.dal.entity.ChargeType;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
-import com.ym.mec.biz.dal.entity.MusicGroupQuit;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
@@ -139,9 +104,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private MusicGroupQuitDao musicGroupQuitDao;
 
-//    @Autowired
-//    private StudentRegistrationService studentRegistrationService;
-
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
 
@@ -149,6 +111,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private CourseScheduleDao courseScheduleDao;
 
     @Autowired
+    private ClassGroupDao classGroupDao;
+
+    @Autowired
     private OrganizationDao organizationDao;
 
     @Autowired
@@ -201,6 +166,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         // 保存乐团基本信息
         musicGroupDao.insert(musicGroup);
+        if(musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT){
+            Set<Integer> roleIds = new HashSet<>(1);
+            roleIds.add(SysUserRole.SECTION_MANAGER);
+            sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_APPLY);
+        }
         // 保存乐团付费主体列表
         //批量新增
         if(subFeeSettingDto.getMusicGroupPaymentEntities() != null && subFeeSettingDto.getMusicGroupPaymentEntities().size() > 0){
@@ -320,6 +290,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         Map<Integer,String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(musicGroupDao.queryTeacherMap(musicGroupId))),HashMap.class);
         sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.TEACHER_PUSH_MUSIC_GROUP_COURSE_ADD_PLAN,
                 map,null,0,musicGroup.getName());
+        Set<Integer> roleIds = new HashSet<>(5);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        roleIds.add(SysUserRole.ADMISSIONS_DIRECTOR);
+        roleIds.add(SysUserRole.DEAN_OF_STUDIES);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_ACTION_GROUP,musicGroup.getName());
     }
 
     private MusicGroup saveLog(String musicGroupId,MusicGroupStatusEnum statusEnum) throws Exception {
@@ -336,6 +313,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void musicGroupAudit(String musicGroupId) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
@@ -346,9 +324,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"提交审核(草稿 -> 审核中)",sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
         musicGroupDao.update(musicGroup);
+        Set<Integer> roleIds = new HashSet<>(1);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_APPLY);
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void musicGroupAuditFailed(String musicGroupId,String memo) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
@@ -363,6 +345,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void musicGroupAuditSuccess(String musicGroupId) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
@@ -373,6 +356,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"审核失败(审核中 -> 报名中)",sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.APPLY);
         musicGroupDao.update(musicGroup);
+        Set<Integer> roleIds = new HashSet<>(3);
+        roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        roleIds.add(SysUserRole.ADMISSIONS_DIRECTOR);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_ACTION_APPLY,musicGroup.getName());
     }
 
     @Override
@@ -448,10 +436,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 map.put(e.getUserId(),e.getParentsPhone());
             });
             sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.STUDENT_PUSH_MUSIC_GROUP_CLOSE,
-                    map,null,0,"",sysConfigDao.findConfigValue(SysConfigService.REFUND_PERIOD));
+                    map,null,0,"",musicGroup.getName(),sysConfigDao.findConfigValue(SysConfigService.REFUND_PERIOD));
         }
         //记录建团日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"取消乐团",sysUser.getId(),""));
+        Set<Integer> roleIds = new HashSet<>(2);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_STOP,musicGroup.getName());
         return true;
     }
 
@@ -532,6 +524,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroup.setUpdateTime(date);
         musicGroupDao.update(musicGroup);
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"延长缴费",sysUser.getId(),""));
+        Set<Integer> roleIds = new HashSet<>(4);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        roleIds.add(SysUserRole.ADMISSIONS_DIRECTOR);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_LENGTHEN_PAYMENT,musicGroup.getName());
         return true;
     }
 
@@ -551,6 +549,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
 
         musicGroupQuitDao.insert(musicGroupQuit);
+        Set<Integer> roleIds = new HashSet<>(1);
+        roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_GROUP,sysUser.getUsername());
         return true;
     }
 
@@ -809,6 +810,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             courseScheduleTeacherSalary.setUpdateTime(new Date());
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         }
+        Teacher teacher = teacherDao.get(teacherId);
+        MusicGroup musicGroup = musicGroupDao.get(classGroupDao.findByCourseSchedule(courseScheduleId.intValue()).getMusicGroupId());
+        Set<Integer> roleIds = new HashSet<>(1);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_TEACHER_AMOUNT_CHANGE,
+                teacher.getRealName(),musicGroup.getName(),scope.equals("all")?"所有":"本次");
         return true;
     }
 
@@ -958,6 +965,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public MusicGroup openPay(String musicGroupId, String expireDate) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null){
@@ -978,6 +986,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE,
                     map,null,0,"",musicGroup.getName(),studentApplyUrl,serverPhone);
         }
+        Set<Integer> roleIds = new HashSet<>(3);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_ACTION_PAYMENT,musicGroup.getName());
         return musicGroup;
     }
 
@@ -1043,5 +1056,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			String content = sysMessageConfigDao.findContent(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
 			sysMessageService.batchSendMessage(MessageSender.YIMEI, "", content, userIds, new Date(), 0, "", "");
 		}
+        Set<Integer> roleIds = new HashSet<>(1);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_MARKING,musicGroup.getName());
     }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.entity.SysUserRole;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.UserLockFlag;
 import com.ym.mec.biz.dal.dao.*;
@@ -111,6 +112,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 //        int i = studentRegistrationDao.batchUpdateSubject(userId, subId, musicGroupId);
         //修改专业已报名人数
 //        musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId,subId,1);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        Set<Integer> roleIds = new HashSet<>(2);
+        roleIds.add(SysUserRole.SECTION_MANAGER);
+        roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+        sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_STUDENT_SUBJECT_CHANGE,musicGroup.getName());
         return studentRegistrationDao.batchUpdateSubject(userId, subId, musicGroupId);
     }
 
@@ -427,6 +433,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             //学生报名表
             studentRegistrationDao.insertBasic(studentRegistration);
+            MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
+            Set<Integer> roleIds = new HashSet<>(1);
+            roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
+            sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT,musicGroup.getName(),studentRegistration.getName());
             //增加报名学生数
 //            musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(),1);
             if (studentRegistration.getClassGroupId() != null) {

+ 25 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentWithdrawServiceImpl.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-
+import java.util.*;
+
+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.MusicGroupDao;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.service.SysMessageService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -20,10 +24,6 @@ import com.ym.mec.biz.dal.dto.WithdrawInfoDto;
 import com.ym.mec.biz.dal.entity.StudentWithdraw;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
-import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.biz.service.StudentWithdrawService;
 import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 import com.ym.mec.biz.service.SysUserCashAccountService;
@@ -41,6 +41,9 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, Student
 	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
 
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
 	@Override
 	public BaseDAO<Integer, StudentWithdraw> getDAO() {
 		return studentWithdrawDao;
@@ -54,6 +57,10 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, Student
 	private SysUserCashAccountDetailService cashAccountDetailService;
 	@Autowired
 	private SysUserCashAccountDetailService accountDetailService;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private MusicGroupDao musicGroupDao;
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -141,8 +148,12 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, Student
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void apply(Integer userId, String bankCardNo, BigDecimal amount) throws Exception {
-		SysUserCashAccount account = sysUserCashAccountDao.getLocked(userId);
+	public void apply(String bankCardNo, BigDecimal amount) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null || sysUser.getId() == null) {
+			throw new BizException("获取用户信息失败");
+		}
+		SysUserCashAccount account = sysUserCashAccountDao.getLocked(sysUser.getId());
 		// 账户状态正常
 		if (account != null && account.getStatus() == PlatformCashAccountStatusEnum.NORMAL) {
 			// 提现金额不大于账户可用余额
@@ -155,7 +166,7 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, Student
 				withdraw.setCreateTime(date);
 				withdraw.setModifyTime(date);
 				withdraw.setStatus(DealStatusEnum.ING);
-				withdraw.setUserId(userId);
+				withdraw.setUserId(sysUser.getId());
 				withdraw.setWithdrawNo(System.currentTimeMillis() + "");
 
 				// 修改账户余额
@@ -176,6 +187,9 @@ public class StudentWithdrawServiceImpl extends BaseServiceImpl<Integer, Student
 				cashAccountDetail.setCreateTime(date);
 				cashAccountDetail.setStatus(DealStatusEnum.ING);
 				cashAccountDetailService.insert(cashAccountDetail);
+				Set<Integer> roleIds = new HashSet<>(1);
+				roleIds.add(SysUserRole.SECTION_MANAGER);
+				sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds), MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_WITHDRAW,sysUser.getUsername());
 			} else {
 				throw new Exception("账户余额不足");
 			}

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dao.TeacherLeaveRecordDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
@@ -34,6 +36,8 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 	private TeacherLeaveRecordDao teacherLeaveRecordDao;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private MusicGroupDao musicGroupDao;
 
 	@Autowired
 	private CourseScheduleService courseScheduleService;
@@ -79,8 +83,11 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 				checkCourseSchedulePlansExitLeaveRecord(list);
 			}
 		}
-
 		teacherLeaveRecordDao.insert(teacherLeaveRecord);
+		Set<Integer> roleIds = new HashSet<>(1);
+		Teacher teacher = teacherDao.get(userId);
+		roleIds.add(SysUserRole.DEAN_OF_STUDIES);
+		sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds),MessageTypeEnum.EDUCATION_PUSH_TEACHER_LEAVE_APPLY,teacher.getRealName());
 		return true;
 	}
 

+ 7 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -143,7 +143,7 @@
 	<select id="queryPage" resultMap="MusicGroup" parameterType="map">
 		SELECT * FROM music_group
 		<include refid="musicGroupQueryPageSql"/>
-		ORDER BY update_time_ DESC
+		ORDER BY create_time_ DESC
 		<include refid="global.limit" />
 	</select>
 
@@ -335,4 +335,10 @@
 		WHERE cgtm.music_group_id_ = #{musicGroupId} AND su.phone_ IS NOT NULL
 		GROUP BY su.id_
 	</select>
+	<select id="queryUserIdByRoleId" resultType="java.lang.Integer" parameterType="list">
+		SELECT DISTINCT sur.user_id_ FROM sys_user_role sur WHERE sur.role_id_ IN
+		<foreach collection="roleIds" open="(" separator="," close=")" item="item">
+			#{item}
+		</foreach>
+	</select>
 </mapper>

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/config/FeignConfiguration.java

@@ -14,7 +14,7 @@ public class FeignConfiguration {
 		// 这里记录所有,根据实际情况选择合适的日志level
 		return Logger.Level.FULL;
 	}
-	
+
 	@Bean
 	public RequestInterceptor requestInterceptor(){
 		return new RequestHeaderConfiguration();

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/security/PermissionCheckService.java

@@ -7,7 +7,7 @@ import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.stereotype.Component;
 
-@Component("pcs")
+//@Component("pcs")
 public class PermissionCheckService {
 
 	public boolean hasPermissions(String... permissions) {

+ 1 - 0
mec-im/src/main/java/com/ym/service/Impl/HereWhiteServiceImpl.java

@@ -2,6 +2,7 @@ package com.ym.service.Impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ym.dao.HereWhiteDao;
+import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.pojo.HereWhite;
 import com.ym.service.HereWhiteService;

+ 4 - 12
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -89,15 +89,15 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
 
         log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={}", roomId, userName, isAudience, isDisableCamera);
-        roomId = "DAYA" + roomId;
+
         String userId = sysUserFeignService.queryUserInfo().getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         if(teacher == null){
-            studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL);
+            studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL);
         }else {
-            teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(4)),Integer.parseInt(userId), SignStatusEnum.SIGN_IN,true);
+            teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), SignStatusEnum.SIGN_IN,true);
         }
-
+        roomId = "DAYA" + roomId;
         String display = "";
         Date curTime = DateTimeUtils.currentUTC();
         List<Room> roomList = roomDao.findByRid(roomId);
@@ -195,14 +195,6 @@ public class RoomServiceImpl implements RoomService {
         userResult.setRole(roleEnum.getValue());
         roomResult.setUserInfo(userResult);
         roomResult.setDisplay(display);
-//        JwtToken jwtToken = tokenHelper.createJwtToken(jwtUser);
-//        IMTokenInfo tokenInfo = imHelper.getToken(userId, userId, "");
-//        if (tokenInfo.isSuccess()) {
-//            roomResult.setImToken(tokenInfo.getAuthenticationValue());
-//        } else {
-//            throw new ApiException(ErrorEnum.ERR_IM_TOKEN_ERROR, tokenInfo.getErrorMessage());
-//        }
-//        roomResult.setAuthorization(jwtToken.getToken());
         roomResult.setRoomId(roomId);
         List<RoomMember> roomMemberList = roomMemberDao.findByRid(roomId);
         roomResult.setMembers(roomMemberList);

+ 46 - 15
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -12,20 +12,18 @@ import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.thirdparty.adapay.Pay;
-import com.ym.mec.thirdparty.union.NotifyMsg;
 import com.ym.mec.thirdparty.yqpay.Msg;
 import com.ym.mec.thirdparty.yqpay.YqPayUtil;
-import com.ym.mec.thirdparty.yqpay.YqQueryService;
+import com.ym.mec.thirdparty.yqpay.YqPayFeignService;
+import com.ym.mec.thirdparty.yqpay.RsqMsg;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.snaker.engine.core.OrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
@@ -47,7 +45,7 @@ public class StudentOrderController extends BaseController {
     @Autowired
     private MusicGroupService musicGroupService;
     @Autowired
-    private YqQueryService yqQueryService;
+    private YqPayFeignService yqQueryService;
 
 //    @PostMapping("/notify")
 //    public String notify(@ModelAttribute NotifyMsg notifyMsg) {
@@ -103,7 +101,7 @@ public class StudentOrderController extends BaseController {
         msg.setMsg("fail");
         Map<String, String> notifyMap = new HashMap<>();
         //if (rs) {
-            notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
+        notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
         //}
         //支付中订单存在,更新状态
         if (msg.getResponseType().equals("1") && notifyMap.size() > 0) {
@@ -134,8 +132,8 @@ public class StudentOrderController extends BaseController {
 
     @ApiOperation(value = "台牌支付")
     @PostMapping("/executePayment")
-    public Object executePayment(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign) throws Exception {
-        String payChannel = PayChannelEnum.ALIPAY_QR.getCode();
+    public Object executePayment(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String payChannel, String sign) throws Exception {
+        payChannel = PayChannelEnum.ALIPAY_QR.getCode();
 //        if (!new Pay().verifySign(amount, orderNo, notifyUrl, orderSubject, orderBody,sign)) {
 //            return failed("签名验证失败");
 //        }
@@ -148,7 +146,7 @@ public class StudentOrderController extends BaseController {
     }
 
 
-    //@Scheduled(cron = "0/5 * * * * ?")
+    @Scheduled(cron = "0/5 * * * * ?")
     public void getOrderStatus() throws Exception {
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");
         String merOrderNos = ""; //
@@ -168,10 +166,13 @@ public class StudentOrderController extends BaseController {
         Map<String, Object> resultMap = new LinkedHashMap<>();
         resultMap.put("merOrderNoList", merOrderNos);
         Map<String, Object> requestMap = YqPayUtil.getRequestMap(notifyUrl, resultMap);
-        Msg queryRs = yqQueryService.orderQuery(requestMap);
-        // = yqQueryService.orderQuery(requestMap);
-       logger.info("查询易乾结果" +queryRs.toString());
-       //logger.info("查询易乾结果" + queryRs.toString());
+
+        RsqMsg rsqMsg = new RsqMsg(requestMap);
+
+        Msg queryRs = yqQueryService.orderQuery(rsqMsg);
+
+        logger.info("查询易乾结果" + queryRs.toString());
+        //logger.info("查询易乾结果" + queryRs.toString());
         if (queryRs.getCode().equals("88")) {
             //更新订单状态
             String[] statusArr = {"0", "1", "7"};
@@ -199,7 +200,7 @@ public class StudentOrderController extends BaseController {
 
         if (status.equals(DealStatusEnum.SUCCESS)) {
             order.setPayTime(new Date());
-        }else {
+        } else {
             order.setMemo(rpMap.get("remarks"));
         }
         order.setStatus(status);
@@ -225,7 +226,7 @@ public class StudentOrderController extends BaseController {
         beforeTime.add(Calendar.MINUTE, -30);// 30分钟之前的时间
         Date beforeDate = beforeTime.getTime();
 
-        List<StudentPaymentOrder> ordersOverTime = studentPaymentOrderService.findOrdersOverTime(orderNoList,DealStatusEnum.ING,beforeDate);
+        List<StudentPaymentOrder> ordersOverTime = studentPaymentOrderService.findOrdersOverTime(orderNoList, DealStatusEnum.ING, beforeDate);
         for (StudentPaymentOrder order : ordersOverTime) {
             order.setStatus(DealStatusEnum.FAilED);
             order.setMemo("超时未支付关闭");
@@ -240,5 +241,35 @@ public class StudentOrderController extends BaseController {
 
     }
 
+    @Scheduled(cron = "0/5 * * * * ?")
+    public void adaPayQuery() throws Exception {
+        List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "ADAPAY");
+
+        List<String> orderNoList = new ArrayList<String>();
+
+        for (StudentPaymentOrder payingOrder : payingOrders) {
+            if (payingOrder.getTransNo() == null) {
+                orderNoList.add(payingOrder.getOrderNo());
+                continue;
+            }
+            Payment payment = new Pay().queryPayment(payingOrder.getTransNo());
+            Map<String, String> rpMap = new HashMap<>();
+            rpMap.put("merOrderNo", payingOrder.getOrderNo());
+            rpMap.put("remarks", payment.getReason());
+            rpMap.put("orderNo", payment.getId());
+            rpMap.put("channelType", payment.getPayChannel());
+            if (payment.getStatus().equals("succeeded")) {
+                rpMap.put("tradeState", "1");
+            }
+            if (payment.getStatus().equals("failed")) {
+                rpMap.put("tradeState", "0");
+            }
+            if (payment.getStatus().equals("pending")) {
+                orderNoList.add(payingOrder.getOrderNo());
+            }
+        }
+        closeOrders(orderNoList);
+    }
+
 
 }

+ 32 - 42
mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -78,51 +79,40 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId()));
-	}
-
-	/*@ApiOperation(value = "发送短信验证码")
-	@PostMapping("/sendSmsCode")
-	public Object sendSmsCode(String sendCodeType, String mobileNo) {
-
-		SysUser sysUser;
+		Map<String, Integer> map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId());
 
-		if (StringUtils.isBlank(mobileNo)) {
-			sysUser = sysUserFeignService.queryUserInfo();
-		} else {
-			sysUser = sysUserFeignService.queryUserByMobile(mobileNo);
-		}
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
+		if (map == null || map.size() == 0) {
+			return succeed();
 		}
-		Integer userId = sysUser.getId();
-
-		mobileNo = sysUser.getPhone();
+		return succeed(map);
+	}
 
-		MessageType messageType = MessageType.getMessageType(sendCodeType);
-		if (messageType == null) {
-			throw new BizException("消息类型参数错误");
-		}
-		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
-			throw new BizException("请输入正确的手机号");
-		}
-		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
-		return succeed();
-	}*/
-
-	/*@ApiOperation(value = "发送短信验证码")
-	@PostMapping("/noAuth/sendSmsCode")
-	public Object noAuthSendSmsCode(String sendCodeType, String mobileNo) {
-		MessageType messageType = MessageType.getMessageType(sendCodeType);
-		if (messageType == null) {
-			throw new BizException("消息类型参数错误");
-		}
-		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
-			throw new BizException("请输入正确的手机号");
-		}
-//		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
-		return succeed();
-	}*/
+	/*
+	 * @ApiOperation(value = "发送短信验证码")
+	 * 
+	 * @PostMapping("/sendSmsCode") public Object sendSmsCode(String sendCodeType, String mobileNo) {
+	 * 
+	 * SysUser sysUser;
+	 * 
+	 * if (StringUtils.isBlank(mobileNo)) { sysUser = sysUserFeignService.queryUserInfo(); } else { sysUser =
+	 * sysUserFeignService.queryUserByMobile(mobileNo); } if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } Integer userId =
+	 * sysUser.getId();
+	 * 
+	 * mobileNo = sysUser.getPhone();
+	 * 
+	 * MessageType messageType = MessageType.getMessageType(sendCodeType); if (messageType == null) { throw new BizException("消息类型参数错误"); } if
+	 * (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) { throw new BizException("请输入正确的手机号"); }
+	 * sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo); return succeed(); }
+	 */
+
+	/*
+	 * @ApiOperation(value = "发送短信验证码")
+	 * 
+	 * @PostMapping("/noAuth/sendSmsCode") public Object noAuthSendSmsCode(String sendCodeType, String mobileNo) { MessageType messageType =
+	 * MessageType.getMessageType(sendCodeType); if (messageType == null) { throw new BizException("消息类型参数错误"); } if (StringUtils.isBlank(mobileNo) ||
+	 * !CommonValidator.isMobileNo(mobileNo)) { throw new BizException("请输入正确的手机号"); } // sysMessageService.sendSecurityCode(MessageSender.YIMEI,
+	 * userId, MessageSendMode.SMS, messageType, mobileNo); return succeed(); }
+	 */
 
 	@ApiOperation(value = "发送消息")
 	@PostMapping("/sendMessage")

+ 4 - 15
mec-student/src/main/java/com/ym/mec/student/controller/WithdrawController.java

@@ -1,19 +1,15 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.service.StudentWithdrawService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
-import java.math.BigDecimal;
-
 import org.springframework.beans.factory.annotation.Autowired;
 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.auth.api.entity.SysUser;
-import com.ym.mec.biz.service.StudentWithdrawService;
-import com.ym.mec.common.controller.BaseController;
+import java.math.BigDecimal;
 
 @RestController
 @RequestMapping("studentWithdraw")
@@ -22,18 +18,11 @@ public class WithdrawController extends BaseController {
 
 	@Autowired
 	private StudentWithdrawService studentWithdrawService;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation(value = "新增提现申请")
 	@PostMapping("/add")
 	public Object add(String bankCardNo, BigDecimal amount) throws Exception {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null || sysUser.getId() == null) {
-			return failed("获取用户信息失败");
-		}
-		studentWithdrawService.apply(sysUser.getId(), bankCardNo, amount);
-		
+		studentWithdrawService.apply(bankCardNo, amount);
 		return succeed();
 	}
 }

+ 7 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/SysMessageController.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -78,7 +79,12 @@ public class SysMessageController extends BaseController {
 		if (sysUser == null) {
 			return failed("请重新登录");
 		}
-		return succeed(sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId()));
+		Map<String, Integer> map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId());
+
+		if (map == null || map.size() == 0) {
+			return succeed();
+		}
+		return succeed(map);
 	}
 /*
 	@ApiOperation(value = "发送短信验证码")

+ 13 - 1
mec-thirdparty/pom.xml

@@ -84,6 +84,18 @@
 			<groupId>org.springframework.cloud</groupId>
 			<artifactId>spring-cloud-starter-openfeign</artifactId>
 		</dependency>
-    </dependencies>
+		<!-- https://mvnrepository.com/artifact/io.github.openfeign.form/feign-form-spring -->
+		<dependency>
+			<groupId>io.github.openfeign.form</groupId>
+			<artifactId>feign-form-spring</artifactId>
+			<version>2.0.5</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/io.github.openfeign.form/feign-form-spring -->
+		<dependency>
+			<groupId>io.github.openfeign.form</groupId>
+			<artifactId>feign-form-spring</artifactId>
+			<version>2.0.5</version>
+		</dependency>
+	</dependencies>
 
 </project>

+ 79 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/RsqMsg.java

@@ -0,0 +1,79 @@
+package com.ym.mec.thirdparty.yqpay;
+
+import java.util.Map;
+
+public class RsqMsg {
+    private String merNo;
+    private String version;
+    private String notifyUrl;
+    private String timestamp;
+    private String apiContent;
+    private String signType;
+    private String sign;
+
+    public RsqMsg(Map<String, Object> payMap) {
+        merNo = (String) payMap.get("merNo");
+        version = (String) payMap.get("version");
+        notifyUrl = (String) payMap.get("notifyUrl");
+        timestamp = (String) payMap.get("timestamp");
+        apiContent = (String) payMap.get("apiContent");
+        signType = (String) payMap.get("signType");
+        sign = (String) payMap.get("sign");
+    }
+
+    public String getMerNo() {
+        return merNo;
+    }
+
+    public void setMerNo(String merNo) {
+        this.merNo = merNo;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getNotifyUrl() {
+        return notifyUrl;
+    }
+
+    public void setNotifyUrl(String notifyUrl) {
+        this.notifyUrl = notifyUrl;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    public String getApiContent() {
+        return apiContent;
+    }
+
+    public void setApiContent(String apiContent) {
+        this.apiContent = apiContent;
+    }
+
+    public String getSignType() {
+        return signType;
+    }
+
+    public void setSignType(String signType) {
+        this.signType = signType;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+}

+ 51 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayFeignService.java

@@ -0,0 +1,51 @@
+package com.ym.mec.thirdparty.yqpay;
+
+import feign.Logger;
+import feign.codec.Encoder;
+import feign.form.spring.SpringFormEncoder;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.support.SpringEncoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+
+import java.util.Map;
+
+@FeignClient(value = "YqPayFeignService",url = "https://qyfquery.95epay.com",configuration = YqPayFeignService.FormSupportConfig.class)
+public interface YqPayFeignService {
+
+    @PostMapping(name = "订单查询", value = "/query/trade/tradeQuery",
+            consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE},
+            produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}
+    )
+    Msg orderQuery(RsqMsg rsqMsg);
+
+    @RequestMapping(name = "用户信息查询", value = "/query/account/queryAccount", method = RequestMethod.POST)
+    String queryAccount(@RequestParam Map<String, Object> map);
+
+    @RequestMapping(name = "对账查询", value = "/query/bill/billQuery", method = RequestMethod.POST)
+    String billQuery(@RequestParam Map<String, Object> map);
+
+
+    class FormSupportConfig {
+
+
+        @Autowired
+        private ObjectFactory<HttpMessageConverters> messageConverters;
+        // new一个form编码器,实现支持form表单提交
+        @Bean
+        public Encoder feignFormEncoder() {
+            return new SpringFormEncoder(new SpringEncoder(messageConverters));
+        }
+        // 开启Feign的日志
+        @Bean
+        public Logger.Level logger() {
+            return Logger.Level.FULL;
+        }
+    }
+
+    }

+ 0 - 21
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqQueryService.java

@@ -1,21 +0,0 @@
-package com.ym.mec.thirdparty.yqpay;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.Map;
-
-@FeignClient(value = "yqQuery", url = "https://qyfquery.95epay.com")
-public interface YqQueryService {
-
-    @RequestMapping(name = "订单查询", value = "/query/trade/tradeQuery", method = RequestMethod.POST)
-    Msg orderQuery(@RequestParam Map<String, Object> map);
-
-    @RequestMapping(name = "用户信息查询", value = "/query/account/queryAccount", method = RequestMethod.POST)
-    String queryAccount(@RequestParam Map<String, Object> map);
-
-    @RequestMapping(name = "对账查询", value = "/query/bill/billQuery", method = RequestMethod.POST)
-    String billQuery(@RequestParam Map<String, Object> map);
-}

+ 50 - 0
mec-web/src/main/java/com/ym/mec/web/config/PermissionCheckService.java

@@ -0,0 +1,50 @@
+package com.ym.mec.web.config;
+
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.common.security.SecurityUtils;
+
+@Component("pcs")
+public class PermissionCheckService {
+	
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	public boolean hasPermissions(String... permissions) {
+		Authentication authentication = SecurityUtils.getAuthentication();
+		if (authentication == null) {
+			return false;
+		}
+
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if(user.getIsSuperAdmin()){
+			return true;
+		}
+
+		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
+
+		for (String perm : permissions) {
+			for (GrantedAuthority authority : authorities) {
+				if (StringUtils.equalsIgnoreCase(perm, authority.getAuthority())) {
+					return true;
+				}
+			}
+		}
+
+		return false;
+	}
+
+	public boolean hasRoles(String... roles) {
+
+		return hasPermissions(roles);
+	}
+
+}

+ 0 - 5
mec-web/src/main/java/com/ym/mec/web/controller/IndexController.java

@@ -7,7 +7,6 @@ import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.security.core.Authentication;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -95,8 +94,4 @@ public class IndexController extends BaseController {
 		return succeed(model);
 	}
 
-	@GetMapping(value = "/username")
-    public Object currentUserName(Authentication authentication) {
-        return succeed(authentication);
-    }
 }

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -47,7 +47,7 @@ public class StudentRegistrationController extends BaseController {
     @ApiOperation(value = "调剂学生报名专业")
     @PostMapping("/batchUpdateSubject")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/batchUpdateSubject')")
-    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "学生编号(多个逗号)", required = true, dataType = "Integer"),
+    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "学生编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "subId", value = "声部编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "Integer")})
     public Object batchUpdateSubject(Integer userId,Integer subId,String musicGroupId) throws Exception {