kongdeqiang
2023-07-10 85f5baee0e3d255860395278dcb5cbb5cc766023
src/main/java/com/boying/controller/phone/PayController.java
@@ -42,7 +42,7 @@
 * @createTime 2022年11月22日 15:19:00
 */
@RestController
@RequestMapping("ffPay")
@RequestMapping("ffzf/ffPay")
@RequiredArgsConstructor
public class PayController extends BaseController {
@@ -53,6 +53,7 @@
    private final SystemConfigProperties systemConfigProperties;
    private final ParkService parkService;
    private final WhiteListService whiteListService;
    private final NowPayOrderService nowPayOrderService;
    static String payKey = "df937eda27cb4a59a12347966678e232";
    static String paySecret = "9e3b2f387b5b4232a9c782affc9c36ed";
@@ -167,7 +168,7 @@
    @PostMapping("result")
    public String result(HttpServletRequest request, String payKey, String payerTypeCode, String payerNum, String payCode, Double amt, String status, String errorInfo, String sign, String signType) throws Exception{
        try {
            updateOrderRecord(payCode,status);
           // updateOrderRecord(payCode,status);
        }catch (Exception e){
         e.printStackTrace();
        }
@@ -382,6 +383,113 @@
    /**
     * 获取执法id
     */
    @PostMapping("getZhifaId")
    public Object getZhifaId(){
        QueryWrapper<NowPayOrder> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .eq(NowPayOrder::getType,0)
                .orderByDesc(NowPayOrder::getCreateTime)
                .last(" limit 1");
        NowPayOrder one = nowPayOrderService.getOne(wrapper);
        if(one == null){
            return R.failed(null,"暂无缴费项目");
        }else {
            return R.ok(ticketService.getById(one.getQueryId()));
        }
    }
    /**
     * 缴款书
     */
    @PostMapping("zhifa")
    public Object zhifa(Long id){
        System.out.println(id+"开始缴费");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
        String logs = sdf.format(new Date())+"开始扫码缴费------》\n";
        logs += "罚单表id为:"+id+",\n";
        Ticket ticket =  ticketService.getById(id);
        if(ticket.getMoney()==0){
            updateTicket(ticket.getId(),"03");
            logs += "支付金额为0,\n";
            writeTxt(logs);
            return R.failed("本罚单无需支付费用");
        }
        if(StringUtils.isNotBlank(ticket.getPayCode()) && ticket.getPayStatus() == 0){
            return R.ok("生成电子罚单缴款码", "https://hbfs.govpay.ccb.com/online/fssm?fee=130000000001&PyfScnCgycd=01&pyfTpcd=3&BNo="+ticket.getPayCode());
        }else if(StringUtils.isNotBlank(ticket.getPayCode()) && ticket.getPayStatus() == 1){
            return R.failed("已缴费");
        }
        if(StringUtils.isBlank(ticket.getPayCode())){
            return R.ok("生成电子罚单缴款码", getPayUrl2(ticket));
        }else {
            return R.failed("出错");
        }
    }
    /**
     * 获取缴款码
     * @param ticket
     * @return
     */
    public String getPayUrl2(Ticket ticket){
        String urlIP = systemConfigProperties.getIp4();
        String applyetcketnum = systemConfigProperties.getAPPLYETCKETNUM();
        //申请缴款书,唯一码为出场id+时间戳
        String idStr = ticket.getId()+"";
        String dateStr = DateUtil.currentSeconds()+"";
        String l = idStr + dateStr;
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        String format = sdf2.format(new Date());
        List< ApplyTicket.detail> details = new ArrayList<>();
        ApplyTicket.detail detail = new ApplyTicket.detail();
        detail.setItemstandardtype("");
        detail.setAmount(1);
        detail.setAmt(ticket.getMoney());
        detail.setIncitemcode("050114");
        detail.setMeasureunit("");
        details.add(detail);
        ApplyTicket applyTicket = new ApplyTicket();
        applyTicket.setBusinum(l);
        applyTicket.setFilldate(format);
        applyTicket.setPayer(ticket.getCarNo());
        applyTicket.setPayeraccount("");
        applyTicket.setPayerbank("");
        applyTicket.setPayerphonenumber("18888888888");
        applyTicket.setPayee("河北省财政厅");
        applyTicket.setAmt(ticket.getMoney());
        applyTicket.setMemo("");
        applyTicket.setOverdate("");
        applyTicket.setState(1);
        applyTicket.setDetails(details);
        String jsonStr = JSON.toJSONString(applyTicket, SerializerFeature.WriteDateUseDateFormat);
        Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIP+applyetcketnum, HTTPEntityUtil.setEntity(map), ReturnData.class);
        if(entity.getBody().getCode() == 1){
            System.out.println("支付申请缴款码返回为:"+entity.getBody());
            Object o = entity.getBody().getData().get(0);
            String s = JSON.toJSONString(o);
            Map<String,Object> map1 = (Map)JSON.parse(s);
            String payurl = (String)map1.get("payurl");
            String eticketnum = (String)map1.get("eticketnum");
            ticket.setPayCode(eticketnum);
            ticket.setCode2(l);
            ticketService.saveOrUpdate(ticket);
            addOrderRecord2(ticket);
            return payurl+eticketnum;
        }else {
            System.out.println("支付申请缴款码返回为:"+entity);
            return null;
        }
    }
@@ -392,24 +500,23 @@
         */
    //更新订单记录
    public void updateOrderRecord(String payCode,String status){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
        String s = sdf.format(new Date())+"更新订单记录:payCode===="+payCode+",status==="+status+",\n";
    public void updateOrderRecord(Integer queryId,String status){
        QueryWrapper<OrderRecord> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .eq(OrderRecord::getPayCode,payCode)
                .eq(OrderRecord::getQueryId,queryId)
                .orderByDesc(OrderRecord::getCreateTime);
        List<OrderRecord> all = orderRecordService.list(wrapper);
        s += "查询到订单记录为:"+all.size()+"条,\n";
        if(all.size()>=1){
            OrderRecord orderRecord = all.get(0);
            s += "查询到订单为:"+orderRecord.getId()+",\n";
            if(status.equals("01")){
                orderRecord.setStatus(0);
            }
            if(status.equals("03")){
                orderRecord.setStatus(1);
                //测试环境,暂时把开票设置为2
                orderRecord.setTicketStatus(2);
            }
            if(status.equals("04")||status.equals("05")||status.equals("06")){
                orderRecord.setStatus(2);
@@ -418,12 +525,9 @@
            if(orderRecord.getType()==0){
                updateTicket(orderRecord.getQueryId(),status);
            }else{
                s += "修改出场表:"+orderRecord.getQueryId()+",status==="+status+",\n";
                writeTxt(s);
                updateOutPark(orderRecord.getQueryId(),status);
            }
        }
        writeTxt(s);
    }
    //更新罚单的状态
@@ -510,9 +614,11 @@
        orderRecord.setAddress(ticket.getAddress());
        orderRecord.setCarNo(ticket.getCarNo());
        orderRecord.setCode(ticket.getCode());
        orderRecord.setCode2(ticket.getCode2());
        orderRecord.setMoney(ticket.getMoney());
        orderRecord.setQueryId(ticket.getId());
        orderRecord.setType(0);
        orderRecord.setTicketStatus(2);
        orderRecord.setPayCode(ticket.getPayCode());
        orderRecordService.saveOrUpdate(orderRecord);
    }