zouxuan преди 3 години
родител
ревизия
538ffd60f2

+ 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);
 }

+ 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;
 	}

+ 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);
 }

+ 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;
+    }
 }

+ 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;
+    }
 }

+ 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);
     }
 }