Commit 77354c90 authored by 刘帅's avatar 刘帅

1.支付调整

parent 3efebfd8
...@@ -4,6 +4,7 @@ import com.propertyManagement.business.domain.bo.WxPayRecordBo; ...@@ -4,6 +4,7 @@ import com.propertyManagement.business.domain.bo.WxPayRecordBo;
import com.propertyManagement.business.domain.vo.WxPayRecordVo; import com.propertyManagement.business.domain.vo.WxPayRecordVo;
import com.propertyManagement.business.service.IWxPayRecordService; import com.propertyManagement.business.service.IWxPayRecordService;
import com.propertyManagement.business.support.util.AuthUtil; import com.propertyManagement.business.support.util.AuthUtil;
import com.propertyManagement.common.annotation.Anonymous;
import com.propertyManagement.common.annotation.RepeatSubmit; import com.propertyManagement.common.annotation.RepeatSubmit;
import com.propertyManagement.common.core.controller.BaseController; import com.propertyManagement.common.core.controller.BaseController;
import com.propertyManagement.common.core.domain.R; import com.propertyManagement.common.core.domain.R;
...@@ -15,6 +16,8 @@ import lombok.RequiredArgsConstructor; ...@@ -15,6 +16,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
...@@ -53,4 +56,19 @@ public class ApiWxPayRecordController extends BaseController { ...@@ -53,4 +56,19 @@ public class ApiWxPayRecordController extends BaseController {
return R.ok(iWxPayRecordService.pay(payReqModel)); return R.ok(iWxPayRecordService.pay(payReqModel));
} }
/**
* 支付回调
*
* @return 结果
*/
@Anonymous
@PostMapping("/notify/{orderId}/{payChannelCode}/{payMchCode}/{payAppCode}")
public void callback(HttpServletRequest request, HttpServletResponse response,
@PathVariable String orderId,
@PathVariable String payChannelCode,
@PathVariable String payMchCode,
@PathVariable String payAppCode) {
iWxPayRecordService.payCallback(orderId, payChannelCode, payMchCode, payAppCode);
}
} }
...@@ -5,8 +5,8 @@ import com.siashan.toolkit.core.enums.IBaseEnum; ...@@ -5,8 +5,8 @@ import com.siashan.toolkit.core.enums.IBaseEnum;
/** /**
* 支付业务枚举 * 支付业务枚举
* *
* @author siashan * @author liushuai
* @date 2023-11-11 * @date 2025-05-27
*/ */
public enum PayBizEnum implements IBaseEnum<String> { public enum PayBizEnum implements IBaseEnum<String> {
......
...@@ -35,10 +35,19 @@ public interface IWxPayRecordService { ...@@ -35,10 +35,19 @@ public interface IWxPayRecordService {
List<WxPayRecordVo> queryList(WxPayRecordBo bo); List<WxPayRecordVo> queryList(WxPayRecordBo bo);
/** /**
* 新增缴费记录 * 支付订单
*/ */
Result<Object> pay(PayReqModel payReqModel); Result<Object> pay(PayReqModel payReqModel);
/**
* 支付回调
* @param orderId
* @param payChannelCode
* @param payMchCode
* @param payAppCode
*/
void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode);
/** /**
* 新增缴费记录 * 新增缴费记录
*/ */
......
...@@ -9,6 +9,7 @@ import com.propertyManagement.business.mapper.WxLiveBillMapper; ...@@ -9,6 +9,7 @@ import com.propertyManagement.business.mapper.WxLiveBillMapper;
import com.propertyManagement.business.mapper.WxRepairsMapper; import com.propertyManagement.business.mapper.WxRepairsMapper;
import com.propertyManagement.business.support.util.AuthUtil; import com.propertyManagement.business.support.util.AuthUtil;
import com.propertyManagement.common.enums.LiveBillState; import com.propertyManagement.common.enums.LiveBillState;
import com.propertyManagement.common.enums.LiveBillType;
import com.propertyManagement.common.enums.PayState; import com.propertyManagement.common.enums.PayState;
import com.propertyManagement.common.enums.RepairsState; import com.propertyManagement.common.enums.RepairsState;
import com.propertyManagement.common.utils.StringUtils; import com.propertyManagement.common.utils.StringUtils;
...@@ -35,6 +36,7 @@ import com.propertyManagement.business.mapper.WxPayRecordMapper; ...@@ -35,6 +36,7 @@ import com.propertyManagement.business.mapper.WxPayRecordMapper;
import com.propertyManagement.business.service.IWxPayRecordService; import com.propertyManagement.business.service.IWxPayRecordService;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
...@@ -90,6 +92,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -90,6 +92,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
PayBizEnum payBiz = EnumUtil.getEnum(PayBizEnum.class, reqModel.getPayBizCode()); PayBizEnum payBiz = EnumUtil.getEnum(PayBizEnum.class, reqModel.getPayBizCode());
Long orderId = null; Long orderId = null;
BigDecimal payAmount = BigDecimal.ZERO; BigDecimal payAmount = BigDecimal.ZERO;
Integer orderType = null;
String outTradeNo = null; String outTradeNo = null;
switch (payBiz) { switch (payBiz) {
case PRESTORE: case PRESTORE:
...@@ -105,6 +108,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -105,6 +108,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
} }
orderId = wxLiveBill.getBillId(); orderId = wxLiveBill.getBillId();
payAmount = wxLiveBill.getMoney(); payAmount = wxLiveBill.getMoney();
orderType = wxLiveBill.getType();
break; break;
case MAINTAIN: case MAINTAIN:
WxRepairs wxRepairs = repairsMapper.selectById(reqModel.getOrderId()); WxRepairs wxRepairs = repairsMapper.selectById(reqModel.getOrderId());
...@@ -119,17 +123,49 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -119,17 +123,49 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
} }
orderId = wxRepairs.getRepairsId(); orderId = wxRepairs.getRepairsId();
payAmount = wxRepairs.getMoney(); payAmount = wxRepairs.getMoney();
orderType = LiveBillType.maintain.getCode();
break; break;
default: default:
throw new RuntimeException("支付失败,类型错误"); throw new RuntimeException("支付失败,类型错误");
} }
WxPayRecord record = createPayRecord(orderId, payAmount); WxPayRecord record = createPayRecord(orderId, payAmount, orderType);
IPayment payment = CmsUnipayProvider.getPayment(orderId, reqModel.getPayChannelCode(), reqModel.getPayMchCode(), reqModel.getPayAppCode(), reqModel.getPayBizCode()); IPayment payment = CmsUnipayProvider.getPayment(orderId, reqModel.getPayChannelCode(), reqModel.getPayMchCode(), reqModel.getPayAppCode(), reqModel.getPayBizCode());
PayModel payModel = getPayModel(record); PayModel payModel = getPayModel(record);
return payment.pay(payModel); return payment.pay(payModel);
} }
private WxPayRecord createPayRecord(Long orderId, BigDecimal payAmount) { /**
* @param orderId
* @param payChannelCode
* @param payMchCode
* @param payAppCode
*/
@Override
public void payCallback(String orderId, String payChannelCode, String payMchCode, String payAppCode) {
/**
* 更新支付记录状态
*/
LambdaQueryWrapper<WxPayRecord> recordLambdaQueryWrapper = Wrappers.lambdaQuery();
recordLambdaQueryWrapper.eq(WxPayRecord::getOrderId, orderId);
WxPayRecord record = baseMapper.selectOne(recordLambdaQueryWrapper);
record.setPayState(PayState.YES.getCode());
baseMapper.updateById(record);
/**
* 更新订单状态
*/
if (record.getOrderType().equals(LiveBillType.maintain.getCode())) {
WxRepairs wxRepairs = repairsMapper.selectById(orderId);
wxRepairs.setState(RepairsState.THREE.getCode());
wxRepairs.setCompleteTime(new Date());
repairsMapper.updateById(wxRepairs);
}else {
WxLiveBill wxLiveBill = liveBillMapper.selectById(orderId);
wxLiveBill.setState(LiveBillState.YES.getCode());
liveBillMapper.updateById(wxLiveBill);
}
}
private WxPayRecord createPayRecord(Long orderId, BigDecimal payAmount, Integer orderType) {
LoginWxUser wxUser = AuthUtil.getWxUser(); LoginWxUser wxUser = AuthUtil.getWxUser();
WxPayRecord record = new WxPayRecord(); WxPayRecord record = new WxPayRecord();
record.setOrderId(orderId); record.setOrderId(orderId);
...@@ -142,6 +178,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -142,6 +178,7 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
record.setRoom(wxUser.getRoom()); record.setRoom(wxUser.getRoom());
record.setCommunityId(wxUser.getCommunityId()); record.setCommunityId(wxUser.getCommunityId());
record.setCommunityName(wxUser.getCommunityName()); record.setCommunityName(wxUser.getCommunityName());
record.setOrderType(orderType);
baseMapper.insert(record); baseMapper.insert(record);
return record; return record;
} }
...@@ -152,8 +189,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService { ...@@ -152,8 +189,8 @@ public class WxPayRecordServiceImpl implements IWxPayRecordService {
payModel.setPrice(record.getPayAmount()); payModel.setPrice(record.getPayAmount());
payModel.setOpenid(wxUser.getOpenId()); payModel.setOpenid(wxUser.getOpenId());
payModel.setOutTradeNo(record.getOutTradeNo()); payModel.setOutTradeNo(record.getOutTradeNo());
payModel.setBody("订单支付"); payModel.setBody(record.getOrderType().equals(LiveBillType.maintain.getCode()) ? "维修费用支付" : "预存支付");
payModel.setSubject("订单支付"); payModel.setSubject(record.getOrderType().equals(LiveBillType.maintain.getCode()) ? "维修费用支付" : "预存支付");
payModel.setSpbillCreateIp(IpUtils.getIpAddr()); payModel.setSpbillCreateIp(IpUtils.getIpAddr());
return payModel; return payModel;
} }
......
...@@ -12,7 +12,8 @@ public enum LiveBillType { ...@@ -12,7 +12,8 @@ public enum LiveBillType {
carport_manage(4, "车位管理费"), carport_manage(4, "车位管理费"),
carport_lease(5, "车位出租费"), carport_lease(5, "车位出租费"),
storeroom(6, "储藏室出租"), storeroom(6, "储藏室出租"),
other(7, "其他费用"); other(7, "其他费用"),
maintain(8, "维修费用");
private final Integer code; private final Integer code;
......
...@@ -42,7 +42,6 @@ public class CmsPayBizBo extends BaseEntity { ...@@ -42,7 +42,6 @@ public class CmsPayBizBo extends BaseEntity {
/** /**
* 业务简介 * 业务简介
*/ */
@NotBlank(message = "业务简介不能为空", groups = { AddGroup.class, EditGroup.class })
private String bizIntro; private String bizIntro;
/** /**
...@@ -54,7 +53,6 @@ public class CmsPayBizBo extends BaseEntity { ...@@ -54,7 +53,6 @@ public class CmsPayBizBo extends BaseEntity {
/** /**
* 是否锁定 0 否 1 是 * 是否锁定 0 否 1 是
*/ */
@NotNull(message = "是否锁定 0 否 1 是不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer isLock; private Integer isLock;
/** /**
...@@ -66,13 +64,11 @@ public class CmsPayBizBo extends BaseEntity { ...@@ -66,13 +64,11 @@ public class CmsPayBizBo extends BaseEntity {
/** /**
* 退款回调地址模板 * 退款回调地址模板
*/ */
@NotBlank(message = "退款回调地址模板不能为空", groups = { AddGroup.class, EditGroup.class })
private String refundNotifyUrlTmpl; private String refundNotifyUrlTmpl;
/** /**
* 备注 * 备注
*/ */
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark; private String remark;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment