Browse Source

Merge branch 'saas_2022_05_17_activity' of http://git.dayaedu.com/yonge/mec into master_saas

zouxuan 3 years ago
parent
commit
22dee1a271
18 changed files with 368 additions and 159 deletions
  1. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java
  3. 100 45
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserQualificationsVo.java
  5. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java
  6. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java
  7. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java
  8. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampUserRelationService.java
  9. 36 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  10. 10 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  11. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  12. 43 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java
  13. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java
  14. 30 5
      mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml
  15. 32 0
      mec-student/src/main/java/com/ym/mec/student/controller/ActivityUserMapperController.java
  16. 31 89
      mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java
  17. 8 0
      mec-student/src/main/java/com/ym/mec/student/controller/TempLittleArtistTrainingCampController.java
  18. 19 0
      mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java

@@ -105,4 +105,8 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
      * @date 2021/11/15 16:38
      */
     List<ActivityStudentDto> queryActivityUserMapper(Map<String, Object> params);
+
+    //获取学员未排课资格
+    Integer getStudentNoMapperInfo(@Param("userId") Integer userId,
+                                  @Param("activityId") Integer activityId);
 }

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

@@ -34,6 +34,8 @@ public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleAr
      */
     <T> IPage<T> queryUserTrainingDetail(Page<T> page, @Param("param") Map<String, Object> param);
 
+    <T> List<T> queryUserTrainingDetail(@Param("param") Map<String, Object> param);
+
     List<ImGroup> queryCampImGroup(String imGroupIds);
 
     Integer queryUserTrainingPlayTime(@Param("param") Map<String, Object> param);

