kongdeqiang
2023-06-08 d0c8bb3267a8a666b9a7ad1ae406c88b2fceff58
修改
3个文件已修改
5个文件已添加
325 ■■■■■ 已修改文件
src/main/java/com/boying/controller/phone/PayController.java 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/controller/phone/TicketController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/entity/NowPayOrder.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/job/PayResult2Scheduled.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/job/PayResultScheduled.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/mapper/NowPayOrderMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/service/NowPayOrderService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/boying/service/impl/NowPayOrderServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {
@@ -167,7 +167,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();
        }
@@ -381,6 +381,92 @@
    }
    /**
     * 缴款书
     */
    @PostMapping("zhifa")
    public Object zhifa(Long 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.getStatus() == 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.getStatus() == 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 {
            return null;
        }
    }
@@ -392,24 +478,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 +503,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 +592,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);
    }
src/main/java/com/boying/controller/phone/TicketController.java
@@ -50,6 +50,8 @@
    private final StreetLogoService streetLogoService;
    private final NowPayOrderService nowPayOrderService;
    //图片回显
    @RequestMapping(value = "/showImg", method = RequestMethod.GET)
    public void getAwardAsByteArray(HttpServletResponse response, HttpServletRequest request) throws IOException {
@@ -325,7 +327,17 @@
    @PostMapping("/jiaofei" )
    public R jiaofei(Integer id) {
        Ticket byId = ticketService.getById(id);
        byId.setContent(violationTypeService.getById(byId.getViolationTypeId()).getContent());
        return R.ok(byId);
        if(byId.getPayStatus() == 1){
            return R.failed("此罚单已支付");
        }else if(byId.getMoney() == 0){
            return R.failed("此罚单无需缴费");
        }else {
            NowPayOrder nowPayOrder = new NowPayOrder();
            nowPayOrder.setQueryId(byId.getId());
            nowPayOrder.setType(0);
            nowPayOrder.setCarNo(byId.getCarNo());
            nowPayOrderService.saveOrder(nowPayOrder);
            return R.ok("请扫码缴费");
        }
    }
}
src/main/java/com/boying/entity/NowPayOrder.java
New file
@@ -0,0 +1,38 @@
package com.boying.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.boying.common.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName NowPayOrder.java
 * @Description TODO
 * @createTime 2023年06月07日 16:46:00
 */
