From 7bc78d8f70a4d11e46f8bd640228804a3dd0dc68 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 22 四月 2024 10:52:29 +0800
Subject: [PATCH] Merge branch 'master2'

---
 src/main/java/com/boying/controller/phone/YCPayController.java |  155 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 118 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/boying/controller/phone/YCPayController.java b/src/main/java/com/boying/controller/phone/YCPayController.java
index c48444d..9f54dde 100644
--- a/src/main/java/com/boying/controller/phone/YCPayController.java
+++ b/src/main/java/com/boying/controller/phone/YCPayController.java
@@ -2,7 +2,6 @@
 
 import cn.hutool.http.Header;
 import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -13,14 +12,16 @@
 import com.boying.entity.*;
 import com.boying.service.*;
 import com.boying.util.DateUtilOther;
-import com.boying.util.HTTPEntityUtil;
 import com.google.gson.Gson;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
@@ -36,6 +37,7 @@
 import java.util.List;
 import java.util.Map;
 
+
 /**
  * @author kdq
  * @version 1.0.0
@@ -46,16 +48,22 @@
 @RestController
 @RequestMapping("/ffzf/api")
 @RequiredArgsConstructor
+@Tag(description = "ffzf/api" , name = "閭偍/閭㈠彴閾惰 瀵规帴鏀粯鎺ュ彛" )
 public class YCPayController {
     private final OutParkService outParkService;
+    private final PayLogService payLogService;
     private final ParkService parkService;
     private final OrderRecordService orderRecordService;
     private final TicketService ticketService;
     private final TicketBlackService ticketBlackService;
+
     private final SystemConfigProperties systemConfigProperties;
     private final WhiteListService whiteListService;
     private final EnterParkService enterParkService;
     private final WXService wxService;
+    private final OutParkLogService outParkLogService;
+    private  final StringRedisTemplate redisTemplate;
+
 
     /**
      * 鏌ヨ璁㈠崟鎺ュ彛
@@ -63,6 +71,7 @@
      * @return
      */
     @GetMapping("/getByQueryId")
+    @Operation(summary = "鏍规嵁鍑哄満id鑾峰彇鍑哄満鏁版嵁" , description = "鏍规嵁鍑哄満id鑾峰彇鍑哄満鏁版嵁" )
     public Object getByQueryId(Long queryId){
         if(queryId == null){
             return R.failed("鍙傛暟涓虹┖");
@@ -78,6 +87,7 @@
      * 缂存涔�
      */
     @PostMapping("park")
+    @Operation(summary = "閭偍鐢宠缂存涔�" , description = "閭偍鐢宠缂存涔�" )
     public Object park(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         OutPark outPark =  outParkService.getById(id);
@@ -141,19 +151,55 @@
         }
     }
 
+    /**
+     * 鍒ゆ柇鏀粯绔槸鍚﹀凡缁忔敮浠樿繃
+     * @param id
+     * @return
+     */
+    @PostMapping("parkJudg")
+    @Operation(summary = "鍒ゆ柇鏀粯绔槸鍚﹀凡缁忕敵璇疯繃鏀粯" , description = "鍒ゆ柇鏀粯绔槸鍚﹀凡缁忕敵璇疯繃鏀粯" )
+    public Object parkJudg(Long id){
+        if(id == null){
+            return R.failed("鏈壘鍒版暟鎹紝璇风◢鍚庨噸鏂扮偣鍑�");
+        }
+        OutPark outPark =  outParkService.getById(id);
+        if(outPark == null){
+            return R.failed("鏈壘鍒版暟鎹紝璇风◢鍚庨噸鏂扮偣鍑�");
+        }
+        if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 0){
+            return R.ok(1,"璁㈠崟宸叉彁浜ゆ敮浠樿姹�");
+        }
+        if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 1){
+            return R.failed(0,"璁㈠崟宸茬即璐�");
+        }
+        if(StringUtils.isBlank(outPark.getPayCode())){
+            OutPark by10min = outParkService.findBy10min(outPark.getCarNo(), outPark.getParkId(), outPark.getCreateTime(),outPark.getId());
+            if(by10min !=null){
+                return R.ok(1,"璁㈠崟宸叉彁浜ゆ敮浠樿姹�");
+            }else {
+                return R.ok(0,"璇锋彁浜ゆ敮浠�");
+            }
+        }
+        return R.failed(0,"璇锋彁浜ゆ敮浠�");
+    }
+
 
     /**
      * 鍒ゆ柇鏄惁缂磋垂
      */
     @PostMapping("parkXT")
