Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
40b84ba539
18 changed files with 310 additions and 109 deletions
  1. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInfo.java
  3. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java
  4. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  5. 26 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  6. 6 10
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  9. 9 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  10. 1 1
      mec-biz/src/main/resources/config/contracts/goods.ftl
  11. 22 4
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  12. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  13. 3 1
      mec-eureka/src/main/resources/application.yml
  14. 1 1
      mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java
  15. 51 51
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  16. 101 3
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
  17. 1 1
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java
  18. 21 0
      mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqQueryService.java

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

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
@@ -63,15 +64,34 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
 
     /**
      * 查找支付成功和支付中订单
+     *
      * @return
      */
     int findPayOrderNum();
 
     /**
      * 获取学员报名时所购买的商品
+     *
      * @param musicGroupId
      * @param userId
      * @return
      */
     List<UserGoodsDto> findGoodsIds(@Param("musicGroupId") String musicGroupId, @Param("userId") Integer userId);
+
+    /**
+     * 查询支付中订单
+     *
+     * @param status
+     * @return
+     */
+    List<StudentPaymentOrder> findOrdersByStatus(@Param("status") DealStatusEnum status, @Param("paymentChannel") String paymentChannel);
+
+    /**
+     * 查询支付中超时的订单
+     * @param orderNoList
+     * @param status
+     * @param beforeTime
+     * @return
+     */
+    List<StudentPaymentOrder> findOrdersOverTime(@Param("orderNoList") List<String> orderNoList, @Param("status") DealStatusEnum status, @Param("beforeTime") Date beforeTime);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInfo.java

@@ -18,6 +18,8 @@ public class StudentInfo extends SysUser {
 	
 	private String clazz;
 	
+	private String parentsName;
+	
 	private Subject subject = new Subject();
 
 	public String getName() {
@@ -52,6 +54,14 @@ public class StudentInfo extends SysUser {
 		this.subject = subject;
 	}
 	
+	public String getParentsName() {
+		return parentsName;
+	}
+
+	public void setParentsName(String parentsName) {
+		this.parentsName = parentsName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -25,8 +25,8 @@ public interface PayService {
      * @return
      * @throws Exception
      */
-    public Map getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception;
+    Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception;
 
-    public Map query(String orderNo) throws Exception;
+    Map query(String orderNo) throws Exception;
 
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -1,12 +1,16 @@
 package com.ym.mec.biz.service;
 
+import java.util.Date;
 import java.util.List;
 
+import com.huifu.adapay.model.payment.PayChannelEnum;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentChannelTypeEnum;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
 
@@ -40,4 +44,22 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	 * @return
 	 */
 	int findPayOrderNum();
+
+	/**
+	 * 查询支付中订单
+	 *
+	 * @param status
+	 * @return
+	 */
+	List<StudentPaymentOrder> findOrdersByStatus(DealStatusEnum status, String paymentChannel);
+
+
+	/**
+	 * 查询支付中超时的订单
+	 * @param orderNoList
+	 * @param status
+	 * @param beforeTime
+	 * @return
+	 */
+	List<StudentPaymentOrder> findOrdersOverTime(List<String> orderNoList, DealStatusEnum status, Date beforeTime);
 }

+ 26 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -668,32 +668,34 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             amount = musicGroupStudentFee.getCourseFee();
         }
 
-        Date date = new Date();
-        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-        studentPaymentOrder.setUserId(userId);
-        studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
-        studentPaymentOrder.setType(OrderTypeEnum.RENEW);
-        studentPaymentOrder.setExpectAmount(amount);
-        studentPaymentOrder.setActualAmount(amount);
-        studentPaymentOrder.setStatus(DealStatusEnum.ING);
-        studentPaymentOrder.setPaymentChannel("银联");
-        studentPaymentOrder.setMusicGroupId(musicGroupId);
-        studentPaymentOrderService.insert(studentPaymentOrder);
-
-        ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
-        StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-        studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-        studentPaymentOrderDetail.setPrice(amount);
-        studentPaymentOrderDetail.setCreateTime(date);
-        studentPaymentOrderDetail.setUpdateTime(date);
-        studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
-        studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-
-        studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
-
         try {
-            return payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
+            Map<String, Object> payMap = payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
                     "http://dev.dayaedu.com", "测试订单", "测试订单");
+
+            Date date = new Date();
+            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+            studentPaymentOrder.setUserId(userId);
+            studentPaymentOrder.setOrderNo(idGeneratorService.generatorId("RENEW") + "");
+            studentPaymentOrder.setType(OrderTypeEnum.RENEW);
+            studentPaymentOrder.setExpectAmount(amount);
+            studentPaymentOrder.setActualAmount(amount);
+            studentPaymentOrder.setStatus(DealStatusEnum.ING);
+            studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+            studentPaymentOrder.setMusicGroupId(musicGroupId);
+            studentPaymentOrderService.insert(studentPaymentOrder);
+
+            ArrayList<StudentPaymentOrderDetail> studentPaymentOrderDetailList = new ArrayList<>();
+            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
+            studentPaymentOrderDetail.setPrice(amount);
+            studentPaymentOrderDetail.setCreateTime(date);
+            studentPaymentOrderDetail.setUpdateTime(date);
+            studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
+
+            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetailList);
+
+            return payMap;
         } catch (Exception e) {
             throw new BizException("调用支付接口出错", e);
         }

