Bläddra i källkod

直播课取消订单操作

weifanli 3 år sedan
förälder
incheckning
365844a09c
14 ändrade filer med 81 tillägg och 61 borttagningar
  1. 2 3
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java
  2. 1 1
      cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java
  3. 0 17
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java
  4. 3 1
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/UmsAdminController.java
  5. 11 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderSetting.java
  6. 2 1
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderSettingMapper.xml
  7. 1 1
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java
  8. 1 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dao/PortalOrderDao.java
  9. 4 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  10. 37 32
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  11. 3 2
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml
  12. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  13. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  14. 4 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

+ 2 - 3
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java

@@ -55,10 +55,9 @@ public interface SysUserFeignService {
 										   @RequestParam("clientId")String clientId,
 										   @RequestParam("clientSecret")String clientSecret);
 
-	@GetMapping(value = "/remote/exit")
+	@PostMapping(value = "exit",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	@ApiOperation(value = "退出登录")
-	public HttpResponseResult<String> remoteExit();
-
+	HttpResponseResult<String> logout();
 
 	@PostMapping(value = "user/list")
 	HttpResponseResult<List<SysUser>> page(@RequestBody SysUserQueryInfo queryInfo);

+ 1 - 1
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -72,7 +72,7 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 	}
 
 	@Override
