Sfoglia il codice sorgente

Merge branch 'online1' into system_fee

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
yonge 4 anni fa
parent
commit
e2a1598604
21 ha cambiato i file con 275 aggiunte e 55 eliminazioni
  1. 10 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUserDevice.java
  2. 5 0
      mec-auth/mec-auth-server/pom.xml
  3. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java
  4. 7 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/AuthorizationServerConfig.java
  5. 16 4
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java
  6. 37 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/interceptor/OperationLogInterceptor.java
  7. 42 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserDeviceController.java
  8. 38 0
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/queryInfo/SysUserDeviceQueryInfo.java
  9. 33 2
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserDeviceMapper.xml
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupActivityService.java
  12. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  13. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  14. 13 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  15. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  16. 12 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java
  17. 3 1
      mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml
  18. 4 2
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  19. 11 6
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java
  20. 22 4
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java
  21. 1 1
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduVipGroupActivityController.java

+ 10 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUserDevice.java

@@ -22,6 +22,8 @@ public class SysUserDevice {
 	/** 设备类型 */
 	private String deviceType;
 	
+	private SysUser user;
+	
 	public void setId(Integer id){
 		this.id = id;
 	}
@@ -62,6 +64,14 @@ public class SysUserDevice {
 		return this.deviceType;
 	}
 			
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 5 - 0
mec-auth/mec-auth-server/pom.xml

@@ -74,6 +74,11 @@
 			<groupId>com.ym</groupId>
 			<artifactId>mec-client-api</artifactId>
 		</dependency>
+		
+		<dependency>
+			<groupId>com.yonge.log</groupId>
+			<artifactId>audit-log</artifactId>
+		</dependency>
 
 		<dependency>
 			<groupId>org.apache.commons</groupId>

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/AuthServerApplication.java

@@ -18,7 +18,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @EnableDiscoveryClient
 @EnableFeignClients({"com.ym.mec"})
 @MapperScan("com.ym.mec.auth.dal.dao")
-@ComponentScan(basePackages="com.ym.mec")
+@ComponentScan(basePackages={"com.ym.mec", "com.yonge.log"})
 @Configuration
 @EnableSwagger2Doc
 @EnableAsync

+ 7 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/AuthorizationServerConfig.java

@@ -53,6 +53,11 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
 	@Override
 	public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
 
+		clients.withClientDetails(jdbcClientDetailsService());
+	}
+
+	@Bean
+	public JdbcClientDetailsService jdbcClientDetailsService() {
 		JdbcClientDetailsService clientDetailsService = new JdbcClientDetailsService(dataSource);
 
 		clientDetailsService
@@ -60,7 +65,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
 		clientDetailsService
 				.setFindClientDetailsSql("select id_, CONCAT('{noop}',client_secret_) as client_secret, resource_ids_, scope_, authorized_grant_types_, web_server_redirect_uri_, authorities_, access_token_validity_, refresh_token_validity_, additional_information_, autoapprove_ from sys_oauth_client_details order by id_");
 
-		clients.withClientDetails(clientDetailsService);
+		return clientDetailsService;
 	}
 
 	@Bean
@@ -77,6 +82,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
 		CustomTokenServices tokenServices = new CustomTokenServices();
 		tokenServices.setTokenStore(redisTokenStore());
 		tokenServices.setSupportRefreshToken(true);
+		tokenServices.setClientDetailsService(jdbcClientDetailsService());
 		//tokenServices.setAccessTokenValiditySeconds(60 * 60 * 24); // token有效期自定义设置,默认12小时
 		//tokenServices.setRefreshTokenValiditySeconds(60 * 60 * 24 * 30);// 默认30天,这里修改
 		return tokenServices;

+ 16 - 4
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java

@@ -1,19 +1,26 @@
 package com.ym.mec.auth.config;
 
