jia支付
parent
81b1a28123
commit
892b272a3d
|
@ -8,6 +8,7 @@
|
|||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-authen/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-authentication/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-kill/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-order/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-system/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-team/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/bwie-modules/bwie-xxl/src/main/java" charset="UTF-8" />
|
||||
|
|
|
@ -111,11 +111,11 @@
|
|||
<recent name="com.bwie.authen.vo" />
|
||||
</key>
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\java_jia\shopping_project1\bwie-modules\bwie-authen\src\main\resources" />
|
||||
<recent name="D:\java_jia\shopping_project1\bwie-modules\bwie-authen\src\main\java\com\bwie" />
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-authen\src\main\resources" />
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-system\bwie-authen\src\main\java\com\bwie" />
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-team\src\main\resources" />
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-team\src\main\java\com\bwie" />
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-xxl\src\main\java\com\bwie\xxl" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="D:\java_jia\shopping_project\bwie-modules\bwie-authen\src\main\java\com\bwie\authen\util" />
|
||||
|
@ -147,11 +147,11 @@
|
|||
</method>
|
||||
</configuration>
|
||||
<configuration name="AuthenticationApp" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
|
||||
<module name="bwie-authentication" />
|
||||
<option name="SPRING_BOOT_MAIN_CLASS" value="com.bwie.authentication.AuthenticationApp" />
|
||||
<module name="bwie-authen" />
|
||||
<option name="SPRING_BOOT_MAIN_CLASS" value="com.bwie.authen.AuthenticationApp" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="com.bwie.authentication.*" />
|
||||
<option name="PATTERN" value="com.bwie.authen.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package com.bwie.common.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 订单表
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class Order {
|
||||
|
||||
private Long ordersId;//订单ID
|
||||
private String ordersNumber;//订单编号
|
||||
private Long userId;//支付人ID
|
||||
private BigDecimal ordersPrice;//支付金额
|
||||
private Integer isDelete;//逻辑删除
|
||||
private Integer ordersStatus;//订单状态
|
||||
private Long houseId;//房源表ID
|
||||
private String userTel;//支付人手机号
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date udpTime;//最新更改订单时间
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package com.bwie.common.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Trade {
|
||||
private Long tradeId;
|
||||
private String tradeNum;
|
||||
private String ordersNumber;
|
||||
private BigDecimal tradeMoney;
|
||||
private Integer tradeStatus;
|
||||
private String thirdNum;
|
||||
private String thirdStatus;
|
||||
private String thirdMessage;
|
||||
private String tradeType;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date backTime;
|
||||
private Integer isdelete;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date updTime;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -6,10 +6,7 @@ import com.bwie.common.domain.request.LoginRequest;
|
|||
import com.bwie.common.remote.system.factory.RemoteUserFactory;
|
||||
import com.bwie.common.result.Result;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@FeignClient(
|
||||
name = "bwie-User",
|
||||
|
@ -17,6 +14,9 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||
)
|
||||
public interface RemoteUserService {
|
||||
|
||||
@PostMapping("addpoint")
|
||||
public Result addpoint(@RequestParam Long userId, @RequestParam Integer point);
|
||||
|
||||
@PostMapping("/login")
|
||||
public Result<User> login(@RequestBody LoginRequest loginRequest);
|
||||
|
||||
|
|
|
@ -17,6 +17,11 @@ public class RemoteUserFactory implements FallbackFactory<RemoteUserService> {
|
|||
public RemoteUserService create(Throwable cause) {
|
||||
|
||||
return new RemoteUserService() {
|
||||
@Override
|
||||
public Result addpoint(Long userId, Integer point) {
|
||||
log.error("添加积分失败{}",cause.getMessage(),cause,userId,point);
|
||||
return Result.error(cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<User> login(@RequestBody LoginRequest loginRequest){
|
||||
|
|
|
@ -7,8 +7,8 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
|||
|
||||
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
|
||||
@EnableDiscoveryClient
|
||||
public class AuthenticationApp {
|
||||
public class AuthenApp {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(AuthenticationApp.class);
|
||||
SpringApplication.run(AuthenApp.class);
|
||||
}
|
||||
}
|
|
@ -3,8 +3,6 @@ package com.bwie.authen.service.impl;
|
|||
import com.bwie.authen.service.AuthenticationService;
|
||||
import com.bwie.authen.util.*;
|
||||
import com.bwie.authen.vo.*;
|
||||
import com.bwie.authentication.util.*;
|
||||
import com.bwie.authentication.vo.*;
|
||||
import com.bwie.common.result.Result;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.bwie</groupId>
|
||||
<artifactId>bwie-modules</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>bwie-order</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- 系统公共 依赖 -->
|
||||
<dependency>
|
||||
<groupId>com.bwie</groupId>
|
||||
<artifactId>bwie-common</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<!-- SpringBoot Web-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.shardingsphere</groupId>
|
||||
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
|
||||
<version>4.0.0-RC1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Druid -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.2.8</version>
|
||||
</dependency>
|
||||
<!-- Mysql Connector -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<!-- Mybatis 依赖配置 -->
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>2.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Pagehelper -->
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
<version>1.4.1</version>
|
||||
</dependency>
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<version>22.0</version>
|
||||
</dependency>
|
||||
<!--支付宝接口pom文件-->
|
||||
<dependency>
|
||||
<groupId>com.alipay.sdk</groupId>
|
||||
<artifactId>alipay-sdk-java</artifactId>
|
||||
<version>4.39.2.ALL</version>
|
||||
</dependency>
|
||||
<!--seata分布式事务-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>io.seata</groupId>-->
|
||||
<!-- <artifactId>seata-spring-boot-starter</artifactId>-->
|
||||
<!-- <version>1.4.1</version>-->
|
||||
<!-- </dependency>-->
|
||||
</dependencies>
|
||||
</project>
|
|
@ -0,0 +1,17 @@
|
|||
package com.bwie.order;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableScheduling
|
||||
@EnableFeignClients(basePackages = "com.bwie.**")
|
||||
public class OrderApp {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(OrderApp.class);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.bwie.order.controller;
|
||||
|
||||
import com.bwie.common.domain.Order;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.service.OrdService;
|
||||
import com.bwie.order.vo.AddOrd;
|
||||
import com.bwie.order.vo.UpdOrder;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class OrdController {
|
||||
private final OrdService ordService;
|
||||
|
||||
public OrdController(OrdService ordService) {
|
||||
this.ordService = ordService;
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("addord")
|
||||
public void addord(@RequestBody AddOrd addOrd){
|
||||
ordService.addorder(addOrd);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("show")
|
||||
public Result show(@RequestParam Long userId,String ordersNumber){
|
||||
Order show = ordService.show(ordersNumber);
|
||||
return Result.success(show);
|
||||
}
|
||||
|
||||
@PostMapping("updstatus")
|
||||
public void updstatus(@RequestBody UpdOrder updOrder){
|
||||
ordService.updStatus(updOrder);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
package com.bwie.order.controller;
|
||||
|
||||
import com.alibaba.fastjson2.util.DateUtils;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.internal.util.AlipaySignature;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.service.TextService;
|
||||
import com.bwie.order.service.TradeService;
|
||||
import com.bwie.order.vo.AliPay;
|
||||
import com.bwie.order.vo.FindTrade;
|
||||
import com.bwie.order.vo.PayReq;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@Log4j2
|
||||
public class PayController {
|
||||
|
||||
|
||||
private final TradeService tradeService;
|
||||
private final AliPay aliPay;
|
||||
private final ApplicationContext appletContext;
|
||||
|
||||
|
||||
public PayController( TradeService tradeService, AliPay aliPay, ApplicationContext appletContext) {
|
||||
|
||||
this.tradeService = tradeService;
|
||||
this.aliPay = aliPay;
|
||||
|
||||
this.appletContext = appletContext;
|
||||
}
|
||||
|
||||
@PostMapping("pay")
|
||||
public Result pay(@RequestBody PayReq payReq) throws AlipayApiException {
|
||||
Result<String> stringResult = tradeService.addTrade(payReq);
|
||||
String data = stringResult.getData();
|
||||
TextService bean = (TextService) appletContext.getBean(payReq.getTradeType());
|
||||
return bean.pay(payReq.getOrdersMoney(),data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付宝验签方法
|
||||
*
|
||||
* @param request
|
||||
* @return
|
||||
* @throws AlipayApiException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping("/payed/notify")
|
||||
public Result handleAliPayed( HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
|
||||
|
||||
|
||||
|
||||
System.out.println("=========支付宝异步回调========");
|
||||
Map<String, String> params = new HashMap<>();
|
||||
Map<String, String[]> requestParams = request.getParameterMap();
|
||||
for (String name : requestParams.keySet()) {
|
||||
params.put(name, request.getParameter(name));
|
||||
// System.out.println(name + " = " + request.getParameter(name));
|
||||
}
|
||||
// String tradeNo = params.get("out_trade_no");
|
||||
// String gmtPayment = params.get("gmt_payment");
|
||||
// String alipayTradeNo = params.get("trade_no");
|
||||
|
||||
String sign = params.get("sign");
|
||||
String content = AlipaySignature.getSignCheckContentV1(params);
|
||||
boolean checkSignature = AlipaySignature.rsa256CheckContent(content, sign, aliPay.getAlipayPublicKey(), "UTF-8"); // 验证签名
|
||||
// 支付宝验签
|
||||
if (checkSignature) {
|
||||
// 验签通过
|
||||
System.out.println("交易名称: " + params.get("subject"));
|
||||
System.out.println("交易状态: " + params.get("trade_status"));
|
||||
System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
|
||||
System.out.println("商户订单号: " + params.get("out_trade_no"));
|
||||
System.out.println("交易金额: " + params.get("total_amount"));
|
||||
System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
|
||||
System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
||||
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
||||
|
||||
|
||||
// params.get("buyer_id");
|
||||
String s = params.get("gmt_payment");
|
||||
Date date = DateUtils.parseDate(s, "yyyy-MM-dd HH:mm:ss");
|
||||
BigDecimal totalAmount = new BigDecimal(params.get("total_amount"));
|
||||
// long l = IdUtil.getSnowflake(1, 1).nextId();
|
||||
//执行逻辑
|
||||
//保存交易流水 返回success
|
||||
FindTrade build = FindTrade.builder()
|
||||
.tradeNum(params.get("out_trade_no"))
|
||||
.thirdMessage(params.get("subject"))
|
||||
.thirdNum(params.get("trade_no"))
|
||||
.thirdStatus(params.get("trade_status"))
|
||||
.backTime(date)
|
||||
.updTime(new Date())
|
||||
.tradeMoney(totalAmount)
|
||||
.build();
|
||||
return tradeService.updtrade(build);
|
||||
//调用用户服务加积分
|
||||
}else {
|
||||
return Result.error("验签失败");
|
||||
}
|
||||
// return Result.success("支付成功");
|
||||
}
|
||||
|
||||
@GetMapping("find")
|
||||
public Result find(){
|
||||
Result result = tradeService.syncTrade();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.bwie.order.mapper;
|
||||
|
||||
import com.bwie.common.domain.Order;
|
||||
import com.bwie.order.vo.AddOrd;
|
||||
import com.bwie.order.vo.UpdOrder;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface OrdMapper {
|
||||
void add(AddOrd addOrd);
|
||||
|
||||
Order show( String ordersNumber);
|
||||
|
||||
void updStatus(UpdOrder updOrder);
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package com.bwie.order.mapper;
|
||||
|
||||
import com.bwie.common.domain.Order;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PayMapper {
|
||||
Order isRepay(String ordersNumber);
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.bwie.order.mapper;
|
||||
|
||||
import com.bwie.common.domain.Trade;
|
||||
import com.bwie.order.vo.FindTrade;
|
||||
import com.bwie.order.vo.PayReq;
|
||||
import com.bwie.order.vo.TradeReq;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@Mapper
|
||||
public interface TradeMapper {
|
||||
List<Trade> findord(String ordersNumber);
|
||||
|
||||
void addtrade(@Param("payReq") PayReq payReq, @Param("tradeReq") TradeReq tradeReq);
|
||||
|
||||
|
||||
Trade succtrade(String tradeNum);
|
||||
|
||||
void updtrade(FindTrade build);
|
||||
|
||||
List<Trade> syncFind();
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.bwie.order.service;
|
||||
|
||||
import com.bwie.common.domain.Order;
|
||||
import com.bwie.order.vo.AddOrd;
|
||||
import com.bwie.order.vo.UpdOrder;
|
||||
|
||||
public interface OrdService {
|
||||
//点击发布,添加订单
|
||||
void addorder(AddOrd addOrd);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Order show(String ordersNumber);
|
||||
void updStatus(UpdOrder updOrder);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.bwie.order.service;
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.bwie.common.result.Result;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface PayService {
|
||||
Result pay(BigDecimal ordersMoney,String tradeNum) throws AlipayApiException;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.bwie.order.service;
|
||||
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.bwie.common.result.Result;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Component
|
||||
public interface TextService {
|
||||
|
||||
public Result pay(BigDecimal ordersMoney, String tradeNum) throws AlipayApiException;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.bwie.order.service;
|
||||
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.vo.FindTrade;
|
||||
import com.bwie.order.vo.PayReq;
|
||||
|
||||
public interface TradeService {
|
||||
Result<String> addTrade(PayReq payReq);
|
||||
Result updtrade(FindTrade build);
|
||||
Result syncTrade();
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package com.bwie.order.service;
|
||||
|
||||
import com.bwie.common.result.Result;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface WeiService {
|
||||
Result pay(BigDecimal ordersMoney, String tradeNum) ;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package com.bwie.order.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.bwie.common.domain.Order;
|
||||
import com.bwie.common.utils.StringUtils;
|
||||
import com.bwie.order.mapper.OrdMapper;
|
||||
import com.bwie.order.service.OrdService;
|
||||
import com.bwie.order.util.PayUtil;
|
||||
import com.bwie.order.vo.AddOrd;
|
||||
import com.bwie.order.vo.UpdOrder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
public class OrdServiceImpl implements OrdService {
|
||||
private final OrdMapper ordMapper;
|
||||
private final PayUtil payUtil;
|
||||
|
||||
public OrdServiceImpl(OrdMapper ordMapper, PayUtil payUtil) {
|
||||
this.ordMapper = ordMapper;
|
||||
this.payUtil = payUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addorder(AddOrd addOrd) {
|
||||
addOrd.setCreateTime(new Date());
|
||||
addOrd.setUdpTime(new Date());
|
||||
String substring = IdUtil.getSnowflake(1, 1).nextIdStr().substring(12);
|
||||
String s1 = DateUtil.format(new Date(), "yyyyMMddHHmmss") + substring + StringUtils.leftPad(String.valueOf(addOrd.getUserId()), 8, "0");
|
||||
addOrd.setOrdersNumber(s1);
|
||||
// try {
|
||||
// payUtil.pay(order.getOrdersPrice(),s);
|
||||
// } catch (AlipayApiException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// order.setOrdersNumber(s);
|
||||
ordMapper.add(addOrd);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order show(String ordersNumber) {
|
||||
// String substring = ordersNumber.substring(21);
|
||||
Order show = ordMapper.show(ordersNumber);
|
||||
return show;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updStatus(UpdOrder updOrder) {
|
||||
// String substring = updOrder.getOrdersNumber().substring(21);
|
||||
// updOrder.setUserId(Long.valueOf(substring));
|
||||
ordMapper.updStatus(updOrder);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package com.bwie.order.service.impl;
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.mapper.TradeMapper;
|
||||
import com.bwie.order.service.TextService;
|
||||
import com.bwie.order.service.TradeService;
|
||||
import com.bwie.order.util.FindSyncTrade;
|
||||
import com.bwie.order.util.PayUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Service("Alipay")
|
||||
public class PayServiceImpl implements TextService {
|
||||
private final PayUtil payUtil;
|
||||
private final FindSyncTrade findSyncTrade;
|
||||
|
||||
private final TradeMapper tradeMapper;
|
||||
|
||||
|
||||
private final TradeService tradeService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 订单页面+提交订单+回显订单页面+点击支付+支付页面
|
||||
*
|
||||
* @param payUtil
|
||||
* @param findSyncTrade
|
||||
* @param tradeMapper
|
||||
* @param tradeService
|
||||
*/
|
||||
|
||||
public PayServiceImpl(PayUtil payUtil, FindSyncTrade findSyncTrade, TradeMapper tradeMapper, TradeService tradeService) {
|
||||
this.payUtil = payUtil;
|
||||
|
||||
this.findSyncTrade = findSyncTrade;
|
||||
this.tradeMapper = tradeMapper;
|
||||
|
||||
this.tradeService = tradeService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result pay(BigDecimal ordersMoney, String tradeNum) throws AlipayApiException {
|
||||
|
||||
String pay="";
|
||||
try {
|
||||
pay = payUtil.pay(ordersMoney, tradeNum);
|
||||
} catch (AlipayApiException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return pay.equals("调用失败")?Result.error("调用失败"):Result.success(pay);
|
||||
// return Result.success(pageRedirectionData);
|
||||
}
|
||||
// @GlobalTransactional(name = "pay",rollbackFor = Exception.class)
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
package com.bwie.order.service.impl;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.bwie.common.domain.Order;
|
||||
import com.bwie.common.domain.Trade;
|
||||
import com.bwie.common.remote.RemoteLoginService;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.mapper.TradeMapper;
|
||||
import com.bwie.order.service.OrdService;
|
||||
import com.bwie.order.service.TradeService;
|
||||
import com.bwie.order.util.FindSyncTrade;
|
||||
import com.bwie.order.vo.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class TradeServiceImpl implements TradeService {
|
||||
private final RemoteLoginService remoteLoginService;
|
||||
private final OrdService ordService;
|
||||
private final TradeMapper tradeMapper;
|
||||
private final FindSyncTrade findSyncTrade;
|
||||
|
||||
public TradeServiceImpl(RemoteLoginService remoteLoginService, OrdService ordService, TradeMapper tradeMapper, FindSyncTrade findSyncTrade) {
|
||||
this.remoteLoginService = remoteLoginService;
|
||||
this.ordService = ordService;
|
||||
this.tradeMapper = tradeMapper;
|
||||
this.findSyncTrade = findSyncTrade;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<String> addTrade(PayReq payReq) {
|
||||
Order repay = ordService.show(payReq.getOrdersNumber());
|
||||
|
||||
if(null==repay){
|
||||
return Result.error("订单不存在");
|
||||
}
|
||||
|
||||
List<Trade> findord = tradeMapper.findord(payReq.getOrdersNumber());
|
||||
if(!CollectionUtils.isEmpty(findord)){
|
||||
findord.stream().forEach(c ->{
|
||||
Assert.isTrue(c.getTradeStatus()==1||c.getTradeStatus()==4,"请检查支付状态");
|
||||
// Assert.isTrue(c.getTradeStatus()==3,"订单已支付");
|
||||
});
|
||||
}
|
||||
long l = IdUtil.getSnowflake(1, 1).nextId();
|
||||
|
||||
TradeReq tradeReq = new TradeReq();
|
||||
tradeReq.setTradeNum(String.valueOf(l));
|
||||
tradeReq.setUpdTime(new Date());
|
||||
tradeReq.setCreateTime(new Date());
|
||||
tradeMapper.addtrade(payReq,tradeReq);
|
||||
return Result.success(tradeReq.getTradeNum());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result updtrade(FindTrade build) {
|
||||
Trade succtrade = tradeMapper.succtrade(build.getTradeNum());
|
||||
if(null==succtrade){
|
||||
return Result.error("交易不存在");
|
||||
}
|
||||
if(build.getTradeMoney().compareTo(succtrade.getTradeMoney())!=0){
|
||||
return Result.error("交易钱款不一致");
|
||||
}
|
||||
if(succtrade.getTradeStatus()!=2 && succtrade.getTradeStatus()!=1){
|
||||
return Result.error("重复回调");
|
||||
}
|
||||
|
||||
if("WAIT_BUYER_PAY".equals(build.getThirdStatus())){
|
||||
return Result.error("交易金额结果不明确");
|
||||
}
|
||||
|
||||
if("TRADE_SUCCESS".equals(build.getThirdStatus())){
|
||||
build.setTradeStatus(3);
|
||||
}else {
|
||||
build.setTradeStatus(4);
|
||||
}
|
||||
|
||||
tradeMapper.updtrade(build);
|
||||
UpdOrder updOrder = new UpdOrder();
|
||||
updOrder.setOrdersStatus(OrderStatusEnum.PAYED.getCode());
|
||||
updOrder.setOrdersNumber(succtrade.getOrdersNumber());
|
||||
ordService.updStatus(updOrder);
|
||||
long l = Long.parseLong(succtrade.getOrdersNumber().substring(21));
|
||||
remoteLoginService.addpoint(l,100);
|
||||
return Result.success("修改状态完成");
|
||||
}
|
||||
public Result syncTrade() {
|
||||
List<Trade> trades = tradeMapper.syncFind();
|
||||
if(trades==null){
|
||||
return Result.success("均支付完成");
|
||||
}
|
||||
List<Result> use = trades.stream().map(c -> {
|
||||
Ament ament = new Ament();
|
||||
ament.setThirdNum(c.getThirdNum());
|
||||
ament.setTradeNum(c.getTradeNum());
|
||||
try {
|
||||
Result<FindTrade> findTradeResult = findSyncTrade.AlipayTradeQuery(ament);
|
||||
if (findTradeResult.isSuccess()) {
|
||||
FindTrade data = findTradeResult.getData();
|
||||
Result addtrade = updtrade(data);
|
||||
return addtrade;
|
||||
} else {
|
||||
return Result.error("支付宝查询调用失败");
|
||||
}
|
||||
} catch (AlipayApiException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
use.stream().forEach(c->System.out.println("c = " + c));
|
||||
return Result.success("同步完成");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package com.bwie.order.service.impl;
|
||||
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.service.TextService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Service("Wei")
|
||||
public class WeiServiceImpl implements TextService {
|
||||
|
||||
@Override
|
||||
public Result pay(BigDecimal ordersMoney, String tradeNum) {
|
||||
return Result.success("微信成功");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.bwie.order.shareding;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.apache.shardingsphere.api.sharding.complex.ComplexKeysShardingAlgorithm;
|
||||
import org.apache.shardingsphere.api.sharding.complex.ComplexKeysShardingValue;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@Log4j2
|
||||
public class SharedingWay implements ComplexKeysShardingAlgorithm {
|
||||
|
||||
|
||||
@Override
|
||||
public Collection<String> doSharding(Collection collection, ComplexKeysShardingValue complexKeysShardingValue) {
|
||||
log.info(JSON.toJSONString(collection));
|
||||
log.info(JSON.toJSONString(complexKeysShardingValue));
|
||||
List<String> nums = (List<String>) complexKeysShardingValue.getColumnNameAndShardingValuesMap().get("orders_number");
|
||||
List<Long> o = (List<Long>) complexKeysShardingValue.getColumnNameAndShardingValuesMap().get("user_id");
|
||||
ArrayList<String> objects = new ArrayList();
|
||||
if(!CollectionUtils.isEmpty(o)){
|
||||
Long l = o.get(0);
|
||||
log.info(l+"->>>>>>>>>>>>>>");
|
||||
long l1 = l % collection.size();
|
||||
objects.add("order_"+l1);
|
||||
log.info(l1);
|
||||
return objects;
|
||||
}
|
||||
if(!CollectionUtils.isEmpty(nums)){
|
||||
String s = nums.get(0);
|
||||
log.info(s+"->>>>>>>>>>>>>>>>>");
|
||||
long l = Long.parseLong(s.substring(21));
|
||||
log.info(l+"->>>>>>>>>>>>>>");
|
||||
long l1 = l % collection.size();
|
||||
objects.add("order_"+l1);
|
||||
log.info(l1);
|
||||
return objects;
|
||||
}
|
||||
|
||||
return objects;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.bwie.order.task;
|
||||
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.service.TradeService;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class Sync {
|
||||
private final TradeService tradeService;
|
||||
|
||||
public Sync(TradeService tradeService) {
|
||||
this.tradeService = tradeService;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0/30 * * * *")
|
||||
public Result syncTrade(){
|
||||
Result result = tradeService.syncTrade();
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
package com.bwie.order.util;
|
||||
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.AlipayConfig;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||
import com.alipay.api.response.AlipayTradeQueryResponse;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.order.vo.AliPay;
|
||||
import com.bwie.order.vo.Ament;
|
||||
import com.bwie.order.vo.FindTrade;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class FindSyncTrade {
|
||||
private final AliPay aliPay;
|
||||
|
||||
public FindSyncTrade(AliPay aliPay) {
|
||||
this.aliPay = aliPay;
|
||||
}
|
||||
|
||||
|
||||
public Result<FindTrade> AlipayTradeQuery(Ament ament) throws AlipayApiException {
|
||||
|
||||
|
||||
// 初始化SDK
|
||||
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
|
||||
|
||||
// 构造请求参数以调用接口
|
||||
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
||||
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
|
||||
|
||||
// 设置订单支付时传入的商户订单号
|
||||
model.setOutTradeNo(ament.getTradeNum());
|
||||
|
||||
// 设置查询选项
|
||||
List<String> queryOptions = new ArrayList<String>();
|
||||
queryOptions.add("trade_settle_info");
|
||||
model.setQueryOptions(queryOptions);
|
||||
|
||||
// 设置支付宝交易号
|
||||
model.setTradeNo(ament.getThirdNum());
|
||||
|
||||
request.setBizModel(model);
|
||||
AlipayTradeQueryResponse response = alipayClient.execute(request);
|
||||
System.out.println(response.getBody());
|
||||
|
||||
if (response.isSuccess()) {
|
||||
System.out.println("调用成功");
|
||||
BigDecimal totalAmount = new BigDecimal(response.getTotalAmount());
|
||||
|
||||
FindTrade find = FindTrade.builder()
|
||||
.tradeMoney(totalAmount)
|
||||
.tradeNum(response.getOutTradeNo())
|
||||
.thirdMessage("补偿查询")
|
||||
.thirdNum(response.getTradeNo())
|
||||
.thirdStatus(response.getTradeStatus())
|
||||
.backTime(response.getSendPayDate())
|
||||
.updTime(new Date())
|
||||
.build();
|
||||
|
||||
|
||||
return Result.success(find);
|
||||
} else {
|
||||
System.out.println("调用失败");
|
||||
return Result.error("调用失败");
|
||||
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
|
||||
// String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
|
||||
// System.out.println(diagnosisUrl);
|
||||
}
|
||||
|
||||
}
|
||||
private AlipayConfig getAlipayConfig() {
|
||||
String privateKey = aliPay.getPrivateKey();
|
||||
String alipayPublicKey = aliPay.getAlipayPublicKey();
|
||||
AlipayConfig alipayConfig = new AlipayConfig();
|
||||
alipayConfig.setServerUrl(aliPay.getServerUrl());
|
||||
alipayConfig.setAppId(aliPay.getAppId());
|
||||
alipayConfig.setPrivateKey(privateKey);
|
||||
alipayConfig.setFormat(aliPay.getFormat());
|
||||
alipayConfig.setAlipayPublicKey(alipayPublicKey);
|
||||
alipayConfig.setCharset(aliPay.getCharset());
|
||||
alipayConfig.setSignType(aliPay.getSignType());
|
||||
return alipayConfig;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package com.bwie.order.util;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.AlipayConfig;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
import com.alipay.api.diagnosis.DiagnosisUtils;
|
||||
import com.alipay.api.domain.AlipayTradePagePayModel;
|
||||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||||
import com.alipay.api.response.AlipayTradePagePayResponse;
|
||||
import com.bwie.order.vo.AliPay;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Component
|
||||
public class PayUtil {
|
||||
private final AliPay aliPay;
|
||||
|
||||
public PayUtil(AliPay aliPay) {
|
||||
this.aliPay = aliPay;
|
||||
}
|
||||
|
||||
public String pay(BigDecimal ordersPrice,String ordersNumber) throws AlipayApiException {
|
||||
String privateKey = aliPay.getPrivateKey();
|
||||
String alipayPublicKey = aliPay.getAlipayPublicKey();
|
||||
AlipayConfig alipayConfig = new AlipayConfig();
|
||||
alipayConfig.setServerUrl(aliPay.getServerUrl());
|
||||
alipayConfig.setAppId(aliPay.getAppId());
|
||||
alipayConfig.setPrivateKey(privateKey);
|
||||
alipayConfig.setFormat(aliPay.getFormat());
|
||||
alipayConfig.setAlipayPublicKey(alipayPublicKey);
|
||||
alipayConfig.setCharset(aliPay.getCharset());
|
||||
alipayConfig.setSignType(aliPay.getSignType());
|
||||
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
|
||||
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
|
||||
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
|
||||
model.setOutTradeNo(ordersNumber);
|
||||
model.setTotalAmount(JSON.toJSONString(ordersPrice));
|
||||
model.setSubject("发布");
|
||||
model.setProductCode("FAST_INSTANT_TRADE_PAY");
|
||||
request.setBizModel(model);
|
||||
//异步接收地址,仅支持http/https,公网可访问
|
||||
request.setNotifyUrl(aliPay.getNotifyUrl());
|
||||
//同步跳转地址,仅支持http/https
|
||||
//request.setReturnUrl("http://localhost:9003/show");
|
||||
//AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "POST");
|
||||
// 如果需要返回GET请求,请使用
|
||||
AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "GET");
|
||||
String pageRedirectionData = response.getBody();
|
||||
System.out.println(pageRedirectionData);
|
||||
if (response.isSuccess()) {
|
||||
System.out.println("调用成功");
|
||||
} else {
|
||||
//System.out.println("调用失败");
|
||||
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
|
||||
String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
|
||||
System.out.println(diagnosisUrl);
|
||||
return "调用失败";
|
||||
}
|
||||
|
||||
return pageRedirectionData;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AddOrd {
|
||||
private Long ordersId;//订单ID
|
||||
private String ordersNumber;
|
||||
private Long userId;//支付人ID
|
||||
private Long houseId;//房源表ID
|
||||
private String userTel;//支付人手机号
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date udpTime;//最新更改订单时间
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@ConfigurationProperties(prefix = "alipay")
|
||||
@Data
|
||||
public class AliPay {
|
||||
private String privateKey;
|
||||
private String alipayPublicKey;
|
||||
private String ServerUrl;
|
||||
private String AppId;
|
||||
private String Charset;
|
||||
private String SignType;
|
||||
private String Format;
|
||||
private String NotifyUrl;
|
||||
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Ament {
|
||||
private String tradeNum;
|
||||
private String thirdNum;
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class FindTrade {
|
||||
private String tradeNum;
|
||||
private BigDecimal tradeMoney;
|
||||
private Integer tradeStatus;
|
||||
private String thirdNum;
|
||||
private String thirdStatus;
|
||||
private String thirdMessage;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date backTime;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date updTime;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
/**
|
||||
* 订单状态枚举
|
||||
* @author Jerry
|
||||
*/
|
||||
|
||||
public enum OrderStatusEnum {
|
||||
CREATE_NEW(1,"待付款"),
|
||||
PAYED(2,"已付款"),
|
||||
// SENDED(2,"已发货"),
|
||||
RECIEVED(3,"审核中"),
|
||||
CANCLED(4,"已完成"),
|
||||
SERVICING(5,"已驳回");
|
||||
// SERVICED(6,"售后完成");
|
||||
private Integer code;
|
||||
private String msg;
|
||||
|
||||
OrderStatusEnum(Integer code, String msg) {
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
public enum PayEnum {
|
||||
|
||||
ZFB_PAY(0,"支付宝"),
|
||||
WX_PAY(1,"微信"),
|
||||
BANK_PAY(2,"银行卡支付");
|
||||
private Integer code;
|
||||
private String msg;
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
PayEnum(Integer code, String msg) {
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PayReq {
|
||||
private String ordersNumber;
|
||||
private BigDecimal ordersMoney;
|
||||
private String tradeType;
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TradeReq {
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyyy-MM-dd HH:mm:ss")
|
||||
private Date updTime;
|
||||
private String tradeNum;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package com.bwie.order.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class UpdOrder {
|
||||
private String ordersNumber;//订单编号
|
||||
private Integer ordersStatus;//订单状态
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
# Tomcat
|
||||
server:
|
||||
port: 9007
|
||||
# Spring
|
||||
spring:
|
||||
main:
|
||||
allow-circular-references: true
|
||||
allow-bean-definition-overriding: true
|
||||
jackson:
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
time-zone: GMT+8
|
||||
application:
|
||||
# 应用名称
|
||||
name: bwie-order
|
||||
profiles:
|
||||
# 环境配置
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 124.221.177.197:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 124.221.177.197:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
shared-configs:
|
||||
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||
|
||||
shardingsphere:
|
||||
datasource:
|
||||
# 数据库别名
|
||||
names: ord
|
||||
ord:
|
||||
# 主数据源
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
url: jdbc:mysql://124.221.177.197:3306/xm_house?useUnicode=true
|
||||
username: root
|
||||
password: admin111.
|
||||
sharding:
|
||||
# 分表
|
||||
tables:
|
||||
order:
|
||||
actual-data-nodes: ord.order_$->{0..2}
|
||||
table-strategy:
|
||||
complex:
|
||||
sharding-columns: user_id,orders_number
|
||||
algorithm-class-name: com.bwie.order.shareding.SharedingWay
|
||||
# 主键
|
||||
key-generator:
|
||||
column: orders_id
|
||||
type: SNOWFLAKE
|
||||
# 显示sql
|
||||
props:
|
||||
sql:
|
||||
show: true
|
||||
|
||||
|
||||
alipay:
|
||||
privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCx8r9WaFV7CujWc9AzpbgsCq8axYJWm4s7x2eDcJXC+qhDXWsFW0xDX+xs4JCuVJ54+FGiflB24BeqgFDLNOchtkocK65BJohG5ojVONHq/ciruqbzAD0W6x96h8fKqlVuvz3EotMXuejg5J1gbDRmgTvPx7mYq94TXjxt75CUEserThSMF0geB0DJhrPxNe5JLAPKA5pRXd2e6wDybi2yKL2s2j4YuaTgDZuNAnlBYAiV6Pk7WpFB06LtbGg7JiM+Jawn3N64fL/24d4VIzcJD3AxWbGDZAXtW9+XZtsDa8z6ik3OGpbrSKu+RK0jjWzT2ETHnb/BdhtDJzFBo4dnAgMBAAECggEBAKWvrWIqATVwof1Tlk8QhVxUklfuAP7dExYVA5fJ01fZhaQ7rjMtn+O3w+5YZb48QdXG+FPBIvCclMyHbzLVzkOAdJ6oOTamRwslCdDmd+ZCaH8lat8loLvfLs8q7+cPFD7qx/t30+7qhiAoHTSza1LqD6PWhkPV+w+zlbaS8d471COE8P7XyxouFZ70qe9Aa7uVLEClxQemviSqIYOuHTFkNjWMleQR48tL2HA2ifKpa309Ifnbf3kGktyNaiG7plC5x3gUU3dSQdWZpnRHq/wh65TBhJHgLrjsIPhnfB9mmwCMZ66EJiUKajuqlvEjC/J0dkduMO6uPLYzTkejxbkCgYEA4arhCQgLquzRJDk5pI94ZzBiSWXaP3JUzfYEHQbbzcNvRPZBYJLDBUXNRVReujjt6efIcyrCi1zD3XvHfN2QmaNubeD5yF7aObYPVwoxDCvqHzZDVbYd9ZUGR2yIa+jdkVc5py0vmyfyxLSx3RvMuSP+rYtzhCJbowQiCkN4XUMCgYEAyd3efuY/0f59XF2DBSu8vCEaer7Wkieit980VZm06jxwt/3b5UcRlknKpum32n+mGlbpu4M/r5Zbpta+uuWbx6ajbIjc43rMuElkK6cz5d6AUTm6AsOKq8ARQPh4F5pzI18vrNAQrNyVpxwDMXIdmyArHD0Dv4NeIjlwucCT2Q0CgYBTAXGoysbP5i+/bTUgrI0TF57vdIFkmP9MitNUgfNTqjFBYnsFtLX7OIOansABK3OHd/QpOG86p7J7w03LRgwsFwtFa101MH6Af9EAqQUFfxmsxV7bJhO7A0e9+dPsLUlibn0MWviJz5XieLx7ogAZkX3aA9NHpQOj4J9MuyiI1QKBgQC/NyIuNG5ZvWYEGzQjrsVtszHA+YqJEXBqGc0aFKoxgyUGtDoamdJH+Qg0SYl1OJsfshpfG7k02wlgJWSv5xVD7k45Xf9Wn5jSK/rt+skHQldsGXFgctelTx9I2tPvD8dmxyCC4ugYxi4gCEHiEYWHztXnPsiRHaAKbTyhR5EE9QKBgGQRjcds+qeZeNTKrwSPFG/KD8h/kI0jTnFfeKMm1WXfuXcadTavbaruGUihLzveO9/dsizKJm38Pc2j5xNyBxGYUdbSxGZtC5uNmYuIsR3u8gy2oT3qFBPaFp/Y1PoHzLu6QTAYeo8Cz0TG+U8ah/81O9JPzZWyrkGLHIp5XyKq
|
||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkVyIo6qyxzk0YWnBo3ueKIpcpUPnrX0MuhdaUAoyJPtp19u2M67g8jSw7BWqppJ0Vso8sm7Px6VS3rOunlmgW5lyN0uMgy6+mE76gW8+2msjwR/DrzNL7aQn2idu9NgxxKk2BnLzajpR7W5Tk+sXmB9woLffbQ9hJW+SWJ6DnMtAbaB+3E/xaDO4o5yjTFbY063Vr2mgyt+PfK5i3unb3ffZj9jtqICWsDfpoY42fxxrRsKa3eLCJVO6sqUz3XLRex8WV7vcjtAuMsp6rFbwTPT5ELSYHXEY3uWuHHJChDE4eAKUpvavYj/hTZhlsOyTe1xPOAbnkAQ2B+kA+XHDRQIDAQAB
|
||||
ServerUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
AppId: 9021000135679979
|
||||
Charset: UTF-8
|
||||
SignType: RSA2
|
||||
Format: json
|
||||
NotifyUrl: http://8vhmiu.natappfree.cc/payed/notify
|
||||
|
||||
seata:
|
||||
data-source-proxy-mode: AT # 默认就是AT
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.order.mapper.OrdMapper">
|
||||
|
||||
<insert id="add">
|
||||
insert into order
|
||||
(orders_number, user_id, orders_price, is_delete,orders_status, house_id, user_tel, create_time, upd_time)
|
||||
VALUES (#{ordersNumber}, #{userId}, 10, 1, 0, #{houseId}, #{userTel}, #{createTime}, #{udpTime})
|
||||
</insert>
|
||||
<update id="updStatus">
|
||||
update order set orders_status=#{ordersStatus} where orders_number=#{ordersNumber}
|
||||
</update>
|
||||
<select id="show" resultType="com.bwie.common.domain.Order">
|
||||
select *
|
||||
from order
|
||||
where orders_number =#{ordersNumber}
|
||||
|
||||
|
||||
</select>
|
||||
</mapper>
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.order.mapper.PayMapper">
|
||||
|
||||
<select id="isRepay" resultType="com.bwie.common.domain.Order" parameterType="java.lang.String">
|
||||
select *
|
||||
from order where orders_number=#{ordersNumber}
|
||||
</select>
|
||||
</mapper>
|
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.order.mapper.TradeMapper">
|
||||
<insert id="addtrade">
|
||||
insert into trade (`trade_num`,`orders_number`,`trade_money`,`trade_status`,`trade_type`,`is_delete`,`create_time`,`upd_time`)
|
||||
values (#{tradeReq.tradeNum},#{payReq.ordersNumber},#{payReq.ordersMoney},2,#{payReq.tradeType},1,#{tradeReq.createTime},#{tradeReq.updTime});
|
||||
</insert>
|
||||
<update id="updtrade" parameterType="com.bwie.order.vo.FindTrade">
|
||||
UPDATE `xm_house`.`trade` SET
|
||||
`upd_time` = #{updTime},
|
||||
`trade_status` = #{tradeStatus}, `third_num` = #{thirdNum}, `third_status` = #{thirdStatus},
|
||||
`third_message` = #{thirdMessage}, `back_time` = #{backTime}
|
||||
WHERE `trade_num` = #{tradeNum}
|
||||
|
||||
</update>
|
||||
|
||||
|
||||
<select id="findord" resultType="com.bwie.common.domain.Trade">
|
||||
select *
|
||||
from trade where orders_number=#{ordersNumber}
|
||||
</select>
|
||||
<select id="succtrade" resultType="com.bwie.common.domain.Trade">
|
||||
select *
|
||||
from trade where trade_num=#{tradeNum}
|
||||
</select>
|
||||
<select id="syncFind" resultType="com.bwie.common.domain.Trade">
|
||||
select *
|
||||
from trade where trade_status=2
|
||||
</select>
|
||||
</mapper>
|
|
@ -23,6 +23,11 @@ public class UserController {
|
|||
this.userService = userService;
|
||||
}
|
||||
|
||||
@PostMapping("addpoint")
|
||||
public Result addpoint(@RequestParam Long userId,@RequestParam Integer point){
|
||||
userService.addpoint(userId,point);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
public Result<User> login(@RequestBody LoginRequest loginRequest){
|
||||
|
|
|
@ -10,4 +10,6 @@ public interface UserMapper extends BaseMapper<User> {
|
|||
|
||||
|
||||
User phoneLogin(@Param("userPhone") String userPhone);
|
||||
|
||||
void addpoint(Long userId, Integer point);
|
||||
}
|
||||
|
|
|
@ -16,4 +16,6 @@ public interface UserService extends IService<User> {
|
|||
Result<User> findByPhone(String userPhone);
|
||||
|
||||
User phoneLogin(String userPhone);
|
||||
|
||||
void addpoint(Long userId, Integer point);
|
||||
}
|
||||
|
|
|
@ -43,4 +43,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
|
|||
|
||||
return userMapper.phoneLogin(userPhone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addpoint(Long userId, Integer point) {
|
||||
userMapper.addpoint(userId,point);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.user.mapper.UserMapper">
|
||||
<update id="addpoint">
|
||||
update user set point= +#{point},update_time=now() where user_id=#{userId}
|
||||
</update>
|
||||
|
||||
<select id="phoneLogin" resultType="com.bwie.common.domain.User">
|
||||
select * from user where user_phone = #{userPhone}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
<module>bwie-team</module>
|
||||
<module>bwie-authentication</module>
|
||||
<module>bwie-authen</module>
|
||||
<module>bwie-order</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
|
Loading…
Reference in New Issue