Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
f7ab8ccbea
51 changed files with 1395 additions and 169 deletions
  1. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OrganizationDao.java
  2. 18 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  3. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupCategoryDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherLeaveRecordDto.java
  5. 19 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java
  6. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleComplaints.java
  7. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java
  8. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherLeaveRecord.java
  9. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java
  10. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  11. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java
  12. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherQueryInfo.java
  13. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  15. 0 1
      mec-biz/src/main/java/com/ym/mec/biz/service/EmployeeService.java
  16. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/OrganizationService.java
  17. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupCategoryService.java
  18. 62 31
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  19. 12 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  20. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrganizationServiceImpl.java
  21. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  22. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRechargeServiceImpl.java
  23. 15 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  24. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupCategoryServiceImpl.java
  25. 2 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  26. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  27. 9 0
      mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml
  28. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  29. 4 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  30. 11 2
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  31. 4 1
      mec-biz/src/main/resources/config/mybatis/TeacherLeaveRecordMapper.xml
  32. 2 1
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  33. 1 1
      mec-biz/src/main/resources/config/mybatis/VipGroupCategoryMapper.xml
  34. 2 2
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  35. 25 1
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  36. 6 0
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java
  37. 117 6
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  38. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupCategoryController.java
  39. 56 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/NotifyEvent.java
  40. 46 39
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Pay.java
  41. 634 0
      mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java
  42. 53 12
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  43. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java
  44. 15 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java
  45. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java
  46. 16 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  47. 20 5
      mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java
  48. 14 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  49. 27 4
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherLeaveRecordController.java
  50. 18 3
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupCategoryController.java
  51. 47 13
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

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

@@ -22,4 +22,11 @@ public interface OrganizationDao extends BaseDAO<Integer, Organization> {
      * @return
      */
     List<String> findByOrganIds(String organIds);
+
+    /**
+     *
+     * @param userId
+     * @return
+     */
+    List<Organization> queryEmployeeOrgan(Integer userId);
 }

+ 18 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.auth.api.entity.SysUser;
@@ -64,7 +65,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param musicGroupId
      * @return
      */
-     List<MusicGroupSubjectPlan> getNoClassStuCountByMusicGroupId(@Param("musicGroupId") String musicGroupId);
+    List<MusicGroupSubjectPlan> getNoClassStuCountByMusicGroupId(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 根据乐团id和user_id 更新
@@ -186,12 +187,14 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 乐团添加学员
+     *
      * @param studentRegistration
      */
     void insertBasic(StudentRegistration studentRegistration);
 
     /**
      * 获取乐团已缴费学员列表
+     *
      * @param musicGroupId
      * @return
      */
@@ -199,6 +202,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 统计乐团不同声部报名人数
+     *
      * @param musicGroupId
      * @return
      */
@@ -206,21 +210,32 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 根据家长手机号获取用户编号
+     *
      * @param parentPhones
      * @return
      */
     List<Map<Integer, String>> findParentId(String parentPhones);
-    
+
     /**
      * 查询学生数
+     *
      * @return
      */
-    Map<String,Integer> queryStudentNum(@Param("organId") Integer organId);
+    Map<String, Integer> queryStudentNum(@Param("organId") Integer organId);
 
     /**
      * 根据乐团编号获取当前乐团所有已报名学员
+     *
      * @param musicGroupId
      * @return
      */
     List<Map<Integer, String>> findMapByMusicGroupId(String musicGroupId);
+
+    /**
+     * 乐团开启缴费
+     * @param musicGroupId
+     * @param paymentStatus
+     * @return
+     */
+    int musicGroupOpenPay(@Param("musicGroupId") String musicGroupId, @Param("paymentStatus") PaymentStatusEnum paymentStatus);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupCategoryDao.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 public interface VipGroupCategoryDao extends BaseDAO<Integer, VipGroupCategory> {
 
-    List<VipGroupCategory> findAllByOrgan(Long organId);
+    List<VipGroupCategory> findAllByOrgan(String organId);
 
     List<ConditionDto> findConditionCategorys();
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherLeaveRecordDto.java

@@ -17,6 +17,17 @@ public class TeacherLeaveRecordDto extends QueryInfo {
     @ApiModelProperty(value = "教师编号",required = false)
     private Integer teacherId;
 
+    @ApiModelProperty(value = "请假审批状态",required = false)
+    private String status;
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
     public String getStartTime() {
         return startTime;
     }

+ 19 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -1,12 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.common.enums.BaseEnum;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
@@ -14,6 +8,15 @@ import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Objects;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import com.ym.mec.common.enums.BaseEnum;
+
 /**
  * 对应数据库表(course_schedule):
  */
@@ -114,6 +117,8 @@ public class CourseSchedule {
 
 	/** 主教是否不需要重新生成课酬 */
 	private boolean bishopTeacherSalaryNotCreate;
+	
+	private SysUser teacher = new SysUser();
 
 	public boolean isBishopTeacherSalaryNotCreate() {
 		return bishopTeacherSalaryNotCreate;
@@ -311,6 +316,14 @@ public class CourseSchedule {
 		this.schoolId = schoolId;
 	}
 
+	public SysUser getTeacher() {
+		return teacher;
+	}
+
+	public void setTeacher(SysUser teacher) {
+		this.teacher = teacher;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleComplaints.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+
 /**
  * 对应数据库表(course_schedule_complaints):
  */
@@ -40,6 +43,8 @@ public class CourseScheduleComplaints {
 	
 	private Double studentLiabilityRatio;
 	
+	private SysUser user = new SysUser();
+	
 	public void setId(Long id){
 		this.id = id;
 	}
@@ -128,6 +133,14 @@ public class CourseScheduleComplaints {
 		this.teacherLiabilityRatio = teacherLiabilityRatio;
 	}
 
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import com.ym.mec.auth.api.entity.SysUser;
+
 /**
  * 对应数据库表(music_group_quit):
  */
@@ -29,6 +31,10 @@ public class MusicGroupQuit {
 	private String reason;
 
 	private ApprovalStatus status;
+	
+	private SysUser user = new SysUser();
+	
+	private MusicGroup musicGroup = new MusicGroup();
 
 	public void setId(Long id) {
 		this.id = id;
@@ -94,6 +100,22 @@ public class MusicGroupQuit {
 		this.status = status;
 	}
 
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
+	public MusicGroup getMusicGroup() {
+		return musicGroup;
+	}
+
+	public void setMusicGroup(MusicGroup musicGroup) {
+		this.musicGroup = musicGroup;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherLeaveRecord.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -77,6 +79,8 @@ public class TeacherLeaveRecord {
      * 流程实例
      */
     private String wfOrderId;
+    
+    private SysUser user = new SysUser();
 
     public String getLeaveCategoryName() {
         return leaveCategoryName;
@@ -190,7 +194,15 @@ public class TeacherLeaveRecord {
         return this.wfOrderId;
     }
 
-    @Override
+    public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
+	@Override
     public String toString() {
         return ToStringBuilder.reflectionToString(this);
     }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupQueryInfo.java

@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 public class MusicGroupQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "所属分部编号",required = false)
-    private Integer organId;
+    private String organId;
 
     @ApiModelProperty(value = "乐团编号",required = false)
     private String musicGroupId;
@@ -20,11 +20,11 @@ public class MusicGroupQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "乐团状态",required = false)
     private String musicGroupStatus;
 
-    public Integer getOrganId() {
+    public String getOrganId() {
         return organId;
     }
 
-    public void setOrganId(Integer organId) {
+    public void setOrganId(String organId) {
         this.organId = organId;
     }
 

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java

@@ -12,7 +12,7 @@ import com.ym.mec.common.page.QueryInfo;
 public class StudentManageQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "部门ID")
-    private Integer organId;
+    private String organId;
 
     @ApiModelProperty(value = "乐团ID")
     private String musicGroupId;
@@ -39,11 +39,11 @@ public class StudentManageQueryInfo extends QueryInfo {
         this.studentStatus = studentStatus;
     }
 
-    public Integer getOrganId() {
+    public String getOrganId() {
         return organId;
     }
 
-    public void setOrganId(Integer organId) {
+    public void setOrganId(String organId) {
         this.organId = organId;
     }
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java

@@ -23,6 +23,17 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "交易状态",required = false)
     private String paymentStatus;
 
+    @ApiModelProperty(value = "分部编号",required = false)
+    private String organId;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
     public String getOrderStartDate() {
         return orderStartDate;
     }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherQueryInfo.java

@@ -9,7 +9,7 @@ public class TeacherQueryInfo extends QueryInfo {
     private Integer subjectId;
 
     @ApiModelProperty(value = "机构编号")
-    private Integer organId;
+    private String organId;
 
     @ApiModelProperty(value = "教师工作性质")
     private String jobNature;
@@ -28,11 +28,11 @@ public class TeacherQueryInfo extends QueryInfo {
         this.subjectId = subjectId;
     }
 
-    public Integer getOrganId() {
+    public String getOrganId() {
         return organId;
     }
 
-    public void setOrganId(Integer organId) {
+    public void setOrganId(String organId) {
         this.organId = organId;
     }
 

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java

@@ -8,7 +8,7 @@ import com.ym.mec.common.page.QueryInfo;
  */
 public class VipGroupQueryInfo extends QueryInfo {
 
-    private Long organId;
+    private String organId;
 
     private Long vipGroupId;
 
@@ -40,11 +40,11 @@ public class VipGroupQueryInfo extends QueryInfo {
         this.vipGroupId = vipGroupId;
     }
 
-    public Long getOrganId() {
+    public String getOrganId() {
         return organId;
     }
 
-    public void setOrganId(Long organId) {
+    public void setOrganId(String organId) {
         this.organId = organId;
     }
 }

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

@@ -167,7 +167,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param userId
      * @return
      */
-    ClassGroup addStudent(ClassGroup classGroup,int userId);
+    ClassGroup addStudent(ClassGroup classGroup,Integer userId);
 
     /**
      * 获取未分配合奏的单技班列表

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

@@ -43,5 +43,4 @@ public interface EmployeeService extends BaseService<Integer, Employee> {
      * 删除员工
      */
     void deleteEmployee(Long userId);
-
 }

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

@@ -5,6 +5,8 @@ import com.ym.mec.biz.dal.page.OrganizationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface OrganizationService extends BaseService<Integer, Organization> {
 
     /**
@@ -13,4 +15,10 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @return
      */
     PageInfo<Organization> queryTreePage(OrganizationQueryInfo queryInfo);
+
+    /**
+     * 获取员工坐在分部列表
+     * @return
+     */
+    List<Organization> queryEmployeeOrgan() throws Exception;
 }

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

@@ -8,7 +8,7 @@ import java.util.List;
 
 public interface VipGroupCategoryService extends BaseService<Integer, VipGroupCategory> {
 
-    List<VipGroupCategory> findAllByOrgan(Long organId);
+    List<VipGroupCategory> findAllByOrgan(String organId);
 
     List<ConditionDto> findConditionCategorys();
 }

+ 62 - 31
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -94,6 +94,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private JiaRiFeignService jiaRiFeignService;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+    @Autowired
+    private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
 
 
     @Override
@@ -436,7 +440,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
                 List<TeacherDefaultMusicGroupSalary> teacherSalaryByUserIdAndType = teacherDefaultMusicGroupSalaryService.getTeacherSalaryByUserIdAndType(classGroupTeacherMapper.getUserId(), courseType, type);
                 //老师课酬没有设置,设置成0
-                if (teacherSalaryByUserIdAndType == null || teacherSalaryByUserIdAndType.size()==0) {
+                if (teacherSalaryByUserIdAndType == null || teacherSalaryByUserIdAndType.size() == 0) {
                     if (type.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                         String paramName = courseType.equals("SINGLE") ? "sigle_gradient_settlement_rule" : (courseType.equals("MIX") ? "max_gradient_settlement_rule" : "high_gradient_settlement_rule");
                         SysConfig sysConfig = sysConfigService.findByParamName(paramName);
@@ -594,18 +598,43 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ClassGroup addStudent(ClassGroup classGroup, int userId) {
+    public ClassGroup addStudent(ClassGroup classGroup, Integer userId) {
         Date date = new Date();
-        //增加班级人数
+        //1、增加班级人数
         classGroup.setCreateTime(date);
         classGroupDao.addStudentNum(classGroup);
-        //插入关联关系
+        //2、插入关联关系
         ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+        classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
         classGroupStudentMapper.setClassGroupId(classGroup.getId());
         classGroupStudentMapper.setUserId(userId);
         classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
         classGroupStudentMapper.setCreateTime(date);
         classGroupStudentMapperDao.insert(classGroupStudentMapper);
+
+        //3、学生加入级未开始课程
+        List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
+        BigDecimal coursePrice = new BigDecimal("0");
+        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
+        for (CourseSchedule courseSchedule : courseScheduleList) {
+            CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+            courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+            courseScheduleStudentPayment.setUserId(userId);
+            courseScheduleStudentPayment.setExpectPrice(coursePrice);
+            courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+            courseScheduleStudentPayment.setCreateTime(date);
+            courseScheduleStudentPayment.setUpdateTime(date);
+            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
+        }
+
+        if (courseScheduleStudentPayments.size() != 0) {
+            courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
+        }
+
+        //3、加入班级群组
+        ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(userId.toString())};
+        imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
         return classGroup;
     }
 
@@ -636,14 +665,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Transactional(rollbackFor = Exception.class)
     public void addMusicGroupTeam(Integer teacherId, String musicGroupId, Integer improventClassesNum) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
+        if (sysUser == null) {
             throw new Exception("用户信息获取失败");
         }
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        if(musicGroup == null){
+        if (musicGroup == null) {
             throw new Exception("乐团信息不存在");
         }
-        if(musicGroup.getStatus() != MusicGroupStatusEnum.PREPARE){
+        if (musicGroup.getStatus() != MusicGroupStatusEnum.PREPARE) {
             throw new Exception("当前乐团状态不允许此操作");
         }
         //所有学员都已经分配
@@ -661,7 +690,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         musicGroup.setImproventClassesNum(improventClassesNum);
         musicGroup.setUpdateTime(new Date());
         musicGroupDao.update(musicGroup);
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"成团确认(学员、班级、教学主管已设置)",sysUser.getId(),""));
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "成团确认(学员、班级、教学主管已设置)", sysUser.getId(), ""));
     }
 
     @Override
@@ -830,7 +859,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 .collect(Collectors.toList());
         List<StudentAttendanceViewDto> otherStudent = studentByCourse.stream()
                 .filter(studentAttendanceViewDto -> !StudentAttendanceStatusEnum.LEAVE.equals(studentAttendanceViewDto.getStatus())
-                                                &&!StudentAttendanceStatusEnum.TRUANT.equals(studentAttendanceViewDto.getStatus()))
+                        && !StudentAttendanceStatusEnum.TRUANT.equals(studentAttendanceViewDto.getStatus()))
                 .collect(Collectors.toList());
         truantStudent.addAll(otherStudent);
         truantStudent.addAll(leaveStudent);
@@ -891,6 +920,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             studentRegistrationService.update(studentRegistration);
 
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setMusicGroupId(musicGroupId);
             classGroupStudentMapper.setClassGroupId(classGroup.getId());
             classGroupStudentMapper.setUserId(studentRegistration.getUserId());
             classGroupStudentMapper.setCreateTime(date);
@@ -938,8 +968,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
                         .toMinutes();
 
 
@@ -970,19 +1000,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
                     Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
-                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary=collect.get(classGroup4MixDto.getCourseType());
+                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
 
                     //对应基准课酬
-                    BigDecimal baseSalary = new BigDecimal(0),classTimeDuty=new BigDecimal(0);
+                    BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1147,8 +1177,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
                         .toMinutes();
 
 
@@ -1179,19 +1209,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
                     Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
-                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary=collect.get(classGroup4MixDto.getCourseType());
+                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
 
                     //对应基准课酬
-                    BigDecimal baseSalary = new BigDecimal(0),classTimeDuty=new BigDecimal(0);
+                    BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1308,6 +1338,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
         for (StudentRegistration studentRegistration : studentList) {
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setMusicGroupId(musicGroupId);
             classGroupStudentMapper.setClassGroupId(classGroup.getId());
             classGroupStudentMapper.setUserId(studentRegistration.getUserId());
             classGroupStudentMapper.setCreateTime(date);
@@ -1354,8 +1385,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
                         .toMinutes();
 
 
@@ -1386,19 +1417,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
                     Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
-                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary=collect.get(classGroup4MixDto.getCourseType());
+                    TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = collect.get(classGroup4MixDto.getCourseType());
 
                     //对应基准课酬
-                    BigDecimal baseSalary = new BigDecimal(0),classTimeDuty=new BigDecimal(0);
+                    BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary!=null) {
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90));
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1461,13 +1492,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Set<Integer> classGroups = dataList.stream().map(e -> e.getClassGroupId()).collect(Collectors.toSet());
             String join = StringUtils.join(classGroups, ",");
             //获取主教老师
-            Map<Integer, String> masterTeachers = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"))),HashMap.class);
+            Map<Integer, String> masterTeachers = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "BISHOP"))), HashMap.class);
             //获取助教老师
-            Map<Integer, String> subTeachers = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"))),HashMap.class);
+            Map<Integer, String> subTeachers = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudentNum(join, "TEACHING"))), HashMap.class);
             //获取在读人数
-            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join))),HashMap.class);
+            Map<Integer, Integer> studyNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countStudyNum(join))), HashMap.class);
             //获取退班人数
