浏览代码

Merge branch 'master' of git.dayaedu.com:yonge/mec

chengpeng 5 年之前
父节点
当前提交
7989e736b0
共有 24 个文件被更改,包括 457 次插入150 次删除
  1. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  3. 40 17
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java
  4. 5 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java
  5. 9 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleComplaints.java
  6. 6 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentApplyRefunds.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccountDetail.java
  8. 28 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java
  9. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  10. 56 14
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  11. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  12. 87 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  13. 3 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  14. 29 31
      mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml
  15. 8 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  16. 6 2
      mec-biz/src/main/resources/config/mybatis/SysUserCashAccountDetailMapper.xml
  17. 26 8
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  18. 9 0
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseScheduleController.java
  19. 16 2
      mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java
  20. 7 7
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java
  21. 17 2
      mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java
  22. 16 16
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java
  23. 18 5
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java
  24. 1 4
      mec-web/src/test/java/com/ym/webApplicationTest.java

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -141,4 +141,13 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     int countCoursePage(Map<String, Object> params);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [classGroupId]
+     * @return int
+     * @describe 统计班级人数
+     */
+    int countClassStudent(Long classGroupId);
 }

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -1,13 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
@@ -18,4 +17,12 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 	 * @return
 	 */
 	List<Goods> queryApplyGoodsList(@Param("musicGroupId") Integer musicGroupId, @Param("type") OrderDetailTypeEnum type);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/3
+	 * 根据学生vip课获取缴费订单
+	 */
+	StudentPaymentOrder findByStudentVipGroup(@Param("vipGroupId") Long vipGroupId,
+											  @Param("userId") Long userId);
 }

+ 40 - 17
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -13,53 +13,76 @@ import java.util.Map;
 
 public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 
-    /**
-     * @Author: Joburgess
-     * @Date: 2019/9/20
-     * 获取对应学生vip课
-     */
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/3
+	 * @params [userID]
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.StudentManageVipGroupDto>
+	 * @describe 获取对应学生vip课
+	 */
 	List<StudentManageVipGroupDto> findStudentVipGroups(Long userID);
 
 	/**
 	 * @Author: Joburgess
-	 * @Date: 2019/9/23
-	 * 学生端获取vip课列表
+	 * @Date: 2019/10/3
+	 * @params [params]
+	 * @return java.util.List<com.ym.mec.biz.dal.dto.StudentVipGroupShowListDto>
+	 * @describe 学生端获取vip课列表
 	 */
 	List<StudentVipGroupShowListDto> findVipGroups(Map<String,Object> params);
 
 	/**
 	 * @Author: Joburgess
-	 * @Date: 2019/9/23
-	 * 统计vip数
+	 * @Date: 2019/10/3
+	 * @params [params]
+	 * @return int
+	 * @describe 统计vip数
 	 */
 	int countVipGorups(Map<String,Object> params);
 
 	/**
 	 * @Author: Joburgess
-	 * @Date: 2019/9/23
-	 * 获取小课详情
+	 * @Date: 2019/10/3
+	 * @params [vipGroupId]
+	 * @return com.ym.mec.biz.dal.dto.VipGroupManageDetailDto
+	 * @describe 获取小课详情
 	 */
 	VipGroupManageDetailDto getVipGroupBaseInfo(Long vipGroupId);
 
 	/**
 	 * @Author: Joburgess
-	 * @Date: 2019/9/23
-	 * 获取小课考勤记录
+	 * @Date: 2019/10/3
+	 * @params [params]
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+	 * @describe 获取小课考勤记录
 	 */
     List<CourseSchedule> findVipGroupAttendances(Map<String,Object> params);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 统计小课考勤记录数
+     * @Date: 2019/10/3
+     * @params [params]
+     * @return int
+     * @describe 统计小课考勤记录数
      */
     int countVipGroupAttendance(Map<String,Object> params);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 获取vip课详情
+     * @Date: 2019/10/3
+     * @params [vipGroupId]
+     * @return com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto
+     * @describe 获取vip课详情
      */
     StudentVipGroupDetailDto getVipGroupDetail(Long vipGroupId);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [vipGroupId]
