feat: add core entities, controllers, services, and mappers across multi-module project
This commit is contained in:
commit
4335344af7
1456 files changed
+58308
No files matched your search
@@ -0,0 +1,129 @@
|
||||
package cn.unizk.pay.handler;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.unizk.entity.dto.PlaceOrderCommonDTO;
|
||||
import cn.unizk.entity.po.MobileOrder;
|
||||
import cn.unizk.entity.po.MobileOrderItem;
|
||||
import cn.unizk.enums.OrderStatus;
|
||||
import cn.unizk.enums.OrderTypeEnum;
|
||||
import cn.unizk.exception.BusinessException;
|
||||
import cn.unizk.mapper.MobileOrderItemMapper;
|
||||
import cn.unizk.mapper.MobileOrderMapper;
|
||||
import cn.unizk.pay.dto.BasePayResponse;
|
||||
import cn.unizk.pay.dto.CoursePayParam;
|
||||
import cn.unizk.pay.dto.PayBaseRequest;
|
||||
import cn.unizk.pay.enums.PayChannelEnum;
|
||||
import cn.unizk.pay.enums.PaySceneEnum;
|
||||
import cn.unizk.properties.HuiFuVendorProperties;
|
||||
import cn.unizk.utils.HFSignUtil;
|
||||
import cn.unizk.utils.HttpUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author hao
|
||||
* @Date 2026/7/7 17:01
|
||||
* @Version 1.0
|
||||
**/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class CoursePayHandler extends PaySceneHandler<CoursePayParam> {
|
||||
|
||||
@Resource
|
||||
private HuiFuVendorProperties vendorProperties;
|
||||
@Resource
|
||||
private MobileOrderMapper mobileOrderMapper;
|
||||
@Resource
|
||||
private MobileOrderItemMapper mobileOrderItemMapper;
|
||||
|
||||
@Override
|
||||
public <R extends BasePayResponse> R scenePay(CoursePayParam param) {
|
||||
if (param.getPayChannel().equals(PayChannelEnum.WECHAT.name()) && param.getStep() == 1){
|
||||
BasePayResponse basePayResponse = new BasePayResponse();
|
||||
MobileOrder mobileOrder = new MobileOrder();
|
||||
String snowflakeNextIdStr = IdUtil.getSnowflakeNextIdStr();
|
||||
mobileOrder.setOrderId(snowflakeNextIdStr);
|
||||
mobileOrder.setMobileUserId(param.getMobileAppUserId());
|
||||
mobileOrder.setCourseId(param.getCourseId());
|
||||
mobileOrder.setDescription(PaySceneEnum.COURSE_PAY.getDescription());
|
||||
BigDecimal price = new BigDecimal(param.getActualPayPrice());
|
||||
price = price.setScale(2, RoundingMode.DOWN);
|
||||
mobileOrder.setTotalPrice(price);
|
||||
mobileOrder.setStatus(OrderStatus.unpaid.name());
|
||||
mobileOrder.setCreateTime(LocalDateTime.now());
|
||||
mobileOrderMapper.insert(mobileOrder);
|
||||
basePayResponse.setOrderId(snowflakeNextIdStr);
|
||||
return (R) basePayResponse;
|
||||
}
|
||||
log.info("param={}",param);
|
||||
String now = DateUtil.format(new Date(), "yyyyMMdd");
|
||||
BigDecimal price = new BigDecimal(param.getActualPayPrice());
|
||||
price = price.setScale(2, RoundingMode.DOWN);
|
||||
PlaceOrderCommonDTO dto = new PlaceOrderCommonDTO();
|
||||
dto.setPrice(price.toString());
|
||||
dto.setReqDate(now);
|
||||
String reqSeqId = HFSignUtil.getReqSeqId();
|
||||
dto.setReqSeqId(reqSeqId);
|
||||
dto.setDescribe(PaySceneEnum.COURSE_PAY.getDescription());
|
||||
JSONObject commonParams = super.createCommonParams(param,dto);
|
||||
String res = HttpUtil.doPostJson(vendorProperties.getPayApi(), null, commonParams);
|
||||
log.info("汇付下单返回:{}", res);
|
||||
JSONObject response = JSONObject.parseObject(res);
|
||||
if (response == null) {
|
||||
throw new BusinessException("下单失败");
|
||||
}
|
||||
JSONObject responseData = response.getJSONObject("data");
|
||||
String resp_code = responseData.getString("resp_code");
|
||||
String pay_info = responseData.getString("pay_info");
|
||||
log.info("下单返回支付信息pay_info={}",pay_info);
|
||||
if ("00000000".equals(resp_code) || "00000100".equals(resp_code)){
|
||||
if (param.getPayChannel().equals(PayChannelEnum.ALIPAY.name())){
|
||||
MobileOrder mobileOrder = new MobileOrder();
|
||||
String snowflakeNextIdStr = IdUtil.getSnowflakeNextIdStr();
|
||||
mobileOrder.setOrderId(snowflakeNextIdStr);
|
||||
mobileOrder.setOutTradeNo(reqSeqId);
|
||||
mobileOrder.setStatus(OrderStatus.unpaid.name());
|
||||
mobileOrder.setOrderType(OrderTypeEnum.COURSE_PAY.getCode());
|
||||
mobileOrder.setDescription(param.getGoodDesc());
|
||||
mobileOrder.setCourseId(param.getCourseId());
|
||||
mobileOrder.setTotalPrice(price);
|
||||
mobileOrder.setDeliveryWay("自提");
|
||||
mobileOrder.setCreateTime(LocalDateTime.now());
|
||||
mobileOrder.setMobileUserId(param.getMobileAppUserId());
|
||||
mobileOrderMapper.insert(mobileOrder);
|
||||
/*MobileOrderItem mobileOrderItem = new MobileOrderItem();
|
||||
mobileOrderItem.setMobileOrderId(mobileOrder.getOrderId());
|
||||
mobileOrderItem.setQuantity(1);
|
||||
mobileOrderItem.setPrice(price);
|
||||
mobileOrderItem.setCourseId(param.getCourseId());
|
||||
mobileOrderItemMapper.insert(mobileOrderItem);*/
|
||||
responseData.put("orderId",snowflakeNextIdStr);
|
||||
}else if (param.getPayChannel().equals(PayChannelEnum.WECHAT.name()) && param.getStep() == 2){
|
||||
MobileOrder mobileOrder = mobileOrderMapper.selectById(param.getOrderId());
|
||||
if (Objects.isNull(mobileOrder)){
|
||||
throw new BusinessException(String.format("orderId:%s不存在",param.getOrderId()));
|
||||
}
|
||||
mobileOrder.setOutTradeNo(reqSeqId);
|
||||
mobileOrder.setOrderType(OrderTypeEnum.COURSE_PAY.getCode());
|
||||
mobileOrder.setMobileUserId(param.getMobileAppUserId());
|
||||
mobileOrderMapper.updateById(mobileOrder);
|
||||
}
|
||||
return super.createResponse(param.getPayChannel(),responseData);
|
||||
}
|
||||
throw new BusinessException("下单失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaySceneEnum getSceneEnum() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user