Browse Source

feat 0 支付工程

devlop
yang_shj 4 years ago
parent
commit
e11ddd3949
  1. 31
      payment-base-app/payment-base-app.iml
  2. 23
      payment-base-app/pom.xml
  3. 51
      payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java
  4. 11
      payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java
  5. 6
      payment-base-app/src/main/java/com/base/springcloud/client/PaymentClient.java
  6. 3
      payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java
  7. 11
      payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
  8. 19
      payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java
  9. 6
      payment-base-app/src/main/java/com/base/springcloud/dao/SaleBillMapper.java
  10. 2
      payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java
  11. 21
      payment-base-app/src/main/java/com/base/springcloud/entity/OrderBill.java
  12. 6
      payment-base-app/src/main/java/com/base/springcloud/service/BillService.java
  13. 13
      payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java
  14. 46
      payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java
  15. 21
      payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
  16. 46
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java
  17. 2
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
  18. 7
      payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
  19. 4
      payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
  20. 6
      payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java
  21. 5
      payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java
  22. 5
      payment-base-app/src/main/java/com/base/springcloud/wxsdk/WxpayUtils.java
  23. 4
      payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
  24. 106
      payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml
  25. 18
      payment-base-app/src/main/resources/com/base/payment/mapper/SaleBillMapper.xml
  26. 13
      payment-base-app/src/main/resources/generatorConfig.xml

31
payment-base-app/payment-base-app.iml

@ -44,6 +44,7 @@
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.1.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.1.4.RELEASE" level="project" />
@ -64,6 +65,7 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.6.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:2.1.4.RELEASE" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.8" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.8" level="project" />
@ -113,14 +115,12 @@
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.4.2" level="project" /> <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.4.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-net:commons-net:3.1" level="project" /> <orderEntry type="library" name="Maven: commons-net:commons-net:3.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.1.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.34.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.34.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.34.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.34.Final" level="project" />
@ -132,31 +132,6 @@
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" /> <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.6.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.6.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.47" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-feign:1.4.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-openfeign:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.1.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign:feign-core:10.1.0" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign:feign-slf4j:10.1.0" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign:feign-hystrix:10.1.0" level="project" />
<orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.google.code.findbugs:jsr305:3.0.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" />
<orderEntry type="library" name="Maven: io.reactivex:rxjava:1.2.0" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.2.2" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.3" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />

23
payment-base-app/pom.xml

@ -102,10 +102,6 @@
</dependency>--> </dependency>-->
<!-- redis --> <!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
@ -125,25 +121,6 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.2.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents</groupId>

51
payment-base-app/src/main/java/com/base/springcloud/aspect/config/RedisConfig.java

@ -0,0 +1,51 @@
package com.base.springcloud.aspect.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import javax.annotation.Resource;
@Configuration
@EnableCaching // 开启缓存支持
public class RedisConfig extends CachingConfigurerSupport {
@Resource
private LettuceConnectionFactory lettuceConnectionFactory;
/**
* RedisTemplate配置
*
* @param lettuceConnectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
// 设置序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
om.enableDefaultTyping(DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// 配置redisTemplate
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
RedisSerializer<?> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);// key序列化
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// value序列化
redisTemplate.setHashKeySerializer(stringSerializer);// Hash key序列化
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);// Hash value序列化
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}

11
payment-base-app/src/main/java/com/base/springcloud/bo/OrderBO.java

@ -12,17 +12,26 @@ import java.util.List;
@Data @Data
public class OrderBO extends MchConfigEntity implements Serializable { public class OrderBO extends MchConfigEntity implements Serializable {
// 创建人ID
private String createId;
// 是否合并销售单据标志 // 是否合并销售单据标志
private Boolean mergeFlag; private Boolean mergeFlag;
// 销售单据号:可用逗号分隔 // 销售单据号:可用逗号分隔
private String billIds; private String billIds;
// 销售单据编号List
private List<String> billIdList;
// 子销售单据编号List
private List<String> childIdList;
// 订单金额 // 订单金额
private BigDecimal amount; private BigDecimal amount;
// 销售单 // 销售单
private SaleBill saleBill; private List<SaleBill> saleBillList;
// 支付订单 // 支付订单
private Order order; private Order order;

6
payment-base-app/src/main/java/com/base/springcloud/client/PaymentClient.java

@ -2,13 +2,11 @@ package com.base.springcloud.client;
import com.base.springcloud.base.CommonResult; import com.base.springcloud.base.CommonResult;
import com.base.springcloud.dto.MerchantConfigReqDTO; import com.base.springcloud.dto.MerchantConfigReqDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(value = "payment-service-client")
public interface PaymentClient { public interface PaymentClient {
@PostMapping(value = "/merchant/merchantConfig") /*@PostMapping(value = "/merchant/merchantConfig")
CommonResult paymentConfigure(@RequestBody MerchantConfigReqDTO merchantConfigDTO); CommonResult paymentConfigure(@RequestBody MerchantConfigReqDTO merchantConfigDTO);*/
} }