+     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Integer>>
+     * @describe 统计剩余课时数
+     */
+    List<Map<String,Integer>> countSurplusClassTimes(Long vipGroupId);
+
 }

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipGroupShowListDto.java

@@ -30,7 +30,7 @@ public class StudentVipGroupShowListDto {
     private Integer offlineClassesNum;
 
     @ApiModelProperty(value = "学生购买价格",required = false)
-    private BigDecimal unitPrice;
+    private BigDecimal totalPrice;
 
     @ApiModelProperty(value = "预计招生人数",hidden = true)
     private Integer expectStudentNum;
@@ -111,12 +111,12 @@ public class StudentVipGroupShowListDto {
         this.offlineClassesNum = offlineClassesNum;
     }
 
-    public BigDecimal getUnitPrice() {
-        return unitPrice;
+    public BigDecimal getTotalPrice() {
+        return totalPrice;
     }
 
-    public void setUnitPrice(BigDecimal unitPrice) {
-        this.unitPrice = unitPrice;
+    public void setTotalPrice(BigDecimal totalPrice) {
+        this.totalPrice = totalPrice;
     }
 
     public Integer getExpectStudentNum() {

+ 9 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleComplaints.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -20,7 +21,7 @@ public class CourseScheduleComplaints {
 	private String reason;
 	
 	/**  */
-	private String status;
+	private AuditStatusEnum status;
 	
 	/**  */
 	private String wfProcessId;
@@ -65,15 +66,15 @@ public class CourseScheduleComplaints {
 	public String getReason(){
 		return this.reason;
 	}
-			
-	public void setStatus(String status){
-		this.status = status;
+
+	public AuditStatusEnum getStatus() {
+		return status;
 	}
-	
-	public String getStatus(){
-		return this.status;
+
+	public void setStatus(AuditStatusEnum status) {
+		this.status = status;
 	}
-			
+
 	public void setWfProcessId(String wfProcessId){
 		this.wfProcessId = wfProcessId;
 	}

+ 6 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentApplyRefunds.java

@@ -1,9 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
-
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -23,10 +21,9 @@ public class StudentApplyRefunds {
 	/** 订单号 */
 	@ApiModelProperty(value = "订单号",required = true)
 	private String orderNo;
-	
-	/** 状态(1,交易中;2,成功交易;-1,交易失败;) */
-	@ApiModelProperty(value = "状态",required = true)
-	private DealStatusEnum status;
+
+	@ApiModelProperty(value = "审核状态",required = true)
+	private AuditStatusEnum status;
 	
 	/** 预计退费金额 */
 	@ApiModelProperty(value = "预计退费金额",required = true)
@@ -72,11 +69,11 @@ public class StudentApplyRefunds {
 		return this.orderNo;
 	}
 
-	public DealStatusEnum getStatus() {
+	public AuditStatusEnum getStatus() {
 		return status;
 	}
 
-	public void setStatus(DealStatusEnum status) {
+	public void setStatus(AuditStatusEnum status) {
 		this.status = status;
 	}
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccountDetail.java

@@ -61,6 +61,16 @@ public class SysUserCashAccountDetail {
 	/** 修改时间 */
 	private java.util.Date updateTime;
 
+	private String attribute;
+
+	public String getAttribute() {
+		return attribute;
+	}
+
+	public void setAttribute(String attribute) {
+		this.attribute = attribute;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 28 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -56,8 +56,14 @@ public class VipGroup {
 	@ApiModelProperty(value = "线下课课时数", required = false)
 	private Integer offlineClassesNum;
 
-	@ApiModelProperty(value = "学生购买价格",required = false)
-	private BigDecimal unitPrice;
+	@ApiModelProperty(value = "线上课单价",required = false)
+	private BigDecimal onlineClassesUnitPrice;
+
+	@ApiModelProperty(value = "线下课单价",required = false)
+	private BigDecimal offlineClassesUnitPrice;
+
+	@ApiModelProperty(value = "课程总价",required = false)
+	private BigDecimal totalPrice;
 
 	@ApiModelProperty(value = "审批状态",required = false)
 	private AuditStatusEnum auditStatus;
@@ -106,12 +112,28 @@ public class VipGroup {
 		this.vipGroupCategoryId = vipGroupCategoryId;
 	}
 
-	public BigDecimal getUnitPrice() {
-		return unitPrice;
+	public BigDecimal getOnlineClassesUnitPrice() {
+		return onlineClassesUnitPrice;
+	}
+
+	public void setOnlineClassesUnitPrice(BigDecimal onlineClassesUnitPrice) {
+		this.onlineClassesUnitPrice = onlineClassesUnitPrice;
+	}
+
+	public BigDecimal getOfflineClassesUnitPrice() {
+		return offlineClassesUnitPrice;
+	}
+
+	public void setOfflineClassesUnitPrice(BigDecimal offlineClassesUnitPrice) {
+		this.offlineClassesUnitPrice = offlineClassesUnitPrice;
+	}
+
+	public BigDecimal getTotalPrice() {
+		return totalPrice;
 	}
 
-	public void setUnitPrice(BigDecimal unitPrice) {
-		this.unitPrice = unitPrice;
+	public void setTotalPrice(BigDecimal totalPrice) {
+		this.totalPrice = totalPrice;
 	}
 
 	public String getName() {

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.common.service.BaseService;
 
@@ -104,4 +105,22 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * 获取学生上课记录
      */
     Object findStudentCourseScheduleRecords(StudentCourseScheduleRecordQueryInfo queryInfo);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [courseScheduleComplaints]
+     * @return void
+     * @describe 课程投诉
+     */
+    void courseScheduleCommplaint(CourseScheduleComplaints courseScheduleComplaints);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [courseScheduleComplaints]
+     * @return void
+     * @describe 课程投诉审核
+     */
+    void courseScheduleCommplaintAudit(CourseScheduleComplaints courseScheduleComplaints);
 }

+ 56 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
@@ -11,51 +12,92 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/21
-     * 创建vip课
+     * @Date: 2019/10/3
+     * @params [vipGroup]
+     * @return void
+     * @describe 创建vip课
      */
     void createVipGroup(VipGroupApplyDto vipGroup);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 获取可购买vip课列表
+     * @Date: 2019/10/3
+     * @params [queryInfo]
+     * @return com.ym.mec.common.page.PageInfo
+     * @describe 获取可购买vip课列表
      */
     PageInfo findStudentVipGroupList(StudentVipGroupQueryInfo queryInfo);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 获取vip课详情
+     * @Date: 2019/10/3
+     * @params [vipGroupId]
+     * @return com.ym.mec.biz.dal.dto.VipGroupManageDetailDto
+     * @describe 获取vip课详情
      */
     VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 获取vip课考勤记录
+     * @Date: 2019/10/3
+     * @params [queryInfo]
+     * @return com.ym.mec.common.page.PageInfo
+     * @describe 获取vip课考勤记录
      */
     PageInfo findVipGroupAttendances(VipGroupAttendanceQueryInfo queryInfo);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/9/23
-     * 学生端获取vip课详情
+     * @Date: 2019/10/3
+     * @params [vipGroupId]
+     * @return com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto
+     * @describe 学生端获取vip课详情
      */
     StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/10/1
-     * vip课程费用计算
+     * @Date: 2019/10/3
+     * @params [vipGroupCostCountParamsDto]
+     * @return com.ym.mec.biz.dal.dto.VipGroupCostCountDto
+     * @describe vip课程费用计算
      */
     VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto);
 
     /**
      * @Author: Joburgess
-     * @Date: 2019/10/2
-     * 购买vip课程
+     * @Date: 2019/10/3
+     * @params [vipGroupBuyParams]
+     * @return void
+     * @describe 购买vip课程
      */
     void buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [callbackParams]
+     * @return void
+     * @describe 支付回调接口
+     */
+    void orderCallback(String callbackParams);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [vipGroupId, studentId]
+     * @return void
+     * @describe 申请退课
+     */
+    void applyRefund(Long vipGroupId,Long studentId);
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/3
+     * @params [studentApplyRefunds]
+     * @return void
+     * @describe 退课申请审核
+     */
+    void applyRefundAudit(StudentApplyRefunds studentApplyRefunds);
+
 }

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

@@ -2,11 +2,14 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
@@ -35,6 +38,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private CourseScheduleDao courseScheduleDao;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -330,4 +335,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		pageInfo.setRows(dataList);
 		return pageInfo;
 	}
+
+	@Override
+	public void courseScheduleCommplaint(CourseScheduleComplaints courseScheduleComplaints) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		courseScheduleComplaints.setUserId(user.getId());
+		courseScheduleComplaints.setStatus(AuditStatusEnum.ING);
+		courseScheduleComplaintsDao.insert(courseScheduleComplaints);
+	}
+
+	@Override
+	public void courseScheduleCommplaintAudit(CourseScheduleComplaints courseScheduleComplaints) {
+		CourseScheduleComplaints newCourseScheduleComplaints=new CourseScheduleComplaints();
+		newCourseScheduleComplaints.setId(courseScheduleComplaints.getId());
+		newCourseScheduleComplaints.setStatus(courseScheduleComplaints.getStatus());
+		courseScheduleComplaintsDao.update(newCourseScheduleComplaints);
+	}
 }

+ 87 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -45,6 +45,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private VipGroupDefaultClassesUnitPriceDao vipGroupDefaultClassesUnitPriceDao;
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private VipGroupCategoryDao vipGroupCategoryDao;
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
@@ -53,6 +55,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     private StudentPaymentOrderDao studentPaymentOrderDao;
     @Autowired
     private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
+    @Autowired
+	private StudentApplyRefundsDao studentApplyRefundsDao;
+    @Autowired
+	private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
 
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
@@ -78,7 +86,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
+		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
 		ClassGroup classGroup=new ClassGroup();
+		classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
 		classGroup.setName(vipGroupApplyBaseInfoDto.getName());
 		classGroup.setExpectStudentNum(vipGroupApplyBaseInfoDto.getExpectStudentNum());
 		classGroup.setType(ClassGroupTypeEnum.VIP);
@@ -207,14 +217,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             throw new BizException("该课程已结束报名!");
         }
 
-
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
         StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
         studentPaymentOrder.setUserId(user.getId());
         String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
-        studentPaymentOrder.setExpectAmount(countVipGroupPredictFee(vipGroup));
+        studentPaymentOrder.setExpectAmount(countVipGroupPredictFee(vipGroup,vipGroup.getOnlineClassesUnitPrice(),vipGroup.getOfflineClassesUnitPrice()));
         if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){
             studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1())));
         }else{
@@ -227,10 +236,21 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
         studentVipGroupPayment.setUserId(user.getId());
-        studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
-        studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
+		studentVipGroupPayment.setVipGroupId(vipGroup.getId());
+		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
         studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
         studentVipGroupPaymentDao.insert(studentVipGroupPayment);
+
+		ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId());
+		int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue());
+		if(classGroup.getExpectStudentNum()==classStudents){
+			vipGroup.setStatus(VipGroupStatusEnum.FINISH);
+			vipGroupDao.update(vipGroup);
+		}
+		classGroup.setStudentNum(classGroup.getStudentNum()+1);
+		classGroupDao.update(classGroup);
+
+		//生成回调地址
     }
 
     /**
@@ -238,15 +258,72 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
      * @Date: 2019/10/2
      * 计算VIP课程预计收费
      */
-    private BigDecimal countVipGroupPredictFee(VipGroup vipGroup){
-        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroup(vipGroup.getId());
+    private BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
         BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
         BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
-        BigDecimal onlineVipGroupCharge = vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(onlineClassNum);
-        BigDecimal offlineVipGroupCharge = vipGroupDefaultClassesUnitPrice.
-                getOfflineClassesUnitPrice().
-                multiply(offlineClassNum);
+        BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+        BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
         return onlineVipGroupCharge.add(offlineVipGroupCharge);
     }
 
+	@Override
+	public void orderCallback(String callbackParams) {
+		/*
+		根据回调信息调整订单状态及vip课程状态等相关信息
+		 */
+	}
+
+	@Override
+	public void applyRefund(Long vipGroupId,Long studentId) {
+    	if(null==studentId){
+    		studentId=sysUserFeignService.queryUserInfo().getId().longValue();
+		}
+		StudentApplyRefunds studentApplyRefunds=new StudentApplyRefunds();
+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,studentId);
+		VipGroup vipGroup=vipGroupDao.get(vipGroupId);
+		//剩余课时数
+		Map surplusClassTimes=MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
+		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup,
+				new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getMsg()).toString()),
+				new BigDecimal(surplusClassTimes.get(TeachModeEnum.OFFLINE.getMsg()).toString())));
+		studentApplyRefunds.setStatus(AuditStatusEnum.ING);
+		String orderNo=StringUtils.join(new String[]{studentId.toString(),String.valueOf(System.currentTimeMillis())});
+		studentApplyRefunds.setOrderNo(orderNo);
+		studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId());
+		studentApplyRefunds.setUserId(studentId.intValue());
+		studentApplyRefundsDao.insert(studentApplyRefunds);
+	}
+
+	@Transactional(rollbackFor = Exception.class)
+	@Override
+	public void applyRefundAudit(StudentApplyRefunds studentApplyRefunds) {
+		StudentApplyRefunds oldStudentApplyRefunds=studentApplyRefundsDao.get(studentApplyRefunds.getId());
+		oldStudentApplyRefunds.setStatus(studentApplyRefunds.getStatus());
+		if(null==studentApplyRefunds.getActualAmount()){
+			oldStudentApplyRefunds.setActualAmount(oldStudentApplyRefunds.getExpectAmount());
+		}else{
+			oldStudentApplyRefunds.setActualAmount(studentApplyRefunds.getActualAmount());
+		}
+		oldStudentApplyRefunds.setRemark(studentApplyRefunds.getRemark());
+		studentApplyRefundsDao.update(oldStudentApplyRefunds);
+		switch (studentApplyRefunds.getStatus()){
+			case PASS:
+				sysUserCashAccountDao.incrAccount(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
+				SysUserCashAccount sysUserCashAccount = sysUserCashAccountDao.get(studentApplyRefunds.getId().intValue());
+				SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
+				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
+				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+				sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+				sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount());
+				sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
+				sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString());
+				sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+				break;
+			case REJECT:
+
+				break;
+			default:
+				throw new BizException("审核状态错误!");
+		}
+	}
 }

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -381,4 +381,7 @@
             LEFT JOIN teacher_school ts ON vg.teacher_school_id_ = ts.id_
             WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
     </select>