-import com.ym.mec.common.config.EnumConverterFactory;
-import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.ym.mec.auth.interceptor.OperationLogInterceptor;
+import com.ym.mec.common.config.EnumConverterFactory;
+import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
+	
+	@Autowired
+	private OperationLogInterceptor operationLogInterceptor;
 
 	/**
 	 * 枚举类的转换器 addConverterFactory
@@ -23,6 +30,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		registry.addConverterFactory(new EnumConverterFactory());
 	}
 	
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/userDevice/unbind").excludePathPatterns("/*");
+	}
+	
 	@Bean
     public HttpMessageConverters fastJsonHttpMessageConverters(){
 		LocalFastJsonHttpMessageConverter converter = new LocalFastJsonHttpMessageConverter();

+ 37 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/interceptor/OperationLogInterceptor.java

@@ -0,0 +1,37 @@
+package com.ym.mec.auth.interceptor;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityUtils;
+import com.yonge.log.interceptor.AuditLogInterceptor;
+
+@Component
+public class OperationLogInterceptor extends AuditLogInterceptor {
+
+	@Autowired
+	private SysUserService sysUserService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
+		AuthUser authUser = SecurityUtils.getUser();
+		if (authUser != null) {
+			SysUser sysUser = sysUserService.get(authUser.getUserId());
+
+			if (sysUser != null) {
+				setUsername(sysUser.getRealName(), sysUser.getId());
+			}
+		}
+		return true;
+	}
+
+}

+ 42 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserDeviceController.java

@@ -0,0 +1,42 @@
+package com.ym.mec.auth.web.controller;
+
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.service.SysUserDeviceService;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.auth.web.controller.queryInfo.SysUserDeviceQueryInfo;
+import com.ym.mec.common.controller.BaseController;
+import com.yonge.log.model.AuditLogAnnotation;
+
+@RestController()
+@RequestMapping("userDevice")
+@Api(tags = "会员设备服务")
+public class UserDeviceController extends BaseController {
+
+	@Autowired
+	private SysUserService sysUserService;
+	
+	@Autowired
+	private SysUserDeviceService sysUserDeviceService;
+
+	@ApiOperation(value = "分页查询用户信息")
+	@GetMapping(value = "/queryPage")
+	public Object queryPage(SysUserDeviceQueryInfo queryInfo) {
+		return succeed(sysUserDeviceService.queryPage(queryInfo));
+	}
+
+	@ApiOperation(value = "设备号解除绑定")
+	@PostMapping(value = "/unbind")
+	@AuditLogAnnotation(operateName = "设备号解除绑定",interfaceURL = "userDevice/unbind")
+	public Object unbind(Integer id) {
+		return succeed(sysUserDeviceService.delete(id));
+	}
+
+}

+ 38 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/queryInfo/SysUserDeviceQueryInfo.java

@@ -0,0 +1,38 @@
+package com.ym.mec.auth.web.controller.queryInfo;
+
+import java.util.Date;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class SysUserDeviceQueryInfo extends QueryInfo {
+
+	private String deviceNum;
+
+	private Date bindStartTime;
+
+	private Date bindEndTime;
+
+	public String getDeviceNum() {
+		return deviceNum;
+	}
+
+	public void setDeviceNum(String deviceNum) {
+		this.deviceNum = deviceNum;
+	}
+
+	public Date getBindStartTime() {
+		return bindStartTime;
+	}
+
+	public void setBindStartTime(Date bindStartTime) {
+		this.bindStartTime = bindStartTime;
+	}
+
+	public Date getBindEndTime() {
+		return bindEndTime;
+	}
+
+	public void setBindEndTime(Date bindEndTime) {
+		this.bindEndTime = bindEndTime;
+	}
+}

+ 33 - 2
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserDeviceMapper.xml

@@ -9,6 +9,8 @@
 		<result column="device_num_" property="deviceNum" />
 		<result column="bind_time_" property="bindTime" />
 		<result column="device_type_" property="deviceType" />
+		<result column="phone_" property="user.phone" />
+		<result column="real_name_" property="user.realName" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -63,13 +65,42 @@
 
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysUserDevice" parameterType="map">
-		SELECT * FROM sys_user_device ORDER BY id_
+		SELECT ud.*,u.phone_,u.real_name_ FROM sys_user_device ud left join sys_user u on ud.user_id_ = u.id_ 
+		<where>
+			<if test="search != null and search != ''">
+				and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
+			</if>
+			<if test="deviceNum != null">
+				and device_num_ = #{deviceNum}
+			</if>
+			<if test="bindStartTime != null">
+				and date(bind_time_) &gt;= #{bindStartTime}
+			</if>
+			<if test="bindEndTime != null">
+				and date(bind_time_) &lt;= #{bindEndTime}
+			</if>
+		</where>
+		ORDER BY id_
 		<include refid="global.limit" />
 	</select>
 
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM sys_user_device
+		SELECT COUNT(ud.user_id_) FROM sys_user_device ud left join sys_user u on ud.user_id_ = u.id_
+		<where>
+			<if test="search != null and search != ''">
+				and (u.real_name_ LIKE CONCAT('%',#{search},'%') OR u.phone_ LIKE CONCAT('%',#{search},'%') OR u.id_ like CONCAT('%',#{search},'%'))
+			</if>
+			<if test="deviceNum != null">
+				and device_num_ = #{deviceNum}
+			</if>
+			<if test="bindStartTime != null">
+				and date(bind_time_) &gt;= #{bindStartTime}
+			</if>
+			<if test="bindEndTime != null">
+				and date(bind_time_) &lt;= #{bindEndTime}
+			</if>
+		</where>
 	</select>
 	
 	<select id="queryByUserId" resultMap="SysUserDevice">

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupActivityDao.java

@@ -17,7 +17,8 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
 	 */
 	List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId,
 										  @Param("organIds") String organIds,