3
payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java

@ -16,7 +16,8 @@ public enum ErrorConstant {
MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"), MERCHANT_CONFIGURE_FAIL("RBS00011","商户支付信息配置失败!"),
USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"), USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"),
SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"), SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"),
SALE_BILL__INVALID("RBS00014","无有效销售单据!"); SALE_BILL__INVALID("RBS00014","无有效销售单据!"),
MERCHANT_PAY_CERT_READ_FAIL("RBS00015","支付证书读取失败!");
private String code; private String code;
private String message; private String message;

11
payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java

@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
@RestController @RestController
@ -38,8 +39,9 @@ public class PaymentController {
@ApiOperation(value = "native下单", notes = "微信native下单") @ApiOperation(value = "native下单", notes = "微信native下单")
@LoginRequired(department=true) @LoginRequired(department=true)
@GetMapping("/nativePlaceOrder") @GetMapping("/nativePlaceOrder")
public ReportResult nativePlaceOrder(@RequestParam String salesBillId) { public ReportResult nativePlaceOrder(@RequestParam String salesBillId, HttpServletRequest request) {
OrderBO orderBO = parameterUtil.nativePlaceOrderBefore(salesBillId); String createId = (String)request.getAttribute("createId");
OrderBO orderBO = parameterUtil.nativePlaceOrderBefore(salesBillId,createId);
String codeUrl = paymentService.placeOrder(orderBO); String codeUrl = paymentService.placeOrder(orderBO);
return new ReportResult(parameterUtil.nativePlaceOrderAfter(codeUrl)); return new ReportResult(parameterUtil.nativePlaceOrderAfter(codeUrl));
} }
@ -47,8 +49,9 @@ public class PaymentController {
@ApiOperation(value = "销售单合并native下单", notes = "销售单合并native下单") @ApiOperation(value = "销售单合并native下单", notes = "销售单合并native下单")
@LoginRequired(department=true) @LoginRequired(department=true)
@GetMapping("/mergeNative") @GetMapping("/mergeNative")
public ReportResult mergeNative(@RequestParam String billIds) { public ReportResult mergeNative(@RequestParam String billIds,HttpServletRequest request) {
OrderBO orderBO = parameterUtil.mergeNativeBefore(billIds); String createId = (String)request.getAttribute("createId");
OrderBO orderBO = parameterUtil.mergeNativeBefore(billIds,createId);
String codeUrl = paymentService.placeOrder(orderBO); String codeUrl = paymentService.placeOrder(orderBO);
return new ReportResult(parameterUtil.mergeNativeAfter(codeUrl)); return new ReportResult(parameterUtil.mergeNativeAfter(codeUrl));
} }

19
payment-base-app/src/main/java/com/base/springcloud/dao/OrderBillMapper.java

@ -0,0 +1,19 @@
package com.base.springcloud.dao;
import com.base.springcloud.entity.OrderBill;
import org.springframework.stereotype.Repository;
@Repository
public interface OrderBillMapper {
int deleteByPrimaryKey(String id);
int insert(OrderBill record);
int insertSelective(OrderBill record);
OrderBill selectByPrimaryKey(String id);
int updateByPrimaryKeySelective(OrderBill record);
int updateByPrimaryKey(OrderBill record);
}

6
payment-base-app/src/main/java/com/base/springcloud/dao/SaleBillMapper.java

@ -4,7 +4,6 @@ import com.base.springcloud.entity.SaleBill;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Repository @Repository
@ -27,5 +26,8 @@ public interface SaleBillMapper {
int writeOffBill(SaleBill bill); int writeOffBill(SaleBill bill);
// 合并销售单据金额 // 合并销售单据金额
List<BigDecimal> mergeBillAmount(@Param("ids") String[] billIdArray); List<SaleBill> mergeBill(@Param("ids") String[] billIdArray);
// 获取子销售单据
List<SaleBill> childBill(@Param("ids") List<String> billIdList);
} }

2
payment-base-app/src/main/java/com/base/springcloud/entity/MerchantConfig.java

@ -46,7 +46,7 @@ public class MerchantConfig extends BaseEntity {
private String createId; private String createId;
/** /**
* 创建部门ID * 创建公司ID
*/ */
private String createCompanyId; private String createCompanyId;

21
payment-base-app/src/main/java/com/base/springcloud/entity/OrderBill.java

@ -0,0 +1,21 @@
package com.base.springcloud.entity;
import lombok.Data;
import java.util.Date;
@Data
public class OrderBill {
private String id;
private String orderId;
private String billId;
private String soureBillId;
private String createId;
private Date createTime;
}

6
payment-base-app/src/main/java/com/base/springcloud/service/BillService.java

@ -26,4 +26,10 @@ public interface BillService {
* @param orderBO * @param orderBO
*/ */
void mergeBillAmount(OrderBO orderBO); void mergeBillAmount(OrderBO orderBO);
/**
* 获取子销售单据
* @param orderBO
*/
void childBill(OrderBO orderBO,Boolean rootFlag);
} }

13
payment-base-app/src/main/java/com/base/springcloud/service/OrderBillService.java

@ -0,0 +1,13 @@
package com.base.springcloud.service;
import com.base.springcloud.bo.OrderBO;
public interface OrderBillService {
/**
* 登记销售单据和订单关联
* @param orderBO
*/
void registerOrderBill(OrderBO orderBO);
}

46
payment-base-app/src/main/java/com/base/springcloud/service/imp/BillServiceImp.java

@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -38,7 +39,9 @@ public class BillServiceImp implements BillService {
throw new BusinessException(ErrorConstant.BILL_INVALID); throw new BusinessException(ErrorConstant.BILL_INVALID);
} }
orderBO.setAmount(queryResult.getTotalAmount()); orderBO.setAmount(queryResult.getTotalAmount());
orderBO.setSaleBill(queryResult); List<SaleBill> saleBillList = new ArrayList<>();
saleBillList.add(queryResult);
orderBO.setSaleBillList(saleBillList);
} }
/** /**
@ -67,11 +70,48 @@ public class BillServiceImp implements BillService {
throw new BusinessException(ErrorConstant.NULL_OBJ); throw new BusinessException(ErrorConstant.NULL_OBJ);
} }
String[] billIdArray = billIds.split(","); String[] billIdArray = billIds.split(",");
List<BigDecimal> billAmountList = saleBillMapper.mergeBillAmount(billIdArray); List<SaleBill> billAmountList = saleBillMapper.mergeBill(billIdArray);
if(!Optional.ofNullable(billAmountList).isPresent()) if(!Optional.ofNullable(billAmountList).isPresent())
throw new BusinessException(ErrorConstant.SALE_BILL__INVALID); throw new BusinessException(ErrorConstant.SALE_BILL__INVALID);
BigDecimal orderAmount = new BigDecimal(0); BigDecimal orderAmount = new BigDecimal(0);
billAmountList.forEach(amount-> orderAmount.add(amount)); List<String> billIdList = new ArrayList<>();
billAmountList.forEach(
bill-> {
billIdList.add(bill.getId());
orderAmount.add(bill.getTotalAmount());
});
orderBO.setAmount(orderAmount); orderBO.setAmount(orderAmount);
orderBO.setSaleBillList(billAmountList);
orderBO.setBillIdList(billIdList);
}
/**
* 获取子销售单据
* @param orderBO
*/
@Override
public void childBill(OrderBO orderBO,Boolean rootFlag) {
List<String> billIdList = orderBO.getBillIdList();
List<String> childBillIdList;
if(rootFlag)
childBillIdList = billIdList;
else
childBillIdList = orderBO.getChildIdList();
BigDecimal amount = orderBO.getAmount();
List<SaleBill> saleBillList = saleBillMapper.childBill(childBillIdList);
// 查询结果不存在结束流程
if(!Optional.ofNullable(saleBillList).isPresent()) return;
childBillIdList.clear();
saleBillList.forEach(saleBill -> {
amount.add(saleBill.getTotalAmount());
billIdList.add(saleBill.getId());
childBillIdList.add(saleBill.getId());
});
// 所有的子单据编号需要存储
orderBO.setBillIdList(billIdList);
// 重置需作为父节点查询的单据编号
orderBO.setChildIdList(childBillIdList);
// 递归
childBill(orderBO,false);
} }
} }

