浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/edu-saas

yonge 5 年之前
父节点
当前提交
2bba4366a2
共有 20 个文件被更改,包括 262 次插入148 次删除
  1. 二进制
      edu-thirdparty/src/main/resources/config/certificate/sq_formal_sign.cer
  2. 二进制
      edu-thirdparty/src/main/resources/config/certificate/yqpay.pfx
  3. 4 4
      edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/Student.java
  4. 20 19
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/config/ResourceServerConfig.java
  5. 39 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamOrderController.java
  6. 4 6
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamRegistrationController.java
  7. 23 20
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationDao.java
  8. 14 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamRegistrationPaymentDao.java
  9. 13 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/TenantInfo.java
  10. 4 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationPaymentService.java
  11. 1 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationService.java
  12. 12 3
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/EmployeeServiceImpl.java
  13. 70 82
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java
  14. 22 4
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java
  15. 7 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/OrganizationServiceImpl.java
  16. 2 2
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentServiceImpl.java
  17. 3 0
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TeacherServiceImpl.java
  18. 11 1
      edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TenantInfoServiceImpl.java
  19. 2 1
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationMapper.xml
  20. 11 2
      edu-user/edu-user-server/src/main/resources/config/mybatis/ExamRegistrationPaymentMapper.xml

二进制
edu-thirdparty/src/main/resources/config/certificate/sq_formal_sign.cer


二进制
edu-thirdparty/src/main/resources/config/certificate/yqpay.pfx


+ 4 - 4
edu-user/edu-user-client-api/src/main/java/com/keao/edu/user/api/entity/Student.java

@@ -19,7 +19,7 @@ public class Student extends SysUser{
 
 	private java.util.Date updateTime;
 
-	private String tenantId;
+//	private String tenantId;
 
 	private Integer organId;
 
@@ -96,13 +96,13 @@ public class Student extends SysUser{
 		return this.updateTime;
 	}
 			
-	public void setTenantId(String tenantId){
+	/*public void setTenantId(String tenantId){
 		this.tenantId = tenantId;
 	}
-	
+
 	public String getTenantId(){
 		return this.tenantId;
-	}
+	}*/
 			
 	@Override
 	public String toString() {

+ 20 - 19
edu-user/edu-user-server/src/main/java/com/keao/edu/user/config/ResourceServerConfig.java

@@ -16,24 +16,25 @@ import com.keao.edu.common.security.BaseAuthenticationEntryPoint;
 @EnableGlobalMethodSecurity(prePostEnabled = true)
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
-	@Autowired
-	private BaseAccessDeniedHandler baseAccessDeniedHandler;
-
-	@Autowired
-	private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
-
-	@Override
-	public void configure(HttpSecurity http) throws Exception {
-		http.authorizeRequests()
-				.antMatchers("/v2/api-docs", "/su/**","/student/apply","/examRegistration/ocr","/examOrder/paymentResult")
-				.permitAll()
-				.anyRequest().authenticated().and().csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler)
-				.authenticationEntryPoint(baseAuthenticationEntryPoint).and();
-	}
-
-	@Override
-	public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
-		resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
-	}
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
+
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http.authorizeRequests()
+                .antMatchers("/v2/api-docs", "/su/**", "/student/apply", "/examRegistration/ocr", "/examOrder/paymentResult",
+                        "/examOrder/notify")
+                .permitAll()
+                .anyRequest().authenticated().and().csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler)
+                .authenticationEntryPoint(baseAuthenticationEntryPoint).and();
+    }
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
 
 }

+ 39 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/controller/ExamOrderController.java

@@ -7,9 +7,11 @@ import com.keao.edu.common.controller.BaseController;
 import com.keao.edu.common.entity.HttpResponseResult;
 import com.keao.edu.thirdparty.adapay.ConfigInit;
 import com.keao.edu.thirdparty.adapay.Payment;
+import com.keao.edu.thirdparty.yqpay.Msg;
 import com.keao.edu.user.dto.StudentExamPaymentDto;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
 import com.keao.edu.user.entity.ExamSong;
