浏览代码

Merge remote-tracking branch 'origin/master'

周箭河 5 年之前
父节点
当前提交
5cd016e968
共有 24 个文件被更改,包括 322 次插入75 次删除
  1. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  2. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/GroupStatusEnum.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleTeacherSalaryQueryInfo.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java
  6. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageQueryInfo.java
  9. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentPaymentOrderQueryInfo.java
  10. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRegistrationQueryInfo.java
  11. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupQueryInfo.java
  12. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java
  13. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  14. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  15. 90 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  16. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java
  17. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  18. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  19. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  20. 1 2
      mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml
  21. 9 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  22. 10 0
      mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java
  23. 62 1
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  24. 26 69
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -233,4 +233,18 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     List<StudentPaymentOrder> findUserBuyVipGroupOrder(@Param("userId") Integer userId,
                                                        @Param("vipGroupId") Integer vipGroupId);
+
+    /**
+     * @describe 获取用户的团体订单
+     * @author Joburgess
+     * @date 2020/2/21
+     * @param userId:
+     * @param groupId:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentPaymentOrder>
+     */
+    List<StudentPaymentOrder> findUserGroupOrders(@Param("userId") Integer userId,
+                                                  @Param("groupId") String groupId,
+                                                  @Param("groupType") GroupType groupType,
+                                                  @Param("status") DealStatusEnum orderStatus);
 }

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

