Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 năm trước cách đây
mục cha
commit
28989a9f9e

BIN
edu-thirdparty/src/main/resources/config/certificate/sq_formal_sign.cer


BIN
edu-thirdparty/src/main/resources/config/certificate/yqpay.pfx


+ 4 - 6
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java

@@ -84,7 +84,6 @@ public class ExamRegistrationController extends BaseController {
 
     @ApiOperation(value = "报名")
     @PostMapping(value = "add")
-    @PreAuthorize("@pcs.hasPermissions('examRegistration/add')")
     public HttpResponseResult add(@RequestBody ExamRegistration examRegistration) throws Exception {
         SysUser student = sysUserFeignService.queryUserInfo();
         examRegistration.setStudentId(student.getId());
@@ -109,16 +108,15 @@ public class ExamRegistrationController extends BaseController {
     }
 
 
-    @ApiOperation(value = "获取报名信息")
+    @ApiOperation(value = "获取报名信息(报名)")
     @GetMapping(value = "getExamRegistration")
-    @ApiImplicitParams({@ApiImplicitParam(name = "examRegistrationId", value = "报名id", required = true, dataType = "file")})
-    public HttpResponseResult<ExamRegistration> getExamRegistration(Integer examRegistrationId) {
+    @ApiImplicitParams({@ApiImplicitParam(name = "examRegistrationId", value = "报名id", required = true, dataType = "int")})
+    public HttpResponseResult<ExamRegistration> getExamRegistration(Long examRegistrationId) {
         return succeed(examRegistrationService.getExamRegistration(examRegistrationId));
     }
 
-    @ApiOperation(value = "重新支付")
+    @ApiOperation(value = "重新支付(报名用)")
     @PostMapping(value = "repay")
-    @PreAuthorize("@pcs.hasPermissions('examRegistration/add')")
     public HttpResponseResult repay(@RequestParam String orderNo) throws Exception {
         SysUser student = sysUserFeignService.queryUserInfo();
         return succeed(examRegistrationService.repay(student.getId(), orderNo));

+ 23 - 20
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java

@@ -14,63 +14,64 @@ import java.util.Map;
 public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
 
     /**
+     * @param organIds:
+     * @return int
      * @describe 统计无教室学员
      * @author Joburgess
      * @date 2020.06.29
-     * @param organIds:
-     * @return int
      */
-    int countWithoutExamRoomStudentNum(@Param("organIds")List<Integer> organIds,
+    int countWithoutExamRoomStudentNum(@Param("organIds") List<Integer> organIds,
                                        @Param("examId") Integer examId);
 
     /**
-     * @describe 统计已分配教室学员数量
-     * @author Joburgess
-     * @date 2020.06.30
      * @param organIds:
      * @param examId:
      * @return int
+     * @describe 统计已分配教室学员数量
+     * @author Joburgess
+     * @date 2020.06.30
      */
-    int countInExamRoomStudentNum(@Param("organIds")List<Integer> organIds,
+    int countInExamRoomStudentNum(@Param("organIds") List<Integer> organIds,
                                   @Param("examId") Integer examId);
 
     /**
-     * @describe 统计总报名人数
-     * @author Joburgess
-     * @date 2020.06.30
      * @param organIds:
      * @param examId:
      * @return int
+     * @describe 统计总报名人数
+     * @author Joburgess
+     * @date 2020.06.30
      */
-    int countTotalRegistrationStudentNumWithExam(@Param("organIds")List<Integer> organIds,
+    int countTotalRegistrationStudentNumWithExam(@Param("organIds") List<Integer> organIds,
                                                  @Param("examId") Integer examId);
 
     /**
+     * @param selfOrganId: 本级合作单位编号
+     * @param organIds:    本级及子级合作单位编号
+     * @param examId:      考级项目编号
+     * @return com.keao.edu.user.dto.ExamRegistrationStatisticsDto
      * @describe 统计招生信息
      * @author Joburgess
      * @date 2020.06.30
-     * @param selfOrganId: 本级合作单位编号
-     * @param organIds: 本级及子级合作单位编号
-     * @param examId: 考级项目编号
-     * @return com.keao.edu.user.dto.ExamRegistrationStatisticsDto
      */
     ExamRegistrationStatisticsDto getExamRegistrationStaticsInfo(@Param("selfOrganId") Integer selfOrganId,
                                                                  @Param("organIds") List<Integer> organIds,
                                                                  @Param("examId") Integer examId);
 
     /**
-     * @describe 获取指定考级项目下指定学员的报名记录
-     * @author Joburgess
-     * @date 2020.07.02
      * @param examId:
      * @param studentIds:
      * @return java.util.List<com.keao.edu.user.entity.ExamRegistration>
+     * @describe 获取指定考级项目下指定学员的报名记录
+     * @author Joburgess
+     * @date 2020.07.02
      */
     List<ExamRegistration> getWithExamAndStudents(@Param("examId") Integer examId,
                                                   @Param("studentIds") List<Integer> studentIds);
 
     /**
      * COUNT学员报考记录
+     *
      * @param params
      * @return
      */
@@ -78,6 +79,7 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
 
     /**
      * 获取学员报考列表
+     *
      * @param params
      * @return
      */
@@ -85,13 +87,13 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
 
     /**
      * 学员考试记录
+     *
      * @param params
      * @return
      */
     List<ExamRecordDto> queryExamList(Map<String, Object> params);
 
     /**
-     *
      * @param params
      * @return
      */
@@ -100,7 +102,8 @@ public interface ExamRegistrationDao extends BaseDAO<Long, ExamRegistration> {
 
     /**
      * 获取报名信息
+     *
      * @return
      */
-    ExamRegistrationDto getExamRegistration(Integer examRegistrationId);
+    ExamRegistrationDto getExamRegistration(@Param("examRegistrationId") Long examRegistrationId);
 }

+ 14 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationPaymentDao.java

@@ -3,8 +3,11 @@ package com.keao.edu.user.dao;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.user.dto.StudentExamPaymentDto;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
+import com.keao.edu.user.enums.TransStatusEnum;
 import org.apache.ibatis.annotations.Param;
+import org.apache.poi.ss.formula.functions.T;
 
+import java.util.Date;
 import java.util.List;
 
 public interface ExamRegistrationPaymentDao extends BaseDAO<Long, ExamRegistrationPayment> {
@@ -41,4 +44,15 @@ public interface ExamRegistrationPaymentDao extends BaseDAO<Long, ExamRegistrati
      * @return
      */
     StudentExamPaymentDto getOrderInfo(@Param("orderNo") String orderNo);
+
+
+    /**
+     * 获取过期未支付的订单列表
+     * @param orderNoList
+     * @param transStatus
+     * @param beforeTime
+     * @return
+     */
+    List<ExamRegistrationPayment> findOrdersOverTime(@Param("orderNoList") List<String> orderNoList, @Param("transStatus") TransStatusEnum transStatus, @Param("beforeTime") Date beforeTime);
+
 }

+ 4 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationPaymentService.java

@@ -3,6 +3,7 @@ package com.keao.edu.user.service;
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.dto.StudentExamPaymentDto;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
+import com.keao.edu.user.page.ExamRegistrationQueryInfo;
 
 import java.util.List;
 import java.util.Map;
@@ -43,6 +44,9 @@ public interface ExamRegistrationPaymentService extends BaseService<Long, ExamRe
     ExamRegistrationPayment updateOrder(Map<String,String> rpMap);
 
 
+    //ExamRegistrationPayment pageList(ExamRegistrationQueryInfo queryInfo);
+
+
     /**
      * 查询订单订单状态
      *

+ 1 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationService.java

@@ -54,7 +54,7 @@ public interface ExamRegistrationService extends BaseService<Long, ExamRegistrat
     * @param examRegistrationId
     * @return
     */
-   ExamRegistrationDto getExamRegistration(Integer examRegistrationId);
+   ExamRegistrationDto getExamRegistration(Long examRegistrationId);
 
    /**
     * 重新支付

+ 3 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/EmployeeServiceImpl.java

@@ -58,7 +58,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 				employeeDao.insert(employee);
 				//新增用户角色
 				sysUserDao.batchAddEmployeeRole(user.getId(),sysUser.getRoles());
-				user.setUserType(user.getUserType() + ",SYSTEM");
+				if(!user.getUserType().contains("SYSTEM")){
+					user.setUserType(user.getUserType() + ",SYSTEM");
+				}
 				sysUserDao.update(user);
 			}else if(employee1.getDelFlag()){
 				employee1.setDelFlag(false);

+ 70 - 82
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java

@@ -94,7 +94,7 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
     @Override
     public void queryOrderStatus() throws Exception {
         yqPayQuery();
-        //adaPayQuery();
+        adaPayQuery();
     }
 
 
@@ -147,88 +147,76 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
                     continue;
                 }
             }
-            //closeOrders(orderNoList); //关闭订单
+            closeOrders(orderNoList); //关闭订单
         }
     }
 
-//    private void adaPayQuery() throws Exception {
-//        List<ExamRegistrationPayment> orders = examRegistrationPaymentDao.getOrdersByStatus("ING", "ADAPAY");
-//        if (orders.size() == 0) {
-//            return;
-//        }
-//
-//        List<String> orderNoList = new ArrayList<String>();
-//
-//        for (ExamRegistrationPayment order : orders) {
-//            if (order.getTransNo() == null) {
-//                orderNoList.add(order.getOrderNo());
-//                continue;
-//            }
-//            Map<String, Object> payment = Payment.queryPayment(order.getTransNo());
-//            Map<String, String> rpMap = new HashMap<>();
-//            rpMap.put("merOrderNo", order.getOrderNo());
-//            rpMap.put("orderNo", (String) payment.get("id"));
-//            rpMap.put("channelType", (String) payment.get("pay_channel"));
-//            String status = (String) payment.get("status");
-//            if (payment.containsKey("error_msg")) {
-//                rpMap.put("remarks", (String) payment.get("error_msg"));
-//            }
-//            if (status.equals("succeeded")) {
-//                rpMap.put("tradeState", "1");
-//            }
-//            if (status.equals("failed")) {
-//                rpMap.put("tradeState", "0");
-//            }
-//
-//            if (rpMap.containsKey("tradeState")) {
-//                try {
-//                    updateOrder(rpMap); //更新订单
-//                } catch (Exception e) {
-//                    e.printStackTrace();
-//                    continue;
-//                }
-//            }
-//
-//            if (status.equals("pending")) {
-//                orderNoList.add(order.getOrderNo());
-//            }
-//        }
-//        closeOrders(orderNoList);
-//    }
-//
-//
-//    private 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 = findOrdersOverTime(orderNoList, DealStatusEnum.ING, beforeDate);
-//        for (StudentPaymentOrder order : ordersOverTime) {
-//            try {
-//                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);
-//                } else if (order.getType().equals(OrderTypeEnum.SPORADIC) || order.getType().equals(OrderTypeEnum.LUCK)) {
-//                    sporadicChargeInfoService.renewForCallback(order);
-//                } else if (order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_BUY) || order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_RENEW)) {
-//                    practiceGroupService.orderCallback(order);
-//                } else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
-//                    studentRepairService.orderCallback(order);
-//                }
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//                continue;
-//            }
-//        }
-//
-//    }
+    private void adaPayQuery() throws Exception {
+        List<ExamRegistrationPayment> orders = examRegistrationPaymentDao.getOrdersByStatus("ING", "ADAPAY");
+        if (orders.size() == 0) {
+            return;
+        }
+
+        List<String> orderNoList = new ArrayList<String>();
+
+        for (ExamRegistrationPayment order : orders) {
+            if (order.getTransNo() == null) {
+                orderNoList.add(order.getOrderNo());
+                continue;
+            }
+            Map<String, Object> payment = Payment.queryPayment(order.getTransNo());
+            Map<String, String> rpMap = new HashMap<>();
+            rpMap.put("orderNo", order.getOrderNo());
+            rpMap.put("transNo", (String) payment.get("id"));
+            rpMap.put("channelType", (String) payment.get("pay_channel"));
+            String status = (String) payment.get("status");
+            if (payment.containsKey("error_msg")) {
+                rpMap.put("memo", (String) payment.get("error_msg"));
+            }
+            if (status.equals("succeeded")) {
+                rpMap.put("transStatus", "SUCCESS");
+            }
+            if (status.equals("failed")) {
+                rpMap.put("transStatus", "FAILED");
+            }
+
+            if (rpMap.containsKey("tradeState")) {
+                try {
+                    updateOrder(rpMap); //更新订单
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    continue;
+                }
+            }
+
+            if (status.equals("pending")) {
+                orderNoList.add(order.getOrderNo());
+            }
+        }
+        closeOrders(orderNoList);
+    }
+
+
+    private 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<ExamRegistrationPayment> ordersOverTime = examRegistrationPaymentDao.findOrdersOverTime(orderNoList, TransStatusEnum.ING, beforeDate);
+        for (ExamRegistrationPayment order : ordersOverTime) {
+            try {
+                order.setTransStatus(TransStatusEnum.FAILED);
+                order.setMemo("超时未支付关闭");
+
+            } catch (Exception e) {
+                e.printStackTrace();
+                continue;
+            }
+        }
+
+    }
 }

+ 22 - 4
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java

@@ -91,10 +91,21 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         examRegistration.setStatus(StudentRegistrationStatusEnum.PAY_WAIT);
         examRegistration.setLevelFee(examSubjectSong.getRegistrationFee());
         examRegistration.setTheoryLevelFee(theoryLevelFee);
+        examRegistration.setCreateTime(nowDate);
+        examRegistration.setUpdateTime(nowDate);
         examRegistrationDao.insert(examRegistration);
 
+        ExamRegistrationPayment examIngOrder = examRegistrationPaymentService.getExamIngOrder(examinationBasic.getId(), examRegistration.getSubjectId());
+        if (examIngOrder != null) {
+            examIngOrder.setTransStatus(TransStatusEnum.CLOSE);
+            examIngOrder.setMemo("用户主动放弃支付");
+            if (examRegistrationPaymentService.update(examIngOrder) <= 0) {
+                throw new BizException("未支付订单关闭失败");
+            }
+        }
+
         ExamRegistrationPayment examRegistrationPayment = new ExamRegistrationPayment();
-        examRegistrationPayment.setTenantId(examRegistration.getTenantId());
+        examRegistrationPayment.setTenantId(examinationBasic.getTenantId());
         examRegistrationPayment.setExamRegistrationId(examRegistration.getId().longValue());
         examRegistrationPayment.setStudentId(examRegistration.getStudentId());
         examRegistrationPayment.setExaminationBasicId(examRegistration.getExaminationBasicId());
@@ -105,6 +116,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         examRegistrationPayment.setUpdateTime(nowDate);
         examRegistrationPaymentService.insert(examRegistrationPayment);
 
+        HashMap<String, Object> rpMap = new HashMap<>();
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map<String, Object> payMap = payService.getPayMap(
                 amount,
@@ -117,7 +129,9 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         examRegistrationPayment.setTransNo((String) payMap.get("routingMerNos"));
         examRegistrationPayment.setPayType((String) payMap.get("type"));
         examRegistrationPaymentService.update(examRegistrationPayment);
-        return payMap;
+        rpMap.put("examRegister", examRegistration);
+        rpMap.put("payMap", payMap);
+        return rpMap;
     }
 
     @Override
@@ -221,7 +235,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
     }
 
     @Override
-    public ExamRegistrationDto getExamRegistration(Integer examRegistrationId) {
+    public ExamRegistrationDto getExamRegistration(Long examRegistrationId) {
         return examRegistrationDao.getExamRegistration(examRegistrationId);
     }
 
@@ -248,6 +262,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         if (examinationBasic == null || !examinationBasic.getStatus().equals(ExamStatusEnum.APPLYING)) {
             throw new BizException("项目不在报名中,请核对");
         }
+        Map<String, Object> rpMap = new HashMap<>();
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map<String, Object> payMap = payService.getPayMap(
                 order.getTransAmount(),
@@ -260,6 +275,9 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         order.setTransNo((String) payMap.get("routingMerNos"));
         order.setPayType((String) payMap.get("type"));
         examRegistrationPaymentService.update(order);
-        return payMap;
+        ExamRegistration examRegistration = examRegistrationDao.get(order.getExamRegistrationId());
+        rpMap.put("examRegister", examRegistration);
+        rpMap.put("payMap", payMap);
+        return rpMap;
     }
 }

+ 4 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/OrganizationServiceImpl.java

@@ -80,7 +80,9 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 				if(sysUser.getRoles() != null && sysUser.getRoles().size() > 0){
 					sysUserDao.batchAddEmployeeRole(user.getId(),sysUser.getRoles());
 				}
-				user.setUserType(user.getUserType() + ",ORGAN");
+				if(!user.getUserType().contains("SYSTEM")){
+					user.setUserType(user.getUserType() + ",SYSTEM");
+				}
 				user.setRealName(organ.getName());
 				user.setPhone(organ.getContactPhone());
 				sysUserDao.update(user);
@@ -93,7 +95,7 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 			return;
 		}
 		sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
-		sysUser.setUserType("ORGAN");
+		sysUser.setUserType("SYSTEM");
 		sysUser.setRealName(organ.getName());
 		sysUser.setPhone(organ.getContactPhone());
 		sysUserDao.insert(sysUser);

+ 2 - 1
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml

@@ -22,7 +22,7 @@
 		<result column="adviser_name_" property="adviserName" />
 		<result column="adviser_phone_" property="adviserPhone" />
 		<result column="card_no_" property="cardNo" />
-		<result column="status_" property="status" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
+		<result column="status_" property="status" />
 		<result column="memo_" property="memo" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
@@ -307,5 +307,6 @@
 		LEFT JOIN sys_user su ON su.id_ = er.subject_id_
 		LEFT JOIN examination_basic eb ON er.examination_basic_id_ = eb.id_
 		LEFT JOIN subject s on er.subject_id_ = s.id_
+		WHERE er.id_ = #{examRegistrationId}
 	</select>
 </mapper>

+ 11 - 2
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml

@@ -48,7 +48,7 @@
         -->
         INSERT INTO exam_registration_payment
         (id_,exam_registration_id_,student_id_,examination_basic_id_,order_no_,trans_no_,mer_no_,trans_amount_,trans_status_,trans_successed_time_,create_time_,update_time_,tenant_id_)
-        VALUES(#{id},#{examRegistrationId},#{studentId},#{examinationBasicId},#{orderNo},#{transNo},#{transAmount},#{transStatus},#{merNo},#{transSuccessedTime},NOW(),NOW(),#{tenantId})
+        VALUES(#{id},#{examRegistrationId},#{studentId},#{examinationBasicId},#{orderNo},#{transNo},#{merNo},#{transAmount},#{transStatus},#{transSuccessedTime},NOW(),NOW(),#{tenantId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -80,7 +80,7 @@
                 trans_no_ = #{transNo},
             </if>
             <if test="payChannel != null">
-                pay_channel_ = #{pay_channel_},
+                pay_channel_ = #{payChannel},
             </if>
             <if test="merNo != null">
                 mer_no_ = #{merNo},
@@ -141,4 +141,13 @@
         LEFT JOIN exam_registration er ON er.id_ = erp.exam_registration_id_
         WHERE order_no_ = #{orderNo}
     </select>
+    <!-- 获取超时未支付的订单 -->
+    <select id="findOrdersOverTime" resultMap="ExamRegistrationPayment">
+        SELECT * FROM exam_registration_payment WHERE order_no_ IN
+        <foreach collection="orderNoList" item="orderNo" index="index" open="(" close=")" separator=",">
+            #{orderNo}
+        </foreach>
+        AND trans_status_=#{transStatus,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler}
+        <![CDATA[ AND create_time_ <= ]]> #{beforeTime}
+    </select>
 </mapper>