diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index ec5dbb7b0..5c1bf3cbd 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -119,6 +119,9 @@ public class OrderService { @Autowired private IMemberInvoiceTitleService memberInvoiceTitleService; + @Autowired + private IAdapayRefundRecordService adapayRefundRecordService; + @Value("${adapay.appId}") private String ADAPAY_APP_ID; @@ -1365,7 +1368,7 @@ public class OrderService { return; } - // 保存到数据库 + adapayRefundRecordService.saveAdapayRefundRecord(data); } diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 35f3c4abd..6b040cdcd 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -2,6 +2,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.google.common.collect.ImmutableMap; @@ -150,6 +151,39 @@ public class SpringBootTestController { @Autowired private AdapayCallbackRecordService adapayCallbackRecordService; + @Autowired + private IAdapayRefundRecordService adapayRefundRecordService; + + @Test + public void testSaveAdapayCallbackRecord() throws JsonProcessingException { + String data = "{\n" + + " \"object\": \"refund\",\n" + + " \"status\": \"succeeded\",\n" + + " \"prod_mode\": \"true\",\n" + + " \"id\": \"0022120230531111946980509821471137853440\",\n" + + " \"refund_order_no\": \"823725974557265920\",\n" + + " \"payment_id\": \"002212023053110524210509814658135928832\",\n" + + " \"payment_order_no\": \"C27262970851\",\n" + + " \"refund_amt\": \"7.82\",\n" + + " \"fee_amt\": \"0.04\",\n" + + " \"channel_no\": \"2023053121R064uj\",\n" + + " \"created_time\": \"1685503187000\",\n" + + " \"succeed_time\": \"1685503199000\",\n" + + " \"app_id\": \"app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa\",\n" + + " \"reason\": \"\",\n" + + " \"notify_url\": \"https://api.jsowellcloud.com/uniapp/pay/adapayRefundCallback\"\n" + + "}"; + + JSONObject jsonObject = JSON.parseObject(data); + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + AdapayRefundRecord adapayRefundRecord = mapper.readValue(jsonObject.toJSONString(), AdapayRefundRecord.class); + adapayRefundRecord.setRefundId(jsonObject.getString("id")); + // 保存到数据库 + adapayRefundRecordService.insertAdapayRefundRecord(adapayRefundRecord); + } + @Test public void testQueryCallback() { AdapayCallbackRecord aaaa = adapayCallbackRecordService.selectByOrderCode("aaaa"); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayRefundRecord.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayRefundRecord.java index df4204c60..0d135cbad 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayRefundRecord.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayRefundRecord.java @@ -1,5 +1,6 @@ package com.jsowell.pile.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.jsowell.common.annotation.Excel; import com.jsowell.common.core.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -19,6 +20,7 @@ public class AdapayRefundRecord extends BaseEntity { /** * 主键id */ + @JsonIgnore private Integer id; /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java index c71aca5b1..794b4ba6b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java @@ -18,4 +18,6 @@ public interface AdapayCallbackRecordMapper { int updateByPrimaryKeySelective(AdapayCallbackRecord record); int updateByPrimaryKey(AdapayCallbackRecord record); + + AdapayCallbackRecord selectByPaymentId(String paymentId); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java index d51f175f8..940780934 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java @@ -1,9 +1,14 @@ package com.jsowell.pile.service; +import com.fasterxml.jackson.core.JsonProcessingException; import com.jsowell.pile.domain.AdapayCallbackRecord; public interface AdapayCallbackRecordService { void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord); + void saveAdapayCallbackRecord(String data) throws JsonProcessingException; + AdapayCallbackRecord selectByOrderCode(String orderCode); + + AdapayCallbackRecord selectByPaymentId(String paymentId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayRefundRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayRefundRecordService.java index 0df34e300..77356344d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayRefundRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IAdapayRefundRecordService.java @@ -1,5 +1,6 @@ package com.jsowell.pile.service; +import com.fasterxml.jackson.core.JsonProcessingException; import com.jsowell.pile.domain.AdapayRefundRecord; import java.util.List; @@ -58,4 +59,6 @@ public interface IAdapayRefundRecordService { * @return 结果 */ public int deleteAdapayRefundRecordById(Integer id); + + void saveAdapayRefundRecord(String data) throws JsonProcessingException; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java index 921fa5b44..dcff64c2f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java @@ -1,5 +1,10 @@ package com.jsowell.pile.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.util.StringUtils; @@ -10,6 +15,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + @Slf4j @Service public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService { @@ -25,6 +32,28 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ adapayCallbackRecordMapper.insert(callbackRecord); } + @Override + public void saveAdapayCallbackRecord(String data) throws JsonProcessingException { + JSONObject jsonObject = JSON.parseObject(data); + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(jsonObject.toJSONString(), AdapayCallbackRecord.class); + adapayCallbackRecord.setExpend(jsonObject.getString("expend")); + adapayCallbackRecord.setPaymentId(jsonObject.getString("id")); + + JSONObject descJson = JSON.parseObject(adapayCallbackRecord.getDescription()); + String type = descJson.getString("type"); + adapayCallbackRecord.setPayScenario(type); + String memberId = descJson.getString("memberId"); + adapayCallbackRecord.setMemberId(memberId); + String orderCode = descJson.getString("orderCode"); + adapayCallbackRecord.setOrderCode(orderCode); + BigDecimal amount = adapayCallbackRecord.getPayAmt(); + + // 保存到数据库 + this.saveAdapayCallbackRecord(adapayCallbackRecord); + } + /** * 根据订单号查询支付回调信息 * @param orderCode @@ -52,4 +81,9 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ // log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record)); return record; } + + @Override + public AdapayCallbackRecord selectByPaymentId(String paymentId) { + return adapayCallbackRecordMapper.selectByPaymentId(paymentId); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayRefundRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayRefundRecordServiceImpl.java index 0d09c9293..c3caa60ca 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayRefundRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayRefundRecordServiceImpl.java @@ -1,8 +1,16 @@ package com.jsowell.pile.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.domain.AdapayCallbackRecord; import com.jsowell.pile.domain.AdapayRefundRecord; import com.jsowell.pile.mapper.AdapayRefundRecordMapper; +import com.jsowell.pile.service.AdapayCallbackRecordService; import com.jsowell.pile.service.IAdapayRefundRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +28,8 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService @Autowired private AdapayRefundRecordMapper adapayRefundRecordMapper; + @Autowired + private AdapayCallbackRecordService adapayCallbackRecordService; /** * 查询【请填写功能名称】 * @@ -86,4 +96,23 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService public int deleteAdapayRefundRecordById(Integer id) { return adapayRefundRecordMapper.deleteAdapayRefundRecordById(id); } + + @Override + public void saveAdapayRefundRecord(String data) throws JsonProcessingException { + JSONObject jsonObject = JSON.parseObject(data); + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + AdapayRefundRecord adapayRefundRecord = mapper.readValue(jsonObject.toJSONString(), AdapayRefundRecord.class); + adapayRefundRecord.setRefundId(jsonObject.getString("id")); + + AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByPaymentId(adapayRefundRecord.getPaymentId()); + if (adapayCallbackRecord != null) { + adapayRefundRecord.setMemberId(adapayCallbackRecord.getMemberId()); + adapayRefundRecord.setOrderCode(adapayCallbackRecord.getOrderCode()); + } + + // 保存到数据库 + this.insertAdapayRefundRecord(adapayRefundRecord); + } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml index cddbf9d49..25422fa6e 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/AdapayCallbackRecordMapper.xml @@ -43,7 +43,14 @@ where del_flag = '0' and order_code = #{orderCode,jdbcType=VARCHAR} - + + delete from adapay_callback_record where id = #{id,jdbcType=VARCHAR} diff --git a/jsowell-pile/src/main/resources/mapper/pile/AdapayRefundRecordMapper.xml.fxml b/jsowell-pile/src/main/resources/mapper/pile/AdapayRefundRecordMapper.xml similarity index 100% rename from jsowell-pile/src/main/resources/mapper/pile/AdapayRefundRecordMapper.xml.fxml rename to jsowell-pile/src/main/resources/mapper/pile/AdapayRefundRecordMapper.xml