@@ -9,7 +9,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum GroupStatusEnum implements BaseEnum<String, GroupStatusEnum> {
 
     NORMAL("NORMAL", "正常"),
-    LOCK("LOCK", "锁定");
+    LOCK("LOCK", "锁定"),
+    FINISH("FINISH", "结束");
 
     private String code;
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleTeacherSalaryQueryInfo.java

@@ -22,6 +22,16 @@ public class CourseScheduleTeacherSalaryQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "课程类型",required = false)
     private String courseScheduleType;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public Integer getOrganId() {
         return organId;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/EndCourseScheduleQueryInfo.java

@@ -57,6 +57,16 @@ public class EndCourseScheduleQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "教学点编号")
     private Integer schoolId;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public Integer getSchoolId() {
         return schoolId;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupStudentQueryInfo.java

@@ -29,6 +29,16 @@ public class MusicGroupStudentQueryInfo extends QueryInfo {
   @ApiModelProperty(value = "缴费状态  PAID_COMPLETED(完成缴费), NON_PAYMENT(未缴费), PROCESSING(缴费中)",required = false)
   private String paymentStatus;
 
+  private boolean isExport = false;
+
+  public boolean getIsExport() {
+    return isExport;
+  }
+
+  public void setIsExport(boolean export) {
+    isExport = export;
+  }
+
   public Integer getClassGroupId() {
     return classGroupId;
   }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java

@@ -14,6 +14,16 @@ public class PracticeGroupQueryInfo extends QueryInfo {
 
     private Long practiceId;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public Long getPracticeId() {
         return practiceId;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SporadicChargeInfoQueryInfo.java

@@ -15,6 +15,16 @@ public class SporadicChargeInfoQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "类型",required = false)
     private String type;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public String getType() {
         return type;
     }

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

@@ -32,7 +32,7 @@ public class StudentManageQueryInfo extends QueryInfo {
 
     private Boolean isMake;
 
-    private Boolean isExport;
+    private Boolean isExport = false;
 
     private Boolean hasCourse;
 

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

@@ -32,6 +32,16 @@ public class StudentPaymentOrderQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "订单类型",required = false)
     private String orderType;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public String getOrganId() {
         return organId;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRegistrationQueryInfo.java

@@ -25,6 +25,16 @@ public class StudentRegistrationQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "用户名或手机号",required = false)
     private String name;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public String getName() {
         return name;
     }

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

@@ -18,6 +18,16 @@ public class VipGroupQueryInfo extends QueryInfo {
 
     private String status;
 
+    private boolean isExport = false;
+
+    public boolean getIsExport() {
+        return isExport;
+    }
+
+    public void setIsExport(boolean export) {
+        isExport = export;
+    }
+
     public String getStatus() {
         return status;
     }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -196,4 +196,13 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @return com.ym.mec.biz.dal.dto.PracticeBuyResultDto
 	 */
 	PracticeBuyResultDto queryOrderInfo(String orderNo);
+
+	/**
+	 * @describe
+	 * @author Joburgess
+	 * @date 2020/2/21
+	 * @param practiceGroupId:
+	 * @return com.ym.mec.common.entity.HttpResponseResult
+	 */
+	HttpResponseResult repay(Integer userId,Integer practiceGroupId);
 }

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

@@ -2884,6 +2884,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         params.put("courseScheduleIds", courseScheduleIdSet);
         List<CourseScheduleEndDto> results = new ArrayList<>();
         int count = courseScheduleDao.endCountCourseSchedules(params);
+        if(queryInfo.getIsExport() && count > 2000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());

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

@@ -584,6 +584,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         List<TeacherSalaryDto> dataList = null;
         int count = courseScheduleTeacherSalaryDao.countSalaries(params);
+        if(queryInfo.getIsExport() && count > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());

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

@@ -26,6 +26,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
@@ -2001,6 +2002,9 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         List<PracticeGroupDto> dataList = null;
         int count = practiceGroupDao.countPracticeGroupByOrgan(params);
+        if(queryInfo.getIsExport() && count > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
@@ -2325,14 +2329,21 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 1);
         ZoneId zoneId = ZoneId.systemDefault();
 
+        Date today=new Date();
+
         LocalDate now = LocalDate.now();
         if(renew){
             PracticeGroup userLatestPracticeGroup = practiceGroupDao.findUserPracticeGroup(userId,groupId);
             if(Objects.nonNull(userLatestPracticeGroup)){
+                if(userLatestPracticeGroup.getCoursesExpireDate().after(today)){
+                    throw new BizException("此课程组已超过可续费期限");
+                }
                 LocalDate lastExpiredDay=LocalDateTime.ofInstant(userLatestPracticeGroup.getCoursesExpireDate().toInstant(),DateUtil.zoneId).toLocalDate();
                 if(Objects.nonNull(lastExpiredDay)&&lastExpiredDay.compareTo(now)>=0){
                     now=lastExpiredDay;
                 }
+            }else{
+                throw new BizException("需要续费的课程组不存在");
             }
         }
         now.plusDays(1);
@@ -2870,13 +2881,23 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     public void orderCallback(StudentPaymentOrder order) {
         StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(order.getId());
-        if(studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)){
+        if(!studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)){
+            return;
+        }
+        List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(order.getUserId(), order.getMusicGroupId(), order.getGroupType(),null);
+        Map<DealStatusEnum, Long> statusOrderNumMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus, Collectors.counting()));
+        Long successOrderNum=statusOrderNumMap.get(DealStatusEnum.SUCCESS);
+        if(Objects.nonNull(successOrderNum)&&successOrderNum>0){
+            studentPaymentOrderDao.update(order);
             return;
         }
+
         if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
             courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(),GroupType.PRACTICE,0);
         }else{
+            studentPaymentOrderDao.update(order);
             groupService.deleteGroupInfo(order.getMusicGroupId(),GroupType.PRACTICE);
+            return;
         }
         studentPaymentOrderDao.update(order);
         SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(order.getUserId());