+ 6 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -43,23 +43,19 @@ public class PayServiceImpl implements PayService {
      * @throws Exception
      */
     @Override
-    public Map getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+    public Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
         //支付通道决策
         SysAccount routingAccount = getRoutingAccount(amount);
         Map unionPay = new HashMap();
-        Map payMap = null;
+        Map payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
 
+        unionPay.put("orderNo", orderNo);
+        unionPay.put("type", "ADAPAY");
 
-        if (routingAccount != null) {
-            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, routingAccount.getMerNo());
-        }
-
-        payMap = UnionPay.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject);
-        unionPay.put("orderNo", "1017" + orderNo);
-        unionPay.put("type", "UNIONPAY");
+        payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
+        unionPay.put("type", "YQPAY");
         unionPay.put("payMap", payMap);
 
-        //unionPay.put("type","ADAPY");
         return unionPay;
     }
 

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

@@ -11,6 +11,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -43,4 +44,14 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public int findPayOrderNum() {
         return studentPaymentOrderDao.findPayOrderNum();
     }
+
+    @Override
+    public List<StudentPaymentOrder> findOrdersByStatus(DealStatusEnum status,String paymentChannel) {
+        return studentPaymentOrderDao.findOrdersByStatus(status,paymentChannel);
+    }
+
+    @Override
+    public List<StudentPaymentOrder> findOrdersOverTime(List<String> orderNoList, DealStatusEnum status, Date beforeTime) {
+        return studentPaymentOrderDao.findOrdersOverTime(orderNoList,status,beforeTime);
+    }
 }

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

