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