+ 100 - 45
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ActivityUserMapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -10,56 +11,78 @@ import java.math.BigDecimal;
  */
 public class ActivityUserMapper extends BaseEntity {
 
-	/**  */
 	private Integer id;
 	
-	/**  */
+	@ApiModelProperty(value = "活动编号")
 	private Integer activityId;
 	
-	/**  */
+	@ApiModelProperty(value = "学员编号")
 	private Integer userId;
 
-	/**  */
+	@ApiModelProperty(value = "指导老师编号")
 	private Integer teacherId;
 	
-	/** vip课排课标记0没有排课资格1未排课2已排课 */
+	@ApiModelProperty(value = "vip课排课标记0没有排课资格1未排课2已排课")
 	private Integer vipFlag = 0;
 	
-	/**  */
+	@ApiModelProperty(value = "赠送vip课次数")
 	private Integer giveVipFlag = 0;
-	
-	/**  */
+
+	@ApiModelProperty(value = "网管课次数")
 	private Integer practiceFlag = 0;
-	
-	/**  */
+
+	@ApiModelProperty(value = "赠送网管课次数")
 	private Integer givePracticeFlag = 0;
 
-	/**  */
+	@ApiModelProperty(value = "购买会员标识")
 	private Integer memberFlag = 0;
 
-	/**  */
+	@ApiModelProperty(value = "赠送会员标识")
 	private Integer giveMemberFlag = 0;
 
+	@ApiModelProperty(value = "购买的总课时数")
+	private Integer totalCourseNum;
+
+	@ApiModelProperty(value = "赠送的总课时数")
+	private Integer totalGiveCourseNum;
+
+	@ApiModelProperty(value = "剩余的总课时数")
+	private Integer subCourseNum;
+
+	@ApiModelProperty(value = "剩余的赠送课时数")
+	private Integer subGiveCourseNum;
+
+	@ApiModelProperty(value = "缴费编号")
 	private Long paymentOrderId;
 
+	@ApiModelProperty(value = "已排课的vip课程组编号")
 	private Long vipGroupId;
 
+	@ApiModelProperty(value = "已排课的赠送的vip课程组编号")
 	private Long giveVipGroupId;
 
+	@ApiModelProperty(value = "会员订单号")
 	private Long memberOrderId;
 
+	@ApiModelProperty(value = "赠送的会员订单号")
 	private Long giveMemberOrderId;
 
+	@ApiModelProperty(value = "已排课的陪练课课程组编号")
 	private Long practiceGroupId;
 
+	@ApiModelProperty(value = "已排课的陪练课课程组编号")
 	private Long givePracticeGroupId;
 
+	@ApiModelProperty(value = "是否退费")
 	private Boolean returnFee = false;
 
+	@ApiModelProperty(value = "实际支付金额")
 	private BigDecimal actualPrice = BigDecimal.ZERO;
 
+	@ApiModelProperty(value = "添加资格时的备注")
 	private String addMemo;
 
+	@ApiModelProperty(value = "减少资格时的备注")
 	private String cutMemo;
 	
 	/**  */
@@ -68,9 +91,73 @@ public class ActivityUserMapper extends BaseEntity {
 	/**  */
 	private java.util.Date updateTime;
 
-	//赠送的优惠券编号
+	@ApiModelProperty(value = "赠送的优惠券编号")
 	private Integer giveCouponId;
 
+	public Integer getTotalCourseNum() {
+		return totalCourseNum;
+	}
+
+	public void setTotalCourseNum(Integer totalCourseNum) {
+		this.totalCourseNum = totalCourseNum;
+	}
+
+	public Integer getTotalGiveCourseNum() {
+		return totalGiveCourseNum;
+	}
+
+	public void setTotalGiveCourseNum(Integer totalGiveCourseNum) {
+		this.totalGiveCourseNum = totalGiveCourseNum;
+	}
+
+	public Integer getSubCourseNum() {
+		return subCourseNum;
+	}
+
+	public void setSubCourseNum(Integer subCourseNum) {
+		this.subCourseNum = subCourseNum;
+	}
+
+	public Integer getSubGiveCourseNum() {
+		return subGiveCourseNum;
+	}
+
+	public void setSubGiveCourseNum(Integer subGiveCourseNum) {
+		this.subGiveCourseNum = subGiveCourseNum;
+	}
+
+	public Long getVipGroupId() {
+		return vipGroupId;
+	}
+
+	public void setVipGroupId(Long vipGroupId) {
+		this.vipGroupId = vipGroupId;
+	}
+
+	public Long getGiveVipGroupId() {
+		return giveVipGroupId;
+	}
+
+	public void setGiveVipGroupId(Long giveVipGroupId) {
+		this.giveVipGroupId = giveVipGroupId;
+	}
+
+	public Long getPracticeGroupId() {
+		return practiceGroupId;
+	}
+
+	public void setPracticeGroupId(Long practiceGroupId) {
+		this.practiceGroupId = practiceGroupId;
+	}
+
+	public Long getGivePracticeGroupId() {
+		return givePracticeGroupId;
+	}
+
+	public void setGivePracticeGroupId(Long givePracticeGroupId) {
+		this.givePracticeGroupId = givePracticeGroupId;
+	}
+
 	public Integer getGiveCouponId() {
 		return giveCouponId;
 	}
@@ -151,38 +238,6 @@ public class ActivityUserMapper extends BaseEntity {
 		this.returnFee = returnFee;
 	}
 
-	public Long getVipGroupId() {
-		return vipGroupId;
-	}
-
-	public void setVipGroupId(Long vipGroupId) {
-		this.vipGroupId = vipGroupId;
-	}
-
-	public Long getGiveVipGroupId() {
-		return giveVipGroupId;
-	}
-
-	public void setGiveVipGroupId(Long giveVipGroupId) {
-		this.giveVipGroupId = giveVipGroupId;
-	}
-
-	public Long getPracticeGroupId() {
-		return practiceGroupId;
-	}
-
-	public void setPracticeGroupId(Long practiceGroupId) {
-		this.practiceGroupId = practiceGroupId;
-	}
-
-	public Long getGivePracticeGroupId() {
-		return givePracticeGroupId;
-	}
-
-	public void setGivePracticeGroupId(Long givePracticeGroupId) {
-		this.givePracticeGroupId = givePracticeGroupId;
-	}
-
 	public Long getPaymentOrderId() {
 		return paymentOrderId;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserQualificationsVo.java

@@ -21,6 +21,9 @@ public class TempCampUserQualificationsVo {
     @ApiModelProperty(value = "训练营id")
     private Integer campId;
 
+    @ApiModelProperty(value = "训练营url")
+    private String url;
+
     public Integer getQualifications() {
         return qualifications;
     }
@@ -60,4 +63,12 @@ public class TempCampUserQualificationsVo {
     public void setCampId(Integer campId) {
         this.campId = campId;
     }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java

@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 public interface ActivityUserMapperService extends BaseService<Integer, ActivityUserMapper> {
 
@@ -115,4 +116,7 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     * @date 2021/12/29 17:28
     */
     void addOrderDetail2Activity(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> activity);
+
+    //获取学员未排课资格
+    Map<String,Object> getStudentNoMapperInfo();
 }

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

@@ -394,4 +394,7 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	* @date 2021/11/2 18:07
 	*/
 	Map<String,BigDecimal> getStudentSurplusCourseFee(Long practiceGroupId);
+
+	//学生端网管课活动排课
+	HttpResponseResult studentCreateActivityPracticeGroup(PracticeGroupBuyDto practiceGroupBuyParams);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java

@@ -11,6 +11,8 @@ import com.ym.mec.biz.dal.vo.TempCampUserVo;
 import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
 import com.ym.mec.common.page.PageInfo;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -109,6 +111,11 @@ public interface TempLittleArtistTrainingCampService extends IService<TempLittle
      * 云教练训练是否达标
      */
     TempCampUserTrainingPlayTimeVo queryUserTrainingPlayTime();
+
+    /**
+     * 导出小小训练营想详情
+     */
+    void exportUserTrainingDetail(Map<String, Object> param, HttpServletResponse response) throws IOException;
 }
 
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampUserRelationService.java

@@ -16,6 +16,13 @@ public interface TempLittleArtistTrainingCampUserRelationService extends IServic
     TempLittleArtistTrainingCampUserRelationDao getDao();
 
     /**
+     * 参与训练营
+     *
+     * @param campId 训练营id
+     */
+    void add(Integer campId);
+
+    /**
      * 查询当前登录学生有没有资格参加训练营
      */
     TempCampUserQualificationsVo checkCampQualifications();

+ 36 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -1,12 +1,10 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.ActivityQueryDto;
-import com.ym.mec.biz.dal.dto.ActivityStudentAdjustDto;
-import com.ym.mec.biz.dal.dto.ActivityStudentDto;
-import com.ym.mec.biz.dal.dto.ActivityUserMapperAddDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
@@ -19,15 +17,13 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.GroupType.*;
@@ -49,6 +45,10 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 	private SysUserCashAccountLogService sysUserCashAccountLogService;
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private SysConfigDao sysConfigDao;
+	@Autowired
+	private SubjectDao subjectDao;
 
 	@Override
 	public BaseDAO<Integer, ActivityUserMapper> getDAO() {
@@ -265,4 +265,32 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		}
 		activityUserMapperDao.batchInsert(activityUserMapperList);
     }
+
+    @Override
+    public Map<String,Object> getStudentNoMapperInfo() {
+		HashMap<String, Object> map = new HashMap<>();
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		map.put("userId",sysUser.getId());
+		map.put("username",sysUser.getUsername());
+		map.put("avatar",sysUser.getAvatar());
+		Student student = studentDao.get(sysUser.getId());
+		if(StringUtils.isNotEmpty(student.getSubjectIdList())){
+			Subject subject = subjectDao.get(Integer.parseInt(student.getSubjectIdList()));
+			if (subject != null) {
+				map.put("subjectName",subject.getName());
+			}
+		}
+		String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
+		List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
+		Cloud2022ActivityDto activityDto = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).findFirst().get();
+		if(Objects.isNull(activityDto)){
+			map.put("courseNum",0);
+			return map;
+		}
+		//是否还有购买资格
+		Integer activityId = Integer.parseInt(activityDto.getActivityId());
+		Integer noCourseNum = activityUserMapperDao.getStudentNoMapperInfo(sysUser.getId(), activityId);
+		map.put("courseNum",noCourseNum == null?0:noCourseNum);
+		return map;
+    }
 }

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -599,16 +599,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             if (!onlineUserInfo.isExists()) {
                 return;
             }
-            //在线人数
-            int count = 0;
-            //大于1就发送实际人数,如果是最后一个人离开房间则发送一条0人数消息给主播
-            if (onlineUserInfo.size() > 1) {
-                count = onlineUserInfo.size();
-            }
-            //向直播间发送当前在线人数消息
-            this.sendOnlineUserCount(roomUid, userId, count);
             //从在线人员列表删除该人员
             onlineUserInfo.fastRemove(userId);
+            //向直播间发送当前在线人数消息
+            this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
             log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
         });
     }