+    @Operation(summary = "閭㈠彴閾惰鐢宠缂磋垂" , description = "閭㈠彴閾惰鐢宠缂磋垂" )
     public Object parkXT(Long id){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
         OutPark outPark =  outParkService.getById(id);
+        System.out.println("id:"+id);
+        if(id == null){
+            return R.failed("鏈壘鍒版暟鎹紝璇风◢鍚庨噸鏂扮偣鍑�");
+        }
         if(outPark.getPrice()==0){
             updateOutPark(outPark.getId(),"03");
             return R.failed("鏈鍋滆溅鏃犻渶鏀粯璐圭敤");
         }
-
         //鍒ゆ柇鏄惁鍦ㄧ櫧鍚嶅崟
         QueryWrapper<WhiteList> wrapper = new QueryWrapper<>();
         wrapper.lambda()
@@ -180,6 +226,9 @@
         if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 0){
             String logs = sdf.format(new Date())+" 杞︾墝鍙蜂负锛�"+outPark.getCarNo()+",鐢宠缂磋垂2------銆媆n";
             writeTxt(logs);
+            OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
+            byOutPark.setPayStartTime(LocalDateTime.now());
+            outParkLogService.saveOrUpdate(byOutPark);
             return R.ok(null,"璺宠浆閭㈠彴閾惰鏀粯");
         }else if(StringUtils.isNotBlank(outPark.getPayCode()) && outPark.getStatus() == 1){
             return R.failed("宸茬即璐�");
@@ -197,6 +246,9 @@
                     }else {
                         outPark.setPrice(outPark.getPrice()-enterPark.getPrice());
                         outParkService.updateById(outPark);
+                        OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId());
+                        byOutPark.setPayStartTime(LocalDateTime.now());
+                        outParkLogService.saveOrUpdate(byOutPark);
                     }
                 }
             }
@@ -211,6 +263,7 @@
      * 闃块噷缂磋垂
      */
     @PostMapping("payByAli")
+    @Operation(summary = "閭㈠彴閾惰鏀粯瀹濈即璐�" , description = "閭㈠彴閾惰鏀粯瀹濈即璐�" )
     public Object payByAli(Long id){
         OutPark outPark =  outParkService.getById(id);
         String xtyhpay = systemConfigProperties.getXTYHPAY();
@@ -220,14 +273,14 @@
         Map<String,Object> map = new HashMap<>();
         map.put("encoding","UTF-8");
         map.put("signMethod","01");
-        map.put("sdkAppId","8202309110000001");
+        map.put("sdkAppId",systemConfigProperties.getXTYHMERID());
         map.put("txnType","1007");
         map.put("txnSubType","100702");
         map.put("txnAccType","03");
         map.put("aesWay","01");
-        map.put("merId","8202309110000001");
-        map.put("merName","閭兏甯傚嘲宄扮熆鍖烘粡婧愬缓璁惧彂灞曟湁闄愬叕鍙�");
-        map.put("backEndUrl","http://39.96.92.240:8089/ffzf/api/getResult");
+        map.put("merId",systemConfigProperties.getXTYHMERID());
+        map.put("merName",systemConfigProperties.getXTYHMERNAME());
+        map.put("backEndUrl",systemConfigProperties.getXTYHRESULT());
         map.put("txnOrderId",outPark.getId()+""+format);
         map.put("txnOrderTime",format);
         map.put("txnOrderBody",outPark.getCarNo()+"娉婅溅缂磋垂");
@@ -267,13 +320,15 @@
             String respTxnTime = (String)map1.get("respTxnTime");
             Map map2 = gson.fromJson(respData, Map.class);
             String qrCode = (String)map2.get("qrCode");
-            outPark.setCode2(respTxnSsn);
-            outPark.setQrCode(qrCode);
-            outPark.setPayTime(LocalDateTime.now());
-            outPark.setTxnOrderId(outPark.getId()+""+format);
-            outPark.setTxnOrderTime(format);
-            outPark.setRespTxnTime(respTxnTime);
-            outParkService.updateById(outPark);
+            PayLog payLog = new PayLog();
+            payLog.setOutParkId(outPark.getId());
+            payLog.setCode2(respTxnSsn);
+            payLog.setQrCode(qrCode);
+            payLog.setPayTime(LocalDateTime.now());
+            payLog.setTxnOrderId(outPark.getId()+""+format);
+            payLog.setTxnOrderTime(format);
+            payLog.setRespTxnTime(respTxnTime);
+            payLogService.save(payLog);
             return R.ok(null,qrCode);
         }
         String respMsg = (String)map1.get("respMsg");