21
payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java

@ -18,6 +18,9 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -132,7 +135,8 @@ public class MerchantServiceImp implements MerchantService {
} }
orderBO.setAppId(merchantConfig.getAppId()); orderBO.setAppId(merchantConfig.getAppId());
orderBO.setMchPrivateKey(merchantConfig.getMchPrivateKey()); orderBO.setMchPrivateKey(merchantConfig.getMchPrivateKey());
orderBO.setCertificate(merchantConfig.getCertPath()); String certificate = readCert(merchantConfig.getCertPath());
orderBO.setCertificate(certificate);
orderBO.setSerialNo(merchantConfig.getSerialNo()); orderBO.setSerialNo(merchantConfig.getSerialNo());
} }
@ -157,6 +161,21 @@ public class MerchantServiceImp implements MerchantService {
return "文件上传失败!"; return "文件上传失败!";
} }
/**
* 文件读取
* @throws IOException
*/
public String readCert(String certPath) {
byte[] bytes;
try{
bytes = Files.readAllBytes(Paths.get(certPath));
}catch (IOException e) {
throw new BusinessException(ErrorConstant.MERCHANT_PAY_CERT_READ_FAIL);
}
return new String(bytes, StandardCharsets.UTF_8);
}
/** /**
* 测试文件删除 * 测试文件删除
* @param filePath * @param filePath

46
payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderBillServiceImp.java

@ -0,0 +1,46 @@
package com.base.springcloud.service.imp;
import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.dao.OrderBillMapper;
import com.base.springcloud.entity.Order;
import com.base.springcloud.entity.OrderBill;
import com.base.springcloud.entity.SaleBill;
import com.base.springcloud.service.OrderBillService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service
public class OrderBillServiceImp implements OrderBillService {
Logger logger = LoggerFactory.getLogger(OrderBillServiceImp.class);
@Autowired
private OrderBillMapper orderBillMapper;
/**
* 登记销售单据和订单关联
*
* @param orderBO
*/
@Override
public void registerOrderBill(OrderBO orderBO) {
Order order = orderBO.getOrder();
List<SaleBill> saleBillList = orderBO.getSaleBillList();
saleBillList.forEach(item -> {
OrderBill orderBill = new OrderBill();
orderBill.setId(UUID.randomUUID().toString().replace("-", ""));
orderBill.setCreateTime(new Date());
orderBill.setSoureBillId(item.getSourceId());
orderBill.setBillId(item.getId());
orderBill.setOrderId(order.getId());
orderBillMapper.insert(orderBill);
});
}
}