-            Map<Integer, Integer> quitNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join))),HashMap.class);
+            Map<Integer, Integer> quitNums = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(classGroupDao.countQuitNum(join))), HashMap.class);
             dataList.forEach(e -> {
                 e.setMasterTeacher(masterTeachers.get(e.getClassGroupId()));
                 e.setSubTeacher(subTeachers.get(e.getClassGroupId()));

+ 12 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -229,19 +229,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new Exception("身份校验失败");
         }
         String musicGroupId = subFeeSettingDto.getMusicGroupId();
-
         //乐团状态是否正确
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if(musicGroup != null){
-            if(musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT && musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT_FAILED){
-                throw new Exception("当前乐团状态不支持此操作");
-            }
             if(subFeeSettingDto.getMusicGroupStatus() == null){
                 throw new Exception("参数校验异常");
             }
-            musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus());
-            musicGroup.setUpdateTime(new Date());
-            musicGroupDao.update(musicGroup);
+            if(musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED){
+                musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus());
+                musicGroup.setUpdateTime(new Date());
+                musicGroupDao.update(musicGroup);
+            }
             //记录日志信息
             musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"修改乐团计划声部、乐器",sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
             //删除原有的乐团声部规划
@@ -977,7 +975,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroup.setApplyExpireDate(DateUtil.toDate(expireDate));
         musicGroup.setStatus(MusicGroupStatusEnum.PAY);
         musicGroupDao.update(musicGroup);
-        //乐团成立后(开始缴费)
+        //所有人开启缴费
+        studentRegistrationDao.musicGroupOpenPay(musicGroupId,PaymentStatusEnum.OPEN);
         //获取所有已报名学员列表
         HashMap<Integer,String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(studentRegistrationDao.findMapByMusicGroupId(musicGroupId))), HashMap.class);
         if(map != null && map.size() > 0){
@@ -1053,8 +1052,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			// 获取对应家长的用户编号
 			Map<Integer, String> userIds = MapUtil.convertMybatisMap(studentRegistrationDao.findParentId(StringUtils.join(parentsPhones, ",")));
 			userIds = JSONObject.parseObject(JSONObject.toJSONString(userIds), HashMap.class);
-			String content = sysMessageConfigDao.findContent(MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE.getCode());
-			sysMessageService.batchSendMessage(MessageSender.YIMEI, "", content, userIds, new Date(), 0, "", "");
+			if(userIds != null && userIds .size() > 0){
+                String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
+                String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
+                sysMessageService.batchSendMessage(MessageSender.YIMEI,MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE,userIds,null,0,"",musicGroup.getName(),studentApplyUrl,serverPhone);
+            }
 		}
         Set<Integer> roleIds = new HashSet<>(1);
         roleIds.add(SysUserRole.SECTION_MANAGER);

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service.impl;
 
 import java.util.List;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -18,6 +20,8 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	
 	@Autowired
 	private OrganizationDao organizationDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, Organization> getDAO() {
@@ -33,6 +37,18 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		return pageInfo;
 	}
 