@@ -284,6 +339,7 @@
      * 鑾峰彇寰俊openid
      */
     @PostMapping("getOpenId")
+    @Operation(summary = "閭㈠彴閾惰鑾峰彇寰俊鐢ㄦ埛openid" , description = "閭㈠彴閾惰鑾峰彇寰俊鐢ㄦ埛openid" )
     public Object park(Long id,String code){
         OutPark outPark =  outParkService.getById(id);
         String openIdByCode = wxService.getOpenIdByCode(code);
@@ -295,7 +351,9 @@
      * 寰俊缂磋垂
      */
     @PostMapping("payByWX")
+    @Operation(summary = "閭㈠彴閾惰寰俊鏀粯" , description = "閭㈠彴閾惰寰俊鏀粯" )
     public Object payByWX(Long id,String openId){
+        System.out.println("寮�濮嬫敮浠�");
         OutPark outPark =  outParkService.getById(id);
         String xtyhpay = systemConfigProperties.getXTYHPAY();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -304,17 +362,17 @@
         Map<String,Object> map = new HashMap<>();
         map.put("encoding","UTF-8");
         map.put("signMethod","01");
-        map.put("sdkAppId","8202309110000001");
+        map.put("sdkAppId",systemConfigProperties.getXTYHMERID());
         map.put("txnType","1006");
         map.put("txnSubType","100603");
         map.put("txnAccType","02");
-        map.put("secMerAppId","wx46e756aed958f895");
+        map.put("secMerAppId",systemConfigProperties.getXTYHAPPID());
         map.put("txnSubOpenid",openId);
         map.put("txnProductId",outPark.getId()+"");
         map.put("aesWay","01");
-        map.put("merId","8202309110000001");
-        map.put("merName","閭兏甯傚嘲宄扮熆鍖烘粡婧愬缓璁惧彂灞曟湁闄愬叕鍙�");
-        map.put("backEndUrl","http://39.96.92.240:8089/ffzf/api/getResult");
+        map.put("merId",systemConfigProperties.getXTYHMERID());
+        map.put("merName",systemConfigProperties.getXTYHMERNAME());
+        map.put("backEndUrl",systemConfigProperties.getXTYHRESULT());
         map.put("txnOrderId",outPark.getId()+""+format);
         map.put("txnOrderTime",format);
         map.put("txnOrderBody",outPark.getCarNo()+"娉婅溅缂磋垂");
@@ -365,12 +423,14 @@
             resultMap.put("signType",signType);
             resultMap.put("package",package1);
             resultMap.put("paySign",paySign);
-            outPark.setCode2(respTxnSsn);
-            outPark.setPayTime(LocalDateTime.now());
-            outPark.setTxnOrderId(outPark.getId()+""+format);
-            outPark.setTxnOrderTime(format);
-            outPark.setRespTxnTime(respTxnTime);
-            outParkService.updateById(outPark);
+            PayLog payLog = new PayLog();
+            payLog.setOutParkId(outPark.getId());
+            payLog.setCode2(respTxnSsn);
+            payLog.setPayTime(LocalDateTime.now());
+            payLog.setTxnOrderId(outPark.getId()+""+format);
+            payLog.setTxnOrderTime(format);
+            payLog.setRespTxnTime(respTxnTime);
+            payLogService.save(payLog);
             return R.ok(resultMap,null);
         }
         String respMsg = (String)map1.get("respMsg");
@@ -384,6 +444,7 @@
      * @return
      */
     @GetMapping("/result")
+    @Operation(summary = "閭偍鑾峰緱鏀粯鍥炶皟" , description = "閭偍鑾峰緱鏀粯鍥炶皟" )
     public Object result(Long queryId,int success,int msg){
         OutPark byId = outParkService.getById(queryId);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
@@ -418,6 +479,7 @@
      * @return
      */
     @PostMapping("/getResult")
+    @Operation(summary = "閭㈠彴閾惰鏀粯鍥炶皟鎺ュ彛" , description = "閭㈠彴閾惰鏀粯鍥炶皟鎺ュ彛" )
     public Object getResult(HttpServletRequest request){
         System.out.println("getResult鏀跺埌璁块棶");
         String respCode = request.getParameter("respCode");
@@ -428,18 +490,31 @@
         if(respCode != null){
             if(respCode.equals("0000")){
                 //浜ゆ槗鎴愬姛,鏍规嵁娴佹按鍙锋煡璇㈠嚭鍦鸿褰�
-                OutPark byPayCode = outParkService.findByPayCode(respTxnSsn);
-                if(byPayCode == null){
-                    return R.failed("鏈煡璇㈠埌璁㈠崟");
+                PayLog payLog = payLogService.findByPayCode(respTxnSsn);
+                if(payLog == null){
+                    return R.failed("鏈煡璇㈠埌娴佹按璁板綍");
                 }else {
-                    updateOrderRecord((long)byPayCode.getId(),"03");
-                    List<EnterPark> byCarNo = enterParkService.findByCarNo(byPayCode.getCarNo(),byPayCode.getParkId());
-                    if(byCarNo.size()>0){
-                        EnterPark enterPark = byCarNo.get(0);
-                        enterPark.setIsPay(1);
-                        enterParkService.updateById(enterPark);
+                    OutPark byPayCode = outParkService.getById(payLog.getOutParkId());
+                    writeTxt2(byPayCode.getId()+"鏀跺埌鍥炴墽\n");
+                    if(byPayCode == null){
+                        return R.failed("鏈煡璇㈠埌璁㈠崟");
+                    }else {
+                        if(byPayCode.getStatus() == 1){
+                            return R.ok(null,"璁㈠崟宸叉敮浠�");
+                        }else {
+                            OutParkLog byOutPark = outParkLogService.getByOutPark(byPayCode.getCarNo(), byPayCode.getId());
+                            byOutPark.setPayEndTime(LocalDateTime.now());
+                            outParkLogService.saveOrUpdate(byOutPark);
+                            updateOrderRecord((long)byPayCode.getId(),"03");
+                            List<EnterPark> byCarNo = enterParkService.findByCarNo(byPayCode.getCarNo(),byPayCode.getParkId());
+                            if(byCarNo.size()>0){
+                                EnterPark enterPark = byCarNo.get(0);
+                                enterPark.setIsPay(1);
+                                enterParkService.updateById(enterPark);
+                            }
+                            return R.ok(null,"鍥炶皟鎴愬姛");
+                        }
                     }
-                    return R.ok(null,"鍥炶皟鎴愬姛");
                 }
             }else if(respCode.equals("0002") || respCode.equals("0003") || respCode.equals("0003") || respCode.equals("0012")){
                 //浜ゆ槗鎴愬姛锛岃秴鏃讹紝鏈槑锛岀◢鍚庡彂璧锋煡璇�
@@ -459,6 +534,7 @@
      * @return
      */
     @PostMapping ("/checkbill")
+    @Operation(summary = "閭偍瀵硅处鎺ュ彛" , description = "閭偍瀵硅处鎺ュ彛" )
     public Object checkbill(@RequestBody Map params){
         String checkDate = (String) params.get("checkDate");
         String tranDate = (String) params.get("tranDate");
@@ -480,6 +556,7 @@
      * @return
      */
     @PostMapping ("/checkbillXTYH")
+    @Operation(summary = "閭㈠彴閾惰瀵硅处鎺ュ彛" , description = "閭㈠彴閾惰瀵硅处鎺ュ彛" )
     public Object checkbillXTYH(String date){
         String xtyhpay = systemConfigProperties.getXTYHPAY();
         Map<String,Object> map = new HashMap<>();
@@ -524,6 +601,7 @@
      * @return
      */
     @PostMapping ("/searchPayStatus")
+    @Operation(summary = "浜ゆ槗鐘舵�佹煡璇�" , description = "浜ゆ槗鐘舵�佹煡璇�" )
     public Object searchPayStatus(String txnOrderId,String txnOrderTime){
         OutPark outPark = outParkService.findByOrderId(txnOrderId);
         if(outPark == null){
@@ -644,10 +722,13 @@
     //鏇存柊鍑哄満
     public void updateOutPark(Integer outParkId, String status){
         OutPark outPark = outParkService.getById(outParkId);
-        if(outPark!=null){
+        if(outPark!=null && outPark.getEnterTime() !=null){
             if(status.equals("03")){
                 outPark.setStatus(1);
                 outParkService.saveOrUpdate(outPark);
+                //缂撳瓨鍦╮edis閲�
+                String jsonValue = JSON.toJSONString(outPark);
+                redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue);
             }
         }
     }

--
Gitblit v1.9.1