2
payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java

@ -27,7 +27,6 @@ public class OrderServiceImp implements OrderService {
@Override @Override
public void registerOrder(OrderBO orderBO) { public void registerOrder(OrderBO orderBO) {
SaleBill saleBill = orderBO.getSaleBill();
BigDecimal amount = orderBO.getAmount(); BigDecimal amount = orderBO.getAmount();
if(amount.compareTo(BigDecimal.ZERO) <= 0){ if(amount.compareTo(BigDecimal.ZERO) <= 0){
throw new BusinessException(ErrorConstant.BILL_AMOUNT_ERR); throw new BusinessException(ErrorConstant.BILL_AMOUNT_ERR);
@ -45,7 +44,6 @@ public class OrderServiceImp implements OrderService {
order.setTimeStamp(new Date()); order.setTimeStamp(new Date());
order.setMchId(orderBO.getMchId()); order.setMchId(orderBO.getMchId());
order.setOrderState(PaymentConstant.WAIT); order.setOrderState(PaymentConstant.WAIT);
order.setSourceBillId(Optional.ofNullable(saleBill.getSourceId()).orElse(saleBill.getId()));
order.setOrderAmount(DecimalUtil.multiply(amount,new BigDecimal(100)).setScale(0,BigDecimal.ROUND_DOWN)); order.setOrderAmount(DecimalUtil.multiply(amount,new BigDecimal(100)).setScale(0,BigDecimal.ROUND_DOWN));
orderMapper.insert(order); orderMapper.insert(order);
orderBO.setOrder(order); orderBO.setOrder(order);

7
payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java

@ -33,6 +33,9 @@ public class PaymentServiceImp implements PaymentService {
@Autowired @Autowired
private WecPaymentService wecPaymentService; private WecPaymentService wecPaymentService;
@Autowired
private OrderBillService orderBillService;
@Override @Override
public String placeOrder(OrderBO orderBO){ public String placeOrder(OrderBO orderBO){
// 参数检查 // 参数检查
@ -43,10 +46,14 @@ public class PaymentServiceImp implements PaymentService {
else else
// 销售单据核查 // 销售单据核查
billService.billCheck(orderBO); billService.billCheck(orderBO);
// 获取子销售单据
billService.childBill(orderBO,true);
// 查询商户支付信息配置 // 查询商户支付信息配置
merchantService.claimMerchantConfig(orderBO); merchantService.claimMerchantConfig(orderBO);
// 登记订单 // 登记订单
orderService.registerOrder(orderBO); orderService.registerOrder(orderBO);
// 登记销售单据和订单关联
orderBillService.registerOrderBill(orderBO);
// 请求微信生成二维码 // 请求微信生成二维码
return wecPaymentService.wecNativePay(orderBO); return wecPaymentService.wecNativePay(orderBO);
} }

4
payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java

@ -94,7 +94,7 @@ public class WecPaymentServiceImp implements WecPaymentService {
return WxpayUtils.queryWxOrder(url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo()); return WxpayUtils.queryWxOrder(url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo());
} }
public static void main(String[] args) { /*public static void main(String[] args) {
OrderBO orderBO = new OrderBO(); OrderBO orderBO = new OrderBO();
orderBO.setAppId("wxe61ee6c21345d74d"); orderBO.setAppId("wxe61ee6c21345d74d");
orderBO.setMchId("1537100771"); orderBO.setMchId("1537100771");
@ -128,6 +128,6 @@ public class WecPaymentServiceImp implements WecPaymentService {
orderBO.getSerialNo()); orderBO.getSerialNo());
System.out.println("Native支付订单 :{} " + order.getOrderNo() + " 接收响应数据 :{} "+ objectNode.toString()); System.out.println("Native支付订单 :{} " + order.getOrderNo() + " 接收响应数据 :{} "+ objectNode.toString());
System.out.println(objectNode.toString()); System.out.println(objectNode.toString());
} }*/
} }

6
payment-base-app/src/main/java/com/base/springcloud/util/ParameterUtil.java

@ -18,9 +18,10 @@ public class ParameterUtil {
* @param billId * @param billId
* @return * @return
*/ */
public OrderBO nativePlaceOrderBefore(String billId){ public OrderBO nativePlaceOrderBefore(String billId,String createId){
OrderBO orderBO = new OrderBO(); OrderBO orderBO = new OrderBO();
orderBO.setBillIds(billId); orderBO.setBillIds(billId);
orderBO.setCreateId(createId);
orderBO.setMergeFlag(false); orderBO.setMergeFlag(false);
orderBO.setMchId(PaymentConstant.DEFAULT_MCH_ID); orderBO.setMchId(PaymentConstant.DEFAULT_MCH_ID);
return orderBO; return orderBO;
@ -53,10 +54,11 @@ public class ParameterUtil {
return refundBO; return refundBO;
} }
public OrderBO mergeNativeBefore(String billIds) { public OrderBO mergeNativeBefore(String billIds,String createId) {
OrderBO orderBO = new OrderBO(); OrderBO orderBO = new OrderBO();
orderBO.setMergeFlag(true); orderBO.setMergeFlag(true);
orderBO.setBillIds(billIds); orderBO.setBillIds(billIds);
orderBO.setCreateId(createId);
return orderBO; return orderBO;
} }

5
payment-base-app/src/main/java/com/base/springcloud/util/TokenUtils.java

@ -50,7 +50,7 @@ public class TokenUtils {
User user = userService.getUser(username); User user = userService.getUser(username);
// 校验token是否超时失效 & 或者账号密码是否错误 // 校验token是否超时失效 & 或者账号密码是否错误
//this.TokenValidity(token,user); TokenValidity(token,user);
return user; return user;
} }
@ -62,7 +62,8 @@ public class TokenUtils {
* @param user * @param user
*/ */
public void TokenValidity(String token, User user) { public void TokenValidity(String token, User user) {
String redisToken = String.valueOf(redisService.get(PaymentConstant.TOKEN_PREFIX + token)); String key = PaymentConstant.TOKEN_PREFIX + token;
String redisToken = String.valueOf(redisService.get(key));
if (StringUtils.isBlank(redisToken)) if (StringUtils.isBlank(redisToken))
throw new BusinessException(ErrorConstant.TOKEN_EXPIRATION_DATE); throw new BusinessException(ErrorConstant.TOKEN_EXPIRATION_DATE);
if (!JwtUtil.verify(redisToken, user.getUserName(), user.getPassword())) if (!JwtUtil.verify(redisToken, user.getUserName(), user.getPassword()))

5
payment-base-app/src/main/java/com/base/springcloud/wxsdk/WxpayUtils.java

@ -216,8 +216,9 @@ public class WxpayUtils {
* @throws UnsupportedEncodingException * @throws UnsupportedEncodingException
*/ */
public static CloseableHttpClient getClient(String mchid, String serialNo, PrivateKey privateKey, String certificate) throws CertificateException, IOException { public static CloseableHttpClient getClient(String mchid, String serialNo, PrivateKey privateKey, String certificate) throws CertificateException, IOException {
//byte[] bytes = certificate.getBytes(StandardCharsets.UTF_8); byte[] bytes = certificate.getBytes(StandardCharsets.UTF_8);
ByteArrayInputStream base = new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(certificate)); // new BASE64Decoder().decodeBuffer(certificate)
ByteArrayInputStream base = new ByteArrayInputStream(bytes);
List<X509Certificate> certs = new ArrayList<>(); List<X509Certificate> certs = new ArrayList<>();
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = null; X509Certificate cert = null;

4
payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml

@ -10,7 +10,7 @@
<result column="mch_id" jdbcType="VARCHAR" property="mchId"/> <result column="mch_id" jdbcType="VARCHAR" property="mchId"/>
<result column="mch_private_key" jdbcType="VARCHAR" property="mchPrivateKey"/> <result column="mch_private_key" jdbcType="VARCHAR" property="mchPrivateKey"/>
<result column="create_id" jdbcType="VARCHAR" property="createId"/> <result column="create_id" jdbcType="VARCHAR" property="createId"/>
<result column="create_depart_id" jdbcType="VARCHAR" property="createDepartId"/> <result column="create_company_id" jdbcType="VARCHAR" property="createCompanyId"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_id" jdbcType="VARCHAR" property="updateId"/> <result column="update_id" jdbcType="VARCHAR" property="updateId"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
@ -19,7 +19,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,app_id,api_key,cert_path,serial_no,mch_id,mch_private_key, id,app_id,api_key,cert_path,serial_no,mch_id,mch_private_key,
create_id,create_depart_id,create_time,update_id,update_time,time_stamp create_id,create_company_id,create_time,update_id,update_time,time_stamp
</sql> </sql>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"> <delete id="deleteByPrimaryKey" parameterType="java.lang.String">

106
payment-base-app/src/main/resources/com/base/payment/mapper/OrderBillMapper.xml

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.base.springcloud.dao.OrderBillMapper">
<resultMap id="BaseResultMap" type="com.base.springcloud.entity.OrderBill">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="order_id" jdbcType="VARCHAR" property="orderId" />
<result column="bill_id" jdbcType="VARCHAR" property="billId" />
<result column="soure_bill_id" jdbcType="VARCHAR" property="soureBillId" />
<result column="create_id" jdbcType="VARCHAR" property="createId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Base_Column_List">
id, order_id, bill_id, soure_bill_id, create_id, create_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from pay_order_bill
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from pay_order_bill
where id = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.base.springcloud.entity.OrderBill">
insert into pay_order_bill (id, order_id, bill_id,
soure_bill_id, create_id, create_time
)
values (#{id,jdbcType=VARCHAR}, #{orderId,jdbcType=VARCHAR}, #{billId,jdbcType=VARCHAR},
#{soureBillId,jdbcType=VARCHAR}, #{createId,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}
)
</insert>
<insert id="insertSelective" parameterType="com.base.springcloud.entity.OrderBill">
insert into pay_order_bill
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="orderId != null">
order_id,
</if>
<if test="billId != null">
bill_id,
</if>
<if test="soureBillId != null">
soure_bill_id,
</if>
<if test="createId != null">
create_id,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="orderId != null">
#{orderId,jdbcType=VARCHAR},
</if>
<if test="billId != null">
#{billId,jdbcType=VARCHAR},
</if>
<if test="soureBillId != null">
#{soureBillId,jdbcType=VARCHAR},
</if>
<if test="createId != null">
#{createId,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.base.springcloud.entity.OrderBill">
update pay_order_bill
<set>
<if test="orderId != null">
order_id = #{orderId,jdbcType=VARCHAR},
</if>
<if test="billId != null">
bill_id = #{billId,jdbcType=VARCHAR},
</if>
<if test="soureBillId != null">
soure_bill_id = #{soureBillId,jdbcType=VARCHAR},
</if>
<if test="createId != null">
create_id = #{createId,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.base.springcloud.entity.OrderBill">
update pay_order_bill
set order_id = #{orderId,jdbcType=VARCHAR},
bill_id = #{billId,jdbcType=VARCHAR},
soure_bill_id = #{soureBillId,jdbcType=VARCHAR},
create_id = #{createId,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>

18
payment-base-app/src/main/resources/com/base/payment/mapper/SaleBillMapper.xml

@ -53,6 +53,9 @@
lock_amount, source_no, is_same_settle, is_turn_sale, logistics_no, is_platform_supplier, lock_amount, source_no, is_same_settle, is_turn_sale, logistics_no, is_platform_supplier,
sale_no, is_delivery, is_auto, attachment, bill_proc_status, is_ref_stk sale_no, is_delivery, is_auto, attachment, bill_proc_status, is_ref_stk
</sql> </sql>
<sql id="Merge_Column_List">
id,total_amount,source_id
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
@ -544,12 +547,23 @@
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<select id="mergeBillAmount" resultType="java.math.BigDecimal"> <select id="mergeBill" resultType="java.math.BigDecimal">
select total_amount select
<include refid="Merge_Column_List" />
from stk_io_bill from stk_io_bill
where id in where id in
<foreach collection="ids" item="item" open="(" separator="," close=")"> <foreach collection="ids" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARCHAR} #{item,jdbcType=VARCHAR}
</foreach> </foreach>
</select> </select>
<select id="childBill" resultType="java.math.BigDecimal">
select
<include refid="Merge_Column_List" />
from stk_io_bill
where source_id in
<foreach collection="ids" item="item" open="(" separator="," close=")">
#{item,jdbcType=VARCHAR}
</foreach>
</select>
</mapper> </mapper>

13
payment-base-app/src/main/resources/generatorConfig.xml

@ -60,23 +60,18 @@
<!-- tableName为对应的数据库表 --> <!-- tableName为对应的数据库表 -->
<!-- domainObjectName是要生成的实体类 --> <!-- domainObjectName是要生成的实体类 -->
<!-- enable*ByExample是否生成 example类 --> <!-- enable*ByExample是否生成 example类 -->
<table tableName="pay_refund" domainObjectName="Refund" <table tableName="pay_order_bill" domainObjectName="OrderBill"
enableCountByExample="false" enableDeleteByExample="false" enableCountByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" enableUpdateByExample="false"> enableSelectByExample="false" enableUpdateByExample="false">
<!-- 忽略列,不生成bean 字段 --> <!-- 忽略列,不生成bean 字段 -->
<!-- <ignoreColumn column="FRED" /> --> <!-- <ignoreColumn column="FRED" /> -->
<!-- 指定列的java数据类型 --> <!-- 指定列的java数据类型 -->
<columnOverride column="id" property="id" jdbcType="VARCHAR" /> <columnOverride column="id" property="id" jdbcType="VARCHAR" />
<columnOverride column="refund_order_no" property="refundOrderNo" jdbcType="VARCHAR" /> <columnOverride column="order_id" property="orderId" jdbcType="VARCHAR" />
<columnOverride column="refund_time" property="refundTime" jdbcType="TIMESTAMP" /> <columnOverride column="bill_id" property="billId" jdbcType="VARCHAR" />
<columnOverride column="soure_bill_id" property="soureBillId" jdbcType="VARCHAR" />
<columnOverride column="create_id" property="createId" jdbcType="VARCHAR" /> <columnOverride column="create_id" property="createId" jdbcType="VARCHAR" />
<columnOverride column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <columnOverride column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<columnOverride column="orig_order_no" property="origOrderNo" jdbcType="VARCHAR" />
<columnOverride column="orig_order_time" property="origOrderTime" jdbcType="TIMESTAMP" />
<columnOverride column="source_bill_id" property="sourceBillId" jdbcType="VARCHAR" />
<columnOverride column="reason" property="reason" jdbcType="VARCHAR" />
<columnOverride column="refund_state" property="refundState" jdbcType="INTEGER" />
<columnOverride column="refund_retry_count" property="refundRetryCount" jdbcType="INTEGER" />
</table> </table>
</context> </context>
</generatorConfiguration> </generatorConfiguration>
Loading…
Cancel
Save