yonge 5 years ago
parent
commit
c63c426566

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -39,4 +39,11 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @return
 	 */
 	List<MusicGroupStudentFee> queryWillRenewList(int days);
+
+	/**
+	 * 批量更新对象
+	 * @param updateList
+	 * @return
+	 */
+	int batchUpdate(List<MusicGroupStudentFee> updateList);
 }

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -5,4 +5,54 @@ import com.ym.mec.common.service.BaseService;
 
 public interface SysConfigService extends BaseService<Long, SysConfig> {
 
+	/**
+	 * 缴费状态提前{}天刷新
+	 */
+	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";
+
+	/**
+	 * VIP课的结算周期,为课程完成后{}天
+	 */
+	public static final String VIP_SETTLEMENT_CYCLE = "vip_settlement_cycle";
+
+	/**
+	 * 课酬结算周期,为每个月的{}日
+	 */
+	public static final String COURSES_SETTLEMENT_CYCLE = "courses_settlement_cycle";
+
+	/**
+	 * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
+	 */
+	public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
+
+	/**
+	 * 乐团课,签退时间,为课程结束后开始,至结束后的{}小时
+	 */
+	public static final String SIGN_OUT_DELAY_HOURS = "sign_out_delay_hours";
+
+	/**
+	 * 老师可以打卡范围,为教学定位方圆{}米
+	 */
+	public static final String ATTENDANCE_RANGE = "attendance_range";
+
+	/**
+	 * 学生VIP课,允许请假的时间,为开课前{}小时
+	 */
+	public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
+
+	/**
+	 * 移动端「课程调整」调整的课程时间,为开课前{}天
+	 */
+	public static final String ADVANCE_UPDATE_COURSES_DAYS = "advance_update_courses_days";
+
+	/**
+	 * 密码重置后的默认密码为{}
+	 */
+	public static final String DEFAULT_PASSWORD = "default_password";
+	
 }

