liujie
8 天以前 3caaf21916009fe7d12430f8fbac053384616e45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.stylefeng.guns.modular.api;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService;
import com.stylefeng.guns.modular.account.service.UserWithdrawalService;
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
import com.stylefeng.guns.modular.system.service.ICompanyService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IReassignService;
import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
import com.stylefeng.guns.modular.system.util.rongyun.RongYunUtil;
import com.stylefeng.guns.modular.system.util.rongyun.model.CloudRecordingCallback;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
/**
 * 第三方支付回调控制器
 */
@RestController
@RequestMapping("/base")
public class CallbackController {
 
    @Autowired
    private IReassignService reassignService;
 
    @Autowired
    private PayMoneyUtil payMoneyUtil;
 
 
    @Autowired
    private IOrderPrivateCarService orderPrivateCarService;
 
    @Autowired
    private IOrderTaxiService orderTaxiService;
 
    @Autowired
    private IOrderCrossCityService orderCrossCityService;
 
 
 
    /**
     * 订单改派微信回调
     * @param request
     */
    @ResponseBody
    @PostMapping("/wxReassign")
    public void wxReassign(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
            if(null != map){
                String id = map.get("out_trade_no");
                String order_id = map.get("transaction_id");
                String result = map.get("result");
                if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id)){
                    // TODO 司机云闪付 改派微信回调支付充值
                    System.out.println("订单改派支付宝回调"+map);
//                    String[] s = id.split("_");
//                    if(Integer.valueOf(s[1]) == 3) {//跨城订单
//                        System.out.println("跨城订单");
//                        String[] split1 = s[0].split(",");
//                        List<Reassign> reassigns = reassignService.selectBatchIds(Arrays.asList(split1));
//                        cloudPay(reassigns.get(0).getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
//                    }else {
//                        Reassign reassign = reassignService.selectById(s[0]);
//                        cloudPay(reassign.getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1);
//                    }
                    PrintWriter out = response.getWriter();
                    out.write(result);
                    out.flush();
                    out.close();
                    reassignService.payReassign(id, order_id, 1);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
 
 
    /**
     * 订单改派支付宝回调
     * @param request
     */
    @ResponseBody
    @PostMapping("/aliReassign")
    public void aliReassign(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
                String id = map.get("out_trade_no");
                String order_id = map.get("trade_no");
                if(ToolUtil.isNotEmpty(id) && ToolUtil.isNotEmpty(order_id)){
                    reassignService.payReassign(id, order_id, 2);
                }
                System.out.println("订单改派支付宝回调"+map);
                // TODO 司机云闪付 改派支付宝回调支付充值
//                String[] s = id.split("_");
//                if(Integer.valueOf(s[1]) == 3) {//跨城订单
//                    System.out.println("跨城订单");
//                    String[] split1 = s[0].split(",");
//                    List<Reassign> reassigns = reassignService.selectBatchIds(Arrays.asList(split1));
//                    cloudPay(reassigns.get(0).getOriginalDriverId(),map.get("total_amount"),map.get("trade_no"),0);
//                }else {
//                    Reassign reassign = reassignService.selectById(s[0]);
//                    cloudPay(reassign.getOriginalDriverId(),map.get("total_amount"),map.get("trade_no"),0);
//                }
                PrintWriter out = response.getWriter();
                out.print("success");
                out.flush();
                out.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
 
 
    @ResponseBody
    @PostMapping("/rongYunCallBack")
    public void rongYunCallBack(HttpServletRequest request, HttpServletResponse response){
        CloudRecordingCallback cloudRecordingCallback = RongYunUtil.cloudRecordingCallback(request);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.err.println(sdf.format(new Date()) + "-------------------云端录制状态回调!-------------------");
        System.err.println(JSON.toJSONString(cloudRecordingCallback));
        if(null == cloudRecordingCallback){
            System.err.println("云端录制状态回调解析出错!");
            return;
        }
        Integer type = cloudRecordingCallback.getType();
        if(4 == type){//文件上传
            String fileUrl = cloudRecordingCallback.getOutput().getFileUrl();
            String roomId = cloudRecordingCallback.getRoomId();
            String[] split = roomId.split("_");
            String orderType = split[0];
            String orderId = split[1];
            if("1".equals(orderType)){
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                orderPrivateCar.setVoice(fileUrl);
                orderPrivateCar.setVoiceTime(new Date());
                orderPrivateCarService.updateById(orderPrivateCar);
            }
            if("2".equals(orderType)){
                OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
                orderTaxi.setVoice(fileUrl);
                orderTaxi.setVoiceTime(new Date());
                orderTaxiService.updateById(orderTaxi);
            }
            if("3".equals(orderType)){
                OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
                orderCrossCity.setVoice(fileUrl);
                orderCrossCity.setVoiceTime(new Date());
                orderCrossCityService.updateById(orderCrossCity);
            }
 
        }
        PrintWriter out = null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }
        out.print("OK");
        out.flush();
        out.close();
    }
 
}