Browse Source

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

yonge 4 years ago
parent
commit
9031e90c5f
37 changed files with 948 additions and 86 deletions
  1. 36 3
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 12 0
      cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java
  3. 19 0
      cms/src/main/java/com/ym/mec/cms/dal/dao/StudentRegistrationDao.java
  4. 24 0
      cms/src/main/java/com/ym/mec/cms/dal/dao/SysConfigDao.java
  5. 104 0
      cms/src/main/java/com/ym/mec/cms/dal/entity/SysConfig.java
  6. 267 0
      cms/src/main/java/com/ym/mec/cms/service/SysConfigService.java
  7. 27 0
      cms/src/main/java/com/ym/mec/cms/service/impl/SysConfigServiceImpl.java
  8. 19 0
      cms/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  9. 85 0
      cms/src/main/resources/config/mybatis/SysConfigMapper.xml
  10. 12 0
      cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  11. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  12. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  13. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  14. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  15. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysCouponCodeDao.java
  16. 0 6
      mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java
  17. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  18. 12 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankSettingService.java
  19. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  20. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysCouponCodeService.java
  21. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  22. 91 41
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  23. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  24. 30 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  25. 19 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java
  26. 10 0
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  27. 1 1
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  28. 19 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  29. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  30. 5 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  31. 20 4
      mec-biz/src/main/resources/config/mybatis/SysCouponCodeMapper.xml
  32. 14 0
      mec-biz/src/main/resources/config/mybatis/SysMusicCompareWeekDataMapper.xml
  33. 49 1
      mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  34. 1 2
      mec-student/src/main/java/com/ym/mec/student/controller/SysCouponCodeController.java
  35. 3 3
      mec-web/src/main/java/com/ym/mec/web/controller/SysCouponCodeController.java
  36. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/SysCouponController.java
  37. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

+ 36 - 3
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -1,12 +1,14 @@
 package com.ym.mec.cms.controller;
 