@@ -740,7 +734,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         //进入房间写如在线人员列表
         onlineUserInfo.fastPut(userId, JSONObject.toJSONString(userInfo));
         //向直播间发送当前在线人数消息
-//        this.sendOnlineUserCount(roomUid, userId, count);
+        this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
 
@@ -993,6 +987,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 测试
      */
     public Map<String, Object> test(String roomUid) {
+        List<ImUserState> userStateList = new ArrayList<>();
+        ImUserState userState1 = new ImUserState();
+        userState1.setStatus("3");
+        userState1.setUserid("100071");
+        userStateList.add(userState1);
+        opsRoom(userStateList);
+
         //test
         Map<String, Object> result = new HashMap<>();
         //点赞数

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -4981,4 +4981,10 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         result.put("suplusCourseFee", bigDecimal);
         return result;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult studentCreateActivityPracticeGroup(PracticeGroupBuyDto practiceGroupBuyParams) {
+        return null;
+    }
 }

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

@@ -22,7 +22,9 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -30,6 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.*;
@@ -67,7 +72,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         BeanUtils.copyProperties(dto, entity);
         Date now = new Date();
         //训练时间必需大于报名时间
-        if (dto.getTrainStartDate().getTime() > dto.getApplyStartDate().getTime()) {
+        if (dto.getApplyStartDate().getTime() > dto.getTrainStartDate().getTime()) {
             throw new BizException("训练时间必需大于报名时间");
         }
         entity.setState(TempLittleArtistTrainingCamp.NOT_START);
@@ -186,7 +191,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
             }
             TempUserTrainingTimeDetailVo tempUserTrainingTimeDetailVo = new TempUserTrainingTimeDetailVo();
             tempUserTrainingTimeDetailVo.setUserId(userId);