@@ -2986,4 +3007,72 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         practiceBuyResult.setTeacherName(teacher.getRealName());
         return practiceBuyResult;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public HttpResponseResult repay(Integer userId,Integer practiceGroupId) {
+        if(Objects.isNull(practiceGroupId)){
+            throw new BizException("请指定需要重新支付的课程组");
+        }
+        PracticeGroup practiceGroup = practiceGroupDao.get(practiceGroupId.longValue());
+        if(!practiceGroup.getGroupStatus().equals(GroupStatusEnum.LOCK)){
+            throw new BizException("此课程组不处于支付中");
+        }
+        List<StudentPaymentOrder> userGroupOrders = studentPaymentOrderDao.findUserGroupOrders(userId, practiceGroupId.toString(), GroupType.PRACTICE,null);
+        Map<DealStatusEnum, List<StudentPaymentOrder>> statusOrderMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus));
+        List<StudentPaymentOrder> successOrders=statusOrderMap.get(DealStatusEnum.SUCCESS);
+        if(!CollectionUtils.isEmpty(successOrders)&&successOrders.size()>0){
+            throw new BizException("此课程组存在支付成功的订单");
+        }
+
+        StudentPaymentOrder latestOrder=userGroupOrders.stream().max(Comparator.comparing(StudentPaymentOrder::getCreateTime)).get();
+        StudentPaymentOrder newOrder = new StudentPaymentOrder();
+        BeanUtils.copyProperties(latestOrder,newOrder);
+        newOrder.setId(null);
+
+        List<StudentPaymentOrder> ingOrders = statusOrderMap.get(DealStatusEnum.ING);
+        if(CollectionUtils.isEmpty(ingOrders)||ingOrders.size()<=0){
+            throw new BizException("此课程组不存在进行中的订单");
+        }else{
+            for (StudentPaymentOrder ingOrder : ingOrders) {
+                ingOrder.setStatus(DealStatusEnum.CLOSE);
+                ingOrder.setMemo("用户重新支付");
+                studentPaymentOrderDao.update(ingOrder);
+            }
+        }
+
+        String orderNo=idGeneratorService.generatorId("payment") + "";
+        String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
+        Map<String, BigDecimal> classFee = new HashMap<>();
+        classFee.put("course",newOrder.getActualAmount());
+        classFee.put("instrument",BigDecimal.ZERO);
+        classFee.put("accessories",BigDecimal.ZERO);
+        classFee.put("other",BigDecimal.ZERO);
+        try {
+            Map<String,Object> payMap = payService.getPayMap(
+                    newOrder.getActualAmount(),
+                    orderNo,
+                    baseApiUrl+"/api-student/studentOrder/notify",
+                    baseApiUrl+"/api-student/studentOrder/paymentResult?orderNo=" + orderNo,
+                    "vip课购买",
+                    practiceGroup.getName(),
+                    practiceGroup.getStudentId(),
+                    classFee,
+                    practiceGroup.getOrganId()
+            );
+
+            Map<String,BigDecimal> routingFee = (Map<String,BigDecimal>)payMap.get("routingFee");
+            newOrder.setOrganId(practiceGroup.getOrganId());
+            newOrder.setComAmount(routingFee.get("COM"));
+            newOrder.setPerAmount(routingFee.get("PER"));
+            newOrder.setMerNos((String) payMap.get("routingMerNos"));
+            newOrder.setPaymentChannel((String) payMap.get("type"));
+            newOrder.setUpdateTime(new Date());
+            studentPaymentOrderService.insert(newOrder);
+
+            return BaseController.succeed(payMap);
+        } catch (Exception e) {
+            throw new BizException("调用支付接口出错", e);
+        }
+    }
 }

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