+ 31 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -8,17 +10,19 @@ import org.springframework.stereotype.Service;
 import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.service.MusicGroupStudentFeeService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
 @Service
 public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, MusicGroupStudentFee> implements MusicGroupStudentFeeService {
-	
+
 	@Autowired
 	private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
-	
+
 	@Autowired
 	private SysConfigDao sysConfigDao;
 
@@ -29,24 +33,36 @@ public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, Music
 
 	@Override
 	public boolean refreshPaymentFeeStatus() {
-		
+
 		int days = 7;
-		
-		SysConfig sysConfig = sysConfigDao.findByParamName("refresh_payment_status_early_days");
-		if(sysConfig != null){
+
+		SysConfig sysConfig = sysConfigDao.findByParamName(SysConfigService.REFRESH_PAYMENT_STATUS_EARLY_DAYS);
+		if (sysConfig != null) {
 			days = Integer.parseInt(sysConfig.getParanValue());
 		}
-		
+
+		Date date = new Date();
+
+		List<MusicGroupStudentFee> updateList = new ArrayList<MusicGroupStudentFee>();
+
 		List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryWillRenewList(days);
-		
-		for(MusicGroupStudentFee musicGroupStudentFee : musicGroupStudentFeeList){
-			
+
+		for (MusicGroupStudentFee musicGroupStudentFee : musicGroupStudentFeeList) {
+			if (musicGroupStudentFee.getPaymentStatus() == PaymentStatus.PAID_COMPLETED) {
+				musicGroupStudentFee.setPaymentStatus(PaymentStatus.NON_PAYMENT);
+				musicGroupStudentFee.setUpdateTime(date);
+				updateList.add(musicGroupStudentFee);
+			}
+		}
+
+		if (updateList.size() > 0) {
+			musicGroupStudentFeeDao.batchUpdate(updateList);
 		}
-		
-		//int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
-		//e.setRenewStatus(i < 8 ? 0 : 1);
-		
+
+		// int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
+		// e.setRenewStatus(i < 8 ? 0 : 1);
+
 		return true;
 	}
-	
+
 }

+ 39 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -114,4 +114,43 @@
     <select id="queryWillRenewList" resultMap="MusicGroupStudentFee">
         SELECT * FROM music_group_student_fee_ WHERE payment_status_ = 'PAID_COMPLETED' and date_add(now(), interval #{days} day) >= next_payment_date_
     </select>
+    
+    <update id="batchUpdate" parameterType="java.util.List">
+    	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+        UPDATE music_group_student_fee_
+        <set>
+            <if test="item.userId != null">
+                user_id_ = #{item.userId},
+            </if>
+            <if test="item.subjectId != null">
+                subject_id_ = #{item.subjectId},
+            </if>
+            <if test="item.updateTime != null">
+                update_time_ = #{item.updateTime},
+            </if>
+            <if test="item.courseFee != null">
+                course_fee_ = #{item.courseFee},
+            </if>
+            <if test="item.musicGroupId != null">
+                music_group_id_ = #{item.musicGroupId},
+            </if>
+            <if test="item.nextPaymentDate != null">
+                next_payment_date_ = #{item.nextPaymentDate},
+            </if>
+            <if test="item.latestPaidTime != null">
+                latest_paid_time_ = #{item.latestPaidTime},
+            </if>
+            <if test="item.continuousAbsenteeismTimes != null">
+                continuous_absenteeism_times_ = #{item.continuousAbsenteeismTimes},
+            </if>
+            <if test="item.paymentStatus != null">
+                payment_status_ = #{item.paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="item.temporaryCourseFee != null">
+                temporary_course_fee_ = #{item.temporaryCourseFee},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+        </foreach>
+    </update>
 </mapper>

+ 15 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -0,0 +1,15 @@
+package com.ym.mec.task;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
+
+@FeignClient(name = "web-server", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
+public interface TaskRemoteService {
+
+	@GetMapping(value = "task/refreshPaymentFeeStatus")
+	public void refreshPaymentFeeStatus();
+
+}

+ 19 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.fallback;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.task.TaskRemoteService;
+
+@Component
+public class TaskRemoteServiceFallback implements TaskRemoteService {
+
+	private final static Logger logger = LoggerFactory.getLogger(TaskRemoteServiceFallback.class);
+
+	@Override
+	public void refreshPaymentFeeStatus() {
+		logger.info("更新学生缴费状态的服务调用失败");
+	}
+
+}

+ 2 - 0
mec-eureka/src/main/resources/application.yml

@@ -4,6 +4,8 @@ server:
     contextPath: /eureka
 
 eureka:
+  server:
+    peer-eureka-status-refresh-time-interval-ms: 5000
   client:
     registerWithEureka: false
     fetchRegistry: false

+ 1 - 1
mec-task/pom.xml

@@ -62,7 +62,7 @@
         
         <dependency>
         	<groupId>com.ym</groupId>
-        	<artifactId>mec-auth-api</artifactId>
+        	<artifactId>mec-client-api</artifactId>
         </dependency>
 		
 	</dependencies>

+ 0 - 27
mec-task/src/main/java/com/ym/mec/task/config/WebMvcConfig.java

@@ -1,44 +1,17 @@
 package com.ym.mec.task.config;
 
-import java.io.IOException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
 import org.springframework.format.FormatterRegistry;
 import org.springframework.http.MediaType;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
 import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
-import com.ym.mec.common.enums.BaseEnum;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {

+ 6 - 7
mec-task/src/main/java/com/ym/mec/task/jobs/TestTask.java → mec-task/src/main/java/com/ym/mec/task/jobs/RefreshPaymentFeeStatusTask.java

@@ -3,23 +3,22 @@ package com.ym.mec.task.jobs;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
 /**
- * 手动查询订单支付状态
+ * 刷新缴费状态
  */
 @Service
-public class TestTask extends BaseTask {
-	
+public class RefreshPaymentFeeStatusTask extends BaseTask {
+
 	@Autowired
-	private SysUserFeignService sysUserFeignService;
+	private TaskRemoteService taskRemoteService;
 
 	@Override
 	public void execute() throws TaskException {
-		System.out.println("**************** Test  Task ****************");
-		sysUserFeignService.test();
+		taskRemoteService.refreshPaymentFeeStatus();
 	}
 
 }

+ 17 - 0
mec-task/src/main/resources/application.yml

@@ -33,6 +33,23 @@ spring:
     testOnReturn: false
     poolPreparedStatements: true
     maxOpenPreparedStatements: 20
+    
+  redis:
+    host: 47.99.212.176
+    port: 6379
+    password: 
+    database: 0
+    #连接超时时间(毫秒)
+    timeout: 10000
+    pool:
+      #连接池最大连接数(使用负值表示没有限制)
+      max-active: 10
+      #连接池最大阻塞等待时间(使用负值表示没有限制)
+      max-wait: -1
+      #连接池中的最大空闲连接
+      max-idle: 10
+      #连接池中的最小空闲连接
+      min-idle: 0
 
 mybatis:
     mapperLocations: classpath:config/mybatis/*.xml

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/config/ResourceServerConfig.java

@@ -22,7 +22,8 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().authorizeRequests().antMatchers("/v2/api-docs","/classGroup/findMusicGroupClassTeacherSalary").permitAll().anyRequest().authenticated().and().httpBasic();
+		http.csrf().disable().authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
+				.antMatchers("/v2/api-docs", "/classGroup/findMusicGroupClassTeacherSalary").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

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

@@ -0,0 +1,24 @@
+package com.ym.mec.web.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.biz.service.MusicGroupStudentFeeService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("task")
+@RestController
+public class TaskController extends BaseController {
+	
+	@Autowired
+	private MusicGroupStudentFeeService musicGroupStudentFeeService;
+
+    @GetMapping("/refreshPaymentFeeStatus")
+    //刷新付费状态
+    public void refreshPaymentFeeStatus() {
+    	musicGroupStudentFeeService.refreshPaymentFeeStatus();
+    }
+
+}