+import com.keao.edu.user.enums.TransStatusEnum;
 import com.keao.edu.user.service.ExamRegistrationPaymentService;
 import com.keao.edu.user.service.ExamRegistrationService;
 import com.keao.edu.util.date.DateUtil;
@@ -131,4 +133,41 @@ public class ExamOrderController extends BaseController {
         return succeed(examRegistrationPaymentService.getExamOrderInfo(orderNo));
     }
 
+    @PostMapping("/notify")
+    public Msg notify(@ModelAttribute Msg msg) throws Exception {
+        Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
+        rqMap.put("code", msg.getCode());
+        rqMap.put("msg", msg.getMsg());
+        rqMap.put("responseType", msg.getResponseType());
+        rqMap.put("responseParameters", msg.getResponseParameters());
+        rqMap.put("sign", msg.getSign());
+        //boolean rs = YqPayUtil.verify(rqMap);
+        msg.setMsg("fail");
+        Map<String, String> notifyMap = new HashMap<>();
+        //if (rs) {
+        notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
+        //}
+        //支付中订单存在,更新状态
+        if (msg.getResponseType().equals("1") && notifyMap.size() > 0) {
+            TransStatusEnum status = msg.getCode().equals("88") ? TransStatusEnum.SUCCESS : TransStatusEnum.FAILED;
+            String channelType = notifyMap.get("channelType").equals("1") ? "WXPay" : (notifyMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
+
+            String memo = notifyMap.get("remarks");
+            String orderNo = notifyMap.get("merMerOrderNo");
+            String transNo = notifyMap.get("orderNo");
+
+            notifyMap.put("channelType", channelType);
+            notifyMap.put("memo", memo);
+            notifyMap.put("transStatus", status.getCode());
+            notifyMap.put("orderNo", orderNo);
+            notifyMap.put("transNo", transNo);
+
+            examRegistrationPaymentService.updateOrder(notifyMap);
+            msg.setCode("000000");
+            msg.setMsg("success");
+        }
+        return msg;
+    }
+
+
 }

+ 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);
+
 }

+ 13 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/TenantInfo.java

@@ -1,5 +1,6 @@
 package com.keao.edu.user.entity;
 