@@ -138,6 +138,9 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
         PageInfo<SporadicChargeInfo> pageInfo = queryPage(queryInfo);
         List<SporadicChargeInfo> rows = pageInfo.getRows();
         if (rows != null && rows.size() > 0) {
+            if(queryInfo.getIsExport() && rows.size() > 50000){
+                throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+            }
             Set<Integer> organIds = rows.stream().map(e -> e.getOrganId()).collect(Collectors.toSet());
             List<Integer> userIds = rows.stream().map(e -> e.getUserId()).collect(Collectors.toList());
             if(userIds == null){

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

@@ -260,6 +260,9 @@ public class StudentManageServiceImpl implements StudentManageService {
 
         List<MusicGroupStudentsDto> dataList = null;
         int count = studentManageDao.countMusicGroupStudent(params);
+        if(queryInfo.getIsExport() && count > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());

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

@@ -147,6 +147,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         List<StudentApplyDetailDto> dataList = null;
         int count = studentRegistrationDao.queryStudentDetailCount(params);
+        if(queryInfo.getIsExport() && count > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());

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

@@ -546,6 +546,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		List<VipGroup> dataList = null;
 		int count = vipGroupDao.countVipGroupByOrgan(params);
+		if(queryInfo.getIsExport() && count > 50000){
+			throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+		}
 		if (count > 0) {
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());

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

@@ -133,10 +133,9 @@
 			practice_group pg
 			LEFT JOIN sys_user su ON pg.user_id_ = su.id_
 			LEFT JOIN `subject` s ON pg.subject_id_ = s.id_
-			LEFT JOIN student_payment_order spo ON spo.music_group_id_=pg.id_ AND spo.group_type_='PRACTICE'
 		WHERE
 			student_id_=#{userId}
-			AND spo.status_="SUCCESS"
+			AND pg.group_status_!='FINISH'
 	</select>
 	<select id="findUserPracticeGroup" resultMap="PracticeGroup">
 		SELECT * FROM practice_group WHERE student_id_=#{userId} AND id_=#{groupId};

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

@@ -510,4 +510,13 @@
     <select id="findUserBuyVipGroupOrder" resultMap="StudentPaymentOrder">
       select * from student_payment_order where  user_id_=#{userId} and music_group_id_=#{vipGroupId} and group_type_='VIP'
     </select>
+    <select id="findUserGroupOrders" resultMap="StudentPaymentOrder">
+        select * from student_payment_order
+        where user_id_=#{userId}
+        and music_group_id_=#{groupId}
+        and group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        <if test="status!=null">
+            and status_=#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+    </select>
 </mapper>

+ 10 - 0
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -165,4 +165,14 @@ public class PracticeGroupController extends BaseController {
         return succeed(practiceGroupService.queryOrderInfo(orderNo));
     }
 
+    @ApiOperation("重新支付")
+    @PostMapping(value = "/repay")
+    public HttpResponseResult repay(Integer groupId){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(practiceGroupService.repay(sysUser.getId(),groupId));
+    }
+
 }

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

@@ -26,6 +26,7 @@ import org.springframework.stereotype.Controller;
 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 javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
@@ -34,7 +35,7 @@ import java.util.stream.Collectors;
 
 @RequestMapping
 @Api(tags = "数据导出服务")
-@Controller
+@RestController
 public class ExportController extends BaseController {
 
     @Autowired
@@ -66,10 +67,54 @@ public class ExportController extends BaseController {
     @Autowired
     private SporadicChargeInfoService sporadicChargeInfoService;
 
+
+    @ApiOperation(value = "导出学员是否有课")
+    @PostMapping("export/studentHasCourse")
+    @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
+    public void studentHasCourse(HttpServletResponse response, StudentManageQueryInfo queryInfo) {
+        queryInfo.setRows(99999);
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                throw new BizException("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                    throw new BizException("非法请求");
+                }
+            }
+        }
+        queryInfo.setIsExport(true);
+        List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
+                    "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
+                    "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
+                    "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
+                    "subjectName","musicGroupStatus","vipGroupName","vipGroupStatus"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            workbook.write(response.getOutputStream());
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
     @ApiOperation(value = "导出陪练课列表")
     @GetMapping("export/practiceGroupList")
     @PreAuthorize("@pcs.hasPermissions('export/practiceGroupList')")
     public void queryAll(HttpServletResponse response,PracticeGroupQueryInfo queryInfo) {
+        queryInfo.setIsExport(true);
         queryInfo.setRows(999999999);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
@@ -114,6 +159,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('export/vipGroupList')")
     public void queryAll(HttpServletResponse response,VipGroupQueryInfo queryInfo) {
         queryInfo.setRows(999999999);
+        queryInfo.setIsExport(true);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -158,6 +204,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('export/superFindCourseSchedules')")
     public void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo,HttpServletResponse response){
         queryInfo.setRows(999999999);
+        queryInfo.setIsExport(true);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -198,6 +245,7 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('export/sporadicChargeInfo')")
     public void queryPage(SporadicChargeInfoQueryInfo queryInfo,HttpServletResponse response) {
         queryInfo.setRows(999999999);
+        queryInfo.setIsExport(true);
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             throw new BizException("用户信息获取失败");
@@ -262,6 +310,9 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('order/musicalListExport')")
     public void musicalListExport(HttpServletResponse response, String musicGroupId) {
         List<Goods> musicalList = studentPaymentOrderDetailService.getMusicalList(musicGroupId);
+        if(musicalList.size() > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "商品类型", "商品名称", "型号", "数量"}, new String[]{
                     "brief", "memo", "type.desc", "name", "specification", "sellCount"}, musicalList);
@@ -280,6 +331,9 @@ public class ExportController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('order/musicalListDetailExport')")
     public void musicalListDetailExport(HttpServletResponse response, String musicGroupId) {
         List<musicalListDetailDto> musicalList = studentPaymentOrderDetailService.getMusicalListDetail(musicGroupId);
+        if(musicalList.size() > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "购买商品", "采购方式", "乐器金额", "教辅金额", "课程金额", "订单总价"}, new String[]{
                     "organName", "musicGroupName", "userId", "username", "goodsNames", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesAmount", "courseAmount", "orderAmount"}, musicalList);
@@ -297,6 +351,7 @@ public class ExportController extends BaseController {
     @PostMapping(value = "studentRegistration/queryStudentApplyDetailExport")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/queryStudentApplyDetailExport')")
     public void queryStudentApplyDetailExport(StudentRegistrationQueryInfo queryInfo, HttpServletResponse response) {
+        queryInfo.setIsExport(true);
         List<StudentApplyDetailDto> studentApplyDetail = studentRegistrationService.queryStudentDetailPage(queryInfo).getRows();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生姓名", "家长姓名", "年级", "班级", "性别", "服从调剂", "报名专业", "实际专业", "联系电话", "学员缴费状态", "乐器购买方式"}, new String[]{
@@ -315,6 +370,7 @@ public class ExportController extends BaseController {
     @RequestMapping("courseScheduleTeacherSalary/export")
     @PreAuthorize("@pcs.hasPermissions('courseScheduleTeacherSalary/export')")
     public void export(CourseScheduleTeacherSalaryQueryInfo queryInfo, HttpServletResponse response) {
+        queryInfo.setIsExport(true);
         List<TeacherSalaryDto> teacherSalaries = courseScheduleTeacherSalaryService.querySalaries(queryInfo).getRows();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"用户编号", "用户名", "手机号", "课程类型", "实际薪水", "补助", "结算时间", "教师角色"}, new String[]{
@@ -341,9 +397,13 @@ public class ExportController extends BaseController {
             }
         }
         queryInfo.setRows(999999999);
+        queryInfo.setIsExport(true);
         Map<String, Object> params = new HashMap<String, Object>();
         MapUtil.populateMap(params, queryInfo);
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
+        if(studentPaymentOrderExportDtos.size() > 50000){
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
+        }
 
         long i = 1;
         for (StudentPaymentOrderExportDto row : studentPaymentOrderExportDtos) {
@@ -464,6 +524,7 @@ public class ExportController extends BaseController {
     @RequestMapping("export/musicGroupStudent")
     @PreAuthorize("@pcs.hasPermissions('export/musicGroupStudent')")
     public void queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo, HttpServletResponse response) {
+        queryInfo.setIsExport(true);
         queryInfo.setRows(99999);
         PageInfo<MusicGroupStudentsDto> musicGroupStudentsDtoPageInfo = studentManageService.queryMusicGroupStudent(queryInfo);
         try {

+ 26 - 69
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -3,7 +3,6 @@ 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.StudentManageListDto;
 import com.ym.mec.biz.dal.dto.UpdateStudentFeeDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.*;
@@ -14,24 +13,24 @@ import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.QueryInfo;
-import com.ym.mec.util.date.DateUtil;
-import com.ym.mec.util.excel.POIUtil;
 import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
+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 javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
 @Api(tags = "学生管理")
 @RestController
+@RequestMapping("studentManage")
 public class StudentManageController extends BaseController {
 
     @Autowired
@@ -48,50 +47,8 @@ public class StudentManageController extends BaseController {
     private EmployeeDao employeeDao;
 
     private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
-    @ApiOperation(value = "导出学员是否有课")
-    @PostMapping("export/studentHasCourse")
-    @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
-    public void studentHasCourse(HttpServletResponse response, StudentManageQueryInfo queryInfo) {
-        queryInfo.setRows(99999);
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            throw new BizException("用户信息获取失败");
-        }
-        if(!sysUser.getIsSuperAdmin()){
-            Employee employee = employeeDao.get(sysUser.getId());
-            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
-                queryInfo.setOrganId(employee.getOrganIdList());
-            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
-                throw new BizException("用户所在分部异常");
-            }else {
-                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
-                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
-                    throw new BizException("非法请求");
-                }
-            }
-        }
-        queryInfo.setIsExport(true);
-//        List<StudentManageListDto> rows = studentManageService.queryHasCourseStudent(queryInfo);
-        List<StudentManageListDto> rows = studentManageService.findStudentsByOrganId(queryInfo).getRows();
-        try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
-                    "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
-                    "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
-                    "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
-                    "subjectName","musicGroupStatus","vipGroupName","vipGroupStatus"}, rows);
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
-            response.flushBuffer();
-            workbook.write(response.getOutputStream());
-            workbook.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
     @ApiOperation(value = "获取学生列表")
-    @GetMapping("studentManage/queryStudentList")
+    @GetMapping("/queryStudentList")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentList')")
     public Object queryStudentList(StudentManageQueryInfo queryInfo){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -116,14 +73,14 @@ public class StudentManageController extends BaseController {
     }
 
     @ApiOperation(value = "学员注册")
-    @PostMapping("studentManage/register")
+    @PostMapping("/register")
     @PreAuthorize("@pcs.hasPermissions('studentManage/register')")
     public Object studentRegister(SysUser sysUser){
         return succeed(studentManageService.studentRegister(sysUser));
     }
 
     @ApiOperation(value = "修改学员信息")
-    @PostMapping("studentManage/studentUpdate")
+    @PostMapping("/studentUpdate")
     @PreAuthorize("@pcs.hasPermissions('studentManage/studentUpdate')")
     public Object studentUpdate(Integer id, String phone, String username, Integer gender, String realName, Date birthdate,String nation){
         SysUser sysUser = new SysUser();
@@ -138,14 +95,14 @@ public class StudentManageController extends BaseController {
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--获取学员列表")
-    @GetMapping("studentManage/queryMusicGroupStudent")
+    @GetMapping("/queryMusicGroupStudent")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudent')")
     public Object queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo){
         return succeed(studentManageService.queryMusicGroupStudent(queryInfo));
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--学员列表--查看班级")
-    @GetMapping("studentManage/queryStudentClassGroup")
+    @GetMapping("/queryStudentClassGroup")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentClassGroup')")
     @ApiImplicitParams({@ApiImplicitParam(name = "teacherId", value = "学生编号", required = true, dataType = "Integer"),
             @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
@@ -157,70 +114,70 @@ public class StudentManageController extends BaseController {
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--学员列表,汇总数据接口")
-    @GetMapping("studentManage/musicGroupStudentsSum")
+    @GetMapping("/musicGroupStudentsSum")
     @PreAuthorize("@pcs.hasPermissions('studentManage/musicGroupStudentsSum')")
     public Object musicGroupStudentsSum(String musicGroupId){
         return succeed(studentManageService.musicGroupStudentsSum(musicGroupId));
     }
 
     @ApiOperation(value = "乐团管理--乐团详情--点名总览")
-    @GetMapping("studentManage/queryMusicGroupStudentsSign")
+    @GetMapping("/queryMusicGroupStudentsSign")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudentsSign')")
     public Object queryMusicGroupStudentsSign(StudentSignQueryInfo queryInfo){
         return succeed(studentManageService.queryMusicGroupStudentsSign(queryInfo));
     }
 
     @ApiOperation(value = "根据学生ID获取学生基本报名信息")
-    @GetMapping("studentManage/findStudentBaseInfo")
+    @GetMapping("/findStudentBaseInfo")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentBaseInfo')")
     public Object findStudentBaseInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
         return succeed(studentManageService.findStudentManageBaseInfo(userId));
     }
 
     @ApiOperation(value = "根据学生ID获取其所在的乐团")
-    @GetMapping("studentManage/findStudentMusicGroups")
+    @GetMapping("/findStudentMusicGroups")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentMusicGroups')")
     public Object findStudentMusicGroups(@ApiParam(value = "学生编号", required = true) Integer userId){
         return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
     }
 
     @ApiOperation(value = "根据乐团获取排课列表")
-    @GetMapping("studentManage/findStudentCourses")
+    @GetMapping("/findStudentCourses")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourses')")
     public Object findStudentCourses(StudentManageCourseQueryInfo queryInfo){
         return succeed(studentManageService.findStudentCourseList(queryInfo));
     }
 
     @ApiOperation(value = "获取学生签到列表")
-    @GetMapping("studentManage/findStudentAttendances")
+    @GetMapping("/findStudentAttendances")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentAttendances')")
     public Object findStudentAttendances(StudentManageAttendanceQueryInfo queryInfo){
         return succeed(studentManageService.findStudentAttendances(queryInfo));
     }
 
     @ApiOperation(value = "获取学生vip课程")
-    @GetMapping("studentManage/findStudentVipGroups")
+    @GetMapping("/findStudentVipGroups")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroups')")
     public Object findStudentVipGroups(StudentManageCourseQueryInfo queryInfo){
         return succeed(studentManageService.findStudentVipGroups(queryInfo));
     }
 
     @ApiOperation(value = "获取学生vip班级列表")
-    @GetMapping("studentManage/findStudentVipGroupClass")
+    @GetMapping("/findStudentVipGroupClass")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroupClass')")
     public Object findStudentVipGroupClass(StudentManageVipClassQueryInfo queryInfo){
         return succeed(studentManageService.findStudentVipGroupClass(queryInfo));
     }
 
     @ApiOperation(value = "获取用户默认账户基本信息")
-    @GetMapping("studentManage/getUserCashAccountBaseInfo")
+    @GetMapping("/getUserCashAccountBaseInfo")
     @PreAuthorize("@pcs.hasPermissions('studentManage/getUserCashAccountBaseInfo')")
     public Object getUserCashAccountBaseInfo(Integer userId){
         return succeed(studentManageService.getStudentAccountBaseInfo(userId));
     }
 
     @ApiOperation(value = "获取学员扣费记录列表")
-    @GetMapping("studentManage/queryStudentPayment")
+    @GetMapping("/queryStudentPayment")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentPayment')")
     public Object queryStudentPayment(TeacherPaymentRecordInfo queryInfo){
         return succeed(studentManageService.queryStudentPayment(queryInfo));
@@ -231,7 +188,7 @@ public class StudentManageController extends BaseController {
      * @param mobile
      * @return
      */
-    @GetMapping(value = "studentManage/queryUserByPhone")
+    @GetMapping(value = "/queryUserByPhone")
     @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserByPhone')")
     public Object queryUserByPhone(String mobile) {
         return succeed(studentRegistrationService.queryUserByPhone(mobile));
@@ -241,7 +198,7 @@ public class StudentManageController extends BaseController {
      * 修改学员缴费金额和缴费周期
      * @return
      */
-    @PostMapping(value = "studentManage/updateStudentFee")
+    @PostMapping(value = "/updateStudentFee")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFee')")
     public Object updateStudentFee(UpdateStudentFeeDto studentFeeDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -257,7 +214,7 @@ public class StudentManageController extends BaseController {
      * 修改学员缴费周期锁定状态
      * @return
      */
-    @PostMapping(value = "studentManage/updateStudentFeeIsLock")
+    @PostMapping(value = "/updateStudentFeeIsLock")
     @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFeeIsLock')")
     public Object updateStudentFeeIsLock(UpdateStudentFeeDto studentFeeDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -273,7 +230,7 @@ public class StudentManageController extends BaseController {
      * 获取学员缴费日历信息
      * @return
      */
-    @GetMapping(value = "studentManage/findMusicGroupStudentFee")
+    @GetMapping(value = "/findMusicGroupStudentFee")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findMusicGroupStudentFee')")
     public Object findMusicGroupStudentFee(Integer studentId,String musicGroupId) {
         if(studentId == null || StringUtils.isEmpty(musicGroupId)){
@@ -290,7 +247,7 @@ public class StudentManageController extends BaseController {
      * 获取课程学员作业列表
      * @return
      */
-    @GetMapping(value = "studentManage/findStudentCourseHomeworks")
+    @GetMapping(value = "/findStudentCourseHomeworks")
     @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourseHomeworks')")
     public Object findStudentCourseHomeworks(QueryInfo queryInfo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -304,7 +261,7 @@ public class StudentManageController extends BaseController {
      * 获取课程学员作业列表
      * @return
      */
-    @GetMapping(value = "studentManage/sumStudentAttendance")
+    @GetMapping(value = "/sumStudentAttendance")
     @PreAuthorize("@pcs.hasPermissions('studentManage/sumStudentAttendance')")
     public Object sumStudentAttendance(Integer courseScheduleId) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();