-            tempUserTrainingTimeDetailVo.setTrainingDate(camp.getTrainStartDate());
+            tempUserTrainingTimeDetailVo.setTrainingDate(DateUtil.toDate(generateDate.toString()));
             tempUserTrainingTimeDetailVo.setPlayTime(BigDecimal.ZERO);
             tempUserTrainingTimeDetailVo.setIsFinish(0);
             resultList.add(tempUserTrainingTimeDetailVo);
@@ -257,6 +262,9 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         //查询该学员是否购买过该训练营
         TempLittleArtistTrainingCampUserRelation userRelation = tempLittleArtistTrainingCampUserRelationService.getOne(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
                 .eq(TempLittleArtistTrainingCampUserRelation::getUserId, user.getId()));
+        if (Objects.isNull(userRelation)) {
+            throw new BizException("没有参与资格!");
+        }
         Map<String, Object> result = new HashMap<>();
         result.put("user", userRelation);
         if (CollectionUtils.isNotEmpty(campList)) {
@@ -307,7 +315,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         List<TempLittleArtistTrainingCamp> list = stateMap.get(oldState);
         if (CollectionUtils.isNotEmpty(list)) {
             list.forEach(camp -> {
-                if ( now.getTime() >=  dateField.apply(camp).getTime()) {
+                if (now.getTime() >= dateField.apply(camp).getTime()) {
                     camp.setState(newState);
                 }
             });
@@ -347,6 +355,38 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         return vo;
     }
 
+    /**
+     * 导出小小训练营想详情
+     */
+    public void exportUserTrainingDetail(Map<String, Object> param, HttpServletResponse response) throws IOException {
+        List<TempCampUserTrainingDetailVo> list = baseMapper.queryUserTrainingDetail(param);
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"学员编号", "学员姓名", "手机号", "群组", "打卡天数", "训练时长(分钟)"};
+            String[] body = {"id", "username", "phone", "imGroupName", "playDay", "playTime"};
+            workbook = POIUtil.exportExcel(header, body, list);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
     private SysUser getUser() {
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
                 .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampUserRelationDao;
+import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
 import com.ym.mec.biz.dal.vo.TempCampUserQualificationsVo;
 import com.ym.mec.biz.service.SysConfigService;
@@ -41,6 +42,19 @@ public class TempLittleArtistTrainingCampUserRelationServiceImpl extends Service
     }
 
     /**
+     * 参与训练营
+     *
+     * @param campId 训练营id
+     */
+    public void add(Integer campId) {
+        SysUser user = getUser();
+        this.update(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
+                .set(TempLittleArtistTrainingCampUserRelation::getActivityId, campId)
+                .set(TempLittleArtistTrainingCampUserRelation::getState, TempLittleArtistTrainingCampUserRelation.APPLY)
+                .eq(TempLittleArtistTrainingCampUserRelation::getUserId, user.getId()));
+    }
+
+    /**
      * 查询当前登录学生有没有资格参加训练营
      */
     @Override
@@ -68,6 +82,7 @@ public class TempLittleArtistTrainingCampUserRelationServiceImpl extends Service
         //取配置中的文案及标题
         this.setValue("temp_little_artist_training_camp_content", vo::setContent);
         this.setValue("temp_little_artist_training_camp_title", vo::setCampTitle);
+        this.setValue("temp_little_artist_training_camp_url", vo::setUrl);
 
         vo.setCampId(relation.getActivityId());
         vo.setUserName(user.getUsername());

+ 30 - 5
mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml

@@ -19,6 +19,10 @@
 		<result column="give_member_flag_" property="giveMemberFlag" />
 		<result column="payment_order_id_" property="paymentOrderId" />
 		<result column="vip_group_id_" property="vipGroupId" />
+		<result column="total_course_num_" property="totalCourseNum" />
+		<result column="total_give_course_num_" property="totalGiveCourseNum" />
+		<result column="sub_course_num_" property="subCourseNum" />
+		<result column="sub_give_course_num_" property="subGiveCourseNum" />
 		<result column="give_vip_group_id_" property="giveVipGroupId" />
 		<result column="member_order_id_" property="memberOrderId" />
 		<result column="give_member_order_id_" property="giveMemberOrderId" />
@@ -49,31 +53,45 @@
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		                                  practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
 										  vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,
-		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_)
+		                                  member_order_id_,give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
+										  total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_)
 		                                  VALUES(#{activityId},#{userId},#{vipFlag},#{giveVipFlag},#{practiceFlag},
 		                                         #{givePracticeFlag},#{memberFlag},#{giveMemberFlag},NOW(),NOW(),#{paymentOrderId},#{vipGroupId},
 		                                         #{giveVipGroupId},#{practiceGroupId},#{givePracticeGroupId},#{returnFee},
-		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo},#{tenantId},#{giveCouponId})
+		                                         #{memberOrderId},#{giveMemberOrderId},#{teacherId},#{actualPrice},#{addMemo},#{cutMemo},#{tenantId},#{giveCouponId},
+		                                         #{totalCourseNum},#{totalGiveCourseNum},#{subCourseNum},#{subGiveCourseNum})
 	</insert>
     <insert id="batchInsert">
 		INSERT INTO activity_user_mapper (activity_id_,user_id_,vip_flag_,give_vip_flag_,
 		practice_flag_,give_practice_flag_,member_flag_,give_member_flag_,create_time_,update_time_,payment_order_id_,
 		vip_group_id_,give_vip_group_id_,practice_group_id_,give_practice_group_id_,return_fee_,member_order_id_,
-		                                  give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_)
+		                                  give_member_order_id_,teacher_id_,actual_price_,add_memo_,cut_memo_,tenant_id_,give_coupon_id_,
+		total_course_num_,total_give_course_num_,sub_course_num_,sub_give_course_num_)
 		VALUES
 		<foreach collection="activityUserMappers" item="item" separator=",">
 			(#{item.activityId},#{item.userId},#{item.vipFlag},#{item.giveVipFlag},#{item.practiceFlag},
 			#{item.givePracticeFlag},#{item.memberFlag},#{item.giveMemberFlag},NOW(),NOW(),#{item.paymentOrderId},#{item.vipGroupId},
 			#{item.giveVipGroupId},#{item.practiceGroupId},#{item.givePracticeGroupId},#{item.returnFee},
 			 #{item.memberOrderId},#{item.giveMemberOrderId},#{item.teacherId},#{item.actualPrice},#{item.addMemo},#{item.cutMemo},
-			 #{item.tenantId},#{item.giveCouponId})
+			 #{item.tenantId},#{item.giveCouponId},#{item.totalCourseNum},#{item.totalGiveCourseNum},#{item.subCourseNum},#{item.subGiveCourseNum})
 		</foreach>
 	</insert>
-
     <!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ActivityUserMapper">
 		UPDATE activity_user_mapper
 		<set>
+			<if test="totalCourseNum != null">
+				total_course_num_ = #{totalCourseNum},
+			</if>
+			<if test="totalGiveCourseNum != null">
+				total_give_course_num_ = #{totalGiveCourseNum},
+			</if>
+			<if test="subCourseNum != null">
+				sub_course_num_ = #{subCourseNum},
+			</if>
+			<if test="subGiveCourseNum != null">
+				sub_give_course_num_ = #{subGiveCourseNum},
+			</if>
 			<if test="giveCouponId != null">
 				give_coupon_id_ = #{giveCouponId},
 			</if>
@@ -280,4 +298,11 @@
 		GROUP BY aum.user_id_
 		<include refid="global.limit"/>
 	</select>
+    <select id="getStudentNoMapperInfo" resultType="Integer">
+		SELECT CASE WHEN aum.give_practice_flag_ = 1 THEN vga.give_course_num_ ELSE 0 END total_num_
+		FROM activity_user_mapper aum
+		LEFT JOIN vip_group_activity vga ON vga.id_ = aum.activity_id_
+		WHERE aum.return_fee_ = 0 AND aum.user_id_ = #{userId} AND aum.activity_id_ = #{activityId}
+		GROUP BY aum.user_id_
+	</select>
 </mapper>

+ 32 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ActivityUserMapperController.java

@@ -0,0 +1,32 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.ActivityUserMapperService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Optional;
+
+@RequestMapping("activityUserMapper")
+@Api(tags = "活动排课服务")
+@RestController
+public class ActivityUserMapperController extends BaseController {
+
+    @Autowired
+    private ActivityUserMapperService activityUserMapperService;
+
+    @ApiOperation(value = "获取学员未排课信息")
+    @GetMapping("getStudentNoCourseInfo")
+    public HttpResponseResult getStudentNoCourseInfo() {
+        return succeed(activityUserMapperService.getStudentNoMapperInfo());
+    }
+
+}

+ 31 - 89
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -26,7 +26,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalTime;
@@ -63,20 +62,14 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取学生的陪练课")
     @GetMapping(value = "/findUserPracticeCourses")
     public Object findUserPracticeCourses(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.findUserPracticeCourses(sysUser.getId()));
     }
 
     @ApiOperation("检测用户是否能够申请免费陪练课")
     @GetMapping(value = "/checkCanApplyFreePracticeGroup")
     private HttpResponseResult checkCanApplyFreePracticeGroup(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         Map<String,Object> result=practiceGroupService.checkCanApplyFreePracticeGroup(sysUser.getId());
         Integer applyTimes = practiceGroupDao.countUserPracticeApplyRecord(sysUser.getId());
         result.put("canApply", applyTimes < 1 ? 1 : 0);
@@ -87,10 +80,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取陪练课预约参数")
     @GetMapping(value = "/getPracticeApplyParams")
     public Object getPracticeApplyParams(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         if (sysUser.getTenantId() == null) {
             return failed( "用户机构信息异常");
         }
@@ -103,40 +93,28 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取可以预约的教师")
     @GetMapping(value = "/getEnableApplyTeachers")
     public Object getEnableApplyTeachers(Integer subjectId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.getEnableApplyTeachers(sysUser.getId(), subjectId));
     }
 
     @ApiOperation("获取可以预约的教师--付费")
     @GetMapping(value = "/getEnableApplyTeachersWithPay")
     public Object getEnableApplyTeachersWithPay(Integer subjectId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.getEnableApplyTeachersWithPay(sysUser.getId(), subjectId));
     }
 
     @ApiOperation("获取指定学员所在分部下的教师空闲时间")
     @GetMapping(value = "/getTeacherFreeTimes")
     public Object getTeacherFreeTimes(Integer teacherId, Date firstClassTime){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.getTeacherFreeTimes(sysUser.getId(),teacherId,firstClassTime));
     }
 
     @ApiOperation("获取指定学员所在分部下的教师空闲时间")
     @GetMapping(value = "/getTeachersFreeTimes")
     public Object getTeachersFreeTimes(Integer subjectId, Date firstClassTime){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.getTeachersFreeTimes(sysUser.getId(),subjectId,firstClassTime));
     }
 
