kongdeqiang
2024-03-18 e68a90d29289858e4106a0fb5e615408b41ea102
src/main/java/com/boying/controller/phone/PayController.java
@@ -16,6 +16,7 @@
import com.boying.util.HTTPEntityUtil;
import com.google.gson.Gson;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.PostMapping;
@@ -42,7 +43,7 @@
 * @createTime 2022年11月22日 15:19:00
 */
@RestController
@RequestMapping("ffPay")
@RequestMapping("ffzf/ffPay")
@RequiredArgsConstructor
public class PayController extends BaseController {
@@ -50,9 +51,11 @@
    private final TicketService ticketService;
    private final TicketBlackService ticketBlackService;
    private final OutParkService outParkService;
    @Autowired
    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 +170,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 +385,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 +502,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 +527,9 @@
            if(orderRecord.getType()==0){
                updateTicket(orderRecord.getQueryId(),status);
            }else{
                s += "修改出场表:"+orderRecord.getQueryId()+",status==="+status+",\n";
                writeTxt(s);
                updateOutPark(orderRecord.getQueryId(),status);
            }
        }
        writeTxt(s);
    }
    //更新罚单的状态
@@ -436,6 +542,12 @@
            if(status.equals("03")){
                ticket.setPayStatus(1);
                dealCar(ticket.getCarNo());
                if(StringUtils.isBlank(ticket.getNumber()) || "--".equals(ticket.getNumber())){
                    ticket = ticketService.getNumber(ticket);
                    ticket.setPush(0);
                    ticketService.uploadInfo(ticket);
                    return;
                }
            }
            if(status.equals("04")||status.equals("05")||status.equals("06")){
                ticket.setPayStatus(2);
@@ -457,9 +569,13 @@
            wrapper1.lambda()
                    .eq(TicketBlack::getCarNo,carNo);
            List<TicketBlack> all = ticketBlackService.list(wrapper1);
            for(TicketBlack ticketBlack:all){
                ticketBlack.setStatus(1);
                ticketBlack.setBlackType(0);
            if(all.size()>0){
                TicketBlack ticketBlack = all.get(0);
                ticketBlack.setViolationCount(ticketBlack.getViolationCount() == 0?0:ticketBlack.getViolationCount() - 1);
                if(ticketBlack.getIsActive() == 0){
                    ticketBlack.setStatus(1);
                    ticketBlack.setBlackType(0);
                }
                ticketBlackService.saveOrUpdate(ticketBlack);
            }
        }
@@ -510,9 +626,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);
    }