+	@Override
+	public List<Organization> queryEmployeeOrgan() throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new Exception("获取用户信息失败");
+		}
+		Integer userId = sysUser.getId();
+		if(sysUser.getIsSuperAdmin()){
+			userId = null;
+		}
+		return organizationDao.queryEmployeeOrgan(userId);
+	}
 
 
 	private Organization getTree(Organization org){

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -47,12 +47,12 @@ public class PayServiceImpl implements PayService {
         //支付通道决策
         SysAccount routingAccount = getRoutingAccount(amount);
         Map unionPay = new HashMap();
-        Map payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
+        //Map payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
 
         unionPay.put("orderNo", orderNo);
-        unionPay.put("type", "ADAPAY");
+       // unionPay.put("type", "ADAPAY");
 
-        payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
+        Map payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
         unionPay.put("type", "YQPAY");
         unionPay.put("payMap", payMap);
 

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

@@ -120,7 +120,7 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 
 				if ("WXPay".equals(paymentChannel)) {
 					transType = TransTypeEnum.WECHAT;
-				} else if ("Alipay 2.0".equals(paymentChannel)) {
+				} else if ("Alipay".equals(paymentChannel)) {
 					transType = TransTypeEnum.ALIPAY;
 				}
 

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

@@ -182,7 +182,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             //添加用户现金账户
             sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
 			// 添加用户电子签章账户
-			contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
+			//contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
             //注册到融云
             if(StringUtils.isEmpty(sysUser.getAvatar())){
                 sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
@@ -510,6 +510,19 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);
 
+            //获取当前月
+            Integer month = Integer.parseInt(DateUtil.getMonth(nowDate));
+            //获取下次缴费月份
+            List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByMusicGroupId(studentRegistration.getMusicGroupId());
+            List<Integer> months = musicGroupPaymentCalenders.stream().map(e -> e.getPaymentMonth()).collect(Collectors.toList());
+            for (int i = 0; i < months.size(); i++) {
+                if (months.get(i).equals(month)) {
+                    month = i == months.size() - 1 ? months.get(0) : months.get(i + 1);
+                }
+            }
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.MONTH, month);
+
             //加入缴费周期
             MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
             musicGroupStudentFee.setMusicGroupId(studentRegistration.getMusicGroupId());
@@ -517,6 +530,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             musicGroupStudentFee.setCourseFee(musicOneSubjectClassPlan.getFee());
             musicGroupStudentFee.setCreateTime(nowDate);
             musicGroupStudentFee.setUpdateTime(nowDate);
+            musicGroupStudentFee.setNextPaymentDate(DateUtil.getFirstDayOfMonth(calendar.getTime()));
             musicGroupStudentFee.setLatestPaidTime(nowDate);
             musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
             musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);

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