+import com.ym.mec.cms.dal.dao.StudentRegistrationDao;
+import com.ym.mec.cms.dal.entity.SysConfig;
+import com.ym.mec.cms.service.SysConfigService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -49,6 +51,12 @@ public class NewsController extends BaseController {
 	
 	@Autowired
 	private WebFeignService webFeignService;
+
+	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+
+	@Autowired
+	private SysConfigService sysConfigService;
 	
 	@ApiOperation("资讯列表分页查询")
 	@GetMapping(value = "/list")
@@ -61,10 +69,20 @@ public class NewsController extends BaseController {
 		if (!StringUtils.equalsIgnoreCase("student", clientId)) {
 			queryInfo.setOrganIdList(webFeignService.queryOrganIdByUserId(user.getId(), clientId));
 		} else {
+			SysConfig cloudTeacherActiveIds = sysConfigService.findByParamName(SysConfigService.CLOUD_TEACHER_ACTIVE_BANNER_IDS);
+			List<Integer> excludeIds = new ArrayList<>();
+			if(Objects.nonNull(cloudTeacherActiveIds)&&StringUtils.isNotBlank(cloudTeacherActiveIds.getParanValue())){
+				excludeIds = Arrays.stream(cloudTeacherActiveIds.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
+			}
 			if (user == null || user.getId() == null) {
 				queryInfo.setOrganId(43);
+				queryInfo.setExcludeIds(excludeIds);
 			} else {
 				queryInfo.setOrganId(user.getOrganId());
+				int memberGroupNum = studentRegistrationDao.countStudentMemberGroupNum(user.getId());
+				if(memberGroupNum>0){
+					queryInfo.setExcludeIds(excludeIds);
+				}
 			}
 		}
 		
@@ -101,6 +119,21 @@ public class NewsController extends BaseController {
 	public Object getHomeList(NewsInformationQueryInfo queryInfo) {
 		queryInfo.setRows(10);
 		SysUser user = sysUserFeignService.queryUserInfo();
+		SysConfig cloudTeacherActiveIds = sysConfigService.findByParamName(SysConfigService.CLOUD_TEACHER_ACTIVE_BANNER_IDS);
+		List<Integer> excludeIds = new ArrayList<>();
+		if(Objects.nonNull(cloudTeacherActiveIds)&&StringUtils.isNotBlank(cloudTeacherActiveIds.getParanValue())){
+			excludeIds = Arrays.stream(cloudTeacherActiveIds.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toList());
+		}
+		if (user == null || user.getId() == null) {
+			queryInfo.setOrganId(43);
+			queryInfo.setExcludeIds(excludeIds);
+		} else {
+			queryInfo.setOrganId(user.getOrganId());
+			int memberGroupNum = studentRegistrationDao.countStudentMemberGroupNum(user.getId());
+			if(memberGroupNum>0){
+				queryInfo.setExcludeIds(excludeIds);
+			}
+		}
 		return succeed(sysNewsInformationService.getHomeList(user, queryInfo));
 	}
 

+ 12 - 0
cms/src/main/java/com/ym/mec/cms/controller/queryinfo/NewsInformationQueryInfo.java

@@ -3,6 +3,7 @@ package com.ym.mec.cms.controller.queryinfo;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
+import java.util.List;
 
 import com.ym.mec.cms.dal.entity.NewsStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
@@ -32,6 +33,9 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	
 	@ApiModelProperty(value = "分部编号", required = false)
 	private Integer organId;
+
+	@ApiModelProperty(value = "需排除编号")
+	private List<Integer> excludeIds;
 	
 	private String clientName;
 	
@@ -136,4 +140,12 @@ public class NewsInformationQueryInfo extends QueryInfo {
 	public void setClientId(String clientId) {
 		this.clientId = clientId;
 	}
+
+	public List<Integer> getExcludeIds() {
+		return excludeIds;
+	}
+
+	public void setExcludeIds(List<Integer> excludeIds) {
+		this.excludeIds = excludeIds;
+	}
 }

+ 19 - 0
cms/src/main/java/com/ym/mec/cms/dal/dao/StudentRegistrationDao.java

@@ -0,0 +1,19 @@
+package com.ym.mec.cms.dal.dao;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+public interface StudentRegistrationDao {
+
+    /**
+     * @describe 统计学员所在会员团的数量
+     * @author Joburgess
+     * @date 2021/9/9 0009
+     * @param studentId:
+     * @return int
+     */
+    int countStudentMemberGroupNum(@Param("studentId") Integer studentId);
+}

+ 24 - 0
cms/src/main/java/com/ym/mec/cms/dal/dao/SysConfigDao.java

@@ -0,0 +1,24 @@
+package com.ym.mec.cms.dal.dao;
+
+import com.ym.mec.cms.dal.entity.SysConfig;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface SysConfigDao extends BaseDAO<Long, SysConfig> {
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/9
+     * @params [paramName]
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
+
+    /**
+     * 获取value
+     * @param paramName
+     * @return
+     */
+    String findConfigValue(String paramName);
+	
+}

+ 104 - 0
cms/src/main/java/com/ym/mec/cms/dal/entity/SysConfig.java

@@ -0,0 +1,104 @@
+package com.ym.mec.cms.dal.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(sys_config):
+ */
+public class SysConfig {
+
+	/**  */
+	private Long id;
+	
+	/** 参数名称 */
+	@ApiModelProperty(value = "参数名称", required = true)
+	private String paramName;
+	
+	/** 参数值 */
+	@ApiModelProperty(value = "参数值", required = true)
+	private String paranValue;
+	
+	/** 描述 */
+	@ApiModelProperty(value = "描述", required = true)
+	private String description;
+	
+	/** 创建时间 */
+	private java.util.Date createOn;
+	
+	/** 修改时间 */
+	private java.util.Date modifyOn;
+	
+	@ApiModelProperty(value = "消息组", required = true)
+	private String group;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setParamName(String paramName){
+		this.paramName = paramName;
+	}
+	
+	public String getParamName(){
+		return this.paramName;
+	}
+			
+	public void setParanValue(String paranValue){
+		this.paranValue = paranValue;
+	}
+	
+	public String getParanValue(){
+		return this.paranValue;
+	}
+
+	public <T> T getParanValue(Class<T> cla){
+		try {
+			return cla.cast(cla.getMethod("valueOf", String.class).invoke(cla.getInterfaces(),this.paranValue));
+		} catch (Exception e) {
+			return (T)this.paranValue.getClass();
+		}
+	}
+			
+	public void setDescription(String description){
+		this.description = description;
+	}
+	
+	public String getDescription(){
+		return this.description;
+	}
+			
+	public void setCreateOn(java.util.Date createOn){
+		this.createOn = createOn;
+	}
+	
+	public java.util.Date getCreateOn(){
+		return this.createOn;
+	}
+			
+	public void setModifyOn(java.util.Date modifyOn){
+		this.modifyOn = modifyOn;
+	}
+	
+	public java.util.Date getModifyOn(){
+		return this.modifyOn;
+	}
+			
+	public String getGroup() {
+		return group;
+	}
+
+	public void setGroup(String group) {
+		this.group = group;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 267 - 0
cms/src/main/java/com/ym/mec/cms/service/SysConfigService.java

@@ -0,0 +1,267 @@
+package com.ym.mec.cms.service;
+
+
+import com.ym.mec.cms.dal.entity.SysConfig;
+import com.ym.mec.common.service.BaseService;
+
+public interface SysConfigService extends BaseService<Long, SysConfig> {
+
+    public static final String BASE_API_URL = "base_api_url";
+
+    /**
+     * 缴费状态提前{}天刷新
+     */
+    public static final String REFRESH_PAYMENT_STATUS_EARLY_DAYS = "refresh_payment_status_early_days";
+
+    /**
+     * VIP课结束后,用户可申诉时间,为课程结束后的{}天
+     */
+    public static final String VIP_APPEAL_DAYS_RANGE = "vip_appeal_days_range";
+
+    /**
+     * 线下课最早打卡时间可提前分钟数
+     */
+    String OFFLINE_SIGN_IN_EARLY_FORWARD_TIME = "offline_sign_in_early_forward_time";
+
+    /**
+     * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
+     */
+    public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
+
+    String ADVANCE_SIGN_OUT_MINUTES = "advance_sign_out_minutes";
+
+    /**
+     * 老师可以打卡范围,为教学定位方圆{}米
+     */
+    public static final String ATTENDANCE_RANGE = "attendance_range";
+
+    String ATTENDANCE_RANGE_VIP = "attendance_range_vip";
+
+    /**
+     * 学生允许请假的时间,为开课前{}小时
+     */
+    public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
+
+    /**
+     * 最早请假提前时间
+     */
+    String EARLIEST_TIME_FOR_LEAVE="earliest_time_for_leave";
+
+    String ENABLE_TEACHER_COURSE_ADJUST_DEFAULT_HOURS = "enable_teacher_course_adjust_default_hours";
+
+    /**
+     * 单技课梯度结算规则设置
+     */
+    public static final String SIGLE_GRADIENT_SETTLEMENT_RULE = "sigle_gradient_settlement_rule";
+
+    /**
+     * 合奏课梯度结算规则设置
+     */
+    public static final String MAX_GRADIENT_SETTLEMENT_RULE = "max_gradient_settlement_rule";
+
+    /**
+     * 小班课梯度结算规则设置
+     */
+    public static final String HIGH_GRADIENT_SETTLEMENT_RULE = "high_gradient_settlement_rule";
+
+    /**
+     * 如果没有签退,{}分钟后自动发送推送信息
+     */
+    public static final String SIGN_OUT_MESSAGE_PUSH_MINUTE = "sign_out_message_push_minute";
+
+    /**
+     * 试听课默认单节课时长
+     */
+    String DEMO_GROUP_SINGLE_CLASS_MINUTES_ = "demo_group_single_class_minutes_";
+    String USER_DEFAULT_HEAD_URL = "user_default_head_url";
+    String STUDENT_APPLY_URL = "student_apply_url";
+    String SERVER_PHONE = "server_phone";
+
+    String MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES = "music_group_settlement_class_minutes";
+
+    String MUSIC_GROUP_SETTLEMENT_DAY = "music_group_settlement_day";
+
+    String MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES = "music_group_settlement_single_class_minutes";
+
+    String REFUND_PERIOD = "refund_period";
+
+    /**
+     * 可签退时间限制(自然天)
+     */
+    String ENABLE_SIGN_OUT_TIME_RANGE = "enable_sign_out_time_range";
+
+    /**
+     * 可更新学生签到状态时间限制,课程结束后{}分钟
+     */
+    String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
+
+    /**
+     * vip课程可更新学生签到状态时间限制,课程结束后{}分钟
+     */
+    String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP = "enable_student_attendance_time_range_vip";
+
+    String ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP = "enable_student_attendance_befor_course_start_time_range_vip";
+
+    /**
+     * @describe 陪练课课酬
+     */
+    String PRACTICE_COURSE_SALARY = "practice_course_salary";
+
+    /**
+     * @describe 陪练课时长
+     */
+    String PRACTICE_COURSE_MINUTES = "practice_course_minutes";
+
+    /**
+     * @describe 陪练课预约开始时间
+     */
+    String PRACTICE_APPLY_START_TIME = "practice_apply_start_time";
+
+    /**
+     * @describe 陪练课预约结束时间
+     */
+    String PRACTICE_APPLY_END_TIME = "practice_apply_end_time";
+
+    /**
+     * @describe 陪练课预约时间间隔
+     */
+    String PRACTICE_APPLY_INTERVAL_TIME = "practice_apply_interval_time";
+
+    /**
+     * @describe 陪练课可预约声部列表
+     */
+    String PRACTICE_SUBJECT_ID_LIST = "practice_subject_id_list";
+
+    /**
+     * @describe 教师请假数据
+     */
+    String TEACHER_LEAVE_DATA = "teacher_leave_data";
+
+    /**
+     * 十分钟内最大可发送的短信次数
+     */
+    String SMS_MAX_TIMES = "sms_max_times";
+
+    /**
+     * 连堂课间隔时间
+     */
+    String ONLINE_CONTINUE_COURSE_TIME = "online_continue_course_time";
+
+    /**
+     * 连堂课间隔时间
+     */
+    String AUTO_CLOSE_NETWORK_ROOM = "auto_close_network_room";
+
+    /**
+     * @describe 付费陪练课可购买最大月数
+     */
+    String PRACTICE_PAY_MAX_MONTH = "practice_pay_max_month";
+
+    /**
+     * @describe 付费陪练课单月上课数量
+     */
+    String PRACTICE_PAY_DRILL_TIMES_ON_ONE_WEEK = "practice_pay_drill_times_on_one_week";
+
+    /**
+     * @describe 付费陪练课活动截至日期
+     */
+    String PRACTICE_BUY_ACTIVITY_EXPIRE_DATE = "practice_buy_activity_expire_date";
+
+    /**
+     * 陪练老师端入口地址
+     */
+    String TEACHER_STUDY_REPORT_URL = "teacher_study_report_url";
+
+    /**
+     * 陪练课报告地址
+     */
+    String STUDENT_STUDY_REPORT_URL = "student_study_report_url";
+
+    /**
+     * @describe 陪练课续费地址
+     */
+    String PRACTICE_RENEW_URL = "practice_renew_url";
+
+    /**
+     * @describe 老师端baseUrl
+     */
+    String TEACHER_BASE_URL = "teacher_base_url";
+
+    String COURSE_BEFORE_BUFFER_TIME = "course_before_buffer_time";
+
+    String COURSE_AFTER_BUFFER_TIME = "course_after_buffer_time";
+
+    String PRACTICE_PROMOTION_ACTIVITY_START_DATE = "practice_promotion_activity_start_date";
+
+    String NEW_MSG_PUSH = "您收到一条训练回复,请点击查看";
+
+    /**
+     * @describe 教务端baseUrl
+     */
+    String EDU_TEACHER_BASE_URL = "edu_teacher_base_url";
+
+    String HOLIDAY_SETTING = "holiday_setting";
+
+    String PRACTICE_FREE_APPLY_EXPIRE_DATE = "practice_free_apply_expire_date";
+    
+    String START_TIME_OF_1111 = "start_time_of_1111";
+    
+    String END_TIME_OF_1111 = "end_time_of_1111";
+
+    String VIP_SPECIAL_ACTIVITY_IDS = "vip_special_activity_ids";
+
+    String DAYA_BASE_SALARY_AMOUNT = "daya_base_salary_amount";
+
+    String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
+
+    //提醒乐团主管排下学期的课程的时间节点(默认提前14天)
+    String REMIND_COURSE_TIME = "remind_course_time";
+
+    //会员结束前15天提醒学员续费(默认提前15天)
+    String PUSH_MEMBER_RENEW = "push_member_renew";
+
+    //试用会员结束前3天提醒学员续费(默认提前3天)
+    String EXPERIENCE_PUSH_MEMBER_RENEW = "experience_push_member_renew";
+
+    //会员结束前15天自动创建乐团续费(默认提前15天)
+    String AUTO_CREATE_MEMBER_RENEW = "auto_create_member_renew";
+
+    //会员结束前15天提醒学员续费(默认提前5天)
+    String PUSH_MEMBER_RENEW_AGAIN = "push_member_renew_again";
+
+    //会员结束前5天提醒学员续费(退团提醒)(默认提前5天)
+    String PUSH_MEMBER_RENEW_QUIT = "push_member_renew_quit";
+
+    String CHILDREN_DAY_VIP_ACTIVITY_IDS = "children_day_vip_activity_ids";
+
+    //云教练作业开关0关1开
+    String HOMEWORK_OPEN_FLAG = "homework_open_flag";
+
+    //云教练免费体验开关0关1开
+    String FREE_CLOUD_OPEN_FLAG = "free_cloud_open_flag";
+
+    //乐团问卷调查编号
+    String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
+
+    //云教练试用时间最晚截止时间
+    String EXPERIENCE_MEMBERSHIP_END_TIME = "experience_membership_end_time";
+
+    //云教练训练时长小于80分钟需要回访
+    String STUDENT_CLOUD_TEACHER_TOTAL_PLAY_TIME = "student_cloud_teacher_total_play_time";
+
+    //云教练训练次数小于4次需要回访
+    String STUDENT_CLOUD_TEACHER_TRAIN_NUM = "student_cloud_teacher_train_num";
+
+    //云教练活动分部目标JSON
+    String CLOUD_TEACHER_ACTIVE_TARGET = "cloud_teacher_active_target";
+
+    //云教练活动开屏广告编号
+    String CLOUD_TEACHER_ACTIVE_BANNER_IDS = "cloud_teacher_active_banner_ids";
+
+    /**
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @params paramName
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
+}

+ 27 - 0
cms/src/main/java/com/ym/mec/cms/service/impl/SysConfigServiceImpl.java

@@ -0,0 +1,27 @@
+package com.ym.mec.cms.service.impl;
+
+
+import com.ym.mec.cms.dal.dao.SysConfigDao;
+import com.ym.mec.cms.dal.entity.SysConfig;
+import com.ym.mec.cms.service.SysConfigService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysConfigServiceImpl extends BaseServiceImpl<Long, SysConfig>  implements SysConfigService {
+	
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
+	@Override
+	public BaseDAO<Long, SysConfig> getDAO() {
+		return sysConfigDao;
+	}
+
+	@Override
+	public SysConfig findByParamName(String paramName) {
+		return sysConfigDao.findByParamName(paramName);
+	}
+}

+ 19 - 0
cms/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.cms.dal.dao.StudentRegistrationDao">
+
+    <select id="countStudentMemberGroupNum" resultType="int">
+        SELECT COUNT(DISTINCT sr.music_group_id_)
+        FROM student_registration sr
+            LEFT JOIN music_group mg ON sr.music_group_id_=mg.id_
+        WHERE sr.music_group_status_ IN ('APPLY', 'NORMAL')
+          AND mg.course_view_type_=2
+          AND mg.status_ NOT IN ('CANCELED', 'CLOSE')
+          AND sr.user_id_ = #{studentId}
+    </select>
+
+</mapper>

+ 85 - 0
cms/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.cms.dal.dao.SysConfigDao">
+
+	<resultMap type="com.ym.mec.cms.dal.entity.SysConfig" id="SysConfig">
+		<result column="id_" property="id" />
+		<result column="param_name_" property="paramName" />
+		<result column="paran_value_" property="paranValue" />
+		<result column="description_" property="description" />
+		<result column="create_on_" property="createOn" />
+		<result column="modify_on_" property="modifyOn" />
+		<result column="group_" property="group" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="SysConfig">
+		SELECT * FROM sys_config where 1=1
+		<if test="group != null">
+			and group_ = #{group}
+		</if>
+		ORDER BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.cms.dal.entity.SysConfig"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO sys_config
+		(id_,param_name_,paran_value_,description_,create_on_,modify_on_,group_)
+		VALUES(#{id},#{paramName},#{paranValue},#{description},#{createOn},#{modifyOn},#{group})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.cms.dal.entity.SysConfig">
+		UPDATE sys_config
+		<set>
+			<if test="modifyOn != null">
+				modify_on_ = #{modifyOn},
+			</if>
+			<if test="paranValue != null">
+				paran_value_ = #{paranValue},
+			</if>
+			<if test="description != null">
+				description_ = #{description},
+			</if>
+			<if test="paramName != null">
+				param_name_ = #{paramName},
+			</if>
+			<if test="group != null">
+				group_ = #{group},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM sys_config WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="SysConfig" parameterType="map">
+		SELECT * FROM sys_config ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM sys_config
+	</select>
+	
+	<select id="findByParamName" resultMap="SysConfig">
+		SELECT * FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+    <select id="findConfigValue" resultType="java.lang.String">
+		SELECT paran_value_ FROM sys_config WHERE param_name_ = #{paramName}
+	</select>
+</mapper>

+ 12 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -68,6 +68,12 @@
 			<if test="organIdList != null">
 				and INTE_ARRAY(#{organIdList},sni.organ_id_list_)
 			</if>
+			<if test="excludeIds!=null and excludeIds.size()>0">
+				AND sni.id_ NOT IN
+				<foreach collection="excludeIds" item="excludeId" open="(" close=")" separator=",">
+					#{excludeId}
+				</foreach>
+			</if>
 			<if test="clientName != 'manage'">
 				<choose>
 					<when test="memo != null and memo != ''">
@@ -219,6 +225,12 @@
 		<if test="tenantId != null">
 			and sni.tenant_id_ = #{tenantId}
 		</if>
+		<if test="excludeIds!=null and excludeIds.size()>0">
+			AND sni.id_ NOT IN
+			<foreach collection="excludeIds" item="excludeId" open="(" close=")" separator=",">
+				#{excludeId}
+			</foreach>
+		</if>
 			<if test="subjectId != null">
 				and find_in_set(#{subjectId},sni.subject_id_list_)
 			</if>

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -66,4 +66,15 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
      * @return
      */
     List<CloudTeacherActiveTargetDetailDto> queryCloudTeacherActiveDetail(Map<String, Object> param);
+
+    /**
+     * 获取学员购买的云教练活动订单
+     * @param userId
+     * @param activeRemark
+     * @param remark
+     * @return
+     */
+    List<CloudTeacherOrder> queryActiveOrderPage(@Param("userId") Integer userId,
+                                                 @Param("activeRemark") Integer activeRemark,
+                                                 @Param("remark") String remark);
 }

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

@@ -311,6 +311,8 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     List<EduOrganStudentListDto> queryCloudStudyStudentData(Map<String, Object> params);
     int countCloudStudyStudentData(Map<String, Object> params);
 
+    List<Map<Integer, String>> getStudentCooperationNameMap(@Param("studentIds") List<Integer> studentIds);
+
     /**
      * @describe 更新学员云教练连续使用天数
      * @author Joburgess
@@ -402,5 +404,5 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
     /**
      * 标记进行中乐团在读学员+VIP、网管有课的学员
      */
-    void remarkCountFlag();
+    void remarkCountFlag(@Param("studentIds") List<Integer> studentIds);
 }

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

@@ -5,6 +5,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
@@ -436,4 +437,16 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      * @return
      */
     List<Mapper> getMoneyInMusicApply(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    /**
+     * 获取学员购买的云教练活动订单
+     * @param userId
+     * @param activeRemark
+     * @param remark
+     * @return
+     */
+    StudentPaymentOrder findByUserAndActive(@Param("userId") Integer userId,
+                                            @Param("activeRemark") Integer activeRemark,
+                                            @Param("remark") String remark);
+
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -682,4 +682,10 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     List<Integer> findStudentIds();
+
+    /**
+     * 获取有会员团的学员
+     * @return
+     */
+    List<Integer> queryHasMemberGroupStudent();
 }

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

@@ -10,6 +10,8 @@ import java.util.Map;
 
 public interface SysCouponCodeDao extends BaseDAO<Long, SysCouponCode> {
 
+    int batchInsert(@Param("couponCodes") List<SysCouponCode> couponCodes);
+
     /**
      * @describe 统计指定用户指定优惠券的数量
      * @author Joburgess

+ 0 - 6
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -96,12 +96,6 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         String phone = session.getPrincipal().getName().split(":")[1];
         session.close();
         LOGGER.info("{}异常: {}", phone, exception);
-//        appMap.values().forEach(e->e.afterConnectionClosed(session, phone));
-//        exception.printStackTrace();
-//        if(!WS_CLIENTS.containsKey(phone)){
-//            return;
-//        }
-//        WS_CLIENTS.remove(phone);
     }
 
     @Override

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

@@ -87,4 +87,13 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     CloudTeacherOrderDto queryOrderInfoByOrderId(Long orderId);
 
     List<Map<Long, String>> queryNoStartByUserIds(Set<Integer> userIds,Boolean isMusicMember);
+
+    /**
+     * 获取学员购买的云教练活动订单
+     * @param userId
+     * @param activeRemark
+     * @param remark
+     * @return
+     */
+    List<CloudTeacherOrder> queryActiveOrderPage(Integer userId, Integer activeRemark, String remark);
 }

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

@@ -26,9 +26,20 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
 	 * @param periodEnum 会员周期
 	 * @param amount 金额
 	 * @param isUseBalance 是否使用余额
+	 * @param buyNum 购买数量
+	 * @param giveNum 赠送数量
+	 * @param activeRemark 活动标记
+	 * @param remark 备注
 	 * @return
 	 */
-	Map buy(Integer userId, Integer memberRankId, PeriodEnum periodEnum, BigDecimal amount, boolean isUseBalance) throws Exception;
+	Map buy(Integer userId,
+			Integer memberRankId,
+			PeriodEnum periodEnum,
+			BigDecimal amount,
+			boolean isUseBalance,
+			Integer buyNum,
+			Integer giveNum,
+			Integer activeRemark,String remark) throws Exception;
 	
 	/**
 	 * 订单回调

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -22,8 +22,10 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
-	
-	Map createOrder(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> details, String payReceiver) throws Exception;
+
+    StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark);
+
+    Map createOrder(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> details, String payReceiver) throws Exception;
 
     /**
      * 查询商品列表

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

@@ -15,9 +15,10 @@ public interface SysCouponCodeService extends BaseService<Long, SysCouponCode> {
      * @param userId: 用户编号
      * @param couponId: 优惠券编号
      * @param paymentOrderId: 订单编号
+     * @param exchangeNum: 兑换数量
      * @return boolean
      */
-    boolean exchangeCoupon(Integer userId, Integer couponId, Long paymentOrderId);
+    boolean exchangeCoupon(Integer userId, Integer couponId, Long paymentOrderId, Integer exchangeNum);
 
     /**
      * @describe 优惠券领取列表

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -248,4 +248,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     public List<Map<Long, String>> queryNoStartByUserIds(Set<Integer> userIds,Boolean isMusicMember) {
         return cloudTeacherOrderDao.queryNoStartByUserIds(userIds,isMusicMember);
     }
+
+    @Override
+    public List<CloudTeacherOrder> queryActiveOrderPage(Integer userId, Integer activeRemark, String remark) {
+        return cloudTeacherOrderDao.queryActiveOrderPage(userId,activeRemark,remark);
+    }
 }

+ 91 - 41
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -6,10 +6,13 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.service.*;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -30,14 +33,6 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.service.CloudTeacherOrderService;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.MemberFeeSettingService;
-import com.ym.mec.biz.service.MemberRankSettingService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -79,6 +74,9 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 	@Autowired
 	private IdGeneratorService idGeneratorService;
 
+	@Autowired
+	private SysCouponCodeService sysCouponCodeService;
+
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 	@Override
@@ -124,14 +122,43 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		return memberRankSettingDao.queryListByIsDefault(isDefault);
 	}
 
+	//是否有购买资格
+	public void buyCloudTeacherActive(Integer userId,Integer activeRemark,String remark){
+		if(activeRemark == null || StringUtils.isEmpty(remark)){
+			return;
+		}
+		if(activeRemark.equals(202109)){
+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findByUserAndActive(userId,activeRemark,remark);
+			if(studentPaymentOrder != null){
+				DealStatusEnum status = studentPaymentOrder.getStatus();
+				if(status == DealStatusEnum.SUCCESS){
+					throw new BizException("您已参与云教练 {} 活动,快去练习吧!",remark);
+				}
+				if(status == DealStatusEnum.ING){
+					throw new BizException("您有待处理的订单,请稍后重试");
+				}
+			}
+		}
+	}
+
 	@Override
-	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-	public Map buy(Integer userId, Integer memberRankId, PeriodEnum periodEnum, BigDecimal amount, boolean isUseBalance) throws Exception {
-		Student student = studentService.get(userId);
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+	public Map buy(Integer userId,
+				   Integer memberRankId,
+				   PeriodEnum periodEnum,
+				   BigDecimal amount,
+				   boolean isUseBalance,
+				   Integer buyNum,
+				   Integer giveNum,
+				   Integer activeRemark,String remark) throws Exception {
+		logger.info("云教练活动购买:userId:{} memberRankId:{} periodEnum:{} amount:{} isUseBalance:{} buyNum:{} giveNum:{} activeRemark:{} remark:{}",
+				userId,memberRankId,periodEnum,amount,isUseBalance,buyNum,giveNum,activeRemark,remark);
+		Student student = studentService.getLocked(userId);
 		if (student == null) {
 			throw new BizException("非法访问");
 		}
-
+		//是否可以购买
+		buyCloudTeacherActive(userId,activeRemark,remark);
 		SysUser user = sysUserFeignService.queryUserById(userId);
 
 		Integer organId = user.getOrganId();
@@ -155,34 +182,35 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		BigDecimal actualAmount = BigDecimal.ZERO;
 
 		switch (periodEnum) {
-		case DAY:
-			actualAmount = memberFeeSetting.getCurrentDayFee();
-			cloudTeacherOrder.setType(1);
-			cloudTeacherOrder.setTime(1);
-			break;
-		case MONTH:
-			actualAmount = memberFeeSetting.getCurrentMonthFee();
-			cloudTeacherOrder.setType(2);
-			cloudTeacherOrder.setTime(1);
-			break;
-		case QUARTERLY:
-			actualAmount = memberFeeSetting.getCurrentQuarterlyFee();
-			cloudTeacherOrder.setType(2);
-			cloudTeacherOrder.setTime(3);
-			break;
-		case YEAR_HALF:
-			actualAmount = memberFeeSetting.getCurrentHalfYearFee();
-			cloudTeacherOrder.setType(2);
-			cloudTeacherOrder.setTime(6);
-			break;
-		case YEAR:
-			actualAmount = memberFeeSetting.getCurrentYearFee();
-			cloudTeacherOrder.setType(3);
-			cloudTeacherOrder.setTime(1);
-			break;
-
-		default:
-			break;
+			case DAY:
+				actualAmount = memberFeeSetting.getCurrentDayFee();
+				cloudTeacherOrder.setType(1);
+				cloudTeacherOrder.setTime(1);
+				break;
+			case MONTH:
+				actualAmount = memberFeeSetting.getCurrentMonthFee().multiply(new BigDecimal(buyNum));
+				cloudTeacherOrder.setType(2);
+				//购买月份加上赠送月份,目前只有按月购买的活动,其他的暂不处理
+				cloudTeacherOrder.setTime(buyNum + giveNum);
+				break;
+			case QUARTERLY:
+				actualAmount = memberFeeSetting.getCurrentQuarterlyFee();
+				cloudTeacherOrder.setType(2);
+				cloudTeacherOrder.setTime(3);
+				break;
+			case YEAR_HALF:
+				actualAmount = memberFeeSetting.getCurrentHalfYearFee();
+				cloudTeacherOrder.setType(2);
+				cloudTeacherOrder.setTime(6);
+				break;
+			case YEAR:
+				actualAmount = memberFeeSetting.getCurrentYearFee();
+				cloudTeacherOrder.setType(3);
+				cloudTeacherOrder.setTime(1);
+				break;
+
+			default:
+				break;
 		}
 
 		// 判断金额是否正确
@@ -246,6 +274,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
 		cloudTeacherOrder.setCreateTime(date);
 		cloudTeacherOrder.setUpdateTime(date);
+		cloudTeacherOrder.setActiveRemark(activeRemark);
+		cloudTeacherOrder.setRemark(remark);
 		cloudTeacherOrderService.insert(cloudTeacherOrder);
 
 		Map result = studentPaymentOrderService.createOrder(studentPaymentOrder, null, "BUY_MEMBER");
@@ -338,7 +368,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 			cloudTeacherOrderService.update(cloudTeacherOrder);
 			// 添加会员有效时长
 			studentService.updateMemberRank(cloudTeacherOrder, periodEnum);
-
+			//云教练活动赠送优惠券
+			cloudTeacherActiveGiveCoupon(cloudTeacherOrder);
 			// 插入交易明细
 			BigDecimal amount = studentPaymentOrder.getActualAmount();
 			if (amount.compareTo(BigDecimal.ZERO) > 0) {
@@ -382,4 +413,23 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		}
 		return true;
 	}
+
+	//云教练活动赠送优惠券
+	public void cloudTeacherActiveGiveCoupon(CloudTeacherOrder cloudTeacherOrder){
+		Integer activeRemark = cloudTeacherOrder.getActiveRemark();
+		String remark = cloudTeacherOrder.getRemark();
+		if(activeRemark == null || StringUtils.isEmpty(remark)){
+			return;
+		}
+		if(activeRemark.equals(202109)){
+			switch (remark){
+				case "2增1":
+					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),1,cloudTeacherOrder.getOrderId(),3);
+					break;
+				case "3增2":
+					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),1,cloudTeacherOrder.getOrderId(),6);
+					break;
+			}
+		}
+	}
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -113,6 +113,11 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
+    public StudentPaymentOrder findByUserAndActive(Integer userId, Integer activeRemark, String remark) {
+        return studentPaymentOrderDao.findByUserAndActive(userId,activeRemark,remark);
+    }
+
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public Map createOrder(StudentPaymentOrder studentPaymentOrder, List<StudentPaymentOrderDetail> details, String payReceiver)
 			throws Exception {

+ 30 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -527,7 +527,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
             Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
 
-            List<Map<Integer, String>> studentSchoolNamesMapList = studentRegistrationDao.queryStudentSchoolNamesMap(studentIds);
+            List<Map<Integer, String>> studentSchoolNamesMapList = studentDao.getStudentCooperationNameMap(studentIds);
             Map<Integer, String> studentSchoolNamesMap = MapUtil.convertIntegerMap(studentSchoolNamesMapList);
 
             List<SysUser> users = employeeDao.getUsers(studentIds);
@@ -903,7 +903,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         //清除标记
         studentDao.cleanCountFlag();
         //打标记
-        studentDao.remarkCountFlag();
+        //获取在会员团的学员
+        List<Integer> studentIds = studentRegistrationDao.queryHasMemberGroupStudent();
+        studentDao.remarkCountFlag(studentIds);
     }
 
     @Override
@@ -928,19 +930,21 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 dto.setTargetAmount(target.getTargetAmount());
             }
             if(dto.getBuyAmount().doubleValue() > 0d && dto.getBuyNum() > 0){
-                BigDecimal avgBuyAmount = dto.getBuyAmount().divide(new BigDecimal(dto.getBuyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                BigDecimal avgBuyAmount = dto.getBuyAmount().divide(new BigDecimal(dto.getBuyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
                 dto.setAvgBuyAmount(avgBuyAmount);
             }
             if(dto.getTotalNum() > 0 && dto.getBuyNum() > 0){
-                BigDecimal buyScale = new BigDecimal(dto.getBuyNum()).divide(new BigDecimal(dto.getTotalNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                BigDecimal buyScale = new BigDecimal(dto.getBuyNum()).divide(new BigDecimal(dto.getTotalNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
                 dto.setBuyScale(buyScale);
             }
             if(dto.getTargetNum() > 0 && dto.getBuyNum() > 0){
-                BigDecimal targetFinishScale = new BigDecimal(dto.getBuyNum()).divide(new BigDecimal(dto.getTargetNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                BigDecimal targetFinishScale = new BigDecimal(dto.getBuyNum()).divide(new BigDecimal(dto.getTargetNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
                 dto.setTargetFinishScale(targetFinishScale);
             }
         }
         Map<String,Object> resultMap = new HashMap<>(7);
+        BigDecimal targetAmount = resultList.stream().map(CloudTeacherActiveTargetDto::getTargetAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        resultMap.put("targetAmount",targetAmount);
         BigDecimal buyAmount = resultList.stream().map(CloudTeacherActiveTargetDto::getBuyAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
         resultMap.put("buyAmount",buyAmount);
         Integer buyNum = resultList.stream().mapToInt(CloudTeacherActiveTargetDto::getBuyNum).sum();
@@ -949,23 +953,26 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         resultMap.put("totalNum",totalNum);
         Integer targetNum = resultList.stream().mapToInt(CloudTeacherActiveTargetDto::getTargetNum).sum();
         resultMap.put("targetNum",targetNum);
+        resultMap.put("avgBuyAmount",0);
+        resultMap.put("buyScale",0);
+        resultMap.put("targetFinishScale",0);
         if(buyAmount.doubleValue() > 0d && buyNum > 0){
-            BigDecimal avgBuyAmount = buyAmount.divide(new BigDecimal(buyNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+            BigDecimal avgBuyAmount = buyAmount.divide(new BigDecimal(buyNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
             resultMap.put("avgBuyAmount",avgBuyAmount);
         }
         if(totalNum > 0 && buyNum > 0){
-            BigDecimal buyScale = new BigDecimal(buyNum).divide(new BigDecimal(totalNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+            BigDecimal buyScale = new BigDecimal(buyNum).divide(new BigDecimal(totalNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
             resultMap.put("buyScale",buyScale);
         }
         if(targetNum > 0 && buyNum > 0){
-            BigDecimal targetFinishScale = new BigDecimal(buyNum).divide(new BigDecimal(targetNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+            BigDecimal targetFinishScale = new BigDecimal(buyNum).divide(new BigDecimal(targetNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
             resultMap.put("targetFinishScale",targetFinishScale);
         }
         Map<String,Object> result = new HashMap<>(2);
         result.put("head",resultMap);
         String sort = queryInfo.getSort();
         if(StringUtils.isEmpty(sort)){
-            sort = "totalAmount";
+            sort = "targetFinishScale";
         }
         String order = queryInfo.getOrder();
         switch (sort){
@@ -990,6 +997,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                     resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getAvgBuyAmount)).collect(Collectors.toList());
                 }
                 break;
+            case "totalNum":
+                if("DESC".equalsIgnoreCase(order)){
+                    resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getTotalNum,Comparator.reverseOrder())).collect(Collectors.toList());
+                }else {
+                    resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getTotalNum)).collect(Collectors.toList());
+                }
+                break;
             case "buyScale":
                 if("DESC".equalsIgnoreCase(order)){
                     resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getBuyScale,Comparator.reverseOrder())).collect(Collectors.toList());
@@ -997,6 +1011,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                     resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getBuyScale)).collect(Collectors.toList());
                 }
                 break;
+            case "targetNum":
+                if("DESC".equalsIgnoreCase(order)){
+                    resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getTargetNum,Comparator.reverseOrder())).collect(Collectors.toList());
+                }else {
+                    resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getTargetNum)).collect(Collectors.toList());
+                }
+                break;
             case "targetFinishScale":
                 if("DESC".equalsIgnoreCase(order)){
                     resultList = resultList.stream().sorted(Comparator.comparing(CloudTeacherActiveTargetDto::getTargetFinishScale,Comparator.reverseOrder())).collect(Collectors.toList());

+ 19 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysCouponCodeServiceImpl.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
@@ -46,14 +47,18 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 
 	@Override
 	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-	public boolean exchangeCoupon(Integer userId, Integer couponId, Long paymentOrderId) {
-		if(Objects.isNull(userId)||Objects.isNull(couponId)||Objects.isNull(paymentOrderId)){
+	public boolean exchangeCoupon(Integer userId, Integer couponId, Long paymentOrderId, Integer exchangeNum) {
+		if(Objects.isNull(userId)||Objects.isNull(couponId)||Objects.isNull(paymentOrderId)||Objects.isNull(exchangeNum)){
 			throw new BizException("领取失败");
 		}
+		if(exchangeNum<=0){
+			return true;
+		}
 		SysCoupon sysCoupon = sysCouponDao.lockCoupon(couponId);
 		Date now = new Date();
 		//如果优惠券不存在,或者已停用,或者不在领取有效期内,或者已消耗完,则此优惠券无效
-		boolean invalid = Objects.isNull(sysCoupon)||0==sysCoupon.getStatus()||now.compareTo(sysCoupon.getStartDate())<0||now.compareTo(sysCoupon.getEndDate())>0||sysCoupon.getConsumeNum()>=sysCoupon.getStockCount();
+		boolean invalid = Objects.isNull(sysCoupon)||0==sysCoupon.getStatus()||now.compareTo(sysCoupon.getStartDate())<0||now.compareTo(sysCoupon.getEndDate())>0;
+		invalid = invalid || sysCoupon.getStockCount()!=-1&&sysCoupon.getConsumeNum()>=sysCoupon.getStockCount()&&(sysCoupon.getStockCount()-sysCoupon.getConsumeNum()<exchangeNum);
 		if(invalid){
 			throw new BizException("无效优惠券");
 		}
@@ -63,7 +68,7 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 		}
 		if(sysCoupon.getLimitExchangeNum()!=-1){
 			int userUserNum = sysCouponCodeDao.countWithUserAndCoupon(userId, couponId);
-			invalid = userUserNum>=sysCoupon.getLimitExchangeNum();
+			invalid = (userUserNum + exchangeNum)>sysCoupon.getLimitExchangeNum();
 		}
 		//如果用户使用数量超过优惠券限制则领取无效
 		if(invalid){
@@ -73,7 +78,6 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 		sysCouponCode.setUserId(userId);
 		sysCouponCode.setCouponId(couponId);
 		sysCouponCode.setPaymentOrderId(paymentOrderId);
-		sysCouponCode.setCode(String.valueOf(idGeneratorService.generatorId("coupon")));
 		sysCouponCode.setUsageStatus(0);
 		switch (sysCoupon.getEffectiveType()){
 			case DAYS:
@@ -87,9 +91,16 @@ public class SysCouponCodeServiceImpl extends BaseServiceImpl<Long, SysCouponCod
 			default:
 				throw new BizException("无效优惠券", sysCoupon.getLimitExchangeNum());
 		}
-		sysCouponCodeDao.insert(sysCouponCode);
-		sysCoupon.setConsumeNum(new AtomicInteger(sysCoupon.getConsumeNum()).incrementAndGet());
-		if(sysCoupon.getWarningStatus()==0&&sysCoupon.getStockCount()-sysCoupon.getConsumeNum()<sysCoupon.getWarningStockNum()){
+		List<SysCouponCode> couponCodes = new ArrayList<>();
+		for (int i = 0; i < exchangeNum; i++) {
+			SysCouponCode couponCode = new SysCouponCode();
+			BeanUtils.copyProperties(sysCouponCode, couponCode);
+			couponCode.setCode(String.valueOf(idGeneratorService.generatorId("coupon")));
+			couponCodes.add(couponCode);
+		}
+		sysCouponCodeDao.batchInsert(couponCodes);
+		sysCoupon.setConsumeNum(new AtomicInteger(sysCoupon.getConsumeNum()).addAndGet(exchangeNum));
+		if(sysCoupon.getWarningStatus()==0&&sysCoupon.getStockCount()!=-1&&sysCoupon.getStockCount()-sysCoupon.getConsumeNum()<sysCoupon.getWarningStockNum()){
 			sysCouponService.stockWarning(sysCoupon.getId(), sysCoupon.getName());
 			sysCoupon.setWarningStatus(1);
 		}

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -248,8 +248,18 @@
         LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_ AND mg.status_ = 'PROGRESS'
         <include refid="queryCloudTeacherActiveDetailSql"/>
     </select>
+    <select id="queryActiveOrderPage" resultMap="CloudTeacherOrder">
+        SELECT cto.* FROM cloud_teacher_order cto
+        LEFT JOIN student_payment_order spo ON spo.id_ = cto.order_id_
+        WHERE spo.status_ != 'FAILED' AND cto.active_remark_ = #{activeRemark}
+        AND cto.student_id_ = #{userId}
+        <if test="remark != null and remark != ''">
+            AND cto.remark_ = #{remark}
+        </if>
+    </select>
     <sql id="queryCloudTeacherActiveDetailSql">
         <where>
+            cto.status_ != 0 AND cto.active_remark_ = '202109'
             <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET(su.organ_id_,#{organIds})
             </if>

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

@@ -1831,7 +1831,7 @@
 		SELECT o.name_ organ_name_,o.id_ organ_id_,CASE WHEN SUM(cto.amount_) IS NULL THEN 0 ELSE SUM(cto.amount_) END buy_amount_,
 		COUNT(DISTINCT cto.student_id_) buy_num_,COUNT(s.user_id_) total_num_ FROM student s
 		LEFT JOIN sys_user su ON su.id_ = s.user_id_
-		LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_
+		LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_ AND cto.status_ != 0 AND cto.active_remark_ = '202109'
 		LEFT JOIN organization o ON o.id_ = su.organ_id_
 		WHERE s.count_flag_ = 1
 		<if test="organIdList != null and organIdList.size > 0">

+ 19 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1257,6 +1257,19 @@
         AND cs.status_='NOT_START'))t)
     </select>
 
+    <select id="getStudentCooperationNameMap" resultType="java.util.Map">
+        SELECT stu.user_id_ 'key',co.name_ 'value'
+        FROM student stu
+        LEFT JOIN cooperation_organ co ON stu.cooperation_organ_id_=co.id_
+        WHERE 1=1
+        <if test="studentIds!=null and studentIds.size()>0">
+            AND stu.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+        </if>
+    </select>
+
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1
         WHERE current_grade_num_>=1
@@ -1323,5 +1336,11 @@
         AND cs.status_='NOT_START')) t
         LEFT JOIN sys_user su ON t.user_id_=su.id_
         WHERE su.del_flag_=0 AND t.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29'))c)
+        <if test="studentIds != null and studentIds.size > 0">
+            AND user_id_ NOT IN
+            <foreach collection="studentIds" separator="," item="userId" open="(" close=")">
+                #{userId}
+            </foreach>
+        </if>
     </update>
 </mapper>

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

@@ -996,4 +996,10 @@
         AND spo.type_ = 'APPLY' and spo.status_ = 'SUCCESS'
 		GROUP BY spo.music_group_id_
     </select>
+    <select id="findByUserAndActive" resultMap="StudentPaymentOrder">
+        SELECT spo.* FROM cloud_teacher_order cto
+        LEFT JOIN student_payment_order spo ON spo.id_ = cto.order_id_
+        WHERE spo.status_ != 'FAILED' AND cto.active_remark_ = #{activeRemark}
+        AND cto.remark_ = #{remark} AND cto.student_id_ = #{userId} LIMIT 1
+    </select>
 </mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1712,4 +1712,9 @@
       WHERE cs.`group_type_` = 'MUSIC' AND cs.`status_` = 'OVER' AND mg.`status_` = 'PROGRESS'
       GROUP BY cssp.`user_id_` HAVING COUNT(cs.`id_`) > 4) AND sr.user_id_ NOT IN (SELECT user_id_ FROM student WHERE subject_id_list_ REGEXP '21|25|26|27|28|29')
     </select>
+    <select id="queryHasMemberGroupStudent" resultType="java.lang.Integer">
+        SELECT DISTINCT sr.user_id_ FROM student_registration sr
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
+        WHERE sr.music_group_status_ != 'QUIT' AND mg.status_ NOT IN ('CANCELED','CLOSE') AND mg.course_view_type_ = 2
+    </select>
 </mapper>

+ 20 - 4
mec-biz/src/main/resources/config/mybatis/SysCouponCodeMapper.xml

@@ -55,12 +55,22 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO sys_coupon_code (id_,coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
+		INSERT INTO sys_coupon_code (coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
 		                             payment_order_id_,create_time_,update_time_)
-							 VALUES(#{id},#{couponId},#{code},#{usageStatus},#{userId},#{usedTime},#{useStartDate},#{useDeadlineDate},
+							 VALUES(#{couponId},#{code},#{usageStatus},#{userId},#{usedTime},#{useStartDate},#{useDeadlineDate},
 									#{paymentOrderId},NOW(),NOW())
 	</insert>
 
+	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.SysCouponCode" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO sys_coupon_code (coupon_id_,code_,usage_status_,user_id_,used_time_,use_start_date_,use_deadline_date_,
+		payment_order_id_,create_time_,update_time_)
+		VALUE
+		<foreach collection="couponCodes" item="couponCode" separator=",">
+			(#{couponCode.couponId},#{couponCode.code},#{couponCode.usageStatus},#{couponCode.userId},#{couponCode.usedTime},#{couponCode.useStartDate},#{couponCode.useDeadlineDate},
+			#{couponCode.paymentOrderId},NOW(),NOW())
+		</foreach>
+	</insert>
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.SysCouponCode">
 		UPDATE sys_coupon_code
@@ -125,7 +135,13 @@
 				AND scc.payment_order_id_=#{paymentOrderId}
 			</if>
 			<if test="usageStatus!=null">
-				AND scc.usage_status_=#{usageStatus}
+				<if test="usageStatus &lt; 2">
+					AND scc.usage_status_=#{usageStatus}
+					AND scc.use_deadline_date_ &gt;= NOW()
+				</if>
+				<if test="usageStatus == 2">
+					AND scc.use_deadline_date_ &lt; NOW()
+				</if>
 			</if>
 			<if test="organId!=null">
 				AND su.organ_id_=#{organId}
@@ -150,7 +166,7 @@
 			scc.use_start_date_,
 			scc.use_deadline_date_,
 			scc.used_time_,
-			scc.usage_status_
+		    IF(scc.use_deadline_date_ &gt;= NOW(),scc.usage_status_,2) usage_status_
 		FROM sys_coupon_code scc
 			 LEFT JOIN sys_coupon sc ON scc.coupon_id_=sc.id_
 			 LEFT JOIN sys_user su ON scc.user_id_=su.id_

+ 14 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicCompareWeekDataMapper.xml

@@ -130,6 +130,20 @@
 		</if>
 		WHERE smcwd.monday_ = #{monday}
 			AND stu.user_id_=smcwd.user_id_
+			<if test="orderType==1">
+				<if test="heardLevel==null">
+					AND smcwd.advanced_max_score_ > 0
+				</if>
+				<if test="heardLevel=='BEGINNER'">
+					AND smcwd.beginner_max_score_ > 0
+				</if>
+				<if test="heardLevel=='ADVANCED'">
+					AND smcwd.advanced_max_score_ > 0
+				</if>
+				<if test="heardLevel=='PERFORMER'">
+					AND smcwd.performer_max_score_ > 0
+				</if>
+			</if>
 			ORDER BY
 			<if test="orderType==null">
 				smcwd.train_time_ DESC,

+ 49 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -1,9 +1,14 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +49,9 @@ public class MemberRankController extends BaseController {
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
 	@ApiOperation(value = "获取所有的收费标准")
 	@GetMapping("/queryList")
 	public Object getMemberDefaultFee() {
@@ -68,8 +76,38 @@ public class MemberRankController extends BaseController {
 		if (sysUser == null) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
+		return succeed(memberRankSettingService.buy(sysUser.getId(), memberRankId, periodEnum, amount, isUseBalance,1,0,null,null));
+	}
 
-		return succeed(memberRankSettingService.buy(sysUser.getId(), memberRankId, periodEnum, amount, isUseBalance));
+	@ApiOperation(value = "2021-09活动购买会员")
+	@PostMapping("/activeBuy")
+	public Object ActiveBuy(Integer memberRankId, Integer buyNum, BigDecimal amount, boolean isUseBalance) throws Exception {
+		Date nowTime = new Date();
+		String startTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_start_time");
+		Date startTime = DateUtil.stringToDate(startTimeStr);
+		if (startTime.compareTo(nowTime) > 0) {
+			throw new BizException("活动还未开始,谢谢关注");
+		}
+		String endTimeStr = sysConfigDao.findConfigValue("cloud_teacher_active_end_time");
+		Date endTime = DateUtil.stringToDate(endTimeStr);
+		if (endTime.compareTo(nowTime) <= 0) {
+			throw new BizException("活动已结束,谢谢关注");
+		}
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		//买2赠1、买3赠2
+		int giveNum = buyNum == 2?1:buyNum == 3?2:0;
+		String remark = buyNum == 2?"2赠1":buyNum == 3?"3赠2":buyNum == 1?"单月":"其他";
+		return succeed(memberRankSettingService.buy(sysUser.getId(),
+				memberRankId,
+				PeriodEnum.MONTH,
+				amount,
+				isUseBalance,
+				buyNum,
+				giveNum,
+				202109,remark));
 	}
 	
     @ApiOperation(value = "查询订单列表")
@@ -83,4 +121,14 @@ public class MemberRankController extends BaseController {
         return succeed(cloudTeacherOrderService.queryPage(queryInfo));
     }
 
+    @ApiOperation(value = "获取学员购买的云教练活动订单")
+    @GetMapping("/queryActiveOrderPage")
+    public Object queryActiveOrderPage() {
+    	SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+        return succeed(cloudTeacherOrderService.queryActiveOrderPage(user.getId(),202109,null));
+    }
+
 }

+ 1 - 2
mec-student/src/main/java/com/ym/mec/student/controller/SysCouponCodeController.java

@@ -25,8 +25,7 @@ public class SysCouponCodeController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
-	@PreAuthorize("@pcs.hasPermissions('sysCouponCode/queryPage')")
+	@RequestMapping(value = "queryPage")
 	public HttpResponseResult queryPage(SysCouponCodeQueryInfo queryInfo) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {

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

@@ -25,7 +25,7 @@ public class SysCouponCodeController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
+	@RequestMapping(value = "queryPage")
 	@PreAuthorize("@pcs.hasPermissions('sysCouponCode/queryPage')")
 	public HttpResponseResult queryPage(SysCouponCodeQueryInfo queryInfo) {
 		return succeed(sysCouponCodeService.querySysCouponUseList(queryInfo));
@@ -33,11 +33,11 @@ public class SysCouponCodeController extends BaseController {
 
 	@ApiOperation("兑换优惠券")
 	@PostMapping(value = "exchangeCoupon")
-	public HttpResponseResult exchangeCoupon(Integer couponId, Long paymentOrderId){
+	public HttpResponseResult exchangeCoupon(Integer couponId, Long paymentOrderId, Integer exchangeNum){
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			return failed("用户信息获取失败");
 		}
-		return succeed(sysCouponCodeService.exchangeCoupon(sysUser.getId(), couponId, paymentOrderId));
+		return succeed(sysCouponCodeService.exchangeCoupon(sysUser.getId(), couponId, paymentOrderId, exchangeNum));
 	}
 }

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/SysCouponController.java

@@ -60,7 +60,7 @@ public class SysCouponController extends BaseController {
 				}
 				break;
 			case TIME_BUCKET:
-				if(Objects.isNull(sysCoupon.getDeadline())){
+				if(Objects.isNull(sysCoupon.getEffectiveStartTime())||Objects.isNull(sysCoupon.getEffectiveExpireTime())){
 					return failed("请指定有效时间段");
 				}
 				break;
@@ -97,7 +97,7 @@ public class SysCouponController extends BaseController {
 	}
 
 	@ApiOperation("分页查询")
-	@PostMapping(value = "queryPage")
+	@RequestMapping(value = "queryPage")
 	@PreAuthorize("@pcs.hasPermissions('sysCoupon/queryPage')")
 	public HttpResponseResult queryPage(SysCouponQueryInfo queryInfo) {
 		return succeed(sysCouponService.queryPage(queryInfo));

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

@@ -501,7 +501,7 @@ public class TaskController extends BaseController {
 		sysMusicCompareRecordService.curWeekStudentTrainRemind();
 	}
 
-	@ApiOperation("标记进行中乐团在读学员+VIP、网管有课学员总数(除弦乐声部、去重")
+	@ApiOperation("标记进行中乐团在读学员+VIP、网管有课学员总数(除弦乐声部、去重,去除在云教练的乐团的学员")
 	@GetMapping(value = "/remarkCountFlag")
 	public void remarkCountFlag(){
 		studentService.remarkCountFlag();