Browse Source

feat:0 支付工程

master
yang_shj 4 years ago
parent
commit
00232e6646
  1. 13
      payment-base-app/pom.xml
  2. 2
      payment-base-app/src/main/java/com/base/springcloud/PaymentBaseApplication.java
  3. 7
      payment-base-app/src/main/java/com/base/springcloud/base/ReportResult.java
  4. 4
      payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java
  5. 2
      payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java
  6. 50
      payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java
  7. 6
      payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
  8. 8
      payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java
  9. 5
      payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java
  10. 2
      payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java
  11. 35
      payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigRspDTO.java
  12. 20
      payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java
  13. 24
      payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java
  14. 19
      payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java
  15. 20
      payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java
  16. 104
      payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
  17. 22
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
  18. 37
      payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
  19. 6
      payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
  20. 9
      payment-base-app/src/main/java/com/base/springcloud/service/orderService.java
  21. 4
      payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtil.java
  22. 71
      payment-base-app/src/main/java/com/base/springcloud/util/FtpUtil.java
  23. 13
      payment-base-app/src/main/resources/application.yml
  24. 82
      payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
  25. 10
      payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml

13
payment-base-app/pom.xml

@ -80,6 +80,19 @@
<version>0.4.2</version>
</dependency>
<!-- ftp client -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.1</version>
</dependency>
<!-- mq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>

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

@ -4,11 +4,13 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableEurekaClient
@EnableSwagger2
@EnableScheduling
@MapperScan("com.base.springcloud.dao")
public class PaymentBaseApplication {

7
payment-base-app/src/main/java/com/base/springcloud/base/ReportResult.java

@ -1,19 +1,20 @@
package com.base.springcloud.base;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class ReportResult<T> {
//返回的数据
private T data;
private List<T> data;
public ReportResult(T data) {
public ReportResult(List<T> data) {
this.data = data;
}
}

4
payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java

@ -2,9 +2,13 @@ package com.base.springcloud.bo;
import lombok.Data;
import java.io.File;
@Data
public class MerchantConfigBO {
private File certfile;
private String appId;
private String appKey;

2
payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java

@ -20,4 +20,6 @@ public interface PaymentConstant {
String CP = "CP"; // 云闪付
String QRCCP = "QRCCP";
String ORDER_QUEUE = "order_queue"; // 订单队列
}

50
payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java

@ -3,32 +3,64 @@ package com.base.springcloud.controller;
import com.base.springcloud.base.CommonResult;
import com.base.springcloud.bo.MerchantConfigBO;
import com.base.springcloud.constant.ErrorConstant;
import com.base.springcloud.dto.MerchantConfigDTO;
import com.base.springcloud.entity.MerchantConfig;
import com.base.springcloud.dto.MerchantConfigReqDTO;
import com.base.springcloud.dto.MerchantConfigRspDTO;
import com.base.springcloud.service.MerchantService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@Slf4j
@Api(tags="商户管理")
@Api(tags = "商户管理")
@RequestMapping("/merchant")
public class MerchantController {
@Autowired
private MerchantService merchantService;
@ApiOperation(value = "商户支付信息配置", notes = "商户信息配置接口")
@ApiOperation(value = "商户支付信息配置", notes = "商户信息配置新增接口")
@PostMapping("/merchantConfig")
public CommonResult paymentConfigure(@RequestBody MerchantConfigDTO merchantConfigDTO) {
public CommonResult paymentConfigure(@RequestBody MerchantConfigReqDTO merchantConfigDTO) {
MerchantConfigBO merchantConfigBO = new MerchantConfigBO();
BeanUtils.copyProperties(merchantConfigBO, merchantConfigDTO);
merchantService.paymentConfigure(merchantConfigBO);
return new CommonResult(ErrorConstant.NULL_OBJ.getCode(), ErrorConstant.NULL_OBJ.getMessage(), null);
}
@ApiOperation(value = "更新商户支付信息配置", notes = "商户信息配置更新接口")
@PostMapping("/updateMerchantConfig")
public CommonResult updateMerchantConfig(@RequestBody MerchantConfigReqDTO merchantConfigDTO) {
MerchantConfigBO merchantConfigBO = new MerchantConfigBO();
BeanUtils.copyProperties(merchantConfigBO, merchantConfigDTO);
merchantService.updateMerchantConfig(merchantConfigBO);
return new CommonResult(ErrorConstant.NULL_OBJ.getCode(), ErrorConstant.NULL_OBJ.getMessage(), null);
}
@ApiOperation(value = "删除商户支付配置信息", notes = "商户信息配置删除接口")
@PostMapping("/removeMerchantConfig")
public CommonResult removeMerchantConfig(@RequestParam String merchantId) {
merchantService.removeMerchantConfig(merchantId);
return new CommonResult(ErrorConstant.NULL_OBJ.getCode(), ErrorConstant.NULL_OBJ.getMessage(), null);
}
@ApiOperation(value = "查询商户支付配置信息", notes = "商户信息配置查询接口")
@PostMapping("/queryMerchantConfig")
public CommonResult queryMerchantConfig(@RequestBody MerchantConfigReqDTO merchantConfigDTO) {
MerchantConfigBO merchantConfigBO = new MerchantConfigBO();
BeanUtils.copyProperties(merchantConfigBO, merchantConfigDTO);
List<MerchantConfigBO> merchantConfigList = merchantService.queryMerchantConfig(merchantConfigBO);
List<MerchantConfigRspDTO> merchantConfigRspList = merchantConfigList.stream().map(t -> {
MerchantConfigRspDTO merchantConfigRspDTO = new MerchantConfigRspDTO();
BeanUtils.copyProperties(merchantConfigRspDTO,t);
return merchantConfigRspDTO;
}).collect(Collectors.toList());
return new CommonResult(ErrorConstant.NULL_OBJ.getCode(), ErrorConstant.NULL_OBJ.getMessage(), merchantConfigRspList);
}
}

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

@ -18,7 +18,9 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@Slf4j
@ -35,8 +37,10 @@ public class PaymentController {
OrderBO orderBO = new OrderBO();
orderBO.setBillNo(salesBill);
String codeUrl = paymentService.placeOrder(orderBO);
List<NativePlaceOrderDTO> array = new ArrayList<>();
NativePlaceOrderDTO nativePlaceOrderDTO = new NativePlaceOrderDTO();
nativePlaceOrderDTO.setCodeUrl(codeUrl);
return new ReportResult(nativePlaceOrderDTO);
array.add(nativePlaceOrderDTO);
return new ReportResult(array);
}
}

8
payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java

@ -3,6 +3,8 @@ package com.base.springcloud.dao;
import com.base.springcloud.entity.MerchantConfig;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface MerchantConfigMapper {
int deleteByPrimaryKey(String id);
@ -16,4 +18,10 @@ public interface MerchantConfigMapper {
int updateByPrimaryKeySelective(MerchantConfig record);
int updateByPrimaryKey(MerchantConfig record);
int updateMerchantConfig(MerchantConfig merchantConfig);
int removeMerchantConfig(String merchantId);
List<MerchantConfig> queryMerchantConfig(MerchantConfig merchantConfig);
}

5
payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java

@ -3,6 +3,9 @@ package com.base.springcloud.dao;
import com.base.springcloud.entity.Order;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface OrderMapper {
@ -17,4 +20,6 @@ public interface OrderMapper {
int updateByPrimaryKeySelective(Order record);
int updateByPrimaryKey(Order record);
List<Order> queryOrder(Date date);
}

2
payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigDTO.java → payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java

@ -5,7 +5,7 @@ import lombok.Data;
import java.io.File;
@Data
public class MerchantConfigDTO {
public class MerchantConfigReqDTO {
private File certFile;

35
payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigRspDTO.java

@ -0,0 +1,35 @@
package com.base.springcloud.dto;
import lombok.Data;
import java.io.File;
@Data
public class MerchantConfigRspDTO {
private File certFile;
private String appId;
private String appKey;
private String certPath;
private String merchantId;
private String merchantName;
private String cityStoreName;
private String storeBrandName;
private String signType;
private String privateKey;
private String deviceInfo;
private String spbillCreateIp;
private String notifyUrl;
}

20
payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java

@ -0,0 +1,20 @@
package com.base.springcloud.handle;
import com.base.springcloud.entity.Order;
import com.base.springcloud.service.PaymentService;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class RBSQueueHandler {
@Autowired
private PaymentService paymentService;
@RabbitListener(queues = "order_queue")
public void orderInfo(Order order) {
paymentService.queryOrder(order);
}
}

24
payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java

@ -0,0 +1,24 @@
package com.base.springcloud.schedule;
import com.base.springcloud.service.PaymentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class OrderTask {
Logger logger = LoggerFactory.getLogger(OrderTask.class);
@Autowired
private PaymentService paymentService;
@Scheduled(cron = "0/10 * * * * ?")
public void syncOrderInfo(){
paymentService.syncOrderInfo(new Date());
}
}

19
payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java

@ -2,6 +2,8 @@ package com.base.springcloud.service;
import com.base.springcloud.bo.MerchantConfigBO;
import java.util.List;
public interface MerchantService {
/**
@ -9,4 +11,21 @@ public interface MerchantService {
* @param merchantConfigBO
*/
void paymentConfigure(MerchantConfigBO merchantConfigBO);
/**
* 支付信息配置移除
* @param merchantId
*/
void removeMerchantConfig(String merchantId);
/**
* 支付信息配置修改
* @param merchantConfigBO
*/
void updateMerchantConfig(MerchantConfigBO merchantConfigBO);
/**
* 支付信息配置查询
*/
List<MerchantConfigBO> queryMerchantConfig(MerchantConfigBO merchantConfigBO);
}

20
payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java

@ -1,9 +1,27 @@
package com.base.springcloud.service;
import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.entity.Order;
import java.util.Date;
public interface PaymentService {
// 下单
/**
* 下单
* @param orderBO
* @return
*/
String placeOrder(OrderBO orderBO);
/**
* 订单查询
*/
void syncOrderInfo(Date date);
/**
* 订单信息同步
* @param order
*/
void queryOrder(Order order);
}

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

@ -1,14 +1,118 @@
package com.base.springcloud.service.imp;
import com.base.springcloud.bo.MerchantConfigBO;
import com.base.springcloud.dao.MerchantConfigMapper;
import com.base.springcloud.dto.MerchantConfigRspDTO;
import com.base.springcloud.entity.MerchantConfig;
import com.base.springcloud.service.MerchantService;
import com.base.springcloud.util.FtpUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class MerchantServiceImp implements MerchantService {
@Autowired
private MerchantConfigMapper merchantConfigMapper;
@Autowired
private FtpUtil ftpUtil;
/**
* 支付信息配置
* @param merchantConfigBO
*/
@Override
public void paymentConfigure(MerchantConfigBO merchantConfigBO) {
// 证书上传服务器
String certPath = uplodWecPayCert(merchantConfigBO.getMerchantId(),merchantConfigBO.getCertfile());
// 商户支付信息保存
merchantConfigBO.setCertPath(certPath);
MerchantConfig merchantConfig = new MerchantConfig();
BeanUtils.copyProperties(merchantConfig,merchantConfigBO);
merchantConfigMapper.insert(merchantConfig);
}
/**
* 支付信息配置删除
* @param merchantId
*/
@Override
public void removeMerchantConfig(String merchantId) {
int count = merchantConfigMapper.removeMerchantConfig(merchantId);
if(count > 0) return;
// TODO 抛业务异常
}
/**
* 支付信息修改
* @param merchantConfigBO
*/
@Override
public void updateMerchantConfig(MerchantConfigBO merchantConfigBO) {
// 证书上传服务器
String certPath = uplodWecPayCert(merchantConfigBO.getMerchantId(),merchantConfigBO.getCertfile());
// 商户支付信息保存
merchantConfigBO.setCertPath(certPath);
MerchantConfig merchantConfig = new MerchantConfig();
BeanUtils.copyProperties(merchantConfig,merchantConfigBO);
int count = merchantConfigMapper.updateMerchantConfig(merchantConfig);
if(count > 0) return;
// TODO 抛业务异常
}
/**
* 支付信息配置查询
* @param merchantConfigBO
* @return
*/
@Override
public List<MerchantConfigBO> queryMerchantConfig(MerchantConfigBO merchantConfigBO) {
MerchantConfig merchantConfig = new MerchantConfig();
BeanUtils.copyProperties(merchantConfig,merchantConfigBO);
List<MerchantConfig> merchantConfigList = merchantConfigMapper.queryMerchantConfig(merchantConfig);
if(!Optional.ofNullable(merchantConfigList).isPresent()){
// TODO 抛出业务异常
}
List<MerchantConfigBO> merchantConfigBOList = merchantConfigList.stream().map(t -> {
MerchantConfigBO result = new MerchantConfigBO();
BeanUtils.copyProperties(result, t);
return result;
}).collect(Collectors.toList());
return merchantConfigBOList;
}
/**
* 证书上传服务器
* @param mchId
* @param certfile
* @return
*/
private String uplodWecPayCert(String mchId,File certfile){
//获取文件名
String fileName = certfile.getName();
//获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
fileName = mchId + suffixName;
//上传的文件名也需要加上后缀,不然虚拟机不知道文件格式
try{
InputStream inputStream = new FileInputStream(certfile);
Boolean flag = ftpUtil.uploadFile(fileName, inputStream);
if (flag == true) {
return ftpUtil.FTP_BASEPATH + fileName;
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
}

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

@ -6,13 +6,17 @@ import com.base.springcloud.dao.OrderMapper;
import com.base.springcloud.entity.Order;
import com.base.springcloud.service.OrderService;
import com.base.springcloud.util.DateUtil;
import com.base.springcloud.util.DecimalUtils;
import com.base.springcloud.util.DecimalUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
public class OrderServiceImp implements OrderService {
@ -36,8 +40,22 @@ public class OrderServiceImp implements OrderService {
order.setTimeStamp(new Date());
order.setMchId("888027018000004");
order.setOrderState(PaymentConstant.WAIT);
order.setOrderAmount(DecimalUtils.divide(orderBO.getSaleBill().getTotalAmount(),new BigDecimal(100)));
order.setOrderAmount(DecimalUtil.divide(orderBO.getSaleBill().getTotalAmount(),new BigDecimal(100)));
orderMapper.insert(order);
orderBO.setOrder(order);
}
@Override
public List<OrderBO> queryOrder(Date date) {
List<Order> orderList = orderMapper.queryOrder(date);
if(!Optional.ofNullable(orderList).isPresent()){
return null;
}
List<OrderBO> orderBOList = orderList.stream().map(o -> {
OrderBO orderBO = new OrderBO();
BeanUtils.copyProperties(orderBO,o);
return orderBO;
}).collect(Collectors.toList());
return orderBOList;
}
}

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

@ -1,17 +1,20 @@
package com.base.springcloud.service.imp;
import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.entity.Order;
import com.base.springcloud.service.BillService;
import com.base.springcloud.service.OrderService;
import com.base.springcloud.service.PaymentService;
import com.base.springcloud.service.WecPaymentService;
import com.base.springcloud.util.DateUtil;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import javax.xml.crypto.Data;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Service
public class PaymentServiceImp implements PaymentService {
@ -25,9 +28,12 @@ public class PaymentServiceImp implements PaymentService {
@Autowired
private WecPaymentService wecPaymentService;
@Autowired
private AmqpTemplate amqpTemplate;
@Override
public String placeOrder(OrderBO orderBO){
Order order = new Order();
// 参数检查
parameterCheck(orderBO);
// 销售单据核查
@ -39,6 +45,31 @@ public class PaymentServiceImp implements PaymentService {
return codeUrl;
}
/**
* 订单查询
*/
@Override
public void syncOrderInfo(Date date) {
// 获取订单列表
List<OrderBO> orderList = orderService.queryOrder(date);
if(Optional.ofNullable(orderList).isPresent()) return;
// 遍历查询第三方订单信息
for (OrderBO orderBO : orderList){
// 异步处理数据
amqpTemplate.convertSendAndReceive(PaymentConstant.ORDER_QUEUE,orderBO);
}
}
/**
* 订单信息查询
* @param order
*/
@Override
public void queryOrder(Order order) {
}
// 参数检查
private void parameterCheck(OrderBO orderBO) {
}

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

@ -5,7 +5,7 @@ import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.entity.Order;
import com.base.springcloud.service.WecPaymentService;
import com.base.springcloud.util.DateUtil;
import com.base.springcloud.util.DecimalUtils;
import com.base.springcloud.util.DecimalUtil;
import com.hisun.iposm.HiCASignUtil2;
import com.hisun.iposm.HiiposmUtil;
import org.apache.commons.lang.StringUtils;
@ -46,7 +46,7 @@ public class WecPaymentServiceImp implements WecPaymentService {
signDate.append(PaymentConstant.SIGN_TYPE);
signDate.append(type);
signDate.append(version);
signDate.append(DecimalUtils.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
signDate.append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
signDate.append(createDate);
switch (order.getOrderType()){
case PaymentConstant.WEC : signDate.append(PaymentConstant.QRCWC); break;
@ -69,7 +69,7 @@ public class WecPaymentServiceImp implements WecPaymentService {
requestParam.append("&signType=").append(PaymentConstant.SIGN_TYPE);
requestParam.append("&type=").append(type);
requestParam.append("&version=").append(version);
requestParam.append("&amount=").append(DecimalUtils.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
requestParam.append("&amount=").append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount()));
requestParam.append("&orderDate=").append(createDate);
requestParam.append("&payWay=");
switch (order.getOrderType()){

9
payment-base-app/src/main/java/com/base/springcloud/service/orderService.java

@ -1,9 +1,16 @@
package com.base.springcloud.service;
import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.entity.Order;
import java.util.Date;
import java.util.List;
public interface OrderService {
// 订单登记
void registerOrder(Order order);
void registerOrder(OrderBO orderBO);
// 查询订单
List<OrderBO> queryOrder(Date date);
}

4
payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtils.java → payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtil.java

@ -2,7 +2,7 @@ package com.base.springcloud.util;
import java.math.BigDecimal;
public class DecimalUtils {
public class DecimalUtil {
/**
* 加法计算result = x + y
@ -233,7 +233,7 @@ public class DecimalUtils {
if (x == null || multiple == null) {
return null;
}
return DecimalUtils.multiply(x, toBigDecimal(multiple));
return DecimalUtil.multiply(x, toBigDecimal(multiple));
}
/**

71
payment-base-app/src/main/java/com/base/springcloud/util/FtpUtil.java

@ -0,0 +1,71 @@
package com.base.springcloud.util;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
@Component
public class FtpUtil {
Logger logger = LoggerFactory.getLogger(FtpUtil.class);
//ftp服务器ip地址
@Value("${ftp.ftp_ip}")
private static String FTP_ADDRESS;
//端口号
@Value("${ftp.ftp_port}")
private static int FTP_PORT = 21;
//用户名
@Value("${ftp.ftp_username}")
private static String FTP_USERNAME;
//密码
@Value("${ftp.ftp_password}")
private static String FTP_PASSWORD;
//路径都是/home/加上用户名
@Value("${ftp.ftp_basepath}")
public final String FTP_BASEPATH = "/home/huanglong";
// 文件上传
public boolean uploadFile(String originFileName, InputStream input) {
//这是最开始引入的依赖里的方法
FTPClient ftp = new FTPClient();
ftp.setControlEncoding("utf-8");
try {
int reply;
ftp.connect(FTP_ADDRESS, FTP_PORT);// 连接FTP服务器
ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登录
reply = ftp.getReplyCode();//连接成功会的到一个返回状态码
System.out.println(reply);//可以输出看一下是否连接成功
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
ftp.changeWorkingDirectory(FTP_BASEPATH);//修改操作空间
//对了这里说明一下你所操作的文件夹必须要有可读权限,chomd 777 文件夹名//这里我就是用的我的home文件夹
ftp.storeFile(originFileName, input);
if (!FTPReply.isPositiveCompletion(reply)) {
logger.warn("ftp connect fail....");
ftp.disconnect();
return false;
}
input.close();
ftp.logout();
return true;
}catch (Exception e){
e.printStackTrace();
}finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return false;
}
}

13
payment-base-app/src/main/resources/application.yml

@ -25,7 +25,20 @@ spring:
url: jdbc:mysql://106.14.81.251:3306/rbs_erp_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false
username: root
password: hnrr%%360
#rabbitmq 配置
rabbitmq:
host: localhost
port: 5672
username: rbs-payment
password: pay123123
#mybatis:配置
mybatis:
type-aliases-package: com.base.springcloud.dao #实体类包路径
mapper-locations: classpath*:com/base/payment/mapper/*.xml #mapper.xml路径
ftp:
ftp_ip: 192.168.71.132
ftp_prot : 21
ftp_username : wangying
ftp_password : 123456
ftp_basepath : /home/wangying

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

@ -2,20 +2,20 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.base.springcloud.dao.MerchantConfigMapper">
<resultMap id="BaseResultMap" type="com.base.springcloud.entity.MerchantConfig">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="app_id" jdbcType="VARCHAR" property="appId" />
<result column="api_key" jdbcType="VARCHAR" property="appKey" />
<result column="cert_path" jdbcType="VARCHAR" property="certPath" />
<result column="merchant_id" jdbcType="VARCHAR" property="merchantId" />
<result column="merchant_name" jdbcType="VARCHAR" property="merchantName" />
<result column="city_store_name" jdbcType="VARCHAR" property="cityStoreName" />
<result column="store_brand_name" jdbcType="VARCHAR" property="storeBrandName" />
<result column="sign_type" jdbcType="VARCHAR" property="signType" />
<result column="private_key" jdbcType="VARCHAR" property="privateKey" />
<result column="device_info" jdbcType="VARCHAR" property="deviceInfo" />
<result column="spbill_create_ip" jdbcType="VARCHAR" property="spbillCreateIp" />
<result column="notify_url" jdbcType="VARCHAR" property="notifyUrl" />
<result column="time_stamp" jdbcType="TIMESTAMP" property="timeStamp" />
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="app_id" jdbcType="VARCHAR" property="appId"/>
<result column="api_key" jdbcType="VARCHAR" property="appKey"/>
<result column="cert_path" jdbcType="VARCHAR" property="certPath"/>
<result column="merchant_id" jdbcType="VARCHAR" property="merchantId"/>
<result column="merchant_name" jdbcType="VARCHAR" property="merchantName"/>
<result column="city_store_name" jdbcType="VARCHAR" property="cityStoreName"/>
<result column="store_brand_name" jdbcType="VARCHAR" property="storeBrandName"/>
<result column="sign_type" jdbcType="VARCHAR" property="signType"/>
<result column="private_key" jdbcType="VARCHAR" property="privateKey"/>
<result column="device_info" jdbcType="VARCHAR" property="deviceInfo"/>
<result column="spbill_create_ip" jdbcType="VARCHAR" property="spbillCreateIp"/>
<result column="notify_url" jdbcType="VARCHAR" property="notifyUrl"/>
<result column="time_stamp" jdbcType="TIMESTAMP" property="timeStamp"/>
</resultMap>
<sql id="Base_Column_List">
id, app_id, api_key, cert_path, merchant_id, merchant_name, city_store_name, store_brand_name,
@ -23,7 +23,7 @@
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
<include refid="Base_Column_List"/>
from pay_merchant_config
where id = #{id,jdbcType=VARCHAR}
</select>
@ -196,4 +196,56 @@
time_stamp = #{timeStamp,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=VARCHAR}
</update>
<delete id="removeMerchantConfig" parameterType="java.lang.String">
delete from pay_merchant_config
where merchant_id = #{merchantId,jdbcType=VARCHAR}
</delete>
<select id="queryMerchantConfig" parameterType="com.base.springcloud.entity.MerchantConfig" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from pay_merchant_config
<where>
<if test="appId != null">
app_id = #{appId,jdbcType=VARCHAR},
</if>
<if test="appKey != null">
api_key = #{appKey,jdbcType=VARCHAR},
</if>
<if test="certPath != null">
cert_path = #{certPath,jdbcType=VARCHAR},
</if>
<if test="merchantId != null">
merchant_id = #{merchantId,jdbcType=VARCHAR},
</if>
<if test="merchantName != null">
merchant_name = #{merchantName,jdbcType=VARCHAR},
</if>
<if test="cityStoreName != null">
city_store_name = #{cityStoreName,jdbcType=VARCHAR},
</if>
<if test="storeBrandName != null">
store_brand_name = #{storeBrandName,jdbcType=VARCHAR},
</if>
<if test="signType != null">
sign_type = #{signType,jdbcType=VARCHAR},
</if>
<if test="privateKey != null">
private_key = #{privateKey,jdbcType=VARCHAR},
</if>
<if test="deviceInfo != null">
device_info = #{deviceInfo,jdbcType=VARCHAR},
</if>
<if test="spbillCreateIp != null">
spbill_create_ip = #{spbillCreateIp,jdbcType=VARCHAR},
</if>
<if test="notifyUrl != null">
notify_url = #{notifyUrl,jdbcType=VARCHAR},
</if>
<if test="timeStamp != null">
time_stamp = #{timeStamp,jdbcType=TIMESTAMP},
</if>
</where>
</select>
</mapper>

10
payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml

@ -155,4 +155,14 @@
reserved = #{reserved,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
<select id="queryOrder" parameterType="java.util.Date" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from pay_order
<where>
<![CDATA[ create_time >= #{startTime,jdbcType=DATE} ]]>
</where>
order by time_stamp desc limit 10
</select>
</mapper>
Loading…
Cancel
Save