jia支付

master
jia 2024-05-03 19:43:00 +08:00
parent 81b1a28123
commit 892b272a3d
47 changed files with 1319 additions and 13 deletions

View File

@ -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" />

View File

@ -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>

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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){

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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>

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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) ;
}

View File

@ -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);
}
}

View File

@ -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)
}

View File

@ -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("同步完成");
}
}

View File

@ -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("微信成功");
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -0,0 +1,9 @@
package com.bwie.order.vo;
import lombok.Data;
@Data
public class Ament {
private String tradeNum;
private String thirdNum;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -0,0 +1,9 @@
package com.bwie.order.vo;
import lombok.Data;
@Data
public class UpdOrder {
private String ordersNumber;//订单编号
private Integer ordersStatus;//订单状态
}

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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){

View File

@ -10,4 +10,6 @@ public interface UserMapper extends BaseMapper<User> {
User phoneLogin(@Param("userPhone") String userPhone);
void addpoint(Long userId, Integer point);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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}

View File

@ -16,6 +16,7 @@
<module>bwie-team</module>
<module>bwie-authentication</module>
<module>bwie-authen</module>
<module>bwie-order</module>
</modules>
<properties>