src/main/java/com/boying/controller/phone/PayController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/controller/phone/TicketController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/entity/NowPayOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/job/PayResult2Scheduled.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/job/PayResultScheduled.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/mapper/NowPayOrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/service/NowPayOrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/boying/service/impl/NowPayOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | 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); } } }