@@ -432,7 +432,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if (studentRegistration.getClassGroupId() != null) {
                 ClassGroup classGroup = classGroupDao.get(studentRegistration.getClassGroupId());
                 if (classGroup != null) {
-                    if (classGroup.getMusicGroupId().equals(studentRegistration.getMusicGroupId())) {
+                    if (!classGroup.getMusicGroupId().equals(studentRegistration.getMusicGroupId())) {
                         throw new Exception("班级录入错误");
                     } else {
                         //修改实际学生人数

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

@@ -786,24 +786,24 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //		}
 		studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
 		studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
-		studentPaymentOrderDao.insert(studentPaymentOrder);
-
-		StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
-		studentVipGroupPayment.setUserId(user.getId());
-		studentVipGroupPayment.setVipGroupId(vipGroup.getId());
-		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
-		studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
-		studentVipGroupPaymentDao.insert(studentVipGroupPayment);
 
 		//生成回调地址
-		Map payMap = payService.getPayMap(
+		Map<String,Object> payMap = payService.getPayMap(
 				vipGroup.getTotalPrice(),
 				orderNo,
 				"http://mstudev.dayaedu.com/api-student/studentOrder/notify",
 				"http://mstudev.dayaedu.com/#/paymentresult?orderNo="+orderNo,
 				"vip课购买",
 				vipGroup.getName());
+		studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
+		studentPaymentOrderDao.insert(studentPaymentOrder);
 
+		StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
+		studentVipGroupPayment.setUserId(user.getId());
+		studentVipGroupPayment.setVipGroupId(vipGroup.getId());
+		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
+		studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
+		studentVipGroupPaymentDao.insert(studentVipGroupPayment);
 		return payMap;
 
 	}

+ 1 - 1
mec-biz/src/main/resources/config/contracts/goods.ftl

@@ -79,7 +79,7 @@
         <div style="display: flex;">乙方:
             <div style="flex: 1 auto;">
                 <div class="iInfo">
-                    <span>家长姓名 ${studentInfo.realName!}</span>
+                    <span>家长姓名 ${studentInfo.parentsName!}</span>
                     <span>电话: ${studentInfo.phone!}</span>
                 </div>
                 <div class="iInfo">

+ 22 - 4
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -26,9 +26,10 @@
         <result column="pay_time_" property="payTime"/>
         <result column="version_" property="version"/>
     </resultMap>
-    
-    <resultMap type="com.ym.mec.biz.dal.entity.StudentPaymentOrder" extends="StudentPaymentOrder" id="PaymentOrderAndStudentInfo">
-    	<result column="username_" property="user.username"/>
+
+    <resultMap type="com.ym.mec.biz.dal.entity.StudentPaymentOrder" extends="StudentPaymentOrder"
+               id="PaymentOrderAndStudentInfo">
+        <result column="username_" property="user.username"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
@@ -223,7 +224,7 @@
             <result column="goods_name_"/>
         </collection>
     </resultMap>
-    
+
     <select id="findGoodsIds" resultMap="userGoodsDto">
         SELECT g.id_ goods_id_,g.name_ goods_name_ FROM student_payment_order spo
         LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
@@ -231,4 +232,21 @@
         WHERE spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS' AND spod.goods_id_list_ IS NOT NULL
         AND spo.music_group_id_ = #{musicGroupId} AND spo.user_id_ = #{userId}
     </select>
+
+    <select id="findOrdersByStatus" resultMap="StudentPaymentOrder">
+        SELECT * FROM student_payment_order
+        WHERE status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND payment_channel_ =
+        #{paymentChannel}
+    </select>
+
+    <!-- 查询支付中超时订单 -->
+    <select id="findOrdersOverTime" resultMap="StudentPaymentOrder">
+        SELECT * FROM student_payment_order WHERE order_no_ IN
+        <foreach collection="orderNoList" item="orderNo" index="index" open="(" close=")" separator=",">
+            #{orderNo}
+        </foreach>
+        AND status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        <![CDATA[ AND create_time_ <= ]]> #{beforeTime}
+    </select>
+
 </mapper>

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

@@ -55,6 +55,7 @@
         <result column="id_card_no_" property="idCardNo"/>
         <result column="wechat_id_" property="wechatId"/>
         <result column="name_" property="name"/>
+        <result column="parents_name_" property="parentsName"/>
         <result column="current_grade_" property="grade"/>
         <result column="current_class_" property="clazz"/>
         <result column="actual_subject_id_" property="subject.id"/>
@@ -319,7 +320,7 @@
     </update>
 
     <select id="queryStudentInfo" resultMap="StudentInfo">
-        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_ FROM sys_user u left join
+        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_ FROM sys_user u left join
         student_registration sr on u.id_ = sr.user_id_ where u.id_ = #{userId} order by sr.create_time_ desc limit 0,1
     </select>
 

+ 3 - 1
mec-eureka/src/main/resources/application.yml

@@ -5,7 +5,9 @@ server:
 
 eureka:
   server:
-    peer-eureka-status-refresh-time-interval-ms: 5000
+    enable-self-preservation: false
+    eviction-interval-timer-in-ms: 5000
+    use-read-only-response-cache: false
   client:
     registerWithEureka: false
     fetchRegistry: false

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

@@ -25,7 +25,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	@Override
 	public void configure(HttpSecurity http) throws Exception {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-				.authorizeRequests().antMatchers("/v2/api-docs","/studentOrder/notify","/code/*","/register/*").permitAll().anyRequest().authenticated().and().httpBasic();
+				.authorizeRequests().antMatchers("/v2/api-docs","/studentOrder/notify","/code/*","/register/*","/musicGroup/test","/studentOrder/executePayment").permitAll().anyRequest().authenticated().and().httpBasic();
 	}
 
 	@Override

+ 51 - 51
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -107,9 +107,9 @@ public class MusicGroupController extends BaseController {
         }
         StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
         if (studentRegistration == null) {
-            return failed(HttpStatus.CONTINUE,"乐团报名信息不存在");
+            return failed(HttpStatus.CONTINUE, "乐团报名信息不存在");
         }
-        if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY) && (studentRegistration.getPaymentStatus()==null || !studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.OPEN))) {
+        if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY) && (studentRegistration.getPaymentStatus() == null || !studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.OPEN))) {
             return failed("乐团还未开启缴费,请等待通知");
         }
         return succeed(studentRegistration);