@Data
@TableName("now_pay_order")
@javax.persistence.Table(name = "now_pay_order")
@Entity
@org.hibernate.annotations.Table(appliesTo = "now_pay_order", comment = "现场订单支付表")
@ApiModel(value = "现场订单支付表")
public class NowPayOrder extends BaseEntity<NowPayOrder> {
    @ApiModelProperty(value = "0:执法  1:停车  2:黑名单")
    @Column(columnDefinition = "int comment '0:执法  1:停车  2:黑名单'")
    private int type;
    @ApiModelProperty(value = "出停车场id或罚单id")
    @Column(columnDefinition = "int comment '出停车场id或罚单id'")
    private Integer queryId;
    @ApiModelProperty(value = "车牌号")
    @Column(columnDefinition = "varchar(50) comment '车牌号'")
    private String carNo;
}
src/main/java/com/boying/job/PayResult2Scheduled.java
New file
@@ -0,0 +1,88 @@
package com.boying.job;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.boying.common.ReturnData;
import com.boying.common.SystemConfigProperties;
import com.boying.controller.phone.PayController;
import com.boying.entity.Barrier;
import com.boying.entity.OutPark;
import com.boying.entity.Ticket;
import com.boying.service.BarrierService;
import com.boying.service.OutParkService;
import com.boying.service.TicketService;
import com.boying.util.HTTPEntityUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class PayResult2Scheduled {
   @Autowired
   private TicketService ticketService;
    @Autowired
    private SystemConfigProperties systemConfigProperties;
    @Autowired
    private PayController payController;
    Boolean taskFlag = false;
    //@Scheduled(cron = "0/2 * * * * ?")
    public void execute() throws Exception {
        if(taskFlag == true){
            System.out.println("正在运行,强制退出-------》");
            return;
        }
        taskFlag = true;
        QueryWrapper<Ticket> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .eq(Ticket::getStatus,0)
                .ne(Ticket::getMoney,0)
                .isNotNull(Ticket::getPayCode)
                .orderByDesc(Ticket::getCreateTime);
        List<Ticket> list = ticketService.list(wrapper);
       if(list.size()>0){
           for (Ticket ticket : list) {
               doPay(ticket);
           }
       }
        taskFlag = false;
    }
    public void doPay(Ticket ticket){
        ThreadUtil.execute(() -> {
            //查询缴款码记录更新
            Map<String,Object> map1 = new HashMap<>();
            map1.put("eticketnum",ticket.getPayCode());
            String urlRoad = systemConfigProperties.getETICKET();
            String urlIp = systemConfigProperties.getIp4();
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map1), ReturnData.class);
            log.info("查询是否支付成功返回为:"+entity.getBody());
            System.out.println("查询是否支付成功返回为:"+entity.getBody());
            if(entity.getBody().getCode() == 1){
                //更新订单
                payController.updateOrderRecord(ticket.getId(),"03");
            }
        });
    }
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            String s= i+"";
            ThreadUtil.execute(() -> {
              //  System.out.println(s);
            });
        }
    }
}
src/main/java/com/boying/job/PayResultScheduled.java
@@ -82,7 +82,7 @@
            System.out.println("查询是否支付成功返回为:"+entity.getBody());
            if(entity.getBody().getCode() == 1){
                //更新订单
                payController.updateOrderRecord(outPark.getPayCode(),"03");
               // payController.updateOrderRecord(outPark.getPayCode(),"03");
            }
        });
src/main/java/com/boying/mapper/NowPayOrderMapper.java
New file
@@ -0,0 +1,18 @@
package com.boying.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.boying.entity.LedShow;
import com.boying.entity.NowPayOrder;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName NowPayOrderMapper.java
 * @Description TODO
 * @createTime 2023年06月07日 16:50:00
 */
@Mapper
public interface NowPayOrderMapper extends BaseMapper<NowPayOrder> {
}
src/main/java/com/boying/service/NowPayOrderService.java
New file
@@ -0,0 +1,16 @@
package com.boying.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.boying.entity.NowPayOrder;
import com.boying.entity.OrderRecord;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName NowPayOrderService.java
 * @Description TODO
 * @createTime 2023年06月07日 16:51:00
 */
public interface NowPayOrderService extends IService<NowPayOrder> {
    void saveOrder(NowPayOrder nowPayOrder);
}
src/main/java/com/boying/service/impl/NowPayOrderServiceImpl.java
New file
@@ -0,0 +1,41 @@
package com.boying.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.boying.entity.LedShow;
import com.boying.entity.NowPayOrder;
import com.boying.mapper.LedShowMapper;
import com.boying.mapper.NowPayOrderMapper;
import com.boying.service.LedShowService;
import com.boying.service.NowPayOrderService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author kdq
 * @version 1.0.0
 * @ClassName NowPayOrderServiceImpl.java
 * @Description TODO
 * @createTime 2023年06月07日 16:52:00
 */
@Service
@AllArgsConstructor
public class NowPayOrderServiceImpl extends ServiceImpl<NowPayOrderMapper, NowPayOrder> implements NowPayOrderService {
    @Override
    public void saveOrder(NowPayOrder nowPayOrder) {
        QueryWrapper<NowPayOrder> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(NowPayOrder::getType,nowPayOrder.getType());
        List<NowPayOrder> list = list(wrapper);
        if(list.size()>0){
            for (NowPayOrder payOrder : list) {
                removeById(payOrder);
            }
            save(nowPayOrder);
        }else {
            save(nowPayOrder);
        }
    }
}