/*
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jeequan.jeepay.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.entity.IsvInfo;
import com.jeequan.jeepay.core.entity.MchInfo;
import com.jeequan.jeepay.core.entity.PayOrder;
import com.jeequan.jeepay.core.entity.PayWay;
import com.jeequan.jeepay.service.mapper.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
/**
* <p>
* 支付订单表 服务实现类
* </p>
*
* @author [mybatis plus generator]
* @since 2021-04-27
*/
@Service
public class PayOrderService extends ServiceImpl<PayOrderMapper, PayOrder> {
@Autowired private PayOrderMapper payOrderMapper;
@Autowired private MchInfoMapper mchInfoMapper;
@Autowired private IsvInfoMapper isvInfoMapper;
@Autowired private PayWayMapper payWayMapper;
@Autowired private PayOrderDivisionRecordMapper payOrderDivisionRecordMapper;
/** 更新订单状态 【订单生成】 --》 【支付中】 **/
public boolean updateInit2Ing(String payOrderId, PayOrder payOrder){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_ING);
//同时更新, 未确定 --》 已确定的其他信息。 如支付接口的确认、 费率的计算。
updateRecord.setIfCode(payOrder.getIfCode());
updateRecord.setWayCode(payOrder.getWayCode());
updateRecord.setMchFeeRate(payOrder.getMchFeeRate());
updateRecord.setMchFeeAmount(payOrder.getMchFeeAmount());
updateRecord.setChannelUser(payOrder.getChannelUser());
updateRecord.setChannelOrderNo(payOrder.getChannelOrderNo());
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_INIT));
}
/** 更新订单状态 【支付中】 --》 【支付成功】 **/
public boolean updateIng2Success(String payOrderId, String channelOrderNo, String channelUserId){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_SUCCESS);
updateRecord.setChannelOrderNo(channelOrderNo);
updateRecord.setChannelUser(channelUserId);
updateRecord.setSuccessTime(new Date());
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_ING));
}
/** 更新订单状态 【支付中】 --》 【订单关闭】 **/
public boolean updateIng2Close(String payOrderId){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_CLOSED);
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_ING));
}
/** 更新订单状态 【订单生成】 --》 【订单关闭】 **/
public boolean updateInit2Close(String payOrderId){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_CLOSED);
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_INIT));
}
/** 更新订单状态 【支付中】 --》 【支付失败】 **/
public boolean updateIng2Fail(String payOrderId, String channelOrderNo, String channelUserId, String channelErrCode, String channelErrMsg){
PayOrder updateRecord = new PayOrder();
updateRecord.setState(PayOrder.STATE_FAIL);
updateRecord.setErrCode(channelErrCode);
updateRecord.setErrMsg(channelErrMsg);
updateRecord.setChannelOrderNo(channelOrderNo);
updateRecord.setChannelUser(channelUserId);
return update(updateRecord, new LambdaUpdateWrapper<PayOrder>()
.eq(PayOrder::getPayOrderId, payOrderId).eq(PayOrder::getState, PayOrder.STATE_ING));
}
/** 更新订单状态 【支付中】 --》 【支付成功/支付失败】 **/
public boolean updateIng2SuccessOrFail(String payOrderId, Byte updateState, String channelOrderNo, String channelUserId, String channelErrCode, String channelErrMsg){
if(updateState == PayOrder.STATE_ING){
return true;
}else if(updateState == PayOrder.STATE_SUCCESS){
return updateIng2Success(payOrderId, channelOrderNo, channelUserId);
}else if(updateState == PayOrder.STATE_FAIL){
return updateIng2Fail(payOrderId, channelOrderNo, channelUserId, channelErrCode, channelErrMsg);
}
return false;
}
/** 查询商户订单 **/
public PayOrder queryMchOrder(String mchNo, String payOrderId, String mchOrderNo){
if(StringUtils.isNotEmpty(payOrderId)){
return getOne(PayOrder.gw().eq(PayOrder::getMchNo, mchNo).eq(PayOrder::getPayOrderId, payOrderId));
}else if(StringUtils.isNotEmpty(mchOrderNo)){
return getOne(PayOrder.gw().eq(PayOrder::getMchNo, mchNo).eq(PayOrder::getMchOrderNo, mchOrderNo));
}else{
return null;
}
}
public Map payCount(String mchNo, Byte state, Byte refundState, String dayStart, String dayEnd) {
Map param = new HashMap<>();
if (state != null) {
param.put("state", state);
}
if (refundState != null) {
param.put("refundState", refundState);
}
if (StrUtil.isNotBlank(mchNo)) {
param.put("mchNo", mchNo);
}
if (StrUtil.isNotBlank(dayStart)) {
param.put("createTimeStart", dayStart);
}
if (StrUtil.isNotBlank(dayEnd)) {
param.put("createTimeEnd", dayEnd);
}
return payOrderMapper.payCount(param);
}
public List<Map> payTypeCount(String mchNo, Byte state, Byte refundState, String dayStart, String dayEnd) {
Map param = new HashMap<>();
if (state != null) {
param.put("state", state);
}
if (refundState != null) {
param.put("refundState", refundState);
}
if (StrUtil.isNotBlank(mchNo)) {
param.put("mchNo", mchNo);
}
if (StrUtil.isNotBlank(dayStart)) {
param.put("createTimeStart", dayStart);
}
if (StrUtil.isNotBlank(dayEnd)) {
param.put("createTimeEnd", dayEnd);
}
return payOrderMapper.payTypeCount(param);
}
/** 更新订单为 超时状态 **/
public Integer updateOrderExpired(){
PayOrder payOrder = new PayOrder();
payOrder.setState(PayOrder.STATE_CLOSED);
return baseMapper.update(payOrder,
PayOrder.gw()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Jeepay是一套适合互联网企业使用的开源支付系统,已实现交易、退款、转账、分账等接口,支持服务商特约商户和普通商户接口。已对接微信,支付宝,云闪付官方接口,支持聚合码支付。Jeepay使用Spring Boot和Ant Design Vue开发,集成Spring Security实现权限管理功能,是一套非常实用的web开发框架。
资源推荐
资源详情
资源评论
收起资源包目录
一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式 已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付 (628个子文件)
my.cnf 2KB
redis.conf 92KB
nginx.conf 3KB
broker.conf 162B
chunk-65fb3654.841b0312.css 4KB
chunk-1f980e9d.841b0312.css 4KB
chunk-3fd0b8a6.841b0312.css 4KB
app.b0d6b471.css 254B
chunk-73021616.8266418e.css 152B
chunk-64b2949f.d5ba12fa.css 103B
Dockerfile 1KB
Dockerfile 1KB
Dockerfile 1KB
Dockerfile 769B
Dockerfile 641B
limits.ejs 6KB
users.ejs 3KB
.env 74B
isvsubMchAuth.ftl 2KB
getChannelUserIdPage.ftl 2KB
returnPage.ftl 1KB
toPay.ftl 13B
.gitignore 721B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
index.html 2KB
index.html 30B
index.html 30B
favicon.ico 4KB
jeepay-sdk-java-pls-1.2.0.jar 89KB
PayOrderService.java 19KB
AbstractPayOrderController.java 18KB
WxpayDivisionService.java 18KB
ChannelNoticeController.java 14KB
PayOrderDivisionProcessService.java 14KB
AlipayDivisionService.java 13KB
ConfigContextService.java 13KB
YsfHttpUtil.java 12KB
MchDivisionReceiverController.java 12KB
RefundOrderController.java 12KB
CodeImgUtil.java 12KB
MchInfoController.java 12KB
AbstractCtrl.java 12KB
WxpayChannelRefundNoticeService.java 11KB
SysUserController.java 11KB
WxpayTransferService.java 11KB
WxpayChannelNoticeService.java 10KB
PayMchNotifyService.java 10KB
TransferOrderController.java 10KB
YsfSignUtils.java 10KB
MchPayInterfaceConfigController.java 10KB
PayInterfaceDefineController.java 10KB
SysUserController.java 10KB
WxpayRefundService.java 9KB
MchDivisionReceiverGroupController.java 9KB
MchPayInterfaceConfigController.java 9KB
PayOrderController.java 9KB
AlipayBizController.java 9KB
SysRoleController.java 9KB
PayOrderController.java 9KB
IsvInfoController.java 9KB
AuthService.java 9KB
SysRoleController.java 8KB
PayOrderDivisionExecController.java 8KB
ConfigContextQueryService.java 8KB
MchPayPassageConfigController.java 8KB
RefundOrderService.java 8KB
AuthService.java 8KB
MchTransferController.java 8KB
PayOrder.java 8KB
MchDivisionReceiverBindController.java 8KB
PaypalWrapper.java 8KB
PaytestController.java 8KB
MchPayPassageConfigController.java 8KB
PlspayRefundService.java 8KB
AlipayTransferService.java 8KB
XxpayRefundService.java 8KB
MchNotifyController.java 8KB
PayOrderDivisionRecordReissueTask.java 8KB
UnifiedOrderRQ.java 7KB
DivisionRecordChannelNotifyController.java 7KB
PayOrderDivisionRecordController.java 7KB
MchAppController.java 7KB
MchAppController.java 7KB
AlipayDivisionRecordChannelNotifyService.java 7KB
共 628 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6702
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab的粒子群优化算法的时间调制非线性频偏FDA+源码(期末大作业&&课程设计)
- 三个前端项目开发模板-企业商务营销.zip
- main.asm
- 基于python开发的雷达处理程序,包括CFAR,匹配滤波等,线性调频体制+源码(期末大作业)
- HTML5小游戏(测测最近有多少异性暗恋你?)源代码免费分享
- Unity-面试题2Xmind
- 基于matlab开发的线性调频信号的时域和频域处理+加窗处理+源码(期末大作业)
- test123123123123123
- libopencv.so-32output-c++.zip
- 机械设计-齿轮类 轴承与支座类 叉架与连杆类 箱体类 弹簧类零件等 CAD机械图纸零件装配制图合集(303个).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功