@@ -118,57 +118,57 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "查询续费信息")
     @GetMapping("/queryRenewInfo")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
-	public HttpResponseResult queryRenewInfo(String musicGroupId) throws Exception {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		Integer userId = sysUser.getId();
-		MusicGroup musicGroup = musicGroupService.get(musicGroupId);
-		if (musicGroup == null) {
-			return failed("乐团不存在");
-		}
-		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
-
-		if (musicGroupStudentFee == null) {
-			throw new BizException("个人信息不存在");
-		}
-		if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) {
-			throw new BizException("已缴费");
-		}
-
-		BigDecimal amount = musicGroupStudentFee.getTemporaryCourseFee();
-		if (amount == null || amount.doubleValue() == 0) {
-			amount = musicGroupStudentFee.getCourseFee();
-		}
-
-		StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-		if (studentRegistration == null) {
-			return failed("乐团报名信息找不到");
-		}
-		MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
-				studentRegistration.getActualSubjectId());
-		ModelMap model = new ModelMap();
-		model.put("musicGroup", musicGroup);
-		model.put("amount", amount);
-		model.put("musicGroupSubjectPlan", musicGroupSubjectPlan);
-
-		return succeed(model);
-	}
+    public HttpResponseResult queryRenewInfo(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Integer userId = sysUser.getId();
+        MusicGroup musicGroup = musicGroupService.get(musicGroupId);
+        if (musicGroup == null) {
+            return failed("乐团不存在");
+        }
+        MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
+
+        if (musicGroupStudentFee == null) {
+            throw new BizException("个人信息不存在");
+        }
+        if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) {
+            throw new BizException("已缴费");
+        }
+
+        BigDecimal amount = musicGroupStudentFee.getTemporaryCourseFee();
+        if (amount == null || amount.doubleValue() == 0) {
+            amount = musicGroupStudentFee.getCourseFee();
+        }
+
+        StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+        if (studentRegistration == null) {
+            return failed("乐团报名信息找不到");
+        }
+        MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId,
+                studentRegistration.getActualSubjectId());
+        ModelMap model = new ModelMap();
+        model.put("musicGroup", musicGroup);
+        model.put("amount", amount);
+        model.put("musicGroupSubjectPlan", musicGroupSubjectPlan);
+
+        return succeed(model);
+    }
 
     @ApiOperation(value = "续费")
     @GetMapping("/renew")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
-	public HttpResponseResult renew(String musicGroupId) throws Exception {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		Integer userId = sysUser.getId();
-		return succeed(musicGroupService.renew(musicGroupId, userId));
-	}
+    public HttpResponseResult renew(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Integer userId = sysUser.getId();
+        return succeed(musicGroupService.renew(musicGroupId, userId));
+    }
 
     @ApiOperation(value = "退团")
     @PostMapping("/quitMusicGroup")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
-	public HttpResponseResult quitMusicGroup(String musicGroupId) throws Exception {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		return succeed(musicGroupService.applyQuitMusicGroup(musicGroupId, sysUser));
-	}
+    public HttpResponseResult quitMusicGroup(String musicGroupId) throws Exception {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return succeed(musicGroupService.applyQuitMusicGroup(musicGroupId, sysUser));
+    }
 
 
     @ApiOperation(value = "乐团报名支付")
@@ -238,13 +238,13 @@ public class MusicGroupController extends BaseController {
         }
 
 
-        String orderNo = idGeneratorService.generatorId("payment")+"";
+        String orderNo = idGeneratorService.generatorId("payment") + "";
 
         Map payMap = payService.getPayMap(
                 orderAmount,
                 orderNo,
                 "http://mstudev.dayaedu.com/api-student/studentOrder/notify",
-                "http://mstudev.dayaedu.com/#/paymentresult?orderNo="+orderNo,
+                "http://mstudev.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
                 "测试订单",
                 "测试订单");
 