-										  @Param("applyToStudentType") Integer applyToStudentType);
+										  @Param("applyToStudentType") Integer applyToStudentType,
+										  @Param("includeClosed") Boolean includeClosed);
 
 	/**
 	 * 根据活动方案编号列表获取名称

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

@@ -29,7 +29,8 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      * @Date: 2019/10/2
      * 根据课程类型获取VIP课相关活动方案
      */
-    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId, Integer applyToStudentType);
+    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId,
+                                                  Integer applyToStudentType, Boolean includeClosed);
 
     /**
      * 导出vip活动

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

@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
@@ -973,7 +974,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRES_NEW)
 	public boolean transferProduceContract(Integer userId,String musicGroupId) {
 		SysUser user = studentDao.lockUserReturnInfo(userId);
 

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

@@ -221,6 +221,8 @@ public class ExportServiceImpl implements ExportService {
                     } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) ||
                             SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) {
                         row.setRechargeFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.CLOUD_TEACHER_BUY.getCode().equals(row.getChargeType())) {
+                        row.setCloudTeacherFee(row.getActualAmount());
                     } else {
                         row.setOtherFee(row.getActualAmount());
                     }
@@ -512,6 +514,8 @@ public class ExportServiceImpl implements ExportService {
                     } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) ||
                             SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) {
                         row.setRechargeFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.CLOUD_TEACHER_BUY.getCode().equals(row.getChargeType())) {
+                        row.setCloudTeacherFee(row.getActualAmount());
                     } else {
                         row.setOtherFee(row.getActualAmount());
                     }

+ 13 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -126,10 +126,10 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	private StudentRegistrationDao studentRegistrationDao;
 	@Autowired
 	private GroupEventSource groupEventSource;
+	
 	@Autowired
 	private MemberFeeSettingDao memberFeeSettingDao;
 	@Autowired
-	private MemberRankSettingDao memberRankSettingDao;
 	@Autowired
 	private StudentService studentService;
 	@Autowired
@@ -1537,33 +1537,22 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (calender == null) {
 			throw new BizException("缴费信息不存在");
 		}
-		if (calender.getStatus() != PaymentCalenderStatusEnum.AUDITING && calender.getStatus() != PaymentCalenderStatusEnum.NO
-				&& calender.getStatus() != PaymentCalenderStatusEnum.REJECT && calender.getStatus() != DRAFT) {
-			throw new BizException("删除失败,{} 的缴费项目不允许删除");
-		}
-		MusicGroupStudentClassAdjust byBatchNo = musicGroupStudentClassAdjustDao.findByBatchNo(calender.getBatchNo());
-		if(byBatchNo != null){
-			throw new BizException("删除失败,班级调整的缴费项目不允许删除");
+		
+		//缴费项目中没有学生即可删除缴费项目
+		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = musicGroupPaymentCalenderDetailDao.queryByCalenderId(id, null);
+		if (musicGroupPaymentCalenderDetailList != null && musicGroupPaymentCalenderDetailList.size() > 0) {
+			throw new BizException("缴费项目中已存在学员,不能删除");
 		}
 
-		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = musicGroupPaymentCalenderDetailDao.queryByCalenderId(id,null);
-		if (musicGroupPaymentCalenderDetailList != null && musicGroupPaymentCalenderDetailList.size() > 0) {
-			List<MusicGroupPaymentCalenderDetail> paidList = musicGroupPaymentCalenderDetailList.stream()
-					.filter(MusicGroupPaymentCalenderDetail -> MusicGroupPaymentCalenderDetail.getPaymentStatus() != PaymentStatus.NON_PAYMENT)
-					.collect(Collectors.toList());
-			if (paidList.size() > 0) {
-				throw new BizException("存在已缴费的学生不能删除");
-			}
-			
-			List<Long> calenderDetailIdList = musicGroupPaymentCalenderDetailList.stream().map(cd -> cd.getId()).collect(Collectors.toList());
-			//是否已排课
-			List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = musicGroupPaymentStudentCourseDetailDao.queryByMusicGroupPaymentStudentCourseDetailId(calenderDetailIdList);
-			long count = musicGroupPaymentStudentCourseDetailList.stream().filter(e -> e.getUsedCourseMinutes() > 0).count();
-			if(count > 0){
-				throw new BizException("存在已排课的学员");
+		if (calender.getPaymentType() == PaymentType.MUSIC_APPLY) {
+			// 是否存在缴费中的
+			List<StudentPaymentOrder> studentPaymentOrderList = studentPaymentOrderDao.queryByDealStatus(calender.getMusicGroupId(), OrderTypeEnum.APPLY,
+					DealStatusEnum.ING);
+			if (studentPaymentOrderList != null && studentPaymentOrderList.size() > 0) {
+				throw new BizException("存在缴费中的学生,不能删除");
 			}
 		}
-
+		
 		musicGroupPaymentCalenderDao.delete(id);
 		musicGroupPaymentCalenderDetailDao.deleteByCalenderId(id);
 		musicGroupPaymentStudentCourseDetailDao.deleteByMusicGroupPaymentCalenderId(id);

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1081,8 +1081,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
             }
             studentRegistration.setPaymentStatus(YES);
-            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
-
+            
             if (studentPaymentOrder.getClassGroupId() == null || !studentPaymentOrder.getClassGroupId().equals(206)) {
                 studentRegistration.setPayingStatus(0);
             }
@@ -1097,6 +1096,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     .filter(o -> !o.getType().getCode().equals("CLOUD_TEACHER_PLUS"))
                     .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
+            
+            //已购买内容
+            List<OrderDetailTypeEnum> orderTypeList = allDetails.stream().map(t -> t.getType()).collect(Collectors.toList());
+            
+			if (studentRegistration.getNoneNeedCloudTeacher() == 1 || orderTypeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER)
+					|| orderTypeList.contains(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS)) {
+				studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
+			}
 
             //累加充值金额
             studentRegistration.setSurplusCourseFee(studentRegistration.getSurplusCourseFee().add(courseFee));
@@ -1915,6 +1922,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             throw new BizException("该学生状态已更新,请刷新查看");
         }
         studentRegistration.setPayingStatus(0);
+        studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
         studentRegistrationDao.update(studentRegistration);
         StudentPaymentOrder order = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(studentRegistration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
         order.setPaymentAccountNo("200");

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -10,10 +10,10 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.biz.event.source.EntityChangeEventSource;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
 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;
@@ -21,7 +21,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Service
 public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGroupActivity>  implements VipGroupActivityService {
@@ -32,6 +35,8 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	private TeacherDao teacherDao;
 	@Autowired
 	private EntityChangeEventSource entityChangeEventSource;
+	@Autowired
+	private SysConfigService sysConfigService;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -146,7 +151,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId, Integer applyToStudentType) {
+	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, String organIds, Integer teacherId, Integer applyToStudentType, Boolean includeClosed) {
 		if(Objects.isNull(categoryId)){
 			throw new BizException("请选择课程形态!");
 		}
@@ -163,7 +168,10 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 				organIds += "," + teacher.getFlowOrganRange();
 			}
 		}
-		return vipGroupActivityDao.findByCategory(categoryId,organIds, applyToStudentType);
+
+		List<VipGroupActivity> vipGroupActivities = vipGroupActivityDao.findByCategory(categoryId, organIds, applyToStudentType, includeClosed);
+
+		return vipGroupActivities;
 	}
 
 	@Override

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

@@ -204,7 +204,9 @@
 			vip_group_activity
 		WHERE
 			FIND_IN_SET( #{categoryId}, vip_group_category_id_list_ )
-			AND (end_time_ IS NULL OR NOW() BETWEEN start_time_ AND end_time_)
+		  	<if test="includeClosed==null">
+				AND (end_time_ IS NULL OR NOW() BETWEEN start_time_ AND end_time_)
+			</if>
 			AND del_flag_=0
 			AND INTE_ARRAY(organ_id_,#{organIds})
 			<if test="applyToStudentType!=null">

+ 4 - 2
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -1048,8 +1048,10 @@
     <select id="countStudentUseingActivityNum" resultType="int">
         SELECT COUNT(DISTINCT vg.id_)
         FROM vip_group vg
-                 LEFT JOIN class_group_student_mapper cgsm ON vg.id_=cgsm.music_group_id_ AND cgsm.group_type_='VIP'
+            LEFT JOIN class_group_student_mapper cgsm ON vg.id_=cgsm.music_group_id_ AND cgsm.group_type_='VIP'
+            LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
         WHERE vg.vip_group_activity_id_=#{vipGroupActivityId}
-          AND cgsm.user_id_=#{studentId}
+            AND cg.del_flag_!=1
+            AND cgsm.user_id_=#{studentId}
     </select>
 </mapper>

+ 11 - 6
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java

@@ -98,7 +98,7 @@ public class VipGroupActivityController extends BaseController {
         }
         String organIds = student.getOrganId().toString();
 
-        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, sysUser.getId(),applyToStudentType);
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, sysUser.getId(),applyToStudentType, onlySpecialActivity?true:null);
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
         if(onlySpecialActivity){
             if(Objects.isNull(sysConfig)|| StringUtils.isBlank(sysConfig.getParanValue())){
@@ -108,12 +108,17 @@ public class VipGroupActivityController extends BaseController {
             List<VipGroupActivity> results = vipGroupActivities.stream().filter(e -> specialActivityIds.contains(e.getId())).collect(Collectors.toList());
             return succeed(results);
         }else{
-            if(Objects.isNull(sysConfig)|| StringUtils.isBlank(sysConfig.getParanValue())){
-                return succeed(vipGroupActivities);
+            if(Objects.nonNull(sysConfig)&&StringUtils.isNotBlank(sysConfig.getParanValue())){
+                Set<Integer> activityIds = Arrays.stream(sysConfig.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toSet());
+                Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
+                while(iterator.hasNext()){
+                    VipGroupActivity vipGroupActivity = iterator.next();
+                    if(activityIds.contains(vipGroupActivity.getId())){
+                        iterator.remove();
+                    }
+                }
             }
-            Set<Integer> specialActivityIds = Arrays.stream(sysConfig.getParanValue().split(",")).map(Integer::valueOf).collect(Collectors.toSet());
-            List<VipGroupActivity> results = vipGroupActivities.stream().filter(e -> !specialActivityIds.contains(e.getId())).collect(Collectors.toList());
-            return succeed(results);
+            return succeed(vipGroupActivities);
         }
     }
 

+ 22 - 4
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupActivityController.java

@@ -8,7 +8,10 @@ import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
@@ -22,9 +25,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +48,8 @@ public class VipGroupActivityController extends BaseController {
     private TeacherDao teacherDao;
 	@Autowired
     private StudentDao studentDao;
+	@Autowired
+    private SysConfigService sysConfigService;
 
     @ApiOperation(value = "新增vip课活动方案")
     @PostMapping("/addVipGroupActivity")
@@ -127,7 +130,22 @@ public class VipGroupActivityController extends BaseController {
             return failed("学员信息不存在");
         }
         String organIds = student.getOrganId().toString();
-        return succeed(vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, teacherId, applyToStudentType));
+
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, teacherId, applyToStudentType, null);
+
+        SysConfig doubleElevenIdConfig = sysConfigService.findByParamName(SysConfigService.VIP_SPECIAL_ACTIVITY_IDS);
+        if(Objects.nonNull(doubleElevenIdConfig)&&StringUtils.isNotBlank(doubleElevenIdConfig.getParanValue())){
+            Set<Integer> activityIds = Arrays.stream(doubleElevenIdConfig.getParanValue().split(",")).map(id->Integer.valueOf(id)).collect(Collectors.toSet());
+            Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
+            while(iterator.hasNext()){
+                VipGroupActivity vipGroupActivity = iterator.next();
+                if(activityIds.contains(vipGroupActivity.getId())){
+                    iterator.remove();
+                }
+            }
+        }
+
+        return succeed(vipGroupActivities);
     }
 
 }

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

@@ -79,7 +79,7 @@ public class EduVipGroupActivityController extends BaseController {
             return failed("学员信息不存在");
         }
         String organIds = student.getOrganId().toString();
-        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, teacherId, applyToStudentType);
+        List<VipGroupActivity> vipGroupActivities = vipGroupActivityService.findByVipGroupCategory(categoryId, organIds, teacherId, applyToStudentType, null);
         Iterator<VipGroupActivity> iterator = vipGroupActivities.iterator();
         while (iterator.hasNext()){
             VipGroupActivity vipGroupActivity = iterator.next();