@@ -144,10 +122,7 @@ public class PracticeGroupController extends BaseController {
     @PostMapping(value = "/practiceApply")
     @AuditLogAnnotation(operateName = "陪练课预约")
     public Object practiceApply(PracticeGroup practiceGroup){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         if(excludeOrganIds.contains(sysUser.getOrganId())){
             throw new BizException("请联系老师确认您的所属分部");
         }
@@ -162,10 +137,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取陪练课预约参数——付费")
     @GetMapping(value = "/getPayPracticeApplyParams")
     public Object getPayPracticeApplyParams(Integer organId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         if(sysUser.getTenantId() == null){
             throw new BizException("请联系老师确认您的所属机构");
         }
@@ -175,10 +147,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取指定教师的空闲时间——付费")
     @GetMapping(value = "/getPayPracticeTeacherFreeTimes")
     public Object getPayPracticeTeacherFreeTimes(Integer teacherId,Integer buyMonths, boolean renew, Long groupId, PracticeGroupType type){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         Map payPracticeTeacherFreeTimes = practiceGroupService.getPayPracticeTeacherFreeTimes(sysUser.getId(),teacherId, buyMonths,renew,groupId);
         if(Objects.nonNull(type)&&PracticeGroupType.COME_ON_PACKAGE.equals(type)){
             Map<Integer, List<String>> weekNumApplyTimesMap = (Map<Integer, List<String>>) payPracticeTeacherFreeTimes.get("teacherFreeDays");
@@ -213,20 +182,14 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取学生上一次的购买信息--付费")
     @GetMapping(value = "/findUserLatestPracticeGroup")
     public HttpResponseResult findUserLatestPracticeGroup(Long groupId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.findUserLatestPracticeGroup(sysUser.getId(),groupId));
     }
 
     @ApiOperation("检测学生是否是新用户")
     @GetMapping(value = "/isNewStudent")
     public HttpResponseResult isNewStudent(){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         int studentExitChargePractices = practiceGroupDao.checkStudentExitChargePractice(sysUser.getId(),"2021-03-09 00:00:00");
         Student student = studentDao.get(sysUser.getId());
         if(student == null){
@@ -247,10 +210,7 @@ public class PracticeGroupController extends BaseController {
     @PostMapping(value = "/buyPracticeGroup")
     @AuditLogAnnotation(operateName = "陪练课购买")
     public HttpResponseResult buyPracticeGroup(@RequestBody PracticeGroupBuyDto practiceGroupBuyParams){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         if(excludeOrganIds.contains(sysUser.getOrganId())){
             throw new BizException("请联系老师确认您的所属分部");
         }
@@ -262,13 +222,19 @@ public class PracticeGroupController extends BaseController {
         }
     }
 
+    @ApiOperation("学生主动排课")
+    @PostMapping(value = "/createActivityPracticeGroup")
+    @AuditLogAnnotation(operateName = "陪练课购买")
+    public HttpResponseResult createActivityPracticeGroup(@RequestBody PracticeGroupBuyDto practiceGroupBuyParams){
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
+        practiceGroupBuyParams.setStudentId(sysUser.getId());
+        return practiceGroupService.studentCreateActivityPracticeGroup(practiceGroupBuyParams);
+    }
+
     @ApiOperation(value = "获取网管课购买信息")
     @PostMapping("/getPracticeGroupPayInfo")
     public Object getPracticeGroupPayInfo(Long vipGroupId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (null == sysUser) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.getPracticeGroupPayInfo(vipGroupId,sysUser.getId()));
     }
 
@@ -279,10 +245,7 @@ public class PracticeGroupController extends BaseController {
 //        if(CollectionUtils.isNotEmpty(practiceGroupBuyParams.getCouponIdList())){
 //            throw new BizException("当前活动不支持优惠券");
 //        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (null == sysUser) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         practiceGroupBuyParams.setUserId(sysUser.getId());
         practiceGroupBuyParams.setOrganId(sysUser.getOrganId());
         return succeed(practiceGroupService.buyActivityPracticeGroup(practiceGroupBuyParams));
@@ -298,10 +261,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("获取用户历史购买的陪练课")
     @GetMapping(value = "/findUserHistoryBuyPracticeGroups")
     public HttpResponseResult findUserHistoryBuyPracticeGroups(Long groupId, PracticeGroupType type){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.findUserHistoryBuyPracticeGroups(sysUser.getId(), groupId, type));
     }
 
@@ -315,20 +275,14 @@ public class PracticeGroupController extends BaseController {
     @PostMapping(value = "/repay")
     @AuditLogAnnotation(operateName = "重新支付")
     public HttpResponseResult repay(Integer groupId, boolean useBalancePayment) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return practiceGroupService.repay(sysUser.getId(),groupId,useBalancePayment);
     }
 
     @ApiOperation("免费陪练课定点推送")
     @GetMapping(value = "/freePush")
     public HttpResponseResult freePush(Integer userId, String pushType){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
 
         String pushUrl = baseApiUrl + "/#/auditionbanner/id";
@@ -357,10 +311,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("陪练课完成报告推送")
     @GetMapping(value = "/reportPush")
     public HttpResponseResult reportPush(Integer userId, String pushType){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         PracticeGroup userFreePracticeGroup = practiceGroupDao.getUserFreePracticeGroup(userId);
         ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(userFreePracticeGroup.getId().toString(), GroupType.PRACTICE.getCode());
@@ -396,10 +347,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("陪练课完成报告推送")
     @GetMapping(value = "/pushStudyReport")
     public HttpResponseResult pushStudyReport(Date expiredDate, String pushType){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         practiceGroupService.pushStudyReport(expiredDate,pushType);
         return succeed();
     }
@@ -407,10 +355,7 @@ public class PracticeGroupController extends BaseController {
     @ApiOperation("检测用户是否存在待支付的课程组订单")
     @GetMapping(value = "/checkExistWaitPayOrder")
     public HttpResponseResult checkExistWaitPayOrder(Long groupId){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return succeed(practiceGroupService.checkExistWaitPayOrder(sysUser.getId(),groupId));
     }
 
@@ -418,10 +363,7 @@ public class PracticeGroupController extends BaseController {
     @PostMapping(value = "/cancelWaitPayOrder")
     @AuditLogAnnotation(operateName = "取消待支付的订单")
     public HttpResponseResult cancelWaitPayOrder(Integer groupId) throws Exception{
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
+        SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(() -> new BizException("请登录"));
         return practiceGroupService.cancelWaitPayOrder(sysUser.getId(), groupId);
     }
 }

+ 8 - 0
mec-student/src/main/java/com/ym/mec/student/controller/TempLittleArtistTrainingCampController.java

@@ -135,5 +135,13 @@ public class TempLittleArtistTrainingCampController extends BaseController {
     public HttpResponseResult<TempCampUserQualificationsVo> checkCampQualifications(){
         return succeed(tempLittleArtistTrainingCampUserRelationService.checkCampQualifications());
     }
+
+    @ApiOperation(value="参与训练营")
+    @GetMapping(value = "/addCamp")
+    public HttpResponseResult<Object> addCamp(Integer campId){
+        tempLittleArtistTrainingCampUserRelationService.add(campId);
+        return succeed();
+    }
+
 }
 

+ 19 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

@@ -13,7 +13,9 @@ import io.swagger.annotations.*;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -136,5 +138,22 @@ public class TempLittleArtistTrainingCampController extends BaseController {
         return succeed(tempLittleArtistTrainingCampUserRelationService.checkCampQualifications());
     }
 
+    @ApiOperation(value="参与训练营")
+    @GetMapping(value = "/addCamp")
+    public HttpResponseResult<Object> addCamp(Integer campId){
+        tempLittleArtistTrainingCampUserRelationService.add(campId);
+        return succeed();
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "学员姓名/手机号/编号-模糊搜索"),
+            @ApiImplicitParam(name = "imGroupId", dataType = "Integer", value = "所在群组Id"),
+    })
+    @ApiOperation(value="导出训练营详情")
+    @PostMapping(value = "/exportUserTrainingDetail")
+    public void exportUserTrainingDetail(@RequestBody Map<String, Object> param, HttpServletResponse response) throws IOException{
+        tempLittleArtistTrainingCampService.exportUserTrainingDetail(param, response);
+    }
+
 }