@@ -318,11 +318,11 @@ public class MusicGroupController extends BaseController {
             return failed("商品价格不符");
         }
 
-        String orderNo = idGeneratorService.generatorId("payment")+"";
+        String orderNo = idGeneratorService.generatorId("payment") + "";
 
         Map payMap = payService.getPayMap(orderAmount, orderNo, "http://47.99.212.176:8000/studentOrder/notify", "http://dev.dayaedu.com", "测试订单", "测试订单");
 
-        studentRegistrationService.reAddOrder(userId, amount, orderNo, "双乾", courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(),ApplyOrder);
+        studentRegistrationService.reAddOrder(userId, amount, orderNo, (String) payMap.get("type"), courseFee, goodsGroups, goodsList, otherGoodsList, studentRegistration.getMusicGroupId(), ApplyOrder);
 
         return succeed(payMap);
     }
@@ -336,11 +336,11 @@ public class MusicGroupController extends BaseController {
 //
 //        System.out.println(query);
 //
-        String orderNo = idGeneratorService.generatorId("payment")+"";
+        String orderNo = idGeneratorService.generatorId("payment") + "";
         BigDecimal amount = new BigDecimal("0.01");
         String payChannel = PayChannelEnum.ALIPAY_QR.getCode();
         Map map = payService.getPayMap(amount, orderNo, "http://47.99.212.176:8000/studentOrder/notify", "https://baodiu.com", "测试订单", "测试订单");
-       return succeed(map);
+        return succeed(map);
     }
 
     @ApiOperation(value = "订单状态查询")

+ 101 - 3
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.huifu.adapay.model.payment.PayChannelEnum;
 import com.huifu.adapay.model.payment.Payment;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
@@ -12,16 +13,21 @@ import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.thirdparty.adapay.Pay;
 import com.ym.mec.thirdparty.union.NotifyMsg;
+import com.ym.mec.thirdparty.yqpay.Msg;
+import com.ym.mec.thirdparty.yqpay.YqPayUtil;
+import com.ym.mec.thirdparty.yqpay.YqQueryService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
-import java.util.Objects;
+import java.util.*;
 
 @RequestMapping("studentOrder")
 @Api(tags = "订单回调")