+    <select id="countClassStudent" resultType="int">
+        select count(*) from class_group_student_mapper where class_group_id_=#{classGroupId}
+    </select>
 </mapper>

+ 29 - 31
mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml

@@ -11,7 +11,7 @@
 		<result column="user_id_" property="userId" />
 		<result column="course_schedule_id_" property="courseScheduleId" />
 		<result column="reason_" property="reason" />
-		<result column="status_" property="status" />
+		<result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="wf_process_id_" property="wfProcessId" />
 		<result column="wf_order_id_" property="wfOrderId" />
 		<result column="create_time_" property="createTime" />
@@ -35,40 +35,38 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO course_schedule_complaints (id_,user_id_,course_schedule_id_,reason_,status_,wf_process_id_,wf_order_id_,create_time_,update_time_) VALUES(#{id},#{userId},#{courseScheduleId},#{reason},#{status},#{wfProcessId},#{wfOrderId},#{createTime},#{updateTime})
+		INSERT INTO course_schedule_complaints (id_,user_id_,course_schedule_id_,reason_,status_,wf_process_id_,wf_order_id_,create_time_,update_time_) VALUES(#{id},#{userId},#{courseScheduleId},#{reason},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{wfProcessId},#{wfOrderId},now(),now())
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleComplaints">
-		UPDATE course_schedule_complaints <set>
-<if test="status != null">
-status_ = #{status},
-</if>
-<if test="wfOrderId != null">
-wf_order_id_ = #{wfOrderId},
-</if>
-<if test="userId != null">
-user_id_ = #{userId},
-</if>
-<if test="wfProcessId != null">
-wf_process_id_ = #{wfProcessId},
-</if>
-<if test="id != null">
-id_ = #{id},
-</if>
-<if test="courseScheduleId != null">
-course_schedule_id_ = #{courseScheduleId},
-</if>
-<if test="reason != null">
-reason_ = #{reason},
-</if>
-<if test="updateTime != null">
-update_time_ = #{updateTime},
-</if>
-<if test="createTime != null">
-create_time_ = #{createTime},
-</if>
-</set> WHERE id_ = #{id} 
+		UPDATE course_schedule_complaints
+		<set>
+			<if test="status != null">
+			status_ = #{status, typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"},
+			</if>
+			<if test="wfOrderId != null">
+			wf_order_id_ = #{wfOrderId},
+			</if>
+			<if test="userId != null">
+			user_id_ = #{userId},
+			</if>
+			<if test="wfProcessId != null">
+			wf_process_id_ = #{wfProcessId},
+			</if>
+			<if test="id != null">
+			id_ = #{id},
+			</if>
+			<if test="courseScheduleId != null">
+			course_schedule_id_ = #{courseScheduleId},
+			</if>
+			<if test="reason != null">
+			reason_ = #{reason},
+			</if>
+			<if test="updateTime != null">
+			update_time_ = now(),
+			</if>
+		</set> WHERE id_ = #{id}
 	</update>
 	
 	<!-- 根据主键删除一条记录 -->

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

@@ -142,4 +142,12 @@
     <select id="queryApplyGoodsList" resultMap="Goods" parameterType="map">
 		select g.* from goods g where g.id_ in (SELECT spod.goods_id_list_ FROM student_payment_order spo left join student_payment_order_detail spod on spo.id_ = spod.payment_order_id_ where spo.music_group_id_ = #{musicGroupId} and spo.type_ = 'APPLY' and spod.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
 	</select>
+    <select id="findByStudentVipGroup" resultMap="StudentPaymentOrder">
+        SELECT
+            spo.*
+        FROM
+            student_vip_group_payment svgp
+            LEFT JOIN student_payment_order spo ON svgp.student_payment_order_id_=spo.id_
+            WHERE svgp.user_id_=#{userId} AND svgp.vip_group_id_=#{vipGroupId}
+    </select>
 </mapper>

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

@@ -19,6 +19,7 @@
         <result column="comment_" property="comment"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
+        <result column="attribute_" property="attribute"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -40,8 +41,8 @@
         </selectKey>
         -->
         INSERT INTO sys_user_cash_account_detail
-        (user_id_,trans_no_,type_,amount_,balance_,description_,comment_,create_time_,update_time_)
-        VALUES(#{userId},#{transNo},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{balance},#{description},#{comment},now(),now())
+        (user_id_,trans_no_,type_,amount_,balance_,description_,comment_,create_time_,update_time_,attribute_)
+        VALUES(#{userId},#{transNo},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{amount},#{balance},#{description},#{comment},now(),now(),#{attribute})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -78,6 +79,9 @@
             <if test="transType != null">
                 trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="attribu != null">
+                attribu_ = #{attribu},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

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

@@ -19,10 +19,12 @@
         <result column="online_classes_num_" property="onlineClassesNum"/>
         <result column="offline_classes_num_" property="offlineClassesNum"/>
         <result column="audit_status_" property="auditStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="unit_price_" property="unitPrice"/>
         <result column="organ_id_list_" property="organIdList"/>
         <result column="vip_group_activity_id_" property="vipGroupActivityId"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="online_classes_unit_price_" property="onlineClassesUnitPrice"/>
+        <result column="offline_classes_unit_price_" property="offlineClassesUnitPrice"/>
+        <result column="total_price_" property="totalPrice"/>
     </resultMap>
 
     <resultMap id="studentManageVipGroup" type="com.ym.mec.biz.dal.dto.StudentManageVipGroupDto" extends="VipGroup">
@@ -49,7 +51,7 @@
         <result column="payment_expire_date_" property="paymentExpireDate"/>
         <result column="online_classes_num_" property="onlineClassesNum"/>
         <result column="offline_classes_num_" property="offlineClassesNum"/>
-        <result column="unit_price_" property="unitPrice"/>
+        <result column="unit_price_" property="totalPrice"/>
         <result column="expect_student_num_" property="expectStudentNum"/>
         <result column="student_num_" property="studentNum"/>
         <result column="teacher_name_" property="teacherName"/>
@@ -88,8 +90,8 @@
         </selectKey>
         -->
         INSERT INTO vip_group
-        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,unit_price_,organ_id_list_,vip_group_activity_id_,status_)
-        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{unitPrice},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+        (id_,user_id_,single_class_minutes_,payment_expire_date_,courses_expire_date_,create_time_,update_time_,teacher_school_id_,online_classes_num_,offline_classes_num_,registration_start_time_,organ_id_list_,vip_group_activity_id_,status_,online_classes_unit_price_,offline_classes_unit_price_,total_price_)
+        VALUES(#{id},#{userId},#{singleClassMinutes},#{paymentExpireDate},#{coursesExpireDate},now(),now(),#{teacherSchoolId},#{onlineClassesNum},#{offlineClassesNum},#{registrationStartTime},#{organIdList},#{vipGroupActivityId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{onlineClassesUnitPrice},#{offline_classes_unit_price_},#{total_price_})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -123,9 +125,6 @@
             <if test="registrationStartTime != null">
                 registration_start_time_ = #{registrationStartTime},
             </if>
-            <if test="unitPrice!=null">
-                unit_price_=#{unitPrice}
-            </if>
             <if test="organIdList!=null">
                 organ_id_list_=#{organIdList}
             </if>
@@ -141,6 +140,15 @@
             <if test="status_ != null">
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="onlineClassesUnitPrice != null">
+                online_classes_unit_price_ = #{onlineClassesUnitPrice},
+            </if>
+            <if test="offlineClassesUnitPrice != null">
+                offline_classes_unit_price_ = #{offlineClassesUnitPrice},
+            </if>
+            <if test="totalPrice != null">
+                total_price_ = #{totalPrice},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>
@@ -184,7 +192,7 @@
             vg.courses_expire_date_,
             vg.online_classes_num_,
             vg.offline_classes_num_,
-            vg.unit_price_,
+            vg.total_price_,
             cg.expect_student_num_,
             cg.student_num_,
             su.username_ teacher_name_,
@@ -286,4 +294,14 @@
           LEFT JOIN sys_user su ON cgtm.user_id_=su.id_
         WHERE vg.id_=#{vipGroupId}
     </select>
+    <select id="countSurplusClassTimes" resultType="java.util.Map">
+        SELECT
+            cs.teach_mode_ as 'key',
+            COUNT(cs.id_) as 'value'
+        FROM
+            vip_group_class_group_mapper vgcgm
+            LEFT JOIN course_schedule cs ON vgcgm.class_group_id_=cs.class_group_id_
+            WHERE cs.status_="NOT_START" AND cs.type_="VIP" AND vgcgm.vip_group_id_=#{vipGroupId}
+            GROUP BY cs.teach_mode_
+    </select>
 </mapper>

+ 9 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseScheduleController.java

@@ -1,11 +1,13 @@
 package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,4 +63,11 @@ public class StudentCourseScheduleController extends BaseController {
         return succeed(scheduleService.findStudentCourseScheduleRecords(queryInfo));
     }
 
+    @ApiModelProperty("课程投诉")
+    @PostMapping("/courseScheduleCommplaint")
+    public Object courseScheduleCommplaint(CourseScheduleComplaints courseScheduleComplaints){
+        scheduleService.courseScheduleCommplaint(courseScheduleComplaints);
+        return succeed();
+    }
+
 }

+ 16 - 2
mec-student/src/main/java/com/ym/mec/student/controller/StudentVipGroupController.java

@@ -2,13 +2,13 @@ package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.dto.ConditionDto;
 import com.ym.mec.biz.dal.dto.QueryConditionDto;
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.service.SubjectService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -60,4 +60,18 @@ public class StudentVipGroupController extends BaseController {
         return succeed(vipGroupService.getVipGroupShowDetail(vipGroupId));
     }
 
+    @ApiModelProperty("vip课购买")
+    @PostMapping("/buyVipGroup")
+    public Object buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams){
+        vipGroupService.buyVipGroup(vipGroupBuyParams);
+        return succeed();
+    }
+
+    @ApiModelProperty("vip课购买")
+    @PostMapping("/applyRefund")
+    public Object applyRefund(Long vipGroupId){
+        vipGroupService.applyRefund(vipGroupId,null);
+        return succeed();
+    }
+
 }

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

@@ -1,21 +1,21 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
 import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
+import com.ym.mec.biz.service.VipGroupService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
-
 import org.springframework.beans.factory.annotation.Autowired;
 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.dto.VipGroupApplyDto;
-import com.ym.mec.biz.service.VipGroupService;
-import com.ym.mec.common.controller.BaseController;
-
 /**
  * @Author Joburgess
  * @Date 2019/9/21

+ 17 - 2
mec-util/src/main/java/com/ym/mec/util/collection/MapUtil.java

@@ -1,15 +1,17 @@
 package com.ym.mec.util.collection;
 
+import org.apache.commons.lang3.StringUtils;
+
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang3.StringUtils;
-
 public class MapUtil {
 
 	private static final Object[] EMPTY_ARRAY = {};
@@ -95,4 +97,17 @@ public class MapUtil {
 		}
 		return (T) obj;
 	}
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/3
+	 * mybatis返回结果转换为Map
+	 */
+	public static Map convertMybatisMap(List<Map<String,Integer>> maps){
+		Map result=new HashMap();
+		maps.forEach(stringIntegerMap -> {
+			result.put(stringIntegerMap.get("key"),stringIntegerMap.get("value"));
+		});
+		return result;
+	}
 }

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

@@ -1,28 +1,21 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
+import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-
-import java.util.Date;
-import java.util.List;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
-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 org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.common.controller.BaseController;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @Author Joburgess
@@ -93,4 +86,11 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
+    @ApiOperation(value = "课程投诉审核")
+    @GetMapping(value = "/courseScheduleCommplaintAudit")
+    public Object courseScheduleCommplaintAudit(CourseScheduleComplaints courseScheduleComplaints){
+        scheduleService.courseScheduleCommplaintAudit(courseScheduleComplaints);
+        return succeed();
+    }
+
 }

+ 18 - 5
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -1,16 +1,15 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
+import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
+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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
-import com.ym.mec.biz.service.VipGroupService;
-import com.ym.mec.common.controller.BaseController;
-
 /**
  * @Author Joburgess
  * @Date 2019/9/21
@@ -41,4 +40,18 @@ public class VipGroupManageController extends BaseController {
     public Object getVipGroupAttendances(@RequestBody VipGroupAttendanceQueryInfo queryInfo){
         return succeed(vipGroupService.findVipGroupAttendances(queryInfo));
     }
+
+    @ApiOperation("退课申请")
+    @PostMapping("/applyRefundForStudent")
+    public Object applyRefundForStudent(Long vipGroupId,Long studentId){
+        vipGroupService.applyRefund(vipGroupId,studentId);
+        return succeed();
+    }
+
+    @ApiOperation("退课申请审核")
+    @PostMapping("/applyRefundAudit")
+    public Object applyRefundAudit(StudentApplyRefunds studentApplyRefunds){
+        vipGroupService.applyRefundAudit(studentApplyRefunds);
+        return succeed();
+    }
 }

+ 1 - 4
mec-web/src/test/java/com/ym/webApplicationTest.java

@@ -21,10 +21,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**