瀏覽代碼

订单中放进,乐团跟声部

周箭河 5 年之前
父節點
當前提交
9f24d46f90

+ 40 - 8
src/main/java/com/ym/mec/collectfee/controller/YqPayController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.collectfee.controller;
 
+import com.alibaba.druid.sql.visitor.functions.Now;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.collectfee.common.sms.SmsExample;
@@ -12,6 +13,8 @@ import com.ym.mec.collectfee.utils.ShortUrlUtil;
 import com.ym.mec.collectfee.utils.yqpay.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 
@@ -34,6 +38,7 @@ import java.util.*;
 @RequestMapping("yqpay")
 @EnableScheduling   // 2.开启定时任务
 public class YqPayController extends BaseController {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Autowired
     private YqPayService yqPayService;
@@ -153,8 +158,6 @@ public class YqPayController extends BaseController {
         routingAccount.setHasRouting(HasRouting);
         accountService.upByIdAndVersion(routingAccount);
 
-        order.setAmount(new BigDecimal("2")); //测试账户设置金额
-
         Map rqMap = orderService.getPayMap(routingAccount, order, school); //获取支付map
 
         return succeed(rqMap);
@@ -218,8 +221,6 @@ public class YqPayController extends BaseController {
 
         Order order = renewalsService.addRenewalsOrder(renewals, amount, orderNo, pickCourses, routingAccount, remark);
 
-        order.setAmount(new BigDecimal("2")); //测试账户设置金额
-
         Map rqMap = orderService.getPayMap(routingAccount, order, null); //获取支付map
         return succeed(rqMap);
     }
@@ -347,7 +348,7 @@ public class YqPayController extends BaseController {
      */
     @PostMapping("/notify")
     public Msg notify(@ModelAttribute Msg msg) throws Exception {
-//        log.info(msg.toString());K
+        logger.info(msg.toString());
         Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
         rqMap.put("code", msg.getCode());
         rqMap.put("msg", msg.getMsg());
@@ -357,8 +358,6 @@ public class YqPayController extends BaseController {
         boolean rs = YqPayUtil.verify(rqMap);
         msg.setCode("");
         msg.setMsg("fail");
-        Order order = null;
-        NotifyMsg notifyMsg = null;
         Map<String, String> notifyMap = new HashMap<>();
         if (rs) {
             notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
@@ -377,7 +376,7 @@ public class YqPayController extends BaseController {
     }
 
 
-    @Scheduled(cron = "0/5 * * * * ?")
+    //@Scheduled(cron = "0/5 * * * * ?")
     //@RequestMapping("/getOrderStatus")
     public void getOrderStatus() throws Exception {
 
@@ -474,4 +473,37 @@ public class YqPayController extends BaseController {
             }
         }
     }
+
+    @Transactional
+    @Scheduled(cron = "0 0/5 * * * ?")
+    public void failOrders() throws Exception {
+        logger.info("test\n");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date now = new Date();
+        long time = 30 * 60 * 1000;
+        Date beforeDate = new Date(now.getTime() - time);
+        List<Order> payingOrders = orderService.findPayingOrdersOver30(beforeDate);
+
+        for (Order order : payingOrders) {
+            HashMap<String, Object> upMap = new HashMap<>();
+            upMap.put("id", order.getId());
+            upMap.put("oldStatus", 1);
+            upMap.put("status", 0);
+
+            //失败减去已收款金额
+            Account account = accountService.get(Integer.parseInt(order.getUAccount()));
+            BigDecimal HasRouting = account.getHasRouting().subtract(order.getAmount());
+            account.setHasRouting(HasRouting);
+            accountService.upByIdAndVersion(account);
+
+            //减去报名人数
+            if (order.getTuiFee() != null) {
+                CourseGroupInfo courseGroupInfo = CourseGroupInfoService.get(order.getGroupId());
+                courseGroupInfo.setRegNum(courseGroupInfo.getRegNum() - 1);
+                CourseGroupInfoService.upByIdAndVersion(courseGroupInfo);
+            }
+            orderService.updateByIdAndStatus(upMap);
+        }
+
+    }
 }

+ 4 - 0
src/main/java/com/ym/mec/collectfee/dao/OrderDao.java

@@ -4,6 +4,8 @@ import com.ym.mec.collectfee.common.dao.BaseDAO;
 import com.ym.mec.collectfee.entity.Order;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
+
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -27,4 +29,6 @@ public interface OrderDao extends BaseDAO<Integer, Order> {
     List<Order> findPayingOrders();
 
     int updateByIdAndStatus(Map upMap);
+
+    List<Order> findPayingOrdersOver30(Date beforeTime);
 }

+ 1 - 0
src/main/java/com/ym/mec/collectfee/service/OrderService.java

@@ -95,4 +95,5 @@ public interface OrderService extends BaseService<Integer, Order> {
      */
     int updateByIdAndStatus(Map upMap);
 
+    List<Order> findPayingOrdersOver30(Date beforeTime);
 }

+ 38 - 33
src/main/java/com/ym/mec/collectfee/service/impl/OrderServiceImpl.java

@@ -92,28 +92,28 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
         return orderDao.countOrder(poName, voicePort);
     }
 
-	@Override
-	public Object getSchoolDetail(Integer schoolId) {
-		try {
-			RequestParamBean requestParamBean = new RequestParamBean();
-			String body = "<status>1</status><schoolId>" + schoolId + "</schoolId>";
-			body = Base64.getEncoder().encodeToString(body.getBytes());
-			requestParamBean.setBody(body);
-			requestParamBean.setHead(XStreamUtil.getOrdersHead(body,124005,publicKey,null,null));
-			XStream xs = new XStream();
-			xs.autodetectAnnotations(true);
-			Writer writer = new StringWriter();
-			writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
-			xs.toXML(requestParamBean,writer);
-			String parseBody = parseBody(HttpUtil.postXmlData(writer.toString(), url));
-			ResponseCourseEntity xmlToObject = XStreamUtil.xmlToObject("body", ResponseCourseEntity.class, parseBody);
-			courseGroupInfoService.upSetCourseGroup(xmlToObject);
-			return schoolService.upsetSchool(xmlToObject);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
+    @Override
+    public Object getSchoolDetail(Integer schoolId) {
+        try {
+            RequestParamBean requestParamBean = new RequestParamBean();
+            String body = "<status>1</status><schoolId>" + schoolId + "</schoolId>";
+            body = Base64.getEncoder().encodeToString(body.getBytes());
+            requestParamBean.setBody(body);
+            requestParamBean.setHead(XStreamUtil.getOrdersHead(body, 124005, publicKey, null, null));
+            XStream xs = new XStream();
+            xs.autodetectAnnotations(true);
+            Writer writer = new StringWriter();
+            writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
+            xs.toXML(requestParamBean, writer);
+            String parseBody = parseBody(HttpUtil.postXmlData(writer.toString(), url));
+            ResponseCourseEntity xmlToObject = XStreamUtil.xmlToObject("body", ResponseCourseEntity.class, parseBody);
+            courseGroupInfoService.upSetCourseGroup(xmlToObject);
+            return schoolService.upsetSchool(xmlToObject);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
 
     @Override
     public Order getOrderByOrderNo(String orderNo) {
@@ -153,7 +153,7 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
             Map<String, Object> routingList = new HashMap<>();
             routingList.put("routingMerNo", routingAccount.getSellerNo());//分佣账户
 //            routingList.put("routingFee", order.getAmount()); //分佣金额
-            routingList.put("routingFee", order.getAmount().subtract((order.getAmount().multiply(new BigDecimal(0.28)).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP))); //分佣金额
+            routingList.put("routingFee", order.getAmount().subtract((order.getAmount().multiply(new BigDecimal(0.28)).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP))); //分佣金额
             tempRoutingList.add(routingList);
         }
 
@@ -179,23 +179,28 @@ public class OrderServiceImpl extends BaseServiceImpl<Integer, Order> implements
         rqMap.put("host", payUrl);
         return rqMap;
     }
-    
+
     @Override
-    public List<Order> getOrderByClassId(Integer classId,Integer type) {
-		return orderDao.getOrderByClassId(classId,type);
-	}
-    
+    public List<Order> getOrderByClassId(Integer classId, Integer type) {
+        return orderDao.getOrderByClassId(classId, type);
+    }
+
     public static void main(String[] args) {
-		BigDecimal temp = new BigDecimal(1440);
-		BigDecimal feelv = new BigDecimal(0.28);
-		BigDecimal result = temp.subtract((temp.multiply(feelv).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
-		System.out.println(result);
-	}
+        BigDecimal temp = new BigDecimal(1440);
+        BigDecimal feelv = new BigDecimal(0.28);
+        BigDecimal result = temp.subtract((temp.multiply(feelv).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));
+        System.out.println(result);
+    }
 
     @Override
     public int updateByIdAndStatus(Map upMap) {
         return orderDao.updateByIdAndStatus(upMap);
     }
 
+    @Override
+    public List<Order> findPayingOrdersOver30(Date beforeTime) {
+        return orderDao.findPayingOrdersOver30(beforeTime);
+    }
+
 
 }

+ 6 - 1
src/main/resources/config/mybatis/OrderMapper.xml

@@ -175,7 +175,7 @@
 		SELECT * FROM `order` WHERE status = 1
 	</select>
 
-	<!-- 根据 -->
+	<!-- 根据id和status更新订单 -->
 	<update id="updateByIdAndStatus" parameterType="map">
 		UPDATE `order`
 		<set>
@@ -197,4 +197,9 @@
 		</set>
 		WHERE id = #{id} AND `status` =  #{oldStatus}
 	</update>
+
+	<!-- 查询支付中超过30分钟的订单 -->
+	<select id="findPayingOrdersOver30" resultMap="Order" parameterType="date">
+		<![CDATA[ SELECT * FROM `order` WHERE `status`=1 AND `create_time` <= ]]> #{berferTime}
+	</select>
 </mapper>