@@ -37,7 +43,8 @@ public class StudentOrderController extends BaseController {
 
     @Autowired
     private MusicGroupService musicGroupService;
-
+    @Autowired
+    private YqQueryService yqQueryService;
 
     @PostMapping("/notify")
     public String notify(@ModelAttribute NotifyMsg notifyMsg) {
@@ -96,7 +103,7 @@ public class StudentOrderController extends BaseController {
 
     @ApiOperation(value = "台牌支付")
     @PostMapping("/executePayment")
-    public Object executePayment(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody,String sign) throws Exception {
+    public Object executePayment(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign) throws Exception {
         String payChannel = PayChannelEnum.ALIPAY_QR.getCode();
 //        if (!new Pay().verifySign(amount, orderNo, notifyUrl, orderSubject, orderBody,sign)) {
 //            return failed("签名验证失败");
@@ -106,4 +113,95 @@ public class StudentOrderController extends BaseController {
     }
 
 
+    @Scheduled(cron = "0/5 * * * * ?")
+    public void getOrderStatus() throws Exception {
+        List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");
+        String merOrderNos = ""; //
+        List<String> orderNoList = new ArrayList<String>();
+
+        for (StudentPaymentOrder payingOrder : payingOrders) {
+            String orderNo = payingOrder.getOrderNo();
+            orderNoList.add(orderNo);
+            merOrderNos += orderNo + ",";
+        }
+        if (merOrderNos.isEmpty()) {
+            return;
+        }
+        merOrderNos = merOrderNos.substring(0, merOrderNos.length() - 1);
+
+        String notifyUrl = ""; //回调地址
+        Map<String, Object> resultMap = new LinkedHashMap<>();
+        resultMap.put("merOrderNoList", merOrderNos);
+        Map<String, Object> requestMap = YqPayUtil.getRequestMap(notifyUrl, resultMap);
+        Msg queryRs = yqQueryService.orderQuery(requestMap);
+        logger.info("查询易乾结果" + queryRs.toString());
+        if (queryRs.getCode().equals("88")) {
+            //更新订单状态
+            String[] statusArr = {"0", "1", "7"};
+            String responseParameters = queryRs.getResponseParameters();
+            List<Map<String, String>> responseList = JSON.parseObject(responseParameters, List.class);
+            for (Map<String, String> response : responseList) {
+                Map<String, String> rpMap = response;
+                if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
+                    updateOrder(rpMap); //更新订单
+                }
+                if (orderNoList.contains(rpMap.get("merOrderNo"))) {
+                    orderNoList.remove(rpMap.get("merOrderNo"));
+                }
+            }
+            closeOrders(orderNoList); //关闭订单
+        }
+    }
+
+    public void updateOrder(Map<String, String> rpMap) throws Exception {
+        DealStatusEnum status = rpMap.get("tradeState").equals("1") ? DealStatusEnum.SUCCESS : DealStatusEnum.FAilED;
+        StudentPaymentOrder order = studentPaymentOrderService.findOrderByOrderNo(rpMap.get("merOrderNo"));
+        if (order == null || !order.getStatus().equals(DealStatusEnum.ING)) {
+            return;
+        }
+
+        if (status.equals(DealStatusEnum.SUCCESS)) {
+            order.setPayTime(new Date());
+        }else {
+            order.setMemo(rpMap.get("remarks"));
+        }
+        order.setStatus(status);
+        order.setTransNo(rpMap.get("orderNo"));
+        order.setPaymentBusinessChannel(rpMap.get("channelType"));
+
+        if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
+            studentRegistrationService.updateApplyOrder(order);
+        } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
+            vipGroupService.orderCallback(order);
+        } else if (order.getType().equals(OrderTypeEnum.RENEW)) {
+            musicGroupService.renewForCallback(order);
+        }
+    }
+
+
+    public void closeOrders(List<String> orderNoList) throws Exception {
+        if (orderNoList.size() == 0) {
+            return;
+        }
+
+        Calendar beforeTime = Calendar.getInstance();
+        beforeTime.add(Calendar.MINUTE, -30);// 30分钟之前的时间
+        Date beforeDate = beforeTime.getTime();
+
+        List<StudentPaymentOrder> ordersOverTime = studentPaymentOrderService.findOrdersOverTime(orderNoList,DealStatusEnum.ING,beforeDate);
+        for (StudentPaymentOrder order : ordersOverTime) {
+            order.setStatus(DealStatusEnum.FAilED);
+            order.setMemo("超时未支付关闭");
+            if (order.getType().equals(OrderTypeEnum.APPLY)) { //报名订单
+                studentRegistrationService.updateApplyOrder(order);
+            } else if (order.getType().equals(OrderTypeEnum.SMALL_CLASS_TO_BUY)) {
+                vipGroupService.orderCallback(order);
+            } else if (order.getType().equals(OrderTypeEnum.RENEW)) {
+                musicGroupService.renewForCallback(order);
+            }
+        }
+
+    }
+
+
 }

+ 1 - 1
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java

@@ -13,7 +13,7 @@ public class YqPayUtil {
     private static final String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付提交地址
     private static final String payChannels = "{\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"fastpayXy\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
 
-    private static Map<String, Object> getRequestMap(String notifyUrl, Map<String, Object> resultMap) throws Exception {
+    public static Map<String, Object> getRequestMap(String notifyUrl, Map<String, Object> resultMap) throws Exception {
         Map<String, Object> rqMap = new LinkedHashMap<>();
         rqMap.put("merNo", merNo);
         rqMap.put("version", version);

+ 21 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqQueryService.java

@@ -0,0 +1,21 @@
+package com.ym.mec.thirdparty.yqpay;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+@FeignClient(value = "yqQuery", url = "https://qyfquery.95epay.com")
+public interface YqQueryService {
+
+    @RequestMapping(name = "订单查询", value = "/query/trade/tradeQuery", method = RequestMethod.POST)
+    Msg orderQuery(@RequestParam Map<String, Object> map);
+
+    @RequestMapping(name = "用户信息查询", value = "/query/account/queryAccount", method = RequestMethod.POST)
+    String queryAccount(@RequestParam Map<String, Object> map);
+
+    @RequestMapping(name = "对账查询", value = "/query/bill/billQuery", method = RequestMethod.POST)
+    String billQuery(@RequestParam Map<String, Object> map);
+}