-	public HttpResponseResult<String> remoteExit() {
+	public HttpResponseResult<String> logout() {
 		return HttpResponseResult.failed("请求失败");
 	}
 

+ 0 - 17
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -143,23 +143,6 @@ public class TokenController extends BaseController {
 		return succeed("退出成功");
 	}
 
-	@GetMapping(value = "/remote/exit")
-	@ApiOperation(value = "退出登录")
-	public HttpResponseResult<String> remoteExit(HttpServletRequest request) {
-
-		String authHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
-		if (StringUtils.isBlank(authHeader)) {
-			return failed("退出失败,token 为空");
-		}
-
-		String tokenValue = authHeader.toLowerCase().replace(OAuth2AccessToken.BEARER_TYPE.toLowerCase(), StringUtils.EMPTY).trim();
-
-		tokenService.revokeToken(tokenValue);
-
-		return succeed("退出成功");
-	}
-
-
 	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	@ApiOperation(value = "指定用户退出登录")
 	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone) {

+ 3 - 1
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/UmsAdminController.java

@@ -101,7 +101,9 @@ public class UmsAdminController {
     @RequestMapping(value = "/logout", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult logout(HttpServletRequest request) {
-        HttpResponseResult<String> logout = sysUserFeignService.remoteExit();
+        // HttpResponseResult<String> logout = sysUserFeignService.remoteExit();
+
+        HttpResponseResult<String> logout = sysUserFeignService.logout();
         if (logout.getStatus()) {
             return CommonResult.success(logout.getData());
         } else {

+ 11 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderSetting.java

@@ -21,6 +21,9 @@ public class OmsOrderSetting implements Serializable {
     @ApiModelProperty(value = "订单完成后自动好评时间(天)")
     private Integer commentOvertime;
 
+    @ApiModelProperty("付款超时时间")
+    private Integer payOrderOvertime;
+
     private static final long serialVersionUID = 1L;
 
     public Long getId() {
@@ -87,4 +90,12 @@ public class OmsOrderSetting implements Serializable {
         sb.append("]");
         return sb.toString();
     }
+
+    public Integer getPayOrderOvertime() {
+        return payOrderOvertime;
+    }
+
+    public void setPayOrderOvertime(Integer payOrderOvertime) {
+        this.payOrderOvertime = payOrderOvertime;
+    }
 }

+ 2 - 1
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderSettingMapper.xml

@@ -8,6 +8,7 @@
     <result column="confirm_overtime" jdbcType="INTEGER" property="confirmOvertime" />
     <result column="finish_overtime" jdbcType="INTEGER" property="finishOvertime" />
     <result column="comment_overtime" jdbcType="INTEGER" property="commentOvertime" />
+    <result column="pay_order_overtime" jdbcType="INTEGER" property="payOrderOvertime" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -69,7 +70,7 @@
   </sql>
   <sql id="Base_Column_List">
     id, flash_order_overtime, normal_order_overtime, confirm_overtime, finish_overtime, 
-    comment_overtime
+    comment_overtime,pay_order_overtime
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderSettingExample" resultMap="BaseResultMap">
     select

+ 1 - 1
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java

@@ -34,7 +34,7 @@ public class AdapayPaymentServiceImpl implements PaymentService {
 
     @Override
     public OrderPayRes orderPay(OrderPayReq payReq) {
-        if (OrderStatusEnum.WAIT_PAY.equals(payReq.getOrderStatus()) || OrderStatusEnum.FAIL.equals(payReq.getOrderStatus())) {
+        if (OrderStatusEnum.WAIT_PAY.equals(payReq.getOrderStatus())) {
             //处于待支付状态,需要调用汇付发起付款请求接口
             return orderPayWaitPay(payReq);
         } else if (OrderStatusEnum.PAYING.equals(payReq.getOrderStatus())) {

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dao/PortalOrderDao.java

@@ -25,7 +25,7 @@ public interface PortalOrderDao {
      * 获取超时订单
      * @param minute 超时时间(分)
      */
-    List<OmsOrderDetail> getTimeOutOrders(@Param("minute") Integer minute);
+    List<OmsOrderDetail> getTimeOutOrders(@Param("orderMinute") Integer orderMinute,@Param("payMinute") Integer payMinute);
 
     /**
      * 批量修改订单状态

+ 4 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -50,11 +50,13 @@ public interface OmsPortalOrderService {
     /**
      * 发送延迟消息取消订单
      */
+    @Transactional
     void sendDelayMessageCancelOrder(Long orderId);
 
     /**
      * 确认收货
      */
+    @Transactional
     void confirmReceiveOrder(Long orderId);
 
     /**
@@ -70,6 +72,7 @@ public interface OmsPortalOrderService {
     /**
      * 用户根据订单ID删除订单
      */
+    @Transactional
     void deleteOrder(Long orderId);
 
     /**
@@ -84,5 +87,6 @@ public interface OmsPortalOrderService {
      * @param payReq 支付信息
      * @return
      */
+    @Transactional
     OrderPayRes orderPay(OrderPayReq payReq);
 }

+ 37 - 32
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -283,7 +283,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         Integer count=0;
         OmsOrderSetting orderSetting = orderSettingMapper.selectByPrimaryKey(1L);
         //查询超时、未支付的订单及订单详情
-        List<OmsOrderDetail> timeOutOrders = portalOrderDao.getTimeOutOrders(orderSetting.getNormalOrderOvertime());
+        List<OmsOrderDetail> timeOutOrders = portalOrderDao.getTimeOutOrders(orderSetting.getNormalOrderOvertime()
+                ,orderSetting.getPayOrderOvertime());
         if (CollectionUtils.isEmpty(timeOutOrders)) {
             return count;
         }
@@ -303,6 +304,14 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                 UmsMember member = memberService.getById(timeOutOrder.getMemberId());
                 memberService.updateIntegration(timeOutOrder.getMemberId(), member.getIntegration() + timeOutOrder.getUseIntegration());
             }
+
+            UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNo(timeOutOrder.getOrderSn());
+            if (null != orderPayment) {
+                //更新付款单
+                orderPayment.setStatus(OrderStatusEnum.FAIL.getCode());
+                orderPayment.setPayFailMsg("交易取消");
+                userOrderPaymentService.saveOrUpdate(orderPayment);
+            }
         }
         return timeOutOrders.size();
     }
@@ -311,16 +320,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     public void cancelOrder(Long orderId) {
         //查询未付款的取消订单
         OmsOrderExample example = new OmsOrderExample();
-        List<Integer> list = new ArrayList<>();
-        list.add(0);
-        list.add(6);
-        example.createCriteria().andIdEqualTo(orderId).andStatusIn(list).andDeleteStatusEqualTo(0);
+        example.createCriteria().andIdEqualTo(orderId).andDeleteStatusEqualTo(0);
         List<OmsOrder> cancelOrderList = orderMapper.selectByExample(example);
         if (CollectionUtils.isEmpty(cancelOrderList)) {
             return;
         }
         OmsOrder cancelOrder = cancelOrderList.get(0);
-        if (cancelOrder != null) {
+        if (cancelOrder != null && (cancelOrder.getStatus() == 0 || cancelOrder.getStatus() == 6) ) {
             //修改订单状态为取消
             cancelOrder.setStatus(4);
             orderMapper.updateByPrimaryKeySelective(cancelOrder);
@@ -338,14 +344,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                 UmsMember member = memberService.getById(cancelOrder.getMemberId());
                 memberService.updateIntegration(cancelOrder.getMemberId(), member.getIntegration() + cancelOrder.getUseIntegration());
             }
-        }
-
-        UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNo(cancelOrder.getOrderSn());
-        if (null != orderPayment) {
-            //更新付款单
-            orderPayment.setStatus(OrderStatusEnum.FAIL.getCode());
-            orderPayment.setPayFailMsg("交易取消");
-            userOrderPaymentService.saveOrUpdate(orderPayment);
+            UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNo(cancelOrder.getOrderSn());
+            if (null != orderPayment) {
+                //更新付款单
+                orderPayment.setStatus(OrderStatusEnum.FAIL.getCode());
+                orderPayment.setPayFailMsg("交易取消");
+                userOrderPaymentService.saveOrUpdate(orderPayment);
+            }
         }
     }
 
@@ -493,25 +498,25 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         omsOrder.setId(detail.getId());
         if (orderPayRes.getOrderStatus().getCode().equals(OrderStatusEnum.PAYING.getCode())) {
             omsOrder.setStatus(6);
+            orderMapper.updateByPrimaryKeySelective(omsOrder);
+            // 保存订单支付表
+            if (userOrderPayment == null) {
+                userOrderPayment = new UserOrderPayment();
+            }
+            userOrderPayment.setOrderNo(orderPayRes.getOrderNo());
+            userOrderPayment.setPayChannel(orderPayRes.getPayChannel());
+            userOrderPayment.setTransNo(orderPayRes.getTransNo());
+            userOrderPayment.setPayAmt(new BigDecimal(orderPayRes.getPay_amt()));
+            userOrderPayment.setPayInfo(orderPayRes.getPay_info());
+            userOrderPayment.setStatus(orderPayRes.getOrderStatus().getCode());
+            userOrderPayment.setPayFailMsg(orderPayRes.getMessage());
+            userOrderPayment.setCreateTime(new Date());
+            userOrderPayment.setUpdateTime(new Date());
+            userOrderPaymentService.saveOrUpdate(userOrderPayment);
         }else {
-            omsOrder.setStatus(7);
-        }
-        orderMapper.updateByPrimaryKey(omsOrder);
-
-        // 保存订单支付表
-        if (userOrderPayment == null) {
-            userOrderPayment = new UserOrderPayment();
+            // 异常将取消订单
+            cancelOrder(detail.getId());
         }
-        userOrderPayment.setOrderNo(orderPayRes.getOrderNo());
-        userOrderPayment.setPayChannel(orderPayRes.getPayChannel());
-        userOrderPayment.setTransNo(orderPayRes.getTransNo());
-        userOrderPayment.setPayAmt(new BigDecimal(orderPayRes.getPay_amt()));
-        userOrderPayment.setPayInfo(orderPayRes.getPay_info());
-        userOrderPayment.setStatus(orderPayRes.getOrderStatus().getCode());
-        userOrderPayment.setPayFailMsg(orderPayRes.getMessage());
-        userOrderPayment.setCreateTime(new Date());
-        userOrderPayment.setUpdateTime(new Date());
-        userOrderPaymentService.saveOrUpdate(userOrderPayment);
 
         return orderPayRes;
     }
@@ -573,7 +578,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     void orderSuccess(OmsOrder detail, JSONObject hfRes) {
-        //更新付款
+        //更新
         UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNo(detail.getOrderSn());
         if (orderPayment.getPayChannel().equals("alipay")) {
             paySuccess(detail.getId(),1);

+ 3 - 2
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml

@@ -42,9 +42,10 @@
         FROM
             oms_order o
             LEFT JOIN oms_order_item ot ON o.id = ot.order_id
+        left join user_order_payment uop on uop.order_no_ = o.order_sn
         WHERE
-            o.status = 0
-            AND o.create_time &lt; date_add(NOW(), INTERVAL -#{minute} MINUTE);
+            (o.status = 0 AND o.create_time &lt; date_add(NOW(), INTERVAL -#{orderMinute} MINUTE))
+            or (o.status = 6 and uop.create_time_ &lt; date_add(NOW(), INTERVAL -#{payMinute} MINUTE));
     </select>
 
     <update id="updateSkuStock">

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -128,8 +128,14 @@ public interface CourseGroupService extends IService<CourseGroup> {
     void buyLiveCourseSuccess(UserOrderDetailVo orderParam);
 
     /**
+     * 学生购买直播课程-取消-回调
+     */
+    void buyLiveCourseCancel(UserOrderDetailVo orderParam);
+
+    /**
      * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
      */
     void openCourseGroup();
+
 }
 

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -652,6 +652,12 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         log.info("buyLiveCourseSuccess ok");
     }
 
+    @Override
+    public void buyLiveCourseCancel(UserOrderDetailVo orderParam) {
+        courseScheduleStudentPaymentService.remove(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
+                .eq(CourseScheduleStudentPayment::getOrderNo, orderParam.getOrderNo()));
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                 .map(sysUserFeignService::queryUserById)

+ 4 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -98,6 +98,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         orderCancel.put(GoodTypeEnum.PRACTICE, scheduleService::buyPracticeCourseFailed);
         //视频课购买
         orderCancel.put(GoodTypeEnum.VIDEO, recordService::buyVideoCourseFailed);
+        //直播课购买
+        orderCancel.put(GoodTypeEnum.LIVE, courseGroupService::buyLiveCourseCancel);
     }
 
     @Override
@@ -287,7 +289,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             //支付成功
             if (PayStatusEnum.succeeded.getCode().equals(resMap.get("status").toString())) {
                 orderSuccess(userOrder);
-            }else{
+            } else {
                 orderCancel(userOrder);
             }
         } catch (Exception e) {
@@ -387,7 +389,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private UserOrderPayment errOrderPayment(HttpResponseResult<Map<String, Object>> responseResult, OrderPayReq payReq) {
         //查询
         UserOrderPayment orderPayment = orderPaymentService.detailByOrderNo(payReq.getOrderNo());
-        if(null == orderPayment){
+        if (null == orderPayment) {
             orderPayment = new UserOrderPayment();
             orderPayment.setOrderNo(payReq.getOrderNo());
             orderPayment.setPayChannel(payReq.getPayChannel());