+import com.keao.edu.auth.api.entity.SysUser;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -33,7 +34,18 @@ public class TenantInfo {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	@ApiModelProperty(value = "用户信息",required = false)
+	private SysUser sysUser;
+
+	public SysUser getSysUser() {
+		return sysUser;
+	}
+
+	public void setSysUser(SysUser sysUser) {
+		this.sysUser = sysUser;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

+ 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);
 
    /**
     * 重新支付

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

@@ -1,11 +1,11 @@
 package com.keao.edu.user.service.impl;
 
 
+import com.keao.edu.auth.api.client.SysUserFeignService;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
-import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.im.api.client.ImFeignService;
 import com.keao.edu.im.api.entity.ImResult;
 import com.keao.edu.im.api.entity.ImUserModel;
@@ -28,6 +28,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 	private ImFeignService imFeignService;
 	@Autowired
 	private SysUserDao sysUserDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, Employee> getDAO() {
@@ -37,11 +39,16 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void add(Employee employee) {
-		String tenantId = TenantContextHolder.getTenantId().toString();
+		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+		String tenantId = queryUserInfo.getTenantId();
+
 		SysUser sysUser = employee.getSysUser();
 		employee.setTenantId(tenantId);
 		SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
 		if(user != null && user.getId() != null){
+			if(!user.getTenantId().equals(tenantId)){
+				throw new BizException("手机号已被占用");
+			}
 			Employee employee1 = employeeDao.get(user.getId());
 			if(employee1 == null){
 				if(StringUtils.isEmpty(user.getPassword())){
@@ -51,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
@@ -216,7 +230,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
     }
 
     @Override
-    public ExamRegistrationDto getExamRegistration(Integer examRegistrationId) {
+    public ExamRegistrationDto getExamRegistration(Long examRegistrationId) {
         return examRegistrationDao.getExamRegistration(examRegistrationId);
     }
 
@@ -243,6 +257,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(),
@@ -255,6 +270,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;
     }
 }

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

@@ -65,6 +65,9 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		organ.setLevel(currentOrganization.getLevel() + 1);
 
 		if(user != null && user.getId() != null){
+			if(!user.getTenantId().equals(tenantId)){
+				throw new BizException("手机号已被占用");
+			}
 			Organization organization = organDao.get(user.getId());
 			if(organization == null){
 				organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + user.getId());
@@ -77,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);
@@ -90,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 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/StudentServiceImpl.java

@@ -67,7 +67,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             Student stu = studentDao.get(user.getId());
             if (stu == null) {
                 student.setUserId(user.getId());
-                student.setTenantId(user.getTenantId());
+//                student.setTenantId(user.getTenantId());
                 studentDao.insert(student);
                 sysUser.setId(user.getId());
                 sysUser.setUserType(user.getUserType() + ",STUDENT");
@@ -78,7 +78,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             return;
         }
         Organization organization = organizationService.get(student.getOrganId());
-        student.setTenantId(organization.getTenantId());
+//        student.setTenantId(organization.getTenantId());
         sysUser.setTenantId(organization.getTenantId());
         sysUser.setUserType("STUDENT");
         sysUserDao.insert(sysUser);

+ 3 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TeacherServiceImpl.java

@@ -49,6 +49,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implem
 		teacher.setTenantId(tenantId);
 		sysUser.setTenantId(tenantId);
 		if(user != null && user.getId() != null){
+			if(!user.getTenantId().equals(tenantId)){
+				throw new BizException("手机号已被占用");
+			}
 			Integer id = user.getId();
 			sysUser.setId(id);
 			Teacher teacher1 = teacherDao.get(id);

+ 11 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/TenantInfoServiceImpl.java

@@ -7,9 +7,11 @@ import com.keao.edu.common.service.impl.BaseServiceImpl;
 import com.keao.edu.im.api.client.ImFeignService;
 import com.keao.edu.im.api.entity.ImResult;
 import com.keao.edu.im.api.entity.ImUserModel;
+import com.keao.edu.user.dao.EmployeeDao;
 import com.keao.edu.user.dao.OrganizationDao;
 import com.keao.edu.user.dao.SysUserDao;
 import com.keao.edu.user.dao.TenantInfoDao;
+import com.keao.edu.user.entity.Employee;
 import com.keao.edu.user.entity.Organization;
 import com.keao.edu.user.entity.TenantInfo;
 import com.keao.edu.user.service.TenantInfoService;
@@ -31,6 +33,8 @@ public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>
 	private OrganizationDao organizationDao;
 	@Autowired
 	private ImFeignService imFeignService;
+	@Autowired
+	private EmployeeDao employeeDao;
 
 	@Override
 	public BaseDAO<Integer, TenantInfo> getDAO() {
@@ -52,7 +56,7 @@ public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>
 		SysUser sysUser = new SysUser();
 		sysUser.setTenantId(tenantInfo.getId().toString());
 		sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
-		sysUser.setUserType("ORGAN");
+		sysUser.setUserType("SYSTEM");
 		sysUser.setRealName(tenantInfo.getName());
 		sysUser.setAvatar(tenantInfo.getLogoUrl());
 		sysUser.setPhone(tenantInfo.getContactPhone());
@@ -66,6 +70,12 @@ public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>
 		organ.setId(sysUser.getId());
 		organizationDao.insert(organ);
 
+		Employee employee = new Employee();
+		employee.setOrganId(organ.getId());
+		employee.setUserId(sysUser.getId());
+		employee.setTenantId(tenantInfo.getId().toString());
+		employeeDao.insert(employee);
+
 		ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(),null));
 		sysUser.setImToken(imResult.getToken());
 		sysUserDao.update(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" />
@@ -302,5 +302,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>