@@ -24,7 +24,7 @@ public class VipGroupCategoryServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public List<VipGroupCategory> findAllByOrgan(Long organId) {
+	public List<VipGroupCategory> findAllByOrgan(String organId) {
 		return vipGroupCategoryDao.findAllByOrgan(organId);
 	}
 

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

@@ -685,7 +685,7 @@
         LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
         LEFT JOIN sys_user su ON sa.teacher_id_=su.id_
         <include refid="queryStudentCourseScheduleRecordCondition"/>
-        ORDER BY sa.id_
+        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         <include refid="global.limit"/>
     </select>
     <select id="countStudentCourseScheduleRecords" resultType="int">
@@ -714,6 +714,7 @@
         LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
         LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
         WHERE cs.status_='NOT_START' AND cgsm.user_id_=#{userId} AND cs.class_date_=DATE_FORMAT(#{date},'%Y%m%d')
+        ORDER BY cs.class_date_,cs.start_class_time_
     </select>
     <select id="findCourseScheduleByMusicGroup" resultMap="CourseSchedule">
         SELECT

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

@@ -150,7 +150,7 @@
 	<sql id="musicGroupQueryPageSql">
 		<where>
 			<if test="organId != null">
-				AND organ_id_ = #{organId}
+				AND FIND_IN_SET(organ_id_,#{organId})
 			</if>
 			<if test="musicGroupName != null and musicGroupName != ''">
 				AND name_ LIKE CONCAT('%',#{musicGroupName},'%')

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/OrganizationMapper.xml

@@ -104,4 +104,13 @@
     <select id="findByOrganIds" resultType="java.lang.String">
         SELECT name_ FROM organization WHERE del_flag_ = 0 AND FIND_IN_SET(id_,#{organIds})
     </select>
+    <select id="queryEmployeeOrgan" resultMap="Organization">
+        SELECT * FROM organization o
+        <where>
+            o.del_flag_ = 0
+            <if test="userId != null">
+                AND FIND_IN_SET(o.id_,(SELECT organ_id_list_ FROM employee e WHERE e.user_id_ = #{userId}))
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -125,7 +125,7 @@
     <sql id="findStudentsByOrganIdSql">
         <where>
             <if test="organId != null">
-                AND su.organ_id_=#{organId}
+                AND FIND_IN_SET(su.organ_id_,#{organId})
             </if>
             <if test="studentName != null and studentName != ''">
                 AND su.username_ LIKE CONCAT('%',#{studentName},'%')

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -150,11 +150,15 @@
     <!-- 查询当前表的总记录数 -->
     <select id="queryCount" resultType="int" parameterType="map">
         SELECT COUNT(spo.id_) FROM student_payment_order spo
+        left join sys_user u on spo.user_id_ = u.id_
         <include refid="queryPaymentOrder"/>
     </select>
 
     <sql id="queryPaymentOrder">
         <where>
+            <if test="organId != null">
+                AND FIND_IN_SET(u.organ_id_,#{organId})
+            </if>
             <if test="orderStartDate != null">
                 AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &gt;= #{orderStartDate}
             </if>

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

@@ -59,6 +59,7 @@
         <result column="current_grade_" property="grade"/>
         <result column="current_class_" property="clazz"/>
         <result column="actual_subject_id_" property="subject.id"/>
+        <result column="subject_name_" property="subject.name"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -320,8 +321,8 @@
     </update>
 
     <select id="queryStudentInfo" resultMap="StudentInfo">
-        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_ FROM sys_user u left join
-        student_registration sr on u.id_ = sr.user_id_ where u.id_ = #{userId} order by sr.create_time_ desc limit 0,1
+        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_,s.name_ subject_name_ FROM sys_user u left join
+        student_registration sr on u.id_ = sr.user_id_ left join subject s on sr.actual_subject_id_ = s.id_ where u.id_ = #{userId} order by sr.create_time_ desc limit 0,1
     </select>
 
     <select id="queryByUserIdAndMusicGroupId" resultMap="StudentRegistration">
@@ -452,6 +453,14 @@
         update_time_ = now()
         WHERE FIND_IN_SET(id_,#{ids}) AND payment_status_ = '0'
     </update>
+
+    <!-- 乐团批量开启缴费 -->
+    <update id="musicGroupOpenPay">
+        UPDATE student_registration
+        SET payment_status_ = #{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        update_time_ = now()
+        WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = '0'
+    </update>
     
     <select id="queryStudentNum" resultType="map">
         SELECT count(sr.id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_ FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/TeacherLeaveRecordMapper.xml

@@ -111,7 +111,7 @@
 		teacher_leave_record tlr
 		LEFT JOIN leave_category lc ON tlr.leave_category_id_ = lc.id_
 		<include refid="queryLeavePage"/>
-		ORDER BY tlr.id_
+		ORDER BY tlr.create_time_ DESC
 		<include refid="global.limit" />
 	</select>
 
@@ -129,6 +129,9 @@
 			<if test="teacherId != null">
 				AND tlr.user_id_ = #{teacherId}
 			</if>
+			<if test="status != null">
+				AND tlr.status_ = #{status}
+			</if>
 		</where>
 	</sql>
 

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

@@ -224,7 +224,7 @@
             AND FIND_IN_SET(#{subjectId},t.subject_id_)
         </if>
         <if test="organId != null">
-            AND su.organ_id_ = #{organId}
+            AND FIND_IN_SET(su.organ_id_,#{organId})
         </if>
         <if test="jobNature != null">
             AND t.job_nature_ = #{jobNature}
@@ -298,6 +298,7 @@
         LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         <include refid="queryCloses"/>
+        ORDER BY cs.class_date_ DESC,cs.start_class_time_ DESC
         <include refid="global.limit"/>
     </select>
 

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

@@ -31,7 +31,7 @@
 
 	<select id="findAllByOrgan" resultMap="VipGroupCategory">
 		SELECT vgc.*,vgdcup.online_classes_unit_price_,vgdcup.offline_classes_unit_price_ FROM vip_group_category vgc
-		LEFT JOIN vip_group_default_classes_unit_price_ vgdcup ON vgc.id_=vgdcup.vip_group_category_id_ AND vgdcup.organ_id_=#{organId}
+		LEFT JOIN vip_group_default_classes_unit_price_ vgdcup ON vgc.id_=vgdcup.vip_group_category_id_ AND FIND_IN_SET(vgdcup.organ_id_,#{organId})
 		WHERE vgc.del_flag_=0
 		ORDER BY id_
 	</select>

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

@@ -130,8 +130,8 @@
             <if test="activityId!=null">
                 AND vg.vip_group_activity_id_=#{activityId}
             </if>
-            <if test="organId!=null">
-                AND FIND_IN_SET(#{organId},vg.organ_id_list_)
+            <if test="organId != null">
+                AND FIND_IN_SET(vg.organ_id_,#{organId})
             </if>
         </where>
     </sql>

+ 25 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -109,6 +109,9 @@ public class MusicGroupController extends BaseController {
         if (studentRegistration == null) {
             return failed(HttpStatus.CONTINUE, "乐团报名信息不存在");
         }
+        if ((studentRegistration.getPaymentStatus() == null || !studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.YES))) {
+            return failed("您已缴费,请等待乐团开启");
+        }
         if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY) && (studentRegistration.getPaymentStatus() == null || !studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.OPEN))) {
             return failed("乐团还未开启缴费,请等待通知");
         }
@@ -208,6 +211,13 @@ public class MusicGroupController extends BaseController {
         if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) {
             goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                    orderAmount = orderAmount.add(musicOneSubjectClassPlan.getDepositFee());
+                    continue;
+                }
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.FREE)) {
+                    continue;
+                }
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 //团购乐器减免课程费用
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && goodsGroup.getRemissionCourseFee() != null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
@@ -289,6 +299,14 @@ public class MusicGroupController extends BaseController {
         if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) {
             goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                    orderAmount = orderAmount.add(musicOneSubjectClassPlan.getDepositFee());
+                    continue;
+                }
+                if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.FREE)) {
+                    continue;
+                }
+
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 //团购乐器减免课程费用
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && goodsGroup.getRemissionCourseFee() != null && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
@@ -320,7 +338,13 @@ public class MusicGroupController extends BaseController {
 
         String orderNo = idGeneratorService.generatorId("payment") + "";
 
-        Map payMap = payService.getPayMap(orderAmount, orderNo, "http://47.99.212.176:8000/studentOrder/notify", "http://dev.dayaedu.com", "测试订单", "测试订单");
+        Map payMap = payService.getPayMap(
+                orderAmount,
+                orderNo,
+                "http://mstudev.dayaedu.com/api-student/studentOrder/notify",
+                "http://mstudev.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
+                "测试订单",
+                "测试订单");
 
         studentRegistrationService.reAddOrder(userId, amount, orderNo, (String) payMap.get("type"), courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder);
 

+ 6 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupRegisterController.java

@@ -2,6 +2,8 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 import com.ym.mec.biz.service.StudentRegistrationService;
@@ -44,6 +46,10 @@ public class MusicGroupRegisterController extends BaseController {
         if (musicGroup.getApplyExpireDate().compareTo(date) <= 0) {
             return failed("乐团已截止报名");
         }
+
+        if(musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY)||musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)){
+            studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
+        }
         studentRegistration.setOrganId(musicGroup.getOrganId());
         return succeed(studentRegistrationService.addStudent(studentRegistration));
     }

+ 117 - 6
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -11,12 +11,16 @@ import com.ym.mec.biz.service.StudentPaymentOrderService;
 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.NotifyEvent;
 import com.ym.mec.thirdparty.adapay.Pay;
 import com.ym.mec.thirdparty.yqpay.Msg;
 import com.ym.mec.thirdparty.yqpay.YqPayUtil;
 import com.ym.mec.thirdparty.yqpay.YqPayFeignService;
 import com.ym.mec.thirdparty.yqpay.RsqMsg;
+import com.ym.mec.util.http.HttpUtil;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -27,8 +31,11 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.util.*;
 
+import static com.netflix.config.DeploymentContext.ContextKey.appId;
+
 @RequestMapping("studentOrder")
 @Api(tags = "订单回调")
 @RestController
@@ -106,10 +113,12 @@ public class StudentOrderController extends BaseController {
         //支付中订单存在,更新状态
         if (msg.getResponseType().equals("1") && notifyMap.size() > 0) {
             String tradeState = msg.getCode().equals("88") ? "1" : "0";
+            String channelType = notifyMap.get("channelType").equals("1") ? "WXPay" : (notifyMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
             notifyMap.put("tradeState", tradeState);
             notifyMap.put("totalMoney", notifyMap.get("payAmount"));
             notifyMap.put("merOrderNo", notifyMap.get("merMerOrderNo"));
-            this.updateOrder(notifyMap);
+            notifyMap.put("channelType", channelType);
+            updateOrder(notifyMap);
             msg.setCode("000000");
             msg.setMsg("success");
         }
@@ -132,13 +141,39 @@ 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 payChannel, String sign) throws Exception {
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "amount", value = "支付金额", required = true, dataType = "BigDecimal"),
+            @ApiImplicitParam(name = "orderNo", value = "订单号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "payChannel", value = "支付方式(alipay-支付宝app支付)", required = true, dataType = "String"),
+    })
+    public Object executePayment(BigDecimal amount, String orderNo, String payChannel, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign, String code) throws Exception {
+        String appId = "wxcf8e8b33a9477845";
+        String appSecret = "1286452b9c68b13325dece7cdf892645";
+        String wxMpOAuth2AccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
         payChannel = PayChannelEnum.ALIPAY_QR.getCode();
 //        if (!new Pay().verifySign(amount, orderNo, notifyUrl, orderSubject, orderBody,sign)) {
 //            return failed("签名验证失败");
 //        }
-        Payment payment = new Pay().executePayment(amount, orderNo, payChannel, orderSubject, orderBody);
+
+        String openid = "";
+        if (payChannel == "wx_pub") {
+            if (code == null || code.isEmpty()) {
+                return failed("微信支付请先授权");
+            }
+            wxMpOAuth2AccessTokenUrl = String.format(wxMpOAuth2AccessTokenUrl, appId, appSecret, code);
+            Map<String, String> weChatRes = JSON.parseObject(HttpUtil.get(wxMpOAuth2AccessTokenUrl, new HashMap<>()), Map.class);
+            if (!weChatRes.containsKey("openid")) {
+                return failed("授权失败,请重新授权");
+            }
+            openid = weChatRes.get("openid");
+        }
+
         StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(orderNo);
+        if (order == null) {
+            return failed("订单不存在");
+        }
+
+        Payment payment = new Pay().executePayment(amount, orderNo, payChannel, orderSubject, orderBody, code);
         order.setTransNo(payment.getId());
         studentPaymentOrderService.update(order);
 
@@ -146,7 +181,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 = ""; //
@@ -180,6 +215,9 @@ public class StudentOrderController extends BaseController {
             List<Map<String, String>> responseList = JSON.parseObject(responseParameters, List.class);
             for (Map<String, String> response : responseList) {
                 Map<String, String> rpMap = response;
+                String channelType = rpMap.get("channelType").equals("1") ? "WXPay" : (rpMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
+                rpMap.put("channelType", channelType);
+
                 if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
                     updateOrder(rpMap); //更新订单
                 }
@@ -216,7 +254,6 @@ public class StudentOrderController extends BaseController {
         }
     }
 
-
     public void closeOrders(List<String> orderNoList) throws Exception {
         if (orderNoList.size() == 0) {
             return;
@@ -241,7 +278,7 @@ public class StudentOrderController extends BaseController {
 
     }
 
-    @Scheduled(cron = "0/5 * * * * ?")
+    // @Scheduled(cron = "0/5 * * * * ?")
     public void adaPayQuery() throws Exception {
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "ADAPAY");
 
@@ -272,4 +309,78 @@ public class StudentOrderController extends BaseController {
     }
 
 
+    @PostMapping("/adaNotify")
+    public void adaNotify(@ModelAttribute NotifyEvent notifyEvent) throws Exception {
+        logger.info(notifyEvent.toString());
+        if (notifyEvent.getType().equals("payment.success") && notifyEvent.getType().equals("payment.failed")) {
+            return;
+        }
+
+        Map<String, String> notifyMap = JSON.parseObject(notifyEvent.getData(), Map.class);
+
+        //支付中订单存在,更新状态
+        if (notifyMap.size() > 0) {
+            String tradeState = notifyEvent.getType().equals("payment.success") ? "1" : "0";
+            notifyMap.put("tradeState", tradeState);
+            notifyMap.put("totalMoney", notifyMap.get("pay_amt"));
+            notifyMap.put("merOrderNo", notifyMap.get("order_no"));
+            notifyMap.put("merOrderNo", notifyMap.get("order_no"));
+            notifyMap.put("remarks", notifyMap.get("description"));
+            updateOrder(notifyMap);
+        }
+    }
+
+    @GetMapping("/authorize")
+    public String authorize(@RequestParam("returnUrl") String returnUrl) {
+        String appId = "wxcf8e8b33a9477845";
+        String url = URLEncoder.encode("http://wxwechat.utools.club/studentOrder/userInfo");
+
+        String redirectURL = String.format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect",
+                appId, url);
+
+        return "redirect:" + redirectURL;
+    }
+
+    @GetMapping("/userInfo")
+    public Object userInfo(@RequestParam("code") String code,
+                           @RequestParam("state") String returnUrl) throws Exception {
+        String appId = "wxcf8e8b33a9477845";
+        String appSecret = "1286452b9c68b13325dece7cdf892645";
+
+        String wxMpOAuth2AccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
+
+        wxMpOAuth2AccessTokenUrl = String.format(wxMpOAuth2AccessTokenUrl, appId, appSecret, code);
+
+        Map<String, String> map = JSON.parseObject(HttpUtil.get(wxMpOAuth2AccessTokenUrl, new HashMap<>()), Map.class);
+
+        if (!map.containsKey("openid")) {
+            return failed("授权失败,请重新授权");
+        }
+
+        return map.get("openid");
+
+    }
+
+    @Scheduled(cron = "0/30 * * * * ?")
+    public void setSuccessStatus() throws Exception {
+        List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");
+
+        String[] statusArr = {"0", "1", "7"};
+        for (StudentPaymentOrder payingOrder : payingOrders) {
+            Map<String, String> rpMap = new HashMap<>();
+            rpMap.put("tradeState", "1");
+            rpMap.put("remarks", "模拟支付成功");
+            rpMap.put("merOrderNo", payingOrder.getOrderNo());
+            rpMap.put("orderNo", payingOrder.getOrderNo());
+            rpMap.put("channelType", "1");
+
+            String channelType = rpMap.get("channelType").equals("1") ? "WXPay" : (rpMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
+            rpMap.put("channelType", channelType);
+            if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
+                updateOrder(rpMap); //更新订单
+            }
+        }
+
+    }
+
 }

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

@@ -41,7 +41,7 @@ public class VipGroupCategoryController extends BaseController {
 		if (Objects.isNull(user)) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(vipGroupCategoryService.findAllByOrgan(user.getOrganId().longValue()));
+		return succeed(vipGroupCategoryService.findAllByOrgan(user.getOrganId().toString()));
 	}
 
 	@ApiOperation("新增")

+ 56 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/NotifyEvent.java

@@ -0,0 +1,56 @@
+package com.ym.mec.thirdparty.adapay;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public class NotifyEvent {
+    private String id;
+    private String type;
+    private String created_time;
+    private String prod_mode;
+    private String data;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getCreated_time() {
+        return created_time;
+    }
+
+    public void setCreated_time(String created_time) {
+        this.created_time = created_time;
+    }
+
+    public String getProd_mode() {
+        return prod_mode;
+    }
+
+    public void setProd_mode(String prod_mode) {
+        this.prod_mode = prod_mode;
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return ToStringBuilder.reflectionToString(this);
+    }
+}

+ 46 - 39
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/adapay/Pay.java

@@ -9,6 +9,7 @@ import com.huifu.adapay.exception.BaseAdaPayException;
 import com.huifu.adapay.model.DeviceInfo;
 import com.huifu.adapay.model.payment.*;
 import com.huifu.adapay.util.AdaPaySign;
+import org.aspectj.apache.bcel.classfile.Module;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -18,9 +19,11 @@ import java.util.*;
  */
 public class Pay {
     private static final String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6";
+    private static final String wxAppId = "wxcf8e8b33a9477845";
 
     /**
      * 运行支付类接口
+     *
      * @return paymentId
      * @throws Exception 异常
      */
@@ -32,7 +35,7 @@ public class Pay {
         //公钥
         String pubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
         //私钥
-        String privateKey= "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0=";
+        String privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0=";
 
         //设置AdaPay全局参数,不同环境设置不同的apiKey/pubKey/privateKey
         AdaPay.apiKey = apiKeyLive;
@@ -45,16 +48,16 @@ public class Pay {
         AdaPay.startNotifyListener();
     }
 
-    public static String executePaymentTest() throws Exception{
+    public static String executePaymentTest() throws Exception {
         //test chargeId = "002112019080716223300005091372336111616";
         Pay demo = new Pay();
         //支付接口
-        String orderNo = "jsdk_payment_"+System.currentTimeMillis();
+        String orderNo = "jsdk_payment_" + System.currentTimeMillis();
         String payChannel = PayChannelEnum.ALIPAY_QR.getCode();
         BigDecimal amount = new BigDecimal("0.01");
         String orderSubject = "测试大雅订单";
         String orderBody = "测试大雅订单";
-        Payment payment = demo.executePayment(amount,orderNo,payChannel,orderSubject,orderBody);
+        Payment payment = demo.executePayment(amount, orderNo, payChannel, orderSubject, orderBody,null);
         //支付查询接口
         //demo.queryPayment(payment.getId());
         //关单接口
@@ -67,38 +70,41 @@ public class Pay {
     public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String orderSubject, String orderBody) throws Exception {
 
         Map<String, Object> paymentParams = new HashMap<>(10);
-        paymentParams.put("appId",appId);
+        paymentParams.put("appId", appId);
         paymentParams.put("amount", amount);
         paymentParams.put("orderNo", orderNo);
         paymentParams.put("notifyUrl", notifyUrl);
         paymentParams.put("orderSubject", orderSubject);
         paymentParams.put("orderBody", orderBody);
+        paymentParams.put("wxAppId", wxAppId);
         String originalStr = JSONObject.toJSONString(paymentParams);
 
-        String sign  =  AdaPaySign.sign(originalStr, AdaPay.privateKey);
-        paymentParams.put("sign",sign);
+        String sign = AdaPaySign.sign(originalStr, AdaPay.privateKey);
+        paymentParams.put("sign", sign);
+        paymentParams.put("host", "http://192.168.3.27:8000/api-student/studentOrder/executePayment");
         paymentParams.remove(appId);
-        return  paymentParams;
+        return paymentParams;
     }
 
     public boolean verifySign(BigDecimal amount, String orderNo, String notifyUrl, String orderSubject, String orderBody, String sign) throws Exception {
         Map<String, Object> paymentParams = new HashMap<>(10);
-        paymentParams.put("appId",appId);
+        paymentParams.put("appId", appId);
         paymentParams.put("amount", amount);
         paymentParams.put("orderNo", orderNo);
         paymentParams.put("notifyUrl", notifyUrl);
         paymentParams.put("orderSubject", orderSubject);
         paymentParams.put("orderBody", orderBody);
         String originalStr = JSONObject.toJSONString(paymentParams);
-        return AdaPaySign.verifySign(originalStr,sign, AdaPay.pubKey);
+        return AdaPaySign.verifySign(originalStr, sign, AdaPay.pubKey);
     }
 
     /**
      * 执行一个支付交易
+     *
      * @return 创建的支付对象
      * @throws Exception 异常
      */
-    public static Payment executePayment(BigDecimal amount,String orderNo,String payChannel,String orderSubject,String orderBody) throws Exception {
+    public static Payment executePayment(BigDecimal amount, String orderNo, String payChannel, String orderSubject, String orderBody, String openid) throws Exception {
         System.out.println("=======execute payment begin=======");
         //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id3
         Map<String, Object> paymentParams = new HashMap<>(10);
@@ -110,29 +116,28 @@ public class Pay {
         paymentParams.put("goods_title", orderSubject);
         paymentParams.put("goods_desc", orderBody);
 
-        DeviceInfo deviceInfo = new DeviceInfo();
-        deviceInfo.setDeviceType(DeviceTypeEnum.MOBILE.getCode());
-        deviceInfo.setDeviceIp("127.0.0.1");
-        paymentParams.put("device_info", deviceInfo);
-
-        List<GoodsDetail> goodsDetailList = new ArrayList<>();
-        GoodsDetail goodsDetail = new GoodsDetail();
-        goodsDetail.setGoodsId("your goods id");
-        goodsDetail.setGoodsName("your goods name");
-        goodsDetail.setQuantity("1");
-        goodsDetail.setPrice("100.00");
-        goodsDetailList.add(goodsDetail);
-
-        PromotionDetail promotionDetail = new PromotionDetail();
-        promotionDetail.setGoodsDetail(goodsDetailList);
-        promotionDetail.setCostPrice("100.00");
-
-        PaymentExpend expend = new PaymentExpend();
-        expend.setPromotionDetail(promotionDetail);
-        expend.setBuyerId("2088012928900274");
-        expend.setBuyerLogonId("");
-
-        paymentParams.put("expend", expend);
+//        DeviceInfo deviceInfo = new DeviceInfo();
+//        deviceInfo.setDeviceType(DeviceTypeEnum.MOBILE.getCode());
+//        deviceInfo.setDeviceIp("127.0.0.1");
+//        paymentParams.put("device_info", deviceInfo);
+
+//        List<GoodsDetail> goodsDetailList = new ArrayList<>();
+//        GoodsDetail goodsDetail = new GoodsDetail();
+//        goodsDetail.setGoodsId("your goods id");
+//        goodsDetail.setGoodsName("your goods name");
+//        goodsDetail.setQuantity("1");
+//        goodsDetail.setPrice("100.00");
+//        goodsDetailList.add(goodsDetail);
+//
+//        PromotionDetail promotionDetail = new PromotionDetail();
+//        promotionDetail.setGoodsDetail(goodsDetailList);
+//        promotionDetail.setCostPrice("100.00");
+
+        if (openid != null && !openid.isEmpty()) {
+            PaymentExpend expend = new PaymentExpend();
+            expend.setOpenId(openid);
+            paymentParams.put("expend", expend);
+        }
 
         //调用sdk方法,创建支付,得到支付对象
         Payment payment = null;
@@ -141,17 +146,18 @@ public class Pay {
         } catch (BaseAdaPayException e) {
             e.printStackTrace();
         }
-        System.out.println("payment result="+JSON.toJSONString(payment));
+        System.out.println("payment result=" + JSON.toJSONString(payment));
         return payment;
     }
 
     /**
      * 关闭一个支付交易
+     *
      * @param paymentId 要关闭的支付id
      * @return 关闭的支付对象
      * @throws Exception 异常
      */
-    public Payment closePayment(String paymentId) throws Exception{
+    public Payment closePayment(String paymentId) throws Exception {
         System.out.println("=======close payment begin=======");
         //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id11
         //调用sdk方法,关闭支付,得到支付对象
@@ -161,17 +167,18 @@ public class Pay {
         } catch (BaseAdaPayException e) {
             e.printStackTrace();
         }
-        System.out.println("close payment result="+JSON.toJSONString(payment));
+        System.out.println("close payment result=" + JSON.toJSONString(payment));
         return payment;
     }
 
     /**
      * 查询一个支付交易
+     *
      * @param paymentId 要查询的支付id
      * @return 查询的支付对象
      * @throws Exception 异常
      */
-    public Payment queryPayment(String paymentId) throws Exception{
+    public Payment queryPayment(String paymentId) throws Exception {
         System.out.println("=======query payment begin=======");
         //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id7
         //调用sdk方法,查询支付交易,得到支付对象
@@ -181,7 +188,7 @@ public class Pay {
         } catch (BaseAdaPayException e) {
             e.printStackTrace();
         }
-        System.out.println("query payment result="+JSON.toJSONString(payment));
+        System.out.println("query payment result=" + JSON.toJSONString(payment));
         return payment;
     }
 }

+ 634 - 0
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -0,0 +1,634 @@
+package com.ym.mec.util.excel;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.NestedNullException;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.BasicCookieStore;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.ssl.TrustStrategy;
+import org.apache.http.util.EntityUtils;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFFont;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.ym.mec.util.exception.UtilException;
+
+public class POIUtil {
+
+	private final static Logger LOGGER = LoggerFactory.getLogger(POIUtil.class);
+
+	// 能导出的最大数据条数
+	private final static int MAX_DATA_SIZE = 50000;
+
+	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+	/**
+	 * 将数据集dataset导出到fileName文件中(只支持.xlsx格式)
+	 * @param headColumns 导出文件的列名
+	 * @param dataset 数据源
+	 * @return
+	 * @throws IOException 
+	 */
+	public static SXSSFWorkbook exportBigExcel(String[] headColumns, List<Map<String, Object>> dataset) throws IOException {
+		if (headColumns == null) {
+			throw new UtilException("excel列名不能为空");
+		}
+		if (dataset == null) {
+			throw new UtilException("数据集不能为空");
+		}
+		SXSSFWorkbook workbook = new SXSSFWorkbook();
+		CellStyle style = workbook.createCellStyle(); // 获取单元格样式
+		/************** 设置单元格样式 *************/
+		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直
+		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
+		style.setWrapText(true);
+		Font font = workbook.createFont();
+		font.setColor(HSSFFont.COLOR_NORMAL);
+		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		style.setFont(font);
+
+		Sheet sheet = workbook.createSheet(); // 创建sheet
+		// 设置表头
+		// 创建第一行
+		Row row1 = sheet.createRow(0);
+		Cell cell = null;
+		for (int i = 0; i < headColumns.length; i++) {
+			// 创建列
+			cell = row1.createCell(i);
+			// 定义单元格为字符串类型
+			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+			// 设置单元格的样式
+			cell.setCellStyle(style);
+			// 设置单元格的值
+			cell.setCellValue(headColumns[i]);
+		}
+		Row row = null;
+		// 添加数据
+		Map<String, Object> data = null;
+		for (int i = 1; i <= dataset.size(); i++) {
+			data = dataset.get(i - 1);
+			if (data != null) {
+				row = sheet.createRow(i);
+				int index = 0;
+				for (Entry<String, Object> entry : data.entrySet()) {
+					row.createCell(index).setCellValue(entry.getValue().toString());
+					index++;
+				}
+			}
+		}
+		return workbook;
+	}
+
+	/**
+	 * 将数据集dataset导出到fileName文件中
+	 * @param headColumns 导出文件的列名
+	 * @param dataset 数据源
+	 * @return
+	 * @throws IOException 
+	 */
+	public static HSSFWorkbook exportExcel(String[] headColumns, List<Map<String, Object>> dataset) throws IOException {
+		if (headColumns == null) {
+			throw new UtilException("excel列名不能为空");
+		}
+		if (dataset == null) {
+			throw new UtilException("数据集不能为空");
+		}
+		if (dataset.size() > MAX_DATA_SIZE) {
+			throw new UtilException("数据集太大,不能导出.最大数据集不能超过" + MAX_DATA_SIZE);
+		}
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFCellStyle style = workbook.createCellStyle(); // 获取单元格样式
+		/************** 设置单元格样式 *************/
+		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直
+		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
+		style.setWrapText(true);
+		HSSFFont font = workbook.createFont();
+		font.setColor(HSSFFont.COLOR_NORMAL);
+		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		style.setFont(font);
+
+		HSSFSheet sheet = workbook.createSheet(); // 创建sheet
+		// 设置表头
+		// 创建第一行
+		HSSFRow row1 = sheet.createRow(0);
+		HSSFCell cell = null;
+		for (int i = 0; i < headColumns.length; i++) {
+			// 创建列
+			cell = row1.createCell(i);
+			// 定义单元格为字符串类型
+			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+			// 设置单元格的样式
+			cell.setCellStyle(style);
+			// 设置单元格的值
+			cell.setCellValue(headColumns[i]);
+		}
+		HSSFRow row = null;
+		// 添加数据
+		Map<String, Object> data = null;
+		for (int i = 1; i <= dataset.size(); i++) {
+			data = dataset.get(i - 1);
+			if (data != null) {
+				row = sheet.createRow(i);
+				int index = 0;
+				for (Entry<String, Object> entry : data.entrySet()) {
+					row.createCell(index).setCellValue(entry.getValue().toString());
+					index++;
+				}
+			}
+		}
+		return workbook;
+	}
+
+	/**
+	 * 将数据集dataset导出到fileName文件中
+	 * @param headColumns 导出文件的列名
+	 * @param fieldColumns 
+	 * @param dataset 数据源
+	 * @return
+	 * @throws IOException 
+	 * @throws NoSuchMethodException 
+	 * @throws InvocationTargetException 
+	 * @throws IllegalAccessException 
+	 */
+	public static <T> HSSFWorkbook exportExcel(String[] headColumns, String[] fieldColumns, List<T> dataset) throws IOException, IllegalAccessException,
+			InvocationTargetException, NoSuchMethodException {
+		if (headColumns == null) {
+			throw new UtilException("excel列名不能为空");
+		}
+		if (dataset == null) {
+			throw new UtilException("数据集不能为空");
+		}
+		if (dataset.size() > MAX_DATA_SIZE) {
+			throw new UtilException("数据集太大,不能导出.最大数据集不能超过" + MAX_DATA_SIZE);
+		}
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFCellStyle style = workbook.createCellStyle(); // 获取单元格样式
+		/************** 设置单元格样式 *************/
+		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直
+		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
+		style.setWrapText(true);
+		HSSFFont font = workbook.createFont();
+		font.setColor(HSSFFont.COLOR_NORMAL);
+		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		style.setFont(font);
+
+		HSSFSheet sheet = workbook.createSheet(); // 创建sheet
+		// 设置表头
+		// 创建第一行
+		HSSFRow row1 = sheet.createRow(0);
+		HSSFCell cell = null;
+		for (int i = 0; i < headColumns.length; i++) {
+			// 创建列
+			cell = row1.createCell(i);
+			// 定义单元格为字符串类型
+			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+			// 设置单元格的样式
+			cell.setCellStyle(style);
+			// 设置单元格的值
+			cell.setCellValue(headColumns[i]);
+		}
+		HSSFRow row = null;
+		// 添加数据
+		T data = null;
+		Object obj = null;
+		for (int i = 1; i <= dataset.size(); i++) {
+			data = dataset.get(i - 1);
+			if (data != null) {
+				row = sheet.createRow(i);
+				for (int j = 0; j < fieldColumns.length; j++) {
+					cell = row.createCell(j);
+					try {
+						obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
+						if (obj instanceof Date) {
+							obj = sdf.format(obj);
+						}
+					} catch (NestedNullException e) {
+						LOGGER.warn(e.getMessage());
+						obj = null;
+					}
+					if (obj != null) {
+						cell.setCellValue(obj.toString());
+					} else {
+						cell.setCellValue("");
+					}
+				}
+			}
+		}
+		return workbook;
+	}
+
+	/**
+	 * 将数据集dataset导出到fileName文件中(只支持.xlsx格式)
+	 * @param headColumns 导出文件的列名
+	 * @param fieldColumns 
+	 * @param dataset 数据源
+	 * @return
+	 * @throws IOException 
+	 * @throws NoSuchMethodException 
+	 * @throws InvocationTargetException 
+	 * @throws IllegalAccessException 
+	 */
+	public static <T> SXSSFWorkbook exportBigExcel(String[] headColumns, String[] fieldColumns, List<T> dataset) throws IOException, IllegalAccessException,
+			InvocationTargetException, NoSuchMethodException {
+		if (headColumns == null) {
+			throw new UtilException("excel列名不能为空");
+		}
+		if (dataset == null) {
+			throw new UtilException("数据集不能为空");
+		}
+		SXSSFWorkbook workbook = new SXSSFWorkbook();
+		CellStyle style = workbook.createCellStyle(); // 获取单元格样式
+		/************** 设置单元格样式 *************/
+		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直
+		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
+		style.setWrapText(true);
+		Font font = workbook.createFont();
+		font.setColor(HSSFFont.COLOR_NORMAL);
+		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		style.setFont(font);
+
+		Sheet sheet = workbook.createSheet(); // 创建sheet
+		// 设置表头
+		// 创建第一行
+		Row row1 = sheet.createRow(0);
+		Cell cell = null;
+		for (int i = 0; i < headColumns.length; i++) {
+			// 创建列
+			cell = row1.createCell(i);
+			// 定义单元格为字符串类型
+			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+			// 设置单元格的样式
+			cell.setCellStyle(style);
+			// 设置单元格的值
+			cell.setCellValue(headColumns[i]);
+		}
+		Row row = null;
+		// 添加数据
+		T data = null;
+		Object obj = null;
+		for (int i = 1; i <= dataset.size(); i++) {
+			data = dataset.get(i - 1);
+			if (data != null) {
+				row = sheet.createRow(i);
+				for (int j = 0; j < fieldColumns.length; j++) {
+					cell = row.createCell(j);
+					try {
+						obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
+						if (obj instanceof Date) {
+							obj = sdf.format(obj);
+						}
+					} catch (NestedNullException e) {
+						LOGGER.warn(e.getMessage());
+						obj = null;
+					}
+					if (obj != null) {
+						cell.setCellValue(obj.toString());
+					} else {
+						cell.setCellValue("");
+					}
+				}
+			}
+		}
+		return workbook;
+	}
+
+	/**
+	 * 导入指定的excel文件
+	 * @param excelFile excel文件
+	 * @param startRowNum 从第几行数据开始导入
+	 * @return
+	 * @throws IOException
+	 */
+	public static Map<String, List<Map<String, Object>>> importExcel(File excelFile, int startRowNum) throws IOException {
+		Map<String, List<Map<String, Object>>> result = new HashMap<String, List<Map<String, Object>>>();
+
+		if (!excelFile.exists()) {
+			LOGGER.error("文件" + excelFile.getAbsolutePath() + "不存在");
+			return result;
+		}
+
+		Workbook workbook = null;
+		FileInputStream fis = new FileInputStream(excelFile);
+		int index = excelFile.getName().lastIndexOf('.');
+		if (index <= 0) {
+			fis.close();
+			throw new UtilException("excel文件的扩展名是.xls or .xlsx!");
+		}
+		String ext = excelFile.getName().substring(index).toLowerCase();
+		try {
+			if (".xlsx".equals(ext.toLowerCase())) {
+				// 支持excel2007 xlsx格式
+				workbook = new XSSFWorkbook(fis);
+			} else if (".xls".equals(ext)) {
+				// 支持excel2003以前 xls格式
+				workbook = new HSSFWorkbook(fis);
+			} else {
+				throw new UtilException("excel文件的扩展名是.xls or .xlsx!");
+			}
+		} catch (Exception ex) {
+			LOGGER.error("excel open error.", ex);
+			return result;
+		} finally {
+			if (fis != null) {
+				fis.close();
+			}
+		}
+		int sheetCount = workbook.getNumberOfSheets();
+		Sheet sheet = null;
+		Row row = null;
+		Cell cell = null;
+		int currentRowNum = 0, currentCellNum = 0;
+		// Object fieldValue = null;
+		Iterator<Row> rowIter = null;
+		Iterator<Cell> cellIter = null;
+
+		for (int i = 0; i < sheetCount; i++) {
+			String fieldsName[] = null;
+			// 行号清零
+			currentRowNum = 0;
+			// 顺序取sheet
+			sheet = workbook.getSheetAt(i);
+			List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
+			rowIter = sheet.iterator();
+			while (rowIter.hasNext()) {
+				Map<String, Object> obj = null;
+				// 获取当前行
+				row = rowIter.next();
+				if (row != null) {
+					currentRowNum++;
+
+					if (currentRowNum == 1) {// 第一列表示英文名称对应表字段
+						cellIter = row.iterator();
+						// 列号清零
+						currentCellNum = 0;
+						List<String> names = new ArrayList<String>();
+						while (cellIter.hasNext()) {
+							cell = cellIter.next();
+							names.add(cell.getStringCellValue());
+						}
+						fieldsName = names.toArray(new String[names.size()]);
+						continue;
+					}
+
+					// 跳过指定的行
+					if (currentRowNum < startRowNum) {
+						continue;
+					}
+
+					// 实例化对象
+					obj = new HashMap<String, Object>();// clazz.newInstance();
+
+					cellIter = row.iterator();
+					// 列号清零
+					currentCellNum = 0;
+					while (cellIter.hasNext()) {
+						cell = cellIter.next();
+						cell.setCellType(Cell.CELL_TYPE_STRING);
+						String fieldValue = cell.getStringCellValue();
+						obj.put(fieldsName[currentCellNum], fieldValue);
+						currentCellNum++;
+					}
+				}
+				if (obj != null)
+					datas.add(obj);
+
+			}
+			if (!datas.isEmpty())
+				result.put(sheet.getSheetName(), datas);
+		}
+		if (workbook != null) {
+			workbook.close();
+		}
+		return result;
+	}
+
+	/**
+	 * 导入指定的excel文件
+	 * @param inputStream excel文件流
+	 * @param startRowNum 从第几行数据开始导入
+	 * @param extName 文件扩展名,仅支持.xls 或 .xlsx
+	 * @return
+	 * @throws IOException
+	 */
+	public static Map<String, List<Map<String, Object>>> importExcel(InputStream inputStream, int startRowNum, String extName) throws IOException {
+
+		Map<String, List<Map<String, Object>>> result = new HashMap<String, List<Map<String, Object>>>();
+
+		Workbook workbook = null;
+
+		try {
+			if (".xlsx".equals(extName.toLowerCase())) {
+				// 支持excel2007 xlsx格式
+				workbook = new XSSFWorkbook(inputStream);
+			} else if (".xls".equals(extName)) {
+				// 支持excel2003以前 xls格式
+				workbook = new HSSFWorkbook(inputStream);
+			} else {
+				throw new UtilException("excel文件的扩展名是.xls or .xlsx!");
+			}
+		} catch (Exception ex) {
+			LOGGER.error("excel open error.", ex);
+			return result;
+		} finally {
+			if (inputStream != null) {
+				inputStream.close();
+			}
+		}
+
+		int sheetCount = workbook.getNumberOfSheets();
+		Sheet sheet = null;
+		Row row = null;
+		Cell cell = null;
+		int currentRowNum = 0, currentCellNum = 0;
+		// Object fieldValue = null;
+		Iterator<Row> rowIter = null;
+		Iterator<Cell> cellIter = null;
+
+		for (int i = 0; i < sheetCount; i++) {
+			String fieldsName[] = null;
+			// 行号清零
+			currentRowNum = 0;
+			// 顺序取sheet
+			sheet = workbook.getSheetAt(i);
+			List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
+			rowIter = sheet.iterator();
+			while (rowIter.hasNext()) {
+				Map<String, Object> obj = null;
+				// 获取当前行
+				row = rowIter.next();
+				if (row != null) {
+					currentRowNum++;
+
+					if (currentRowNum == 1) {// 第一列表示英文名称对应表字段
+						cellIter = row.iterator();
+						// 列号清零
+						currentCellNum = 0;
+						List<String> names = new ArrayList<String>();
+						while (cellIter.hasNext()) {
+							cell = cellIter.next();
+							names.add(cell.getStringCellValue());
+						}
+						fieldsName = names.toArray(new String[names.size()]);
+						continue;
+					}
+
+					// 跳过指定的行
+					if (currentRowNum < startRowNum) {
+						continue;
+					}
+
+					// 实例化对象
+					obj = new HashMap<String, Object>();// clazz.newInstance();
+
+					cellIter = row.iterator();
+					// 列号清零
+					currentCellNum = 0;
+					while (cellIter.hasNext()) {
+						cell = cellIter.next();
+						cell.setCellType(Cell.CELL_TYPE_STRING);
+						String fieldValue = cell.getStringCellValue();
+						obj.put(fieldsName[currentCellNum], fieldValue);
+						currentCellNum++;
+					}
+				}
+				if (obj != null)
+					datas.add(obj);
+
+			}
+			if (!datas.isEmpty())
+				result.put(sheet.getSheetName(), datas);
+		}
+		if (workbook != null) {
+			workbook.close();
+		}
+		return result;
+	}
+
+	public static void main(String[] args) {
+		File file = new File("e:/reward.xlsx");
+		String sheetName = "reward";
+		Map<String, List<Map<String, Object>>> map = null;
+		try {
+			map = POIUtil.importExcel(file, 1);
+		} catch (IOException e) {
+			e.printStackTrace();
+			return;
+		}
+		if (map != null) {
+			// Map<String, Object> loginParam = new HashMap<String, Object>();
+
+			SSLContextBuilder builder = new SSLContextBuilder();
+			try {
+				builder.loadTrustMaterial(null, new TrustStrategy() {
+
+					@Override
+					public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+						return true;
+					}
+				});
+			} catch (Exception e) {
+				e.printStackTrace();
+				return;
+			}
+
+			HttpPost httpPost = null;
+			CloseableHttpClient httpClient = null;
+			try {
+				SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build());
+				httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultCookieStore(new BasicCookieStore()).build();
+				// 登陆
+				httpPost = new HttpPost("https://ehjinrong.com/manage/admin/login.do?userName=sadmin&password=Hello@ehjr&captcha=411049");
+
+				HttpResponse httpResponse = httpClient.execute(httpPost);
+				HttpEntity httpEntity = httpResponse.getEntity();
+				String str = EntityUtils.toString(httpEntity);
+				System.out.println("--------" + str);
+				EntityUtils.consume(httpEntity);
+
+				// 发放奖励
+				for (Map<String, Object> row : map.get(sheetName)) {
+					try {
+						Long arg0 = Long.parseLong(row.get("user_id_").toString());
+						double arg1 = Double.parseDouble(row.get("reward").toString());
+						//String arg2 = row.get("tender_id_").toString();
+
+						Map<String, Object> parameterMap = new HashMap<String, Object>();
+						parameterMap.put("userId", arg0);
+						parameterMap.put("amount", arg1);
+						parameterMap.put("memo", "结清");
+
+						List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
+						if (parameterMap != null) {
+							for (Entry<String, Object> entry : parameterMap.entrySet()) {
+								String name = entry.getKey();
+								String value = ConvertUtils.convert(entry.getValue());
+								if (StringUtils.isNotEmpty(name)) {
+									nameValuePairs.add(new BasicNameValuePair(name, value));
+								}
+							}
+						}
+						httpPost = new HttpPost("https://ehjinrong.com/manage/sysAccount/fundAllocate.do");
+						httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
+						httpResponse = httpClient.execute(httpPost);
+						httpEntity = httpResponse.getEntity();
+						EntityUtils.toString(httpEntity);
+						EntityUtils.consume(httpEntity);
+
+						System.out.println("  userId:" + arg0 + "  reward:" + arg1);
+					} catch (Exception e) {
+						e.printStackTrace();
+					}
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			} finally {
+				httpPost.releaseConnection();
+				try {
+					httpClient.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+
+		}
+	}
+}

+ 53 - 12
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -1,31 +1,46 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+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.dal.dao.ClassGroupTeacherMapperDao;
 import com.ym.mec.biz.dal.dto.CreateCourseScheduleDto;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleComplaintsService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 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.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @Author Joburgess
@@ -42,6 +57,9 @@ public class CourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
+    
+    @Autowired
+    private CourseScheduleComplaintsService courseScheduleComplaintsService;
 
     @Autowired
     private SysUserFeignService sysUserFeignService;
@@ -187,5 +205,28 @@ public class CourseScheduleController extends BaseController {
 	public Object findCourseScheduleByClassGroup(Integer classGroupId){
         return succeed(scheduleService.findCourseScheduleByClassGroup(classGroupId));
     }
+    
+    @ApiOperation(value = "查询课程投诉详情")
+	@GetMapping("/queryCourseScheduleComplaintsDetail")
+    @PreAuthorize("@pcs.hasPermissions('course/queryCourseScheduleComplaintsDetail')")
+    public Object queryCourseScheduleComplaintsDetail(Long courseScheduleComplaintsId){
+    	CourseScheduleComplaints complaints = courseScheduleComplaintsService.get(courseScheduleComplaintsId);
+    	if(complaints == null){
+    		return failed("参数输入不正确");
+    	}
+    	
+    	SysUser user = sysUserFeignService.queryUserById(complaints.getUserId());
+    	complaints.getUser().setUsername(user.getUsername());
+    	
+    	CourseSchedule courseSchedule = scheduleService.get(complaints.getCourseScheduleId());
+    	SysUser teacher = sysUserFeignService.queryUserById(courseSchedule.getActualTeacherId());
+    	courseSchedule.getTeacher().setUsername(teacher.getUsername());
+    	
+    	ModelMap model = new ModelMap();
+    	model.put("complaints", complaints);
+    	model.put("courseSchedule", courseSchedule);
+    	
+    	return succeed(model);
+    }
 
 }

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

@@ -2,8 +2,10 @@ package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
+import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.common.controller.BaseController;
@@ -29,6 +31,8 @@ public class MusicGroupController extends BaseController {
 	private MusicGroupService musicGroupService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private EmployeeDao employeeDao;
 
 	@ApiOperation(value = "修改乐团基本信息")
 	@PostMapping("/update")
@@ -92,6 +96,10 @@ public class MusicGroupController extends BaseController {
 		if (sysUser == null) {
 			return failed("用户信息获取失败");
 		}
+		if(StringUtils.isEmpty(queryInfo.getOrganId())){
+			Employee employee = employeeDao.get(sysUser.getId());
+			queryInfo.setOrganId(employee.getOrganIdList());
+		}
 		return succeed(musicGroupService.queryMusicGroupPage(queryInfo));
 	}
 

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

@@ -13,7 +13,10 @@ 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.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
 import com.ym.mec.biz.service.MusicGroupQuitService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.common.controller.BaseController;
@@ -45,7 +48,18 @@ public class MusicGroupQuitController extends BaseController {
 	@GetMapping("/query")
 	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/query')")
 	public HttpResponseResult query(Long id) throws Exception {
-		return succeed(musicGroupQuitService.get(id));
+		MusicGroupQuit musicGroupQuit = musicGroupQuitService.get(id);
+		if (musicGroupQuit == null) {
+			return failed("参数不正确");
+		}
+
+		SysUser user = sysUserFeignService.queryUserById(musicGroupQuit.getUserId());
+		musicGroupQuit.getUser().setUsername(user.getUsername());
+
+		MusicGroup musicGroup = musicGroupService.get(musicGroupQuit.getMusicGroupId());
+		musicGroupQuit.setMusicGroup(musicGroup);
+
+		return succeed(musicGroupQuit);
 	}
 
 	@ApiOperation(value = "退团")

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationController.java

@@ -34,6 +34,13 @@ public class OrganizationController extends BaseController {
         return succeed(organizationService.queryPage(queryInfo));
     }
 
+    @ApiOperation(value = "获取员工所在分部列表")
+    @GetMapping("/queryEmployeeOrgan")
+    @PreAuthorize("@pcs.hasPermissions('organization/queryEmployeeOrgan')")
+    public Object queryEmployeeOrgan() throws Exception {
+        return succeed(organizationService.queryEmployeeOrgan());
+    }
+
     @ApiOperation(value = "新增分部")
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('organization/add')")

+ 16 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -1,5 +1,9 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.common.controller.BaseController;
@@ -19,11 +23,23 @@ public class StudentManageController extends BaseController {
 
     @Autowired
     private StudentManageService studentManageService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
 
     @ApiOperation(value = "获取学生列表")
     @GetMapping("/queryStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentList')")
     public Object queryStudentList(StudentManageQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isEmpty(queryInfo.getOrganId())){
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
         return succeed(studentManageService.findStudentsByOrganId(queryInfo));
     }
 

+ 20 - 5
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

@@ -1,21 +1,24 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.common.controller.BaseController;
-
 @RequestMapping("order")
 @Api(tags = "订单服务")
 @RestController
@@ -25,11 +28,23 @@ public class StudentPaymentOrderController extends BaseController {
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
 
     @ApiOperation(value = "获取订单列表")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('order/queryPage')")
     public Object queryOrderPage(StudentPaymentOrderQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isEmpty(queryInfo.getOrganId())){
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
         return succeed(studentPaymentOrderService.queryPage(queryInfo));
     }
 

+ 14 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -1,6 +1,9 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.ClassGroupService;
@@ -9,6 +12,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,6 +30,8 @@ public class TeacherController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
+    private EmployeeDao employeeDao;
+    @Autowired
     private ClassGroupService classGroupService;
 
     @ApiOperation(value = "新增教师")
@@ -39,6 +45,14 @@ public class TeacherController extends BaseController {
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('teacher/queryPage')")
     public Object queryPage(TeacherQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isEmpty(queryInfo.getOrganId())){
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
         return succeed(teacherService.queryPageDetail(queryInfo));
     }
 

+ 27 - 4
mec-web/src/main/java/com/ym/mec/web/controller/TeacherLeaveRecordController.java

@@ -1,17 +1,21 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.biz.dal.dto.TeacherLeaveRecordDto;
-import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
-import com.ym.mec.biz.service.TeacherLeaveRecordService;
-import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 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.dal.dto.TeacherLeaveRecordDto;
+import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
+import com.ym.mec.biz.service.TeacherLeaveRecordService;
+import com.ym.mec.common.controller.BaseController;
+
 @RequestMapping("teacherLeaveRecord")
 @Api(tags = "教师请假记录服务")
 @RestController
@@ -20,6 +24,9 @@ public class TeacherLeaveRecordController extends BaseController {
     @Autowired
     private TeacherLeaveRecordService teacherLeaveRecordService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
     @ApiOperation(value = "新增教师请假记录")
     @PostMapping("/add")
     public Object add(TeacherLeaveRecord teacherLeaveRecord){
@@ -32,4 +39,20 @@ public class TeacherLeaveRecordController extends BaseController {
     public Object queryPage(TeacherLeaveRecordDto queryInfo){
         return succeed(teacherLeaveRecordService.queryPage(queryInfo));
     }
+
+    @ApiOperation(value = "分页查询教师请假记录列表")
+    @GetMapping("/queryDetail")
+    public Object queryDetail(Long id){
+    	
+    	TeacherLeaveRecord teacherLeaveRecord = teacherLeaveRecordService.get(id);
+    	
+    	if(teacherLeaveRecord == null){
+    		return failed("参数不正确");
+    	}
+    	
+    	SysUser user = sysUserFeignService.queryUserById(teacherLeaveRecord.getUserId());
+    	teacherLeaveRecord.getUser().setUsername(user.getUsername());
+    	
+        return succeed(teacherLeaveRecord);
+    }
 }

+ 18 - 3
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupCategoryController.java

@@ -1,12 +1,15 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
 import com.ym.mec.biz.service.VipGroupCategoryService;
 import com.ym.mec.common.controller.BaseController;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,6 +26,10 @@ public class VipGroupCategoryController extends BaseController {
 
 	@Autowired
 	private VipGroupCategoryService vipGroupCategoryService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private EmployeeDao employeeDao;
 
 	@ApiOperation("单查询")
 	@GetMapping(value = "/query")
@@ -34,7 +41,15 @@ public class VipGroupCategoryController extends BaseController {
 	@ApiOperation("全查询")
 	@GetMapping(value = "/queryAll")
     @PreAuthorize("@pcs.hasPermissions('vipGroupCategory/queryAll')")
-	public Object queryAll(Long organId) {
+	public Object queryAll(String organId) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed("用户信息获取失败");
+		}
+		if(StringUtils.isEmpty(organId)){
+			Employee employee = employeeDao.get(sysUser.getId());
+			organId = employee.getOrganIdList();
+		}
 		return succeed(vipGroupCategoryService.findAllByOrgan(organId));
 	}
 

+ 47 - 13
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -1,32 +1,42 @@
 package com.ym.mec.web.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+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.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.StudentApplyRefundsService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 
 /**
  * @Author Joburgess
@@ -43,7 +53,12 @@ public class VipGroupManageController extends BaseController {
     private CourseScheduleService scheduleService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
 
+    @Autowired
+    private StudentApplyRefundsService studentApplyRefundsService;
+    
     @ApiOperation(value = "vip课申请")
     @PostMapping("/vipGroupApply")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/vipGroupApply')")
@@ -61,6 +76,14 @@ public class VipGroupManageController extends BaseController {
     @GetMapping("/queryAll")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/queryAll')")
     public Object queryAll(VipGroupQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(StringUtils.isEmpty(queryInfo.getOrganId())){
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
         return succeed(vipGroupService.findVipGroups(queryInfo));
     }
 
@@ -101,6 +124,17 @@ public class VipGroupManageController extends BaseController {
 		return succeed();
 	}
 
+    @ApiOperation(value = "查询退费详情")
+    @GetMapping("/queryApplyRefundDetail")
+    @PreAuthorize("@pcs.hasPermissions('vipGroupManage/queryApplyRefundDetail')")
+	public Object queryApplyRefundDetail(Long id) {
+    	StudentApplyRefunds studentApplyRefunds = studentApplyRefundsService.get(id);
+    	if(studentApplyRefunds == null){
+    		return failed("");
+    	}
+		return succeed();
+	}
+
     @ApiOperation(value = "获取VIP课教学记录")
     @GetMapping("/findVipGroupTeachingRecord")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/findVipGroupTeachingRecord')")