diff --git a/payment-base-app/pom.xml b/payment-base-app/pom.xml
index 97bada9..c8e4ea1 100644
--- a/payment-base-app/pom.xml
+++ b/payment-base-app/pom.xml
@@ -80,6 +80,19 @@
0.4.2
+
+
+ commons-net
+ commons-net
+ 3.1
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
org.apache.httpcomponents
httpclient
diff --git a/payment-base-app/src/main/java/com/base/springcloud/PaymentBaseApplication.java b/payment-base-app/src/main/java/com/base/springcloud/PaymentBaseApplication.java
index 41ccf3a..36d73c1 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/PaymentBaseApplication.java
+++ b/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 {
diff --git a/payment-base-app/src/main/java/com/base/springcloud/base/ReportResult.java b/payment-base-app/src/main/java/com/base/springcloud/base/ReportResult.java
index 51ce547..9b51ab6 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/base/ReportResult.java
+++ b/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 {
//返回的数据
- private T data;
+ private List data;
- public ReportResult(T data) {
+ public ReportResult(List data) {
this.data = data;
}
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java b/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java
index b7a9cbd..ed56617 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/bo/MerchantConfigBO.java
+++ b/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;
diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java
index 563f9aa..e9c52b2 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java
+++ b/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"; // 订单队列
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java b/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java
index 95d25f0..ef14364 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/controller/MerchantController.java
+++ b/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 merchantConfigList = merchantService.queryMerchantConfig(merchantConfigBO);
+ List 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);
+ }
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java b/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
index 584e922..c538d8e 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/controller/PaymentController.java
+++ b/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 array = new ArrayList<>();
NativePlaceOrderDTO nativePlaceOrderDTO = new NativePlaceOrderDTO();
nativePlaceOrderDTO.setCodeUrl(codeUrl);
- return new ReportResult(nativePlaceOrderDTO);
+ array.add(nativePlaceOrderDTO);
+ return new ReportResult(array);
}
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java
index 64fbc3a..8a4522c 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/dao/MerchantConfigMapper.java
+++ b/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 queryMerchantConfig(MerchantConfig merchantConfig);
}
\ No newline at end of file
diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java
index d98a513..1637936 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java
+++ b/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 queryOrder(Date date);
}
\ No newline at end of file
diff --git a/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigDTO.java b/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java
similarity index 92%
rename from payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigDTO.java
rename to payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigReqDTO.java
index 3feaf7a..d5bd608 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigDTO.java
+++ b/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;
diff --git a/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigRspDTO.java b/payment-base-app/src/main/java/com/base/springcloud/dto/MerchantConfigRspDTO.java
new file mode 100644
index 0000000..2550a42
--- /dev/null
+++ b/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;
+}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java b/payment-base-app/src/main/java/com/base/springcloud/handle/RBSQueueHandler.java
new file mode 100644
index 0000000..b81d0a6
--- /dev/null
+++ b/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);
+ }
+
+}
\ No newline at end of file
diff --git a/payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java b/payment-base-app/src/main/java/com/base/springcloud/schedule/OrderTask.java
new file mode 100644
index 0000000..611ad2f
--- /dev/null
+++ b/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());
+ }
+}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java b/payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java
index 776e3e9..6d1dadc 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/MerchantService.java
+++ b/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 queryMerchantConfig(MerchantConfigBO merchantConfigBO);
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java b/payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java
index b9980fc..7ae2225 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/PaymentService.java
+++ b/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);
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
index 2a59e84..4c3efe6 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
+++ b/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 {
+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 queryMerchantConfig(MerchantConfigBO merchantConfigBO) {
+ MerchantConfig merchantConfig = new MerchantConfig();
+ BeanUtils.copyProperties(merchantConfig,merchantConfigBO);
+ List merchantConfigList = merchantConfigMapper.queryMerchantConfig(merchantConfig);
+ if(!Optional.ofNullable(merchantConfigList).isPresent()){
+ // TODO 抛出业务异常
+ }
+ List 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;
}
-}
+}
\ No newline at end of file
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
index f8da1eb..d01b9d6 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
+++ b/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 queryOrder(Date date) {
+ List orderList = orderMapper.queryOrder(date);
+ if(!Optional.ofNullable(orderList).isPresent()){
+ return null;
+ }
+ List orderBOList = orderList.stream().map(o -> {
+ OrderBO orderBO = new OrderBO();
+ BeanUtils.copyProperties(orderBO,o);
+ return orderBO;
+ }).collect(Collectors.toList());
+ return orderBOList;
+ }
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
index 4ea5e4e..217a94b 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/PaymentServiceImp.java
+++ b/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 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) {
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
index 10ef371..7d25753 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
+++ b/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()){
diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/orderService.java b/payment-base-app/src/main/java/com/base/springcloud/service/orderService.java
index 3a0856a..3b544bd 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/service/orderService.java
+++ b/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 queryOrder(Date date);
}
diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtils.java b/payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtil.java
similarity index 98%
rename from payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtils.java
rename to payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtil.java
index c9e2fe4..d10bbbf 100644
--- a/payment-base-app/src/main/java/com/base/springcloud/util/DecimalUtils.java
+++ b/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));
}
/**
diff --git a/payment-base-app/src/main/java/com/base/springcloud/util/FtpUtil.java b/payment-base-app/src/main/java/com/base/springcloud/util/FtpUtil.java
new file mode 100644
index 0000000..d64ff60
--- /dev/null
+++ b/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;
+ }
+}
\ No newline at end of file
diff --git a/payment-base-app/src/main/resources/application.yml b/payment-base-app/src/main/resources/application.yml
index f8cfdd3..6ef629c 100644
--- a/payment-base-app/src/main/resources/application.yml
+++ b/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路径
\ No newline at end of file
+ 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
\ No newline at end of file
diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
index 35618b0..8e91f10 100644
--- a/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
+++ b/payment-base-app/src/main/resources/com/base/payment/mapper/MerchantConfigMapper.xml
@@ -1,185 +1,185 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- id, app_id, api_key, cert_path, merchant_id, merchant_name, city_store_name, store_brand_name,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, app_id, api_key, cert_path, merchant_id, merchant_name, city_store_name, store_brand_name,
sign_type, private_key, device_info, spbill_create_ip, notify_url, time_stamp
-
-
+
+
delete from pay_merchant_config
where id = #{id,jdbcType=VARCHAR}
-
- insert into pay_merchant_config (id, app_id, api_key,
- cert_path, merchant_id, merchant_name,
- city_store_name, store_brand_name, sign_type,
- private_key, device_info, spbill_create_ip,
+
+ insert into pay_merchant_config (id, app_id, api_key,
+ cert_path, merchant_id, merchant_name,
+ city_store_name, store_brand_name, sign_type,
+ private_key, device_info, spbill_create_ip,
notify_url, time_stamp)
- values (#{id,jdbcType=VARCHAR}, #{appId,jdbcType=VARCHAR}, #{appKey,jdbcType=VARCHAR},
- #{certPath,jdbcType=VARCHAR}, #{merchantId,jdbcType=VARCHAR}, #{merchantName,jdbcType=VARCHAR},
- #{cityStoreName,jdbcType=VARCHAR}, #{storeBrandName,jdbcType=VARCHAR}, #{signType,jdbcType=VARCHAR},
- #{privateKey,jdbcType=VARCHAR}, #{deviceInfo,jdbcType=VARCHAR}, #{spbillCreateIp,jdbcType=VARCHAR},
+ values (#{id,jdbcType=VARCHAR}, #{appId,jdbcType=VARCHAR}, #{appKey,jdbcType=VARCHAR},
+ #{certPath,jdbcType=VARCHAR}, #{merchantId,jdbcType=VARCHAR}, #{merchantName,jdbcType=VARCHAR},
+ #{cityStoreName,jdbcType=VARCHAR}, #{storeBrandName,jdbcType=VARCHAR}, #{signType,jdbcType=VARCHAR},
+ #{privateKey,jdbcType=VARCHAR}, #{deviceInfo,jdbcType=VARCHAR}, #{spbillCreateIp,jdbcType=VARCHAR},
#{notifyUrl,jdbcType=VARCHAR}, #{timeStamp,jdbcType=TIMESTAMP})
-
- insert into pay_merchant_config
-
-
- id,
-
-
- app_id,
-
-
- api_key,
-
-
- cert_path,
-
-
- merchant_id,
-
-
- merchant_name,
-
-
- city_store_name,
-
-
- store_brand_name,
-
-
- sign_type,
-
-
- private_key,
-
-
- device_info,
-
-
- spbill_create_ip,
-
-
- notify_url,
-
-
- time_stamp,
-
-
-
-
- #{id,jdbcType=VARCHAR},
-
-
- #{appId,jdbcType=VARCHAR},
-
-
- #{appKey,jdbcType=VARCHAR},
-
-
- #{certPath,jdbcType=VARCHAR},
-
-
- #{merchantId,jdbcType=VARCHAR},
-
-
- #{merchantName,jdbcType=VARCHAR},
-
-
- #{cityStoreName,jdbcType=VARCHAR},
-
-
- #{storeBrandName,jdbcType=VARCHAR},
-
-
- #{signType,jdbcType=VARCHAR},
-
-
- #{privateKey,jdbcType=VARCHAR},
-
-
- #{deviceInfo,jdbcType=VARCHAR},
-
-
- #{spbillCreateIp,jdbcType=VARCHAR},
-
-
- #{notifyUrl,jdbcType=VARCHAR},
-
-
- #{timeStamp,jdbcType=TIMESTAMP},
-
-
-
-
- update pay_merchant_config
-
-
- app_id = #{appId,jdbcType=VARCHAR},
-
-
- api_key = #{appKey,jdbcType=VARCHAR},
-
-
- cert_path = #{certPath,jdbcType=VARCHAR},
-
-
- merchant_id = #{merchantId,jdbcType=VARCHAR},
-
-
- merchant_name = #{merchantName,jdbcType=VARCHAR},
-
-
- city_store_name = #{cityStoreName,jdbcType=VARCHAR},
-
-
- store_brand_name = #{storeBrandName,jdbcType=VARCHAR},
-
-
- sign_type = #{signType,jdbcType=VARCHAR},
-
-
- private_key = #{privateKey,jdbcType=VARCHAR},
-
-
- device_info = #{deviceInfo,jdbcType=VARCHAR},
-
-
- spbill_create_ip = #{spbillCreateIp,jdbcType=VARCHAR},
-
-
- notify_url = #{notifyUrl,jdbcType=VARCHAR},
-
-
- time_stamp = #{timeStamp,jdbcType=TIMESTAMP},
-
-
- where id = #{id,jdbcType=VARCHAR}
-
-
+
+ insert into pay_merchant_config
+
+
+ id,
+
+
+ app_id,
+
+
+ api_key,
+
+
+ cert_path,
+
+
+ merchant_id,
+
+
+ merchant_name,
+
+
+ city_store_name,
+
+
+ store_brand_name,
+
+
+ sign_type,
+
+
+ private_key,
+
+
+ device_info,
+
+
+ spbill_create_ip,
+
+
+ notify_url,
+
+
+ time_stamp,
+
+
+
+
+ #{id,jdbcType=VARCHAR},
+
+
+ #{appId,jdbcType=VARCHAR},
+
+
+ #{appKey,jdbcType=VARCHAR},
+
+
+ #{certPath,jdbcType=VARCHAR},
+
+
+ #{merchantId,jdbcType=VARCHAR},
+
+
+ #{merchantName,jdbcType=VARCHAR},
+
+
+ #{cityStoreName,jdbcType=VARCHAR},
+
+
+ #{storeBrandName,jdbcType=VARCHAR},
+
+
+ #{signType,jdbcType=VARCHAR},
+
+
+ #{privateKey,jdbcType=VARCHAR},
+
+
+ #{deviceInfo,jdbcType=VARCHAR},
+
+
+ #{spbillCreateIp,jdbcType=VARCHAR},
+
+
+ #{notifyUrl,jdbcType=VARCHAR},
+
+
+ #{timeStamp,jdbcType=TIMESTAMP},
+
+
+
+
+ update pay_merchant_config
+
+
+ app_id = #{appId,jdbcType=VARCHAR},
+
+
+ api_key = #{appKey,jdbcType=VARCHAR},
+
+
+ cert_path = #{certPath,jdbcType=VARCHAR},
+
+
+ merchant_id = #{merchantId,jdbcType=VARCHAR},
+
+
+ merchant_name = #{merchantName,jdbcType=VARCHAR},
+
+
+ city_store_name = #{cityStoreName,jdbcType=VARCHAR},
+
+
+ store_brand_name = #{storeBrandName,jdbcType=VARCHAR},
+
+
+ sign_type = #{signType,jdbcType=VARCHAR},
+
+
+ private_key = #{privateKey,jdbcType=VARCHAR},
+
+
+ device_info = #{deviceInfo,jdbcType=VARCHAR},
+
+
+ spbill_create_ip = #{spbillCreateIp,jdbcType=VARCHAR},
+
+
+ notify_url = #{notifyUrl,jdbcType=VARCHAR},
+
+
+ time_stamp = #{timeStamp,jdbcType=TIMESTAMP},
+
+
+ where id = #{id,jdbcType=VARCHAR}
+
+
update pay_merchant_config
set app_id = #{appId,jdbcType=VARCHAR},
api_key = #{appKey,jdbcType=VARCHAR},
@@ -196,4 +196,56 @@
time_stamp = #{timeStamp,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=VARCHAR}
+
+
+ delete from pay_merchant_config
+ where merchant_id = #{merchantId,jdbcType=VARCHAR}
+
+
+
\ No newline at end of file
diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml
index 3fa8910..4794ad0 100644
--- a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml
+++ b/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}
+
+
\ No newline at end of file