From 165a78d52aee60518bba1806d089f0dbe1b9b0bd Mon Sep 17 00:00:00 2001 From: 18382465783 <18382465783> Date: Wed, 27 Mar 2024 09:18:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=B7=9D=E9=80=B8=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cyc/dto/CYCConnectorChargeStatusInfo.java | 132 ++++++++++++++++++ .../java/com/xhpc/evcs/config/EvcsFilter.java | 6 + .../CYCNotificationStationInfoController.java | 119 ++++++++++++++++ .../NotificationCancelOrderTask.java | 2 +- .../NotificationChargeOrderInfoTask.java | 2 +- .../NotificationEquipChargeStatusTask.java | 13 +- .../NotificationStartChargeResultTask.java | 12 ++ .../NotificationStationStatusTask.java | 2 +- .../NotificationStopChargeResultTask.java | 2 +- .../java/com/xhpc/common/api/EvcsService.java | 8 ++ .../com/xhpc/common/api/PileOrderService.java | 2 +- .../xhpc/common/api/RefundOrderService.java | 7 + .../factory/EvcsServiceFallbackFactory.java | 6 + .../factory/RefundOrderFallbackFactory.java | 4 + .../order/api/XhpcPileOrderController.java | 24 ++-- .../order/mapper/XhpcChargeOrderMapper.java | 9 ++ .../impl/XhpcChargeOrderServiceImpl.java | 62 +++++++- .../impl/XhpcRealTimeOrderServiceImpl.java | 51 ++++++- .../mapper/XhpcChargeOrderMapper.xml | 17 +++ .../controller/WxPaymentController.java | 20 ++- .../controller/XhpcRefundAuditController.java | 66 +++++++-- .../controller/XhpcRefundOrderController.java | 45 +++++- .../XhpcRefundOriginalOrderController.java | 83 ++++++++++- .../payment/mapper/XhpcRefundAuditMapper.java | 2 + .../payment/mapper/XhpcRefundOrderMapper.java | 4 + .../XhpcUserAccountStatementMapper.java | 2 + .../service/IXhpcRefundAuditService.java | 2 + .../service/IXhpcRefundOrderService.java | 12 ++ .../IXhpcRefundOriginalOrderService.java | 2 +- .../IXhpcUserAccountStatementService.java | 2 + .../impl/XhpcRefundAuditServiceImpl.java | 5 + .../impl/XhpcRefundOrderServiceImpl.java | 45 ++++++ .../XhpcRefundOriginalOrderServiceImpl.java | 67 +++++++-- .../XhpcUserAccountStatementServiceImpl.java | 23 ++- .../mapper/XhpcRefundAuditMapper.xml | 38 +++++ .../mapper/XhpcRefundOrderMapper.xml | 23 ++- .../mapper/XhpcUserAccountStatementMapper.xml | 33 +++++ .../impl/XhpcAppInternetUserServiceImpl.java | 4 +- .../resources/mapper/XhpcCommonMapper.xml | 2 +- 39 files changed, 894 insertions(+), 66 deletions(-) create mode 100644 evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/cyc/dto/CYCConnectorChargeStatusInfo.java create mode 100644 evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/cyc/api/CYCNotificationStationInfoController.java diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/cyc/dto/CYCConnectorChargeStatusInfo.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/cyc/dto/CYCConnectorChargeStatusInfo.java new file mode 100644 index 00000000..e5862860 --- /dev/null +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/cyc/dto/CYCConnectorChargeStatusInfo.java @@ -0,0 +1,132 @@ +package com.xhpc.evcs.cyc.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +import javax.persistence.Column; + +/** + * @author yuyang + * @date 2023-09-07 15:16 + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "StartChargeSeq", + "StartChargeSeqStat", + "ConnectorID", + "ConnectorStatus", + "CurrentA", + "VoltageA", + "Soc", + "StartTime", + "EndTime", + "TotalPower", + "ElecMoney", + "SeviceMoney", + "TotalMoney" +}) +@Data +public class CYCConnectorChargeStatusInfo { + /** + * 充电订单号 + */ + @JsonProperty("StartChargeSeq") + public String startChargeSeq; + + /** + * 充电订单状态 + */ + @JsonProperty("StartChargeSeqStat") + public Integer startChargeSeqStat; + /** + * 充电设备接 口编码 + */ + @JsonProperty("ConnectorID") + public String connectorID; + /** + * 充电设备接 口状态 + */ + @JsonProperty("ConnectorStatus") + public Integer connectorStatus; + + + +// /** +// * 车辆识别码 +// */ +// @JsonProperty("Vin") +// public String vin; + /** + * A 相电流 + */ + @JsonProperty("CurrentA") + public Double currentA; +// /** +// * B 相电流 +// */ +// @JsonProperty("CurrentB") +// public Double currentB; +// /** +// * C 相电流 +// */ +// @JsonProperty("CurrentC") +// public Double currentC; + /** + * A 相电压 + */ + @JsonProperty("VoltageA") + public Double voltageA; +// /** +// * B 相电压 +// */ +// @JsonProperty("VoltageB") +// public Double voltageB; +// /** +// * C 相电压 +// */ +// @JsonProperty("VoltageC") +// public Double voltageC; + /** + * 电池剩余电量 + */ + @JsonProperty("Soc") + @Column(columnDefinition = "Decimal(10,1)") + public Double soc; + /** + * 开始充电时间 + */ + @JsonProperty("StartTime") + public String startTime; + /** + * 本次采样时间 + */ + @JsonProperty("EndTime") + public String endTime; + /** + * 累计充电量 + */ + @JsonProperty("TotalPower") + @Column(columnDefinition = "Decimal(10,2)") + public Double totalPower; + /** + * 累计电费 + */ + @JsonProperty("ElecMoney") + @Column(columnDefinition = "Decimal(10,2)") + public Double elecMoney; + /** + * 累计服务费 + */ + @JsonProperty("SeviceMoney") + @Column(columnDefinition = "Decimal(10,2)") + public Double seviceMoney; + /** + * 累计总金额 + */ + @JsonProperty("TotalMoney") + @Column(columnDefinition = "Decimal(10,2)") + public Double totalMoney; + +} diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/config/EvcsFilter.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/config/EvcsFilter.java index c8a50dd6..f3f1cf87 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/config/EvcsFilter.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/config/EvcsFilter.java @@ -109,6 +109,12 @@ public class EvcsFilter extends OncePerRequestFilter { AuthSecretToken.SECRET_TOKEN_TYPE_IN).orElse(null); handleQueryToken(request, response, chain, requestWrapper, bodyString, commonRequest, responseWrapper, authSecretTokenIn); + }else if (servletPath.endsWith("/v20/query_token")) { + log.info("================新接口过滤 token========operatorId=========="+operatorId); + authSecretTokenIn = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType(operatorId, + AuthSecretToken.SECRET_TOKEN_TYPE_IN).orElse(null); + handleQueryToken(request, response, chain, requestWrapper, bodyString, commonRequest, + responseWrapper, authSecretTokenIn); } else { if (authorization != null && authorization.startsWith("Bearer ")) { String token = authorization.replace("Bearer ", ""); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/cyc/api/CYCNotificationStationInfoController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/cyc/api/CYCNotificationStationInfoController.java new file mode 100644 index 00000000..2ae67226 --- /dev/null +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/cyc/api/CYCNotificationStationInfoController.java @@ -0,0 +1,119 @@ +package com.xhpc.evcs.cyc.api; + +import cn.hutool.core.date.DateUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.xhpc.common.data.redis.CacheRateModel; +import com.xhpc.common.data.redis.CacheRealtimeData; +import com.xhpc.evcs.cyc.dto.CYCConnectorChargeStatusInfo; +import com.xhpc.evcs.domain.AuthSecretToken; +import com.xhpc.evcs.dto.CommonRequest; +import com.xhpc.evcs.dto.ConnectorStatusInfoReq; +import com.xhpc.evcs.jpa.AuthSecretTokenRepository; +import com.xhpc.evcs.notification.CoreDispatcher; +import com.xhpc.evcs.utils.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; +import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT; + +@Slf4j +@RestController +public class CYCNotificationStationInfoController extends CoreDispatcher { + + @Resource + AuthSecretTokenRepository authSecretTokenRepository; + /** + * 设备充电中状态变化推送(川逸充) --已推送 + * 订单结束再推送 + */ + @PostMapping("/v20/getCYCNotificationConnectorChargeStatus") + public void getCYCNotificationConnectorChargeStatus(@RequestBody Map orderMap){ + System.out.println("==================设备充电中状态变化推送(川逸充) =========================="); + //先查订单号 在查实时数据 最后计算金额 + try { + String orderNo = orderMap.get("orderNo").toString(); + CacheRealtimeData lord = REDIS.getCacheObject("order:"+orderNo+".lord"); + String formatTime = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"); + Map cacheMap =REDIS.getCacheMap("order:"+orderNo+".notification"); + if(cacheMap==null || cacheMap.get("startTime")==null || "".equals(cacheMap.get("startTime"))){ + cacheMap.put("lastPushTime", formatTime); + }else{ + cacheMap.put("lastPushTime", cacheMap.get("pushTime")); + } + cacheMap.put("pushTime", formatTime); + CYCConnectorChargeStatusInfo cdConnectorChargeStatusInfo = new CYCConnectorChargeStatusInfo(); + Map cacheMapOrder = REDIS.getCacheMap("order:"+orderNo); + if(cacheMap.get("startTime")==null ){ + if(cacheMapOrder !=null && cacheMapOrder.get("startTime")!=null){ + cdConnectorChargeStatusInfo.setStartTime(cacheMapOrder.get("startTime").toString()); + cacheMap.put("startTime", cacheMapOrder.get("startTime").toString()); + } + }else{ + cdConnectorChargeStatusInfo.setStartTime(cacheMap.get("startTime").toString()); + } + if(cacheMapOrder !=null && cacheMapOrder.get("status")!=null){ + if("已结束".equals(cacheMapOrder.get("status").toString())){ + cdConnectorChargeStatusInfo.setConnectorStatus(1); + cdConnectorChargeStatusInfo.setStartChargeSeqStat(4); + }else{ + cdConnectorChargeStatusInfo.setConnectorStatus(3); + cdConnectorChargeStatusInfo.setStartChargeSeqStat(2); + } + } + REDIS.setCacheMap("order:"+orderNo+".notification",cacheMap); + cdConnectorChargeStatusInfo.setStartChargeSeq(lord.getOrderNo()); + cdConnectorChargeStatusInfo.setConnectorID(lord.getPileNo()+lord.getGunId()); + cdConnectorChargeStatusInfo.setCurrentA((double)(lord.getWorkingCurrent()/10)); + cdConnectorChargeStatusInfo.setVoltageA((double)(lord.getWorkingVoltage()/10)); + cdConnectorChargeStatusInfo.setSoc((double)lord.getSoc()); + cdConnectorChargeStatusInfo.setEndTime(formatTime); + + BigDecimal chargingDegree = new BigDecimal(lord.getChargingDegree()).divide(new BigDecimal(10000).setScale(2, BigDecimal.ROUND_UP)); + BigDecimal amountCharged = new BigDecimal(lord.getAmountCharged()).divide(new BigDecimal(10000).setScale(2, BigDecimal.ROUND_UP)); + cdConnectorChargeStatusInfo.setTotalPower(chargingDegree.doubleValue()); + cdConnectorChargeStatusInfo.setTotalMoney(amountCharged.doubleValue()); + + Map cacheOrder = REDIS.getCacheMap("order:" + orderNo); + + if(cacheOrder !=null && cacheOrder.get("rateModelId") !=null){ + CacheRateModel rateModel = REDIS.getCacheObject("rateModel:" + cacheOrder.get("rateModelId").toString()); + if(rateModel.getT1SvcPrice().equals(rateModel.getT2SvcPrice()) && rateModel.getT3SvcPrice().equals(rateModel.getT4SvcPrice()) && + rateModel.getT1SvcPrice().equals(rateModel.getT3SvcPrice())){ + + BigDecimal divide = new BigDecimal(rateModel.getT1SvcPrice()).divide(new BigDecimal(100000)).setScale(2, BigDecimal.ROUND_UP); + + BigDecimal bigDecimal = chargingDegree.multiply(divide).setScale(2, BigDecimal.ROUND_UP); + cdConnectorChargeStatusInfo.setSeviceMoney(bigDecimal.doubleValue()); + BigDecimal subtract = amountCharged.subtract(bigDecimal); + cdConnectorChargeStatusInfo.setElecMoney(subtract.doubleValue()); + }else{ + //暂时不考虑不同服务费 默认为0.2 + BigDecimal multiply = chargingDegree.multiply(new BigDecimal(0.2)).setScale(2, BigDecimal.ROUND_UP);; + cdConnectorChargeStatusInfo.setSeviceMoney(multiply.doubleValue()); + BigDecimal subtract = amountCharged.subtract(multiply); + cdConnectorChargeStatusInfo.setElecMoney(subtract.doubleValue()); + } + AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndSecretTokenType("MA6CC2LK7", SECRET_TOKEN_TYPE_OUT).orElse(null); + //Map map =new HashMap<>(); + //map.put("ConnectorChargeStatusInfo",cdConnectorChargeStatusInfo); + String data = JSONUtil.toJSONString(cdConnectorChargeStatusInfo); + CommonRequest commonRequest = new CommonRequest<>(); + commonRequest.setData(data); + String result = ok(commonRequest, "/notification_connector_charge_status", authSecretTokenOut); + System.out.println("===设备充电中状态变化推送====result========"+result); + } + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } +} diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationCancelOrderTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationCancelOrderTask.java index 15be4e16..45870d4e 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationCancelOrderTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationCancelOrderTask.java @@ -31,7 +31,7 @@ public class NotificationCancelOrderTask extends CoreDispatcher { //private Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoTask.class); //推送不开放 - @Scheduled(fixedRate = 1000 * 15) + //@Scheduled(fixedRate = 1000 * 15) public void run() throws JsonProcessingException { //Getting the orders, which need to be notified. diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java index 03aaa773..e1398cb3 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java @@ -39,7 +39,7 @@ public class NotificationChargeOrderInfoTask extends CoreDispatcher { private final Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoTask.class); //推送不开放 - @Scheduled(fixedRate = 1000 * 15) + //@Scheduled(fixedRate = 1000 * 15) public void run() throws JsonProcessingException { Collection orderKeys = REDIS.keys("order:*"); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java index 68af472b..c0edf640 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java @@ -49,7 +49,7 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher { * @throws IOException */ //推送不开放 - @Scheduled(fixedRate = 1000 * 30) + //@Scheduled(fixedRate = 1000 * 30) public void run() throws IOException { List authSecretTokenOutList = authSecretTokenRepository.findBySecretTokenType(SECRET_TOKEN_TYPE_OUT); @@ -60,6 +60,10 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher { final Map cacheGun = REDIS.getCacheMap(gunkey); final String status = (String) cacheGun.get("status"); if (status != null) { + if(cacheGun.get("cycOrder") !=null){ + //川逸充订单不走实时充电状态接口 + continue; + } if (isInteger(status)) { String orderkey = (String) cacheGun.get("orderkey"); if (orderkey == null) { @@ -219,9 +223,14 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher { } String data = JSONUtil.toJSONString(equipChargeStatus); CommonRequest commonRequest = new CommonRequest<>(); - + System.out.println("===============充电结束状态推送========================"); + System.out.println("===============充电结束状态推送============data============"+data); + System.out.println("===============充电结束状态推送========================"); commonRequest.setData(data); String responseBody = ok(commonRequest, "/notification_equip_charge_status", authSecretTokenOut); + + System.out.println("===============充电结束状态推送===========responseBody============="+responseBody); + System.out.println("===============充电结束状态推送========================"); EquipChargeStatusRes equipChargeStatusRes = DTOJsonHelper.parseResponseData(responseBody, EquipChargeStatusRes.class, authSecretTokenOut); if (equipChargeStatusRes != null && equipChargeStatusRes.getSuccStat() != 0) { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java index 7bd45b51..e248bb56 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java @@ -76,17 +76,29 @@ public class NotificationStartChargeResultTask extends CoreDispatcher { String operatorIdEvcs = "MA6DFCTD5"; String data = JSONUtil.toJSONString(notificationStartChargeResultRequestData); + + System.out.println("===============启动推送情况========================"); + System.out.println("===============启动推送情况============orderNo============"+orderNo); + System.out.println("===============启动推送情况============data============"+data); + System.out.println("===============启动推送情况========================"); + CommonRequest commonRequest = new CommonRequest<>(); commonRequest.setData(data); String responseBody = ok(commonRequest, "/notification_start_charge_result", authSecretTokenOut); NotificationStartStopChargeResultResponse notificationStartStopChargeResultResponse = DTOJsonHelper.parseResponseData(responseBody, NotificationStartStopChargeResultResponse.class, authSecretTokenOut); + + System.out.println("===============启动推送情况============responseBody============"+responseBody); + System.out.println("===============启动推送情况========================"); + if (null != notificationStartStopChargeResultResponse) { //Ensuring that only when startChargeNotificationStat equals 1 won't be notified. if (notificationStartStopChargeResultResponse.getSuccStat() == 0) { + System.out.println("===============启动推送成功========orderNo================"+orderNo); REDIS.setCacheMapValue("pushOrder:".concat(orderNo), "startChargeNotificationStat", 1); } else { + System.out.println("===============启动推送失败========orderNo================"+orderNo); Integer startChargeNotificationStat = REDIS.getCacheMapValue("pushOrder:".concat(orderNo), "startChargeNotificationStat"); if (startChargeNotificationStat == 0) { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java index 3a48536e..a425a723 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java @@ -50,7 +50,7 @@ public class NotificationStationStatusTask extends CoreDispatcher { private XhpcTerminalRepository terminalRepository; //推送不开放 - @Scheduled(fixedRate = 1000 * 45) + //@Scheduled(fixedRate = 1000 * 45) protected void run() throws IOException { Collection stationTerminalKeys = REDIS.keys("stationTerminalStatus:*"); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java index 6ea8af28..a7d67af8 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java @@ -26,7 +26,7 @@ public class NotificationStopChargeResultTask extends CoreDispatcher { @Autowired private AuthSecretTokenRepository authSecretTokenRepository; - @Scheduled(fixedRate = 1000 * 3) + //@Scheduled(fixedRate = 1000 * 3) public void run() throws Exception { notifyService(); diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/EvcsService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/EvcsService.java index 41d4d1d4..a853261e 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/EvcsService.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/EvcsService.java @@ -5,8 +5,12 @@ import com.xhpc.common.core.constant.ServiceNameConstants; import com.xhpc.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.Map; + /** * * @author yuyang @@ -18,4 +22,8 @@ public interface EvcsService { //市平台---设备充电中状态变化推送 @GetMapping("/v10/getNotificationConnectorChargeStatus") R getNotificationConnectorChargeStatus(@RequestParam("serialNumber") String serialNumber); + + + @PostMapping("/v20/getCYCNotificationConnectorChargeStatus") + R getCYCNotificationConnectorChargeStatus(@RequestBody Map orderMap); } diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/PileOrderService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/PileOrderService.java index d348b7cc..3a436699 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/PileOrderService.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/PileOrderService.java @@ -107,7 +107,7 @@ public interface PileOrderService { /** * 川逸充启动充电 */ - @GetMapping("/chargeOrder/cycStartUp") + @GetMapping("/api/chargeOrder/cycStartUp") R cycStartUp(@RequestParam(value = "userId") Long userId, @RequestParam(value = "serialNumber") String serialNumber, @RequestParam(value = "type") Integer type, @RequestParam(value = "source") Integer source, @RequestParam(value = "money") BigDecimal money, @RequestParam(value = "phone") String phone, @RequestParam(value = "PlateNum") String PlateNum); diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/RefundOrderService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/RefundOrderService.java index 4cf37ebc..9d486ee3 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/RefundOrderService.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/RefundOrderService.java @@ -20,4 +20,11 @@ public interface RefundOrderService { @GetMapping("/refund/order/orderCheckOut") R sendNotice(@RequestParam(value = "amount") String amount,@RequestParam(value = "openid") String openid,@RequestParam(value = "source") Integer source,@RequestParam(value = "type") String type,@RequestParam(value = "userId") String userId,@RequestParam(value = "tenantId")String tenantId,@RequestParam(value = "remark")String remark); + + + + @GetMapping("/refund/order/cycOrderCheckOut") + R cycOrderCheckOut(@RequestParam(value = "amount") String amount,@RequestParam(value = "source") Integer source,@RequestParam(value = "userId") String userId,@RequestParam(value = "tenantId")String tenantId); + + } diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/EvcsServiceFallbackFactory.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/EvcsServiceFallbackFactory.java index bf4d24ec..135c93da 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/EvcsServiceFallbackFactory.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/EvcsServiceFallbackFactory.java @@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import java.util.HashMap; +import java.util.Map; /** * @author yuyang @@ -34,6 +35,11 @@ public class EvcsServiceFallbackFactory implements FallbackFactory return R.fail(500,"Evcs服务--》设备充电中状态变化推送接口失败:" + serialNumber); } + @Override + public R getCYCNotificationConnectorChargeStatus(Map orderMap) { + return R.fail(500,"Evcs服务--》川逸充设备充电结束状态变化推送接口失败:" + orderMap); + } + }; } } diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/RefundOrderFallbackFactory.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/RefundOrderFallbackFactory.java index 662512ac..39083512 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/RefundOrderFallbackFactory.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/RefundOrderFallbackFactory.java @@ -25,6 +25,10 @@ public class RefundOrderFallbackFactory implements FallbackFactory10000){ message = tenantId + UserTypeUtil.CYCUSER + userId; } - if(xhpcChargeOrder.getSource()==0){ + if(xhpcChargeOrder.getSource()==0 || (UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000)){ map.put("code", code); JSONObject json = new JSONObject(map); //消息对了内容 - if(code !=500){ - webSocketService.getMessage(message,json.toString()); - } + webSocketService.getMessage(message,json.toString()); } return R.ok(); } @@ -245,13 +243,15 @@ public class XhpcPileOrderController extends BaseController { XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getSerialNumberMessage(orderNo); - if(xhpcChargeOrder==null|| xhpcChargeOrder.getUserId()==null){ logger.info("桩实时数据回调接口--无效订单号>>>>>orderNo:" + orderNo); return R.fail(500,"无效订单号"); } if(xhpcChargeOrder.getStatus()==null){ xhpcChargeOrder.setStatus(0); + if(xhpcChargeOrder.getInternetSerialNumber()!=null && xhpcChargeOrder.getSource()==null){ + xhpcChargeOrder.setSource(1); + } } Map cacheMap = redisService.getCacheMap("order:"+orderNo); if(cacheMap==null || cacheMap.get("startType")==null ){ @@ -369,7 +369,7 @@ public class XhpcPileOrderController extends BaseController { xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); Map map = xhpcRealTimeOrderService.addOrderTime(cacheRealtimeData, xhpcChargeOrder, orderNo, 1); - if(!UserTypeUtil.INTERNET_TYPE.equals(source)){ + if(!UserTypeUtil.INTERNET_TYPE.equals(source) ||(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000)){ //存入换成 JSONObject json = new JSONObject(map); String message = ""; @@ -490,7 +490,7 @@ public class XhpcPileOrderController extends BaseController { xhpcChargeOrder.setStatus(2); xhpcChargeOrder.setChargingDegree(totalPowerQuantity); xhpcChargeOrder.setUpdateTime(new Date()); - xhpcChargeOrder.setErroRemark("结算电量大于400度"); + xhpcChargeOrder.setErroRemark("结算电量大于500度"); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); return R.fail(500,"无效订单号:"+orderNo); } @@ -516,7 +516,7 @@ public class XhpcPileOrderController extends BaseController { map.put("chargingOrderId", xhpcChargeOrder.getChargeOrderId()); JSONObject json = new JSONObject(map); - if(!UserTypeUtil.INTERNET_TYPE.equals(source)){ + if(!UserTypeUtil.INTERNET_TYPE.equals(source) && (UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000)){ String message =""; if(UserTypeUtil.USER_TYPE.equals(source)){ message=tenantId+UserTypeUtil.USER+userId; @@ -618,11 +618,11 @@ public class XhpcPileOrderController extends BaseController { }else{ money = powerPrice.add(servicePrice); } - if(money.compareTo(new BigDecimal(300)) > -1){ - logger.info("结算金额大于300>>"+money+">>>orderNo:" + orderNo); + if(money.compareTo(new BigDecimal(500)) > -1){ + logger.info("结算金额大于500>>"+money+">>>orderNo:" + orderNo); xhpcChargeOrder.setStatus(2); xhpcChargeOrder.setUpdateTime(new Date()); - xhpcChargeOrder.setErroRemark("充电金额大于300元"); + xhpcChargeOrder.setErroRemark("充电金额大于500元"); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); return R.fail(500,"无效订单号:"+orderNo); } @@ -713,7 +713,7 @@ public class XhpcPileOrderController extends BaseController { xhpcHistoryOrder.setVinNormal(xhpcChargeOrder.getVinNormal()); Map userMessage =new HashMap<>(); - if(!UserTypeUtil.INTERNET_TYPE.equals(source)){ + if(!UserTypeUtil.INTERNET_TYPE.equals(source)||(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>1000)){ R user = userTypeService.getUser(null, userId, source, null, tenantId); if(user !=null && user.getData() !=null ){ userMessage = (Map)user.getData(); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java index 04c37f45..d9f76835 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargeOrderMapper.java @@ -67,6 +67,11 @@ public interface XhpcChargeOrderMapper { * @return */ int updateCustomersBalance(@Param("userId")Long userId, @Param("balance")BigDecimal balance); + + /** + * 更新川逸充用户余额 + */ + public int updateAppInternetUserBalance(@Param("userId")Long userId, @Param("balance")BigDecimal balance); /** * 判断用户是否在充电中 */ @@ -235,4 +240,8 @@ public interface XhpcChargeOrderMapper { //根据VIN码获取用户 Map getvVinNumber(@Param("vinNumber")String vinNumber); + //获取充电站信息 + Map getChargingStationById(@Param("chargingStationId")Long chargingStationId); + + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java index b9779967..5e08354d 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java @@ -53,6 +53,7 @@ import java.util.concurrent.Executors; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; import static com.xhpc.common.data.redis.StaticBeanUtil.genOrder; /** @@ -395,7 +396,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar if(order ==null){ return AjaxResult.error(1104, "未获取到充电订单,拨打客服电话或按急停按钮停止充电"); }else{ - if(order.getSource()==1){ + if(order.getSource()==1 && order.getUserId()<10000){ return AjaxResult.error(1104, "请在启动方停止充电"); } if(!order.getUserId().equals(userId)){ @@ -453,6 +454,8 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar return xhpcChargeOrderMapper.updateCommunityBalance(userId, balance); }else if(UserTypeUtil.CUSTOMERS_TYPE.equals(source)){ return xhpcChargeOrderMapper.updateCustomersBalance(userId, balance); + }else if(UserTypeUtil.INTERNET_TYPE.equals(source)){ + return xhpcChargeOrderMapper.updateAppInternetUserBalance(userId, balance); } return 0; } @@ -1317,7 +1320,7 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar R r = new R(); //川逸充的对接平爱operatorId - String operatorIdEvcs =""; + String operatorIdEvcs ="MA6CC2LK7"; int resTime = xhpcInternetUserMapper.selectByOperatorIdEvcs(operatorIdEvcs); if (resTime == 0) { r.setCode(500); @@ -1440,20 +1443,43 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar XhpcChargeOrder xhpcChargeOrder =new XhpcChargeOrder(); xhpcChargeOrder.setChargingStationId(chargingStationId); - xhpcChargeOrder.setInternetSerialNumber(operatorIdEvcs.substring(0, 9)+format1 + StaticBeanUtil.seqDec("gun:" + serialNumber + ".seqdec")); + xhpcChargeOrder.setInternetSerialNumber(operatorIdEvcs+format1 + StaticBeanUtil.seqDec("gun:" + serialNumber + ".seqdec")); xhpcChargeOrder.setSerialNumber(orderNo); xhpcChargeOrder.setDriverId(phone); xhpcChargeOrder.setChargingAmt(money.intValue()); xhpcChargeOrder.setPlateNum(PlateNum); xhpcChargeOrder.setStatus(-1); - xhpcChargeOrder.setCreateTime(new Date()); + Date date1 = new Date(); + xhpcChargeOrder.setCreateTime(date1); xhpcChargeOrder.setTerminalId(terminalId); xhpcChargeOrder.setPower(power == null ? "120" : power.toString()); xhpcChargeOrder.setSource(1); xhpcChargeOrder.setUserId(userId); xhpcChargeOrder.setChargingMode("川逸充"); + + Map chargingStationMap = xhpcChargeOrderMapper.getChargingStationById(chargingStationId); + if(chargingStationMap==null){ + r.setCode(500); + r.setMsg("无效场站"); + return r; + } int res = xhpcChargeOrderMapper.addXhpcChargeOrder(xhpcChargeOrder); - logger.info("<<<<<<<<<<<<<<<<<<<<<<<<第三方启动订单号>>>>>>>>>>>>>>>>>:" + xhpcChargeOrder.getInternetSerialNumber()); + logger.info("<<<<<<<<<<<<<<<<川逸充<<<<<<<<第三方启动订单号>>>>>>>>>>>>>>>>>:" + xhpcChargeOrder.getInternetSerialNumber()); + + String connectorID = chargingStationMap.get("areaCode").toString(); + if(chargingStationId>999 && chargingStationId<=9999){ + connectorID =connectorID+chargingStationId.toString(); + }else if(chargingStationId>99 && chargingStationId<=999){ + connectorID =connectorID+"0"+chargingStationId.toString(); + }else if(chargingStationId>9 && chargingStationId<=99){ + connectorID =connectorID+"00"+chargingStationId.toString(); + }else { + connectorID =connectorID+"000"+chargingStationId.toString(); + } + connectorID=connectorID+serialNumber.substring(serialNumber.length()-2, serialNumber.length()); + + + String finalConnectorID = connectorID; executorService.execute(new Runnable() { @Override public void run() { @@ -1462,6 +1488,28 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar Long rateModelId = Long.valueOf(r1.getData().toString()); xhpcChargeOrder.setRateModelId(rateModelId); xhpcChargeOrderMapper.updateXhpcChargeOrder(xhpcChargeOrder); + + System.out.println("===================finalConnectorID=========================="); + System.out.println("===================finalConnectorID=========================="+finalConnectorID); + System.out.println("===================finalConnectorID=========================="); + System.out.println("===================startTime=========================="); + System.out.println("===================startTime=========================="+DateUtil.format(date1,"yyyy-MM-dd HH:mm:ss")); + System.out.println("===================startTime=========================="); + Map pushOrder = new HashMap<>(); + pushOrder.put("startChargeSeqStat", 1); + pushOrder.put("internetSerialNumber", xhpcChargeOrder.getInternetSerialNumber()); + pushOrder.put("connectorID", finalConnectorID); + pushOrder.put("startChargeNotificationStat", 0); + pushOrder.put("chargeOrderInfoNotificationStat", 0); + pushOrder.put("operatorId3rdpty", operatorIdEvcs); + pushOrder.put("startTime", DateUtil.format(date1,"yyyy-MM-dd HH:mm:ss")); + REDIS.setCacheMap("pushOrder:".concat(orderNo), pushOrder); + + String gun ="gun:"+serialNumber; + Map cacheMap1 = REDIS.getCacheMap(gun); + //川逸充订单号,防止推送状态 + cacheMap1.put("cycOrder",xhpcChargeOrder.getInternetSerialNumber()); + REDIS.setCacheMap(gun, cacheMap1); } catch (Exception e) { e.printStackTrace(); logger.error("update order[{}] failed.", orderNo); @@ -1514,6 +1562,10 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar // } else { // System.out.println("调用失败"); // } + String serialNumber="8083600012000301"; + System.out.println(serialNumber.substring(serialNumber.length()-2, serialNumber.length())); + + }catch (Exception e){ e.printStackTrace(); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index f4012e07..dd0d4c78 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -5,10 +5,7 @@ import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.xhpc.common.api.ActivityInternetService; -import com.xhpc.common.api.RefundOrderService; -import com.xhpc.common.api.SmsService; -import com.xhpc.common.api.UserTypeService; +import com.xhpc.common.api.*; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.utils.HttpUtils; import com.xhpc.common.core.utils.SecurityUtils; @@ -81,6 +78,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe @Autowired private ActivityInternetService activityInternetService; + @Autowired + private EvcsService evcsService; + private final ExecutorService executorService = Executors.newFixedThreadPool(20); @@ -1157,6 +1157,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe if("VIN码".equals(xhpcChargeOrder.getChargingMode())){ xhpcHistoryOrder.setChargingMode("VIN码"); } + if("川逸充".equals(xhpcChargeOrder.getChargingMode())){ + xhpcHistoryOrder.setChargingMode("川逸充"); + } }else{ //订单异常 xhpcChargeOrder.setStatus(2); @@ -1271,6 +1274,34 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe openid=userMessage.get("alipayOpenId").toString(); refundType="2"; } + map.put("remark","充电结算自动申请退款"); + } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && xhpcChargeOrder.getUserId()>10000){ + + xhpcHistoryOrder.setUserNameEvcs(userMessage.get("phone").toString()); + xhpcHistoryOrder.setPhone(userMessage.get("phone").toString()); + //增加流水订单号 + if(operatorMessage!=null && operatorMessage.get("operatorId")!=null){ + String evcs = EvcsUtil.transferInternetOrderNo(xhpcChargeOrder.getSerialNumber(), operatorMessage.get("operatorId").toString()); + xhpcHistoryOrder.setEvcsOrderNo(evcs); + } + //扣除用户实际消费金额,添加消费记录 剩余的钱 + BigDecimal balance1 =new BigDecimal(userMessage.get("balance").toString()); + subtract = balance1.subtract(actPrice); + int i = xhpcChargeOrderService.updateUserBalance(userId, subtract,xhpcChargeOrder.getSource(),xhpcChargeOrder.getTenantId()); + if(i==0){ + //扣钱失败 + logger.info("<<<<<<<<<<<<<<<<扣钱失败>>>>>>>>>>>>>>>>>"); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return R.fail(); + }else{ + //添加流水 + xhpcChargeOrderService.addUserAccountStatement(userId, actPrice.negate(), subtract, xhpcChargeOrder.getChargeOrderId(), 3, date,xhpcChargeOrder.getSource()); + map.put("userId",userId); + map.put("amount",subtract); + //openid=userMessage.get("weixinOpenId").toString(); + refundType="0"; + map.put("remark","充电结算自动申请退款"); } } @@ -1367,6 +1398,18 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe e.printStackTrace(); logger.info("<<<<<<<<<<<<<<<<自动退款失败>>>>>>>>>>>>>>>>>"); } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + //自动退款 + refundOrderService.cycOrderCheckOut(balance2,xhpcChargeOrder.getSource(),xhpcChargeOrder.getUserId()+"",xhpcChargeOrder.getTenantId()); + } + + //川逸充,调用订单结束推送 + if(UserTypeUtil.INTERNET_TYPE.equals(source) && xhpcChargeOrder.getUserId()>10000){ + logger.info("<<<<<<<<<11<<<<<<<川逸充,调用订单结束推送>>>>>>>>>>>>>>>>>"); + Map orderMap =new HashMap<>(); + orderMap.put("orderNo",xhpcHistoryOrder.getSerialNumber()); + evcsService.getCYCNotificationConnectorChargeStatus(orderMap); + logger.info("<<<<<<<<<22<<<<<<<川逸充,调用订单结束推送>>>>>>>>>>>>>>>>>"); } } }); diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml index 2d44fcfe..c1f6e325 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml @@ -136,6 +136,10 @@ update xhpc_customers_personnel set surplus_money=#{balance} where customers_personnel_id=#{userId} + + + update xhpc_app_internet_user set balance=#{balance} where app_internet_user_id=#{userId} + + diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java index 450aa9da..23efccd9 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java @@ -311,8 +311,14 @@ public class WxPaymentController { " " + spbill_create_ip + "\n" + " " + timeExpire + "\n" + " " + total_fee + "\n" + - " " + trade_type + "\n" + - " " + sign + "\n" + + " " + trade_type + "\n"; + + if ("MWEB".equals(trade_type)) { + xmlString += "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \"https://pay.qq.com\",\"wap_name\": \"腾讯充值\"}}"; + } + + + xmlString += " " + sign + "\n" + " "; System.out.println("============weixin==xmlString================"); @@ -573,6 +579,9 @@ public class WxPaymentController { @ApiOperation(value = "微信支付") public AjaxResult cycPayment(HttpServletRequest servletRequest, @RequestBody Map map) throws Exception { + System.out.println("=============map==============="); + System.out.println("=============map==============="+map.toString()); + System.out.println("=============map==============="); //总金额(是)订单总金额,单位为分 String amount = StringUtils.valueOf(map.get("amount")); if (StringUtils.isEmpty(amount)) { @@ -598,7 +607,7 @@ public class WxPaymentController { if(map.get("tenantId") ==null || "".equals(map.get("tenantId").toString())){ return AjaxResult.error(HttpStatus.NOT_NULL, "请重新进入启动充电页面"); } - if(map.get("PlateNum") ==null || "".equals(map.get("PlateNum").toString())){ + if(map.get("plateNum") ==null || "".equals(map.get("plateNum").toString())){ return AjaxResult.error(HttpStatus.NOT_NULL, "请重新进入启动充电页面"); } Long userId = Long.valueOf(map.get("userId").toString()); @@ -611,7 +620,7 @@ public class WxPaymentController { XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); xhpcAppUser.setAppInternetUserId(userId); - xhpcAppUser.setPlateNum(map.get("PlateNum").toString()); + xhpcAppUser.setPlateNum(map.get("plateNum").toString()); xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); // Map refundOrder = iXhpcRefundOrderService.getNotRefundOrder(userId,userType,tenantId); @@ -727,6 +736,9 @@ public class WxPaymentController { map1.put("prepayId", map.get("prepay_id")); map1.put("mwebUrl", map.get("mweb_url")); } + System.out.println("====================== H5解析微信返回数据============================"); + System.out.println("====================== H5解析微信返回数据==============map1=============="+map1.toString()); + System.out.println("====================== H5解析微信返回数据============================"); return map1; } } catch (Exception e) { diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java index 74319088..096547cf 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java @@ -26,6 +26,7 @@ import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.UserTypeUtil; +import com.xhpc.payment.domain.XhpcAppInternetUser; import com.xhpc.payment.domain.XhpcAppUser; import com.xhpc.payment.domain.XhpcRefundAudit; import com.xhpc.common.domain.XhpcRefundOrder; @@ -34,6 +35,7 @@ import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper; import com.xhpc.payment.service.IXhpcCommonPayment; import com.xhpc.payment.service.IXhpcRefundAuditService; import com.xhpc.payment.service.IXhpcRefundOrderService; +import com.xhpc.payment.service.IXhpcUserAccountStatementService; import com.xhpc.payment.service.impl.XhpcUserAccountStatementServiceImpl; import com.xhpc.system.api.model.LoginUser; import io.swagger.annotations.Api; @@ -149,6 +151,16 @@ public class XhpcRefundAuditController extends BaseController { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && Long.parseLong(userId)>10000){ + //川逸充用户退款 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(Long.parseLong(userId)); + xhpcAppUser.setIsRefundApplication(0); + int refundApplication = xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + if (refundApplication == 0) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } }else{ AjaxResult.error(HttpStatus.DATA_ERROR, "该用户不能退款"); } @@ -254,8 +266,10 @@ public class XhpcRefundAuditController extends BaseController { return AjaxResult.error(HttpStatus.DATA_ERROR, "订单不存在"); } int source = Integer.parseInt(xhpcRefundOrder.get("source").toString()); + + String userId = StringUtils.valueOf(xhpcRefundOrder.get("userId")); String phone=""; - if(source==0){ + if(source==0 || (source==1 && Long.valueOf(userId)>10000)){ phone=xhpcRefundOrder.get("phone").toString(); }else{ phone=xhpcRefundOrder.get("communityPhone").toString(); @@ -264,7 +278,7 @@ public class XhpcRefundAuditController extends BaseController { logger.info("++++++++++++xhpcRefundOrder++++++++++++++++"+xhpcRefundOrder.toString()); logger.info("++++++++++++xhpcRefundOrder++++++++++++++++"); - String userId = StringUtils.valueOf(xhpcRefundOrder.get("userId")); + BigDecimal amount = new BigDecimal(xhpcRefundOrder.get("amount").toString()); logger.info("++++++++++++amount++++++++++++++++"+amount); String amountRefundOrder = "-" + amount.toString(); @@ -346,13 +360,32 @@ public class XhpcRefundAuditController extends BaseController { updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId); return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足"); } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source)){ + System.out.println("================获取退款川逸充用户信息========================================"); + System.out.println("================获取退款川逸充用户信息========================================"); + System.out.println("================获取退款川逸充用户信息========================================"); + Map appInternetUser = iXhpcRefundAuditService.getXhpcAppInternetUserById(Long.parseLong(userId), tenantId); + if (StringUtils.isNull(appInternetUser)) { + refundOrder.setStatus(2); + refundOrder.setRemark("用户不存在"); + updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId); + return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在"); + } + String balance = StringUtils.valueOf(appInternetUser.get("balance")); + BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(amount); + if (surplus.compareTo(BigDecimal.ZERO) == -1) { + refundOrder.setStatus(2); + refundOrder.setRemark("余额不足"); + updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId); + return AjaxResult.error(HttpStatus.ERROR_STATUS, "余额不足"); + } }else{ return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在"); } String result = ""; HttpPost httpPost = new HttpPost(xhpcSettingConfig.getWxTransfersUrl()); - StringEntity postEntity = new StringEntity(creatXMLParam(orderOutNumber, refund_fee.toString(), "退款申请", openId,xhpcSettingConfig), "UTF-8"); + StringEntity postEntity = new StringEntity(creatXMLParam(orderOutNumber, refund_fee.toString(), "退款申请", openId,xhpcSettingConfig,source), "UTF-8"); httpPost.addHeader("Content-Type", "text/xml"); httpPost.setEntity(postEntity); try { @@ -417,7 +450,7 @@ public class XhpcRefundAuditController extends BaseController { * @param refund_desc 退款原因 * @return */ - private String creatXMLParam(String partner_trade_no, String amount, String refund_desc, String openid,XhpcSettingConfig xhpcSettingConfig) { + private String creatXMLParam(String partner_trade_no, String amount, String refund_desc, String openid,XhpcSettingConfig xhpcSettingConfig,Integer source) { String param = ""; //随机字符串 String nonceStr = WXPayUtil.generateNonceStr(); @@ -432,8 +465,10 @@ public class XhpcRefundAuditController extends BaseController { param += "&mchid=" + xhpcSettingConfig.getWxMchId(); //随机字符串 param += "&nonce_str=" + nonceStr; - //用户openid - param += "&openid=" + openid; + if(source!=1){ + //用户openid + param += "&openid=" + openid; + } //商户退款单号 一个订单唯一 param += "&partner_trade_no=" + partner_trade_no; //生成签名 添加key值 @@ -449,8 +484,11 @@ public class XhpcRefundAuditController extends BaseController { " " + refund_desc + "\n" + " " + xhpcSettingConfig.getWxAppId() + "\n" + " " + xhpcSettingConfig.getWxMchId() + "\n" + - " " + nonceStr + "\n" + - " " + openid + "\n" + + " " + nonceStr + "\n"; + if (source!=1) { + xmlString += " " + openid + "\n"; + } + xmlString += " " + partner_trade_no + "\n" + " " + sign + "\n" + " "; @@ -497,14 +535,22 @@ public class XhpcRefundAuditController extends BaseController { Map communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(Long.parseLong(userId), tenantId); BigDecimal surplus =new BigDecimal(communityPersonnel.get("balance").toString()).subtract(amount); int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), surplus,null); + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && Long.valueOf(userId)>10000){ + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(Long.parseLong(userId)); + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + //减少用户余额 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(Long.parseLong(userId)); + BigDecimal surplus =new BigDecimal(balance).subtract(amount); + xhpcAppUser.setBalance(surplus); + int i = xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + logger.info("++++++++++++退款信息+++++++44444444+++++++iii++"+i); } - refundOrder.setStatus(1); refundOrder.setRemark("微信退款成功"); refundOrder.setPaymentNo(map.get("payment_no").toString()); refundOrder.setPaymentTime(map.get("payment_time").toString()); updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,1,source,tenantId); - return AjaxResult.success("退款成功"); } } catch (Exception e) { diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java index 3e6ef2fe..8dcd0e72 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java @@ -193,8 +193,8 @@ public class XhpcRefundOrderController extends BaseController { if (StringUtils.isEmpty(amount)) { return R.fail("退款金额不能为空"); } else { - if (new BigDecimal(1).compareTo(new BigDecimal(amount)) == 1) { - return R.fail("退款金额不能少于1元"); + if (new BigDecimal(0.3).compareTo(new BigDecimal(amount)) == 1) { + return R.fail("退款金额不能少于0.3元"); } } //用户信息id @@ -249,4 +249,45 @@ public class XhpcRefundOrderController extends BaseController { } + /** + * 云快充充电完成自动退款 + */ + @GetMapping("/cycOrderCheckOut") + @ApiOperation(value = "云快充充电完成自动退款") + public AjaxResult cycOrderCheckOut(@RequestParam(value = "amount") String amount,@RequestParam(value = "source") Integer source,@RequestParam(value = "userId") String userId,@RequestParam(value = "tenantId")String tenantId){ + if (UserTypeUtil.CUSTOMERS_TYPE.equals(source)) { + return AjaxResult.error("大客户不支持退款"); + } + if (StringUtils.isEmpty(amount)) { + return AjaxResult.error("退款金额不能为空"); + } else { + if (new BigDecimal(0.3).compareTo(new BigDecimal(amount)) == 1) { + return AjaxResult.error("退款金额不能少于0.3元"); + } + } + //用户信息id + if (StringUtils.isEmpty(userId)) { + return AjaxResult.error("用户信息不能为空"); + } + //openid + if (StringUtils.isEmpty(userId)) { + return AjaxResult.error("用户信息不能为空"); + } + //是否有实时数据 + Long userid = Long.valueOf(userId); + // 是否有异常订单 + int j = iXhpcRefundOrderService.countXhpcChargeOrder(userid, source, tenantId); + if (j > 0) { + return AjaxResult.error("你有异常订单未解决,请拨打客服电话进行解决"); + } + + //生成退款订单 + String orderOutNumber = StringUtils.numFormat(userid, 1, + StatusConstants.FLOWING_WATER_REFUND_TYPE); + + AjaxResult ajaxResult = iXhpcRefundOrderService.addCycRefundOrder("" + userid, BigDecimal.valueOf(Double.parseDouble(amount)), "0", orderOutNumber,source, tenantId); + return ajaxResult; + } + + } diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOriginalOrderController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOriginalOrderController.java index b9dfc426..455264c0 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOriginalOrderController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOriginalOrderController.java @@ -13,6 +13,7 @@ import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.UserTypeUtil; +import com.xhpc.payment.domain.XhpcAppInternetUser; import com.xhpc.payment.domain.XhpcAppUser; import com.xhpc.payment.domain.XhpcRefundAudit; import com.xhpc.payment.mapper.XhpcRefundOrderMapper; @@ -42,6 +43,8 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -86,11 +89,12 @@ public class XhpcRefundOriginalOrderController extends BaseController { @GetMapping("/refundWxOrder") @ApiOperation(value = "微信退款") public R refundWxOrder(Long refundOrderId) throws Exception { + System.out.println("==========微信开始退款==================="); return xhpcRefundOriginalOrderService.wxRefundOriginalOrder(refundOrderId); } /** - * 微信回调Api + * 微信回调Api(退款) */ @RequestMapping("/paymentCallback") public Object payNotify(HttpServletRequest request, HttpServletResponse response) { @@ -126,11 +130,13 @@ public class XhpcRefundOriginalOrderController extends BaseController { //将自定义参数转换成JSONObject对象,处理业务逻辑 String req_info = map.get("req_info"); Map reqInfo = WXPayUtil.xmlToMap(AESUtil.decryptData(req_info,"sichuanxianghuakejiyouxiangongsi")); - logger.info("===============reqInfo=========="+reqInfo.toString()); + logger.info("=======退款回调=======reqInfo=========="+reqInfo.toString()); xhpcRefundOriginalOrderService.updateXhpcRefundOriginalOrder(reqInfo); }else{ //退款失败 - + logger.info("===============退款失败=========="); + logger.info("===============退款失败======map===="+map.toString()); + logger.info("===============退款失败=========="); } } catch (IOException e) { e.printStackTrace(); @@ -204,6 +210,26 @@ public class XhpcRefundOriginalOrderController extends BaseController { } Map communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(userId, xhpcRefundOrder.getTenantId()); BigDecimal amount = new BigDecimal(communityPersonnel.get("balance").toString()); + if(xhpcRefundOrder.getSource()==1 && xhpcRefundOrder.getUserId()>10000){ + + } + if(amount.compareTo(xhpcRefundOrder.getAmount()) !=0){ + xhpcRefundOrder.setStatus(2); + xhpcRefundOrder.setRemark("订单金额出错"); + xhpcRefundOriginalOrderService.updateXhpcRefundOrder(xhpcRefundOrder,null,4,2); + return R.fail(HttpStatus.ERROR_STATUS,"订单金额出错"); + } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(userId); + xhpcAppUser.setIsRefundApplication(0); + int refundApplication = xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + if (refundApplication == 0) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return R.fail(HttpStatus.ERROR_STATUS,"修改用户信息失败"); + } + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(userId); + BigDecimal amount = new BigDecimal(appUserInfo.get("balance").toString()); if(amount.compareTo(xhpcRefundOrder.getAmount()) !=0){ xhpcRefundOrder.setStatus(2); xhpcRefundOrder.setRemark("订单金额出错"); @@ -383,6 +409,57 @@ public class XhpcRefundOriginalOrderController extends BaseController { } } + + //川逸充自动退款 每5分钟一次 + @Scheduled(cron = "0 0/5 * * * ? ") + @GetMapping("/cycMoneyPage") + public void cycMoneyPage(){ + logger.info("++++++++++++川逸充没有充电订单自动退款 每5分钟一次++++++++++++++++"); + LocalDateTime localDate = LocalDateTime.now().minusDays(30); + String time = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));//转为String类型 + //查询是否有未退款的川逸充用户 + List> longList = iXhpcRefundOrderService.cycMoneyPage(); + if(longList !=null && longList.size()>0){ + for (int i = 0; i < longList.size(); i++) { + Map map = longList.get(i); + Long appInternetUserId = Long.valueOf(map.get("appInternetUserId").toString()); + int number = xhpcRefundOrderMapper.cycXhpcChargeOrder(appInternetUserId, time); + if(number==0){ + int count = xhpcRefundOrderMapper.cycXhpcrRefundOrder(appInternetUserId, time); + if(count==0){ + //该用户可以退款 + //生成退款订单 + String orderOutNumber = StringUtils.numFormat(appInternetUserId, 1, StatusConstants.FLOWING_WATER_REFUND_TYPE); + String remark = StringUtils.valueOf("川逸充用户自动退款"); + XhpcRefundOrder xhpcRefundOrder = new XhpcRefundOrder(); + xhpcRefundOrder.setUserId(appInternetUserId); + xhpcRefundOrder.setAmount(new BigDecimal(map.get("balance").toString())); + xhpcRefundOrder.setRefundOrderNumber(orderOutNumber); + xhpcRefundOrder.setType(1); + xhpcRefundOrder.setRemark(remark); + xhpcRefundOrder.setSource(1); + xhpcRefundOrder.setCreateTime(new Date()); + xhpcRefundOrder.setUpdateTime(new Date()); + xhpcRefundOrder.setTenantId("000000"); + xhpcRefundOriginalOrderService.addXhpcRefundOrder(xhpcRefundOrder); + + executorService.execute(new Runnable() { + @Override + public void run() { + XhpcRefundAudit xhpcRefundAudit =new XhpcRefundAudit(); + xhpcRefundAudit.setRefundOrderId(xhpcRefundOrder.getRefundOrderId()); + xhpcRefundAudit.setStatus(1); + xhpcRefundAudit.setRemark("自动审核通过"); + info(xhpcRefundAudit); + } + }); + } + } + } + } + } + + @GetMapping("/getRefundOriginalOrderList") @ApiOperation(value = "退款页面") public R getRefundOriginalOrderList(Long refundOrderId){ diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundAuditMapper.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundAuditMapper.java index 561098e9..5fef96bb 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundAuditMapper.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundAuditMapper.java @@ -35,4 +35,6 @@ public interface XhpcRefundAuditMapper { //查询社区人员信息 Map getCommunityPersonnelById(@Param("userId")Long userId,@Param("tenantId")String tenantId); + + Map getXhpcAppInternetUserById(@Param("userId")Long userId,@Param("tenantId")String tenantId); } diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java index 4637aa91..f4f69a19 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java @@ -115,7 +115,11 @@ public interface XhpcRefundOrderMapper { */ public List moneyPage(@Param("type")Integer type); + public int cycXhpcChargeOrder(@Param("appInternetUserId")Long appInternetUserId,@Param("time") String time); + public int cycXhpcrRefundOrder(@Param("appInternetUserId")Long appInternetUserId,@Param("time") String time); + + List> cycAppInternetUserPage(); /** * 社区人员是否有退款订单审核(0无 1有) * @param userId diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcUserAccountStatementMapper.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcUserAccountStatementMapper.java index eb118412..324d75fe 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcUserAccountStatementMapper.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcUserAccountStatementMapper.java @@ -40,6 +40,8 @@ public interface XhpcUserAccountStatementMapper { */ public Map appUserInfo(@Param("appUserId") Long appUserId); + + public Map getAppInternetUser(@Param("appUserId") Long appUserId); /** * 更新C端用户余额 * diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundAuditService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundAuditService.java index e121fe50..8548bcbf 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundAuditService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundAuditService.java @@ -34,4 +34,6 @@ public interface IXhpcRefundAuditService { //查询社区人员信息 Map getCommunityPersonnelById(Long userId,String tenantId); + + Map getXhpcAppInternetUserById(Long userId,String tenantId); } \ No newline at end of file diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java index fd2fc082..4ed4e725 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java @@ -83,6 +83,15 @@ public interface IXhpcRefundOrderService { */ public AjaxResult addRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber, String openid, String remark,Integer userType,String tenantId); + /** + * 新增 云快充退款订单 + * + * @param appUserId C端用户id + * @param amount 充值金额 + * @param type 退款渠道(1微信 2支付宝) + * @return + */ + public AjaxResult addCycRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber,Integer userType,String tenantId); /** * 通过用户id查询未完成退款订单 * @@ -116,6 +125,9 @@ public interface IXhpcRefundOrderService { */ public List moneyPage(Integer type); + List> cycMoneyPage(); + + List> administratorReview(); void updateXhpcRefundOrder(Long refundOrderId); diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOriginalOrderService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOriginalOrderService.java index 05ced7cf..08edab85 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOriginalOrderService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOriginalOrderService.java @@ -19,7 +19,7 @@ public interface IXhpcRefundOriginalOrderService { //微信支付 R wxRefundOriginalOrder(Long refundOrderId); - //微信回调处理 + //微信回调处理(退款) void updateXhpcRefundOriginalOrder(Map reqInfo); void updateXhpcRefundOrder(XhpcRefundOrder refundOrder, BigDecimal refundFee, Integer type,Integer status); diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcUserAccountStatementService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcUserAccountStatementService.java index 84fbfd74..8abcff1a 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcUserAccountStatementService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcUserAccountStatementService.java @@ -1,5 +1,6 @@ package com.xhpc.payment.service; +import com.xhpc.common.domain.XhpcRefundOrder; import com.xhpc.payment.domain.XhpcUserAccountStatement; import javax.servlet.http.HttpServletRequest; @@ -34,4 +35,5 @@ public interface IXhpcUserAccountStatementService { * @return */ public List> list(HttpServletRequest request); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundAuditServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundAuditServiceImpl.java index bc06a2c4..7eebe934 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundAuditServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundAuditServiceImpl.java @@ -76,4 +76,9 @@ public class XhpcRefundAuditServiceImpl implements IXhpcRefundAuditService { public Map getCommunityPersonnelById(Long userId, String tenantId) { return xhpcRefundAuditMapper.getCommunityPersonnelById(userId, tenantId); } + + @Override + public Map getXhpcAppInternetUserById(Long userId, String tenantId) { + return xhpcRefundAuditMapper.getXhpcAppInternetUserById(userId, tenantId); + } } diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java index aa523b33..9b84d46c 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java @@ -15,21 +15,28 @@ import com.xhpc.common.domain.XhpcRefundOrder; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.UserTypeUtil; import com.xhpc.payment.domain.XhpcAppUser; +import com.xhpc.payment.domain.XhpcRefundAudit; import com.xhpc.payment.mapper.XhpcRefundOrderMapper; import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper; import com.xhpc.payment.service.IXhpcRefundOrderService; +import com.xhpc.payment.service.IXhpcRefundOriginalOrderService; import com.xhpc.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * 退款订单信息 服务层 @@ -49,6 +56,9 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService { @Autowired private TokenService tokenService; + @Resource + private IXhpcRefundOriginalOrderService xhpcRefundOriginalOrderService; + private final ExecutorService executorService = Executors.newFixedThreadPool(40); /** * 更新 退款订单 @@ -212,6 +222,36 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService { return AjaxResult.success(); } + + @Override + @Transactional + public AjaxResult addCycRefundOrder(String appUserId, BigDecimal amount, String type, String refundOrderNumber,Integer userType,String tenantId) { + long userId = Long.parseLong(appUserId); + List> list = xhpcRefundOrderMapper.getNotChargeOrder(userId,userType,tenantId); + if (null != list && list.size() > 0) { + return AjaxResult.error(HttpStatus.ERROR_STATUS, "还有未完成的订单"); + } + Map objectMap = xhpcUserAccountStatementMapper.getAppInternetUser(Long.parseLong(appUserId)); + if (StringUtils.isNull(objectMap)) { + return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在"); + } + XhpcRefundOrder xhpcRefundOrder = new XhpcRefundOrder(); + xhpcRefundOrder.setUserId(userId); + xhpcRefundOrder.setAmount(amount); + xhpcRefundOrder.setRefundOrderNumber(refundOrderNumber); + xhpcRefundOrder.setType(Integer.parseInt(type)); + xhpcRefundOrder.setRemark("川逸充微信退款"); + xhpcRefundOrder.setSource(userType); + xhpcRefundOrder.setCreateTime(new Date()); + xhpcRefundOrder.setUpdateTime(new Date()); + + xhpcRefundOrderMapper.insert(xhpcRefundOrder); + + return AjaxResult.success(); + } + + + /** * 通过用户id查询未完成退款订单 * @@ -250,6 +290,11 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService { return xhpcRefundOrderMapper.moneyPage(type); } + @Override + public List> cycMoneyPage() { + //查询是否有未退款的川逸充用户 + return xhpcRefundOrderMapper.cycAppInternetUserPage(); + } @Override public List> administratorReview() { return xhpcRefundOrderMapper.administratorReview(); diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOriginalOrderServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOriginalOrderServiceImpl.java index 0e5c7528..94551774 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOriginalOrderServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOriginalOrderServiceImpl.java @@ -22,6 +22,7 @@ import com.xhpc.common.domain.XhpcRechargeOrder; import com.xhpc.common.domain.XhpcRefundOrder; import com.xhpc.common.domain.XhpcSettingConfig; import com.xhpc.common.util.UserTypeUtil; +import com.xhpc.payment.domain.XhpcAppInternetUser; import com.xhpc.payment.domain.XhpcAppUser; import com.xhpc.payment.domain.XhpcRefundOriginalOrder; import com.xhpc.payment.mapper.XhpcRefundOriginalOrderMapper; @@ -341,7 +342,7 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr String startTime = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));//转为String类型 XhpcRefundOrder xhpcRefundOrder = xhpcRefundOriginalOrderMapper.getXhpcRefundOrder(refundOrderId); - XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_ALI_PAY_TYPE,xhpcRefundOrder.getTenantId()); + XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_WX_TYPE,xhpcRefundOrder.getTenantId()); if(xhpcSettingConfig ==null){ return R.fail(HttpStatus.ALREADY_EXISTING, "微信退款失败,请联系客服"); } @@ -356,6 +357,7 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr BigDecimal zero = new BigDecimal(0); //微信充值的金额大于退款金额 if("1".equals(stringIntegerMap.get("wxStatus").toString()) && wxMoney.compareTo(zero)>0){ + System.out.println("===========微信充值的金额大于退款金额=================="); return wxRefund(xhpcRefundOrder,amount); }else if("2".equals(stringIntegerMap.get("wxStatus").toString()) && "1".equals(stringIntegerMap.get("refundStatus").toString())){ //微信充值的金额 小于(支付宝+微信)总充值的金额 @@ -560,7 +562,6 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr XhpcRefundOriginalOrder xhpcRefundOriginalOrder = xhpcRefundOriginalOrderMapper.getXhpcRefundOriginalOrderRefundId(reqInfo.get("refund_id").toString()); if(xhpcRefundOriginalOrder !=null){ if(reqInfo.get("refund_status").equals("SUCCESS")){ - //查询微信支付信息 // boolean couponRefundFee =false; // try{ @@ -640,6 +641,23 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr if(surplus.compareTo(new BigDecimal(0))==0){ xhpcRefundOriginalOrderMapper.updateRechargeOrderRefundStatus(userId,source); } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + System.out.println("=================查询微信支付信息==========修改金额======================="); + System.out.println("=================查询微信支付信息==========修改金额======================="); + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(userId); + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + //减少用户余额 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(userId); + BigDecimal surplus =new BigDecimal(balance).subtract(refundFeeAmount); + xhpcAppUser.setBalance(surplus); + if(xhpcRefundOriginalOrder.getLastOne()==1){ + xhpcAppUser.setIsRefundApplication(0); + } + xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + if(surplus.compareTo(new BigDecimal(0))==0){ + xhpcRefundOriginalOrderMapper.updateRechargeOrderRefundStatus(userId,source); + } } }else{ //退款失败 @@ -702,9 +720,9 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr Map map = WXPayUtil.xmlToMap(result); String result_code = map.get("result_code"); String return_code = map.get("return_code"); - logger.info("++++++++++++退款信息++++++++++++++++"); - logger.info("++++++++++++退款信息++++++++++++++++" + map.toString()); - logger.info("++++++++++++退款信息++++++++++++++++"); + logger.info("+++++++原路退款+++++退款信息++++++++++++++++"); + logger.info("+++++++原路退款+++++退款信息++++++++++++++++" + map.toString()); + logger.info("+++++++原路退款+++++退款信息++++++++++++++++"); XhpcRefundOriginalOrder xhpcRefundOriginalOrder = new XhpcRefundOriginalOrder(); if ("SUCCESS".equals(result_code) && "SUCCESS".equals(return_code)) { xhpcRefundOriginalOrder.setStatus(0); @@ -816,7 +834,7 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr //随机字符串 param += "&nonce_str=" + nonceStr; //退款结果通知url - String url="https://scxhua.cn/prod-api/xhpc-payment/refundOriginalOrder/paymentCallback"; + String url="https://xhpc.scxhua.com/prod-api/xhpc-payment/refundOriginalOrder/paymentCallback"; param += "¬ify_url=" + url; //商户退款单号 param += "&out_refund_no=" + orderNumber; @@ -981,6 +999,7 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr //微信退款 public R wxRefund(XhpcRefundOrder xhpcRefundOrder,BigDecimal refundFee){ + Map map =new HashMap<>(); Date date = new Date(); String endTime = DateUtil.formatDateTime(date); @@ -1082,6 +1101,18 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr if(surplus.compareTo(new BigDecimal(0))==0){ xhpcRefundOriginalOrderMapper.updateRechargeOrderRefundStatus(userId,source); } + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(userId); + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + //减少用户余额 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(userId); + BigDecimal surplus =new BigDecimal(balance).subtract(refundFee); + xhpcAppUser.setBalance(surplus); + xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + if(surplus.compareTo(new BigDecimal(0))==0){ + xhpcRefundOriginalOrderMapper.updateRechargeOrderRefundStatus(userId,source); + } } } @@ -1094,6 +1125,8 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr */ @Override public void updateXhpcRefundOrder(XhpcRefundOrder refundOrder,BigDecimal refundFee,Integer type,Integer status){ + System.out.println("============修改订单状态================"); + System.out.println("============修改订单状态================"); Long userId = refundOrder.getUserId(); Integer source = refundOrder.getSource(); String phone =""; @@ -1104,11 +1137,21 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr XhpcAppUser xhpcAppUser = new XhpcAppUser(); xhpcAppUser.setAppUserId(userId); xhpcAppUser.setIsRefundApplication(0); + xhpcUserAccountStatementMapper.updateAppUserBalance(xhpcAppUser); }else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){ Map communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(userId, refundOrder.getTenantId()); phone =communityPersonnel.get("phone").toString(); int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(userId, null,0); + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(userId); + phone =appUserInfo.get("phone").toString(); + //减少用户余额 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(userId); + xhpcAppUser.setIsRefundApplication(0); + xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); + } if(type==1){ refundOrder.setStatus(1); @@ -1189,6 +1232,8 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(userId); }else if(UserTypeUtil.COMMUNIT_TYPE.equals(source)){ appUserInfo = iXhpcRefundAuditService.getCommunityPersonnelById(userId, refundOrder.getTenantId()); + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(userId); } XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_WX_TYPE,refundOrder.getTenantId()); if(xhpcSettingConfig ==null){ @@ -1252,6 +1297,14 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr Map communityPersonnel = iXhpcRefundAuditService.getCommunityPersonnelById(userId, refundOrder.getTenantId()); BigDecimal surplus =new BigDecimal(communityPersonnel.get("balance").toString()).subtract(refundFee); int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(userId, surplus,null); + }else if(UserTypeUtil.INTERNET_TYPE.equals(source) && userId>10000){ + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + //减少用户余额 + XhpcAppInternetUser xhpcAppUser = new XhpcAppInternetUser(); + xhpcAppUser.setAppInternetUserId(userId); + BigDecimal surplus =new BigDecimal(balance).subtract(refundFee); + xhpcAppUser.setBalance(surplus); + xhpcUserAccountStatementMapper.updateAppInternetUserBalance(xhpcAppUser); } refundOrder.setStatus(1); refundOrder.setRemark("微信零钱退款成功"); @@ -1398,8 +1451,6 @@ public class XhpcRefundOriginalOrderServiceImpl implements IXhpcRefundOriginalOr int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(userId, surplus1,null); } //增加用户流水记录 - xhpcUserAccountStatementService.add(refundOrder.getRefundOrderId(), "-"+refundFee, userId.toString(), StatusConstants.FLOWING_WATER_REFUND,source,refundOrder.getTenantId()); - refundOrder.setStatus(1); refundOrder.setRemark("支付宝退款成功"); refundOrder.setOrderId(response.getOrderId()); diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcUserAccountStatementServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcUserAccountStatementServiceImpl.java index 3cd06aca..96b8ee66 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcUserAccountStatementServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcUserAccountStatementServiceImpl.java @@ -5,7 +5,9 @@ import com.xhpc.common.core.constant.StatusConstants; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.utils.StringUtils; import com.xhpc.common.core.web.service.BaseService; +import com.xhpc.common.domain.XhpcRefundOrder; import com.xhpc.common.security.service.TokenService; +import com.xhpc.common.util.UserTypeUtil; import com.xhpc.payment.controller.AlipayPaymentController; import com.xhpc.payment.domain.XhpcUserAccountStatement; import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper; @@ -74,7 +76,7 @@ public class XhpcUserAccountStatementServiceImpl extends BaseService implements * @param userId 用户id * @param type 操作类型(1充值 2退款 3充电) */ - public void add(Long id, String amount, String userId, Integer type,Integer source,String tenantId) { + public void add(Long id, String amount, String userId, Integer type, Integer source, String tenantId) { XhpcUserAccountStatement xhpcUserAccountStatement = new XhpcUserAccountStatement(); xhpcUserAccountStatement.setAmount(BigDecimal.valueOf(Double.valueOf(amount))); if (StatusConstants.FLOWING_WATER_RECHARGE == type) { @@ -88,11 +90,20 @@ public class XhpcUserAccountStatementServiceImpl extends BaseService implements xhpcUserAccountStatement.setType(type); xhpcUserAccountStatement.setSource(source); xhpcUserAccountStatement.setTenantId(tenantId); - Map appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId)); - if (StringUtils.isNotNull(appUserInfo)) { - String balance = StringUtils.valueOf(appUserInfo.get("balance")); - BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(Double.valueOf(balance))); - xhpcUserAccountStatement.setRemainingSum(surplus); + if(source== UserTypeUtil.INTERNET_TYPE && Long.parseLong(userId)>10000){ + Map appUserInfo = xhpcUserAccountStatementMapper.getAppInternetUser(Long.parseLong(userId)); + if (StringUtils.isNotNull(appUserInfo)) { + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(Double.valueOf(balance))); + xhpcUserAccountStatement.setRemainingSum(surplus); + } + }else{ + Map appUserInfo = xhpcUserAccountStatementMapper.appUserInfo(Long.parseLong(userId)); + if (StringUtils.isNotNull(appUserInfo)) { + String balance = StringUtils.valueOf(appUserInfo.get("balance")); + BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(Double.valueOf(balance))); + xhpcUserAccountStatement.setRemainingSum(surplus); + } } xhpcUserAccountStatement.setCreateTime(new Date()); if(type==1){ diff --git a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundAuditMapper.xml b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundAuditMapper.xml index d01622ee..8d5be9be 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundAuditMapper.xml +++ b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundAuditMapper.xml @@ -124,4 +124,42 @@ from xhpc_community_personnel where community_personnel_id=#{userId} and tenant_id=#{tenantId} + + + diff --git a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundOrderMapper.xml b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundOrderMapper.xml index 26c03d7f..5e3f01c1 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundOrderMapper.xml +++ b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRefundOrderMapper.xml @@ -343,18 +343,37 @@ + + + + + + + + + UPDATE xhpc_community_personnel set is_refund_application=#{isRefundApplication} where community_personnel_id=#{userId} - select xro.refund_order_id refundOrderId, xau.balance as balance from xhpc_refund_order xro LEFT JOIN xhpc_app_user xau on xau.app_user_id = xro.user_id and xro.source =0 - where xro.del_flag = 0 and xro.status =4 + where xro.del_flag = 0 and xro.status !=1 and xro.examine_status !=1 ORDER BY xro.create_time DESC diff --git a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcUserAccountStatementMapper.xml b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcUserAccountStatementMapper.xml index 770129f7..2f9be0e6 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcUserAccountStatementMapper.xml +++ b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcUserAccountStatementMapper.xml @@ -159,6 +159,39 @@ WHERE del_flag = 0 and app_user_id = #{appUserId} + + + UPDATE xhpc_app_user diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppInternetUserServiceImpl.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppInternetUserServiceImpl.java index aff454df..4d23e584 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppInternetUserServiceImpl.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppInternetUserServiceImpl.java @@ -14,6 +14,7 @@ import com.xhpc.user.service.IXhpcAppInternetUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.Date; import java.util.Map; @Service @@ -31,7 +32,7 @@ public class XhpcAppInternetUserServiceImpl extends BaseService implements IXhpc String thirdCode = StringUtils.valueOf(map.get("thirdCode")); String token = StringUtils.valueOf(map.get("token")); String sign = StringUtils.valueOf(map.get("sign")); - + System.out.println("============map==============="+map.toString()); if("".equals(mobile) || mobile ==null){ return R.fail(500,"请重新扫码进入"); } @@ -51,6 +52,7 @@ public class XhpcAppInternetUserServiceImpl extends BaseService implements IXhpc xhpcAppUser.setPassword(SecurityUtils.encryptPassword(password)); xhpcAppUser.setCreateTime(new Date()); xhpcAppUser.setTenantId("000000"); + xhpcAppUser.setBalance(new BigDecimal(0)); xhpcAppInternetUserMapper.insert(xhpcAppUser); appInternetUser = xhpcAppInternetUserMapper.getXhpcAppInternetUserPhone(mobile); } diff --git a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml index 4e175cbe..9a71c919 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml +++ b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml @@ -144,7 +144,7 @@ xau.alipay_login as alipayLogin, xau.del_flag delFlag, concat(1) as userType, - concat("C") as userTypeName, + concat("CYC") as userTypeName, xau.tenant_id tenantId, xau.soc_protect socProtect, ten.status tenantStatus,