This commit is contained in:
韩鹏辉 2024-06-04 16:03:50 +08:00
commit 7e8a86db6f
6 changed files with 84 additions and 34 deletions

View File

@ -20,4 +20,5 @@ public interface TbUserInfoMapper {
int updateByPrimaryKey(TbUserInfo record);
TbUserInfo selectByCardNo(String cardNo);
TbUserInfo selectByPhone(String phone);
}

View File

@ -24,6 +24,10 @@ public class TbGroupOrderCoupon implements Serializable {
* 团购卷码
*/
private String couponNo;
/**
* 退款订单号
*/
private String mchRefundNo;
/**
* 是否已退款
* 0

View File

@ -21,6 +21,7 @@ import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
@ -41,6 +42,9 @@ public class MemberService {
@Autowired
TbShopUserMapper tbShopUserMapper;
@Autowired
TbUserInfoMapper tbUserInfoMapper;
@Autowired
TbMemberInMapper tbMemberInMapper;
@ -122,8 +126,11 @@ public class MemberService {
tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser);
return Result.success(CodeEnum.SUCCESS);
}
TbShopUser tbShopUser = new TbShopUser();
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPhone(phone);
if(tbUserInfo!=null){
tbShopUser.setUserId(tbUserInfo.getId().toString());
}
tbShopUser.setAmount(BigDecimal.ZERO);
tbShopUser.setCreditAmount(BigDecimal.ZERO);
tbShopUser.setConsumeAmount(BigDecimal.ZERO);
@ -537,6 +544,12 @@ public class MemberService {
shopUser.setAmount(shopUser.getAmount().add(amount));
shopUser.setUpdatedAt(System.currentTimeMillis());
if (StringUtils.isBlank(shopUser.getUserId())) {
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPhone(shopUser.getTelephone());
if (tbUserInfo != null) {
shopUser.setUserId(tbUserInfo.getId().toString());
}
}
tbShopUserMapper.updateByPrimaryKeySelective(shopUser);
TbShopUserFlow flow = new TbShopUserFlow();

View File

@ -556,12 +556,12 @@ public class PayService {
return Result.fail(CodeEnum.MEMBERNOEXIST);
}
if (N.gt(orderInfo.getPayAmount(), user.getAmount())) {
if (N.gt(orderInfo.getOrderAmount(), user.getAmount())) {
return Result.fail(CodeEnum.MEMBERINSUFFICIENTFUNDS);
}
user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount()));
user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getPayAmount()));
user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getOrderAmount()));
user.setConsumeNumber(user.getConsumeNumber() + 1);
user.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.updateByPrimaryKeySelective(user);
@ -1093,6 +1093,53 @@ public class PayService {
if (param.getNum() > tbGroupOrderCoupons.size()) {
return Result.fail("可退数量不足");
}
if(groupOrderInfo.getPayType().equals("deposit")){
TbShopUser user= tbShopUserMapper.selectByUserIdAndShopId(groupOrderInfo.getUserId().toString(),groupOrderInfo.getShopId().toString());
if(ObjectUtil.isNull(user)||ObjectUtil.isEmpty(user)){
return Result.fail(ACCOUNTEIXST);
}
user.setAmount(user.getAmount().add(param.getRefundAmount().setScale(2, RoundingMode.DOWN)));
user.setConsumeAmount(user.getConsumeAmount().subtract(param.getRefundAmount().setScale(2, RoundingMode.DOWN)));
user.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.updateByPrimaryKeySelective(user);
TbShopUserFlow flow = new TbShopUserFlow();
flow.setShopUserId(user.getId());
flow.setBizCode("returnGroupOrder");
flow.setBizName("会员储值卡退款");
flow.setAmount(param.getRefundAmount());
flow.setBalance(user.getAmount());
flow.setCreateTime(new Date());
tbShopUserFlowMapper.insert(flow);
}else {
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId());
MsgException.checkNull(thirdApply, "支付参数配置错误");
// TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(groupOrderInfo.getOrderNo());
PublicResp<OrderReturnResp> publicResp = thirdPayService.returnOrder(
url,
thirdApply.getAppId(),
// groupOrderInfo.getOrderNo(),
"GPR"+DateUtils.getSsdfTimes(),
groupOrderInfo.getPayOrderNo(),
null,
"团购卷订单退款",
param.getRefundAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(),
null,
null,
thirdApply.getAppToken());
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
GroupOrderReturnResp returnInfo = com.chaozhanggui.system.cashierservice.util.JSONUtil.parseJSONStr2T(publicResp.getBizData(), GroupOrderReturnResp.class);
if ("000000".equals(publicResp.getCode())) {
//TRADE_REFUND
if (!"SUCCESS".equals(returnInfo.getState()) && !"TRADE_SUCCESS".equals(returnInfo.getState()) && !returnInfo.getState().equals("ING")) {
return Result.fail("退款渠道调用失败,"+returnInfo.getNote());
}
} else {
return Result.fail("退款渠道调用失败,"+publicResp.getMsg());
}
}
}
for (int i = 0; i < param.getNum(); i++) {
TbGroupOrderCoupon coupon = tbGroupOrderCoupons.get(i);
coupon.setIsRefund(1);
@ -1101,32 +1148,6 @@ public class PayService {
coupon.setRefundReason(param.getRefundReason());
couponMapper.update(coupon);
}
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(groupOrderInfo.getMerchantId());
MsgException.checkNull(thirdApply, "支付参数配置错误");
TbOrderPayment payment= tbOrderPaymentMapper.selectByOrderId(param.getOrderId()+"");
PublicResp<OrderReturnResp> publicResp = thirdPayService.returnOrder(
url,
thirdApply.getAppId(),
groupOrderInfo.getOrderNo(),
payment.getTradeNumber(),
null,
"团购卷订单退款",
param.getRefundAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(),
null,
null,
thirdApply.getAppToken());
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
GroupOrderReturnResp returnInfo = com.chaozhanggui.system.cashierservice.util.JSONUtil.parseJSONStr2T(publicResp.getBizData(), GroupOrderReturnResp.class);
if ("000000".equals(publicResp.getCode())) {
//TRADE_REFUND
if (!"SUCCESS".equals(returnInfo.getState()) && !"TRADE_SUCCESS".equals(returnInfo.getState()) && !returnInfo.getState().equals("ING")) {
return Result.fail("退款渠道调用失败,"+returnInfo.getNote());
}
} else {
return Result.fail("退款渠道调用失败:" + publicResp.getMsg());
}
}
groupOrderInfo.setRefundNumber(groupOrderInfo.getRefundNumber() + param.getNum());
if (groupOrderInfo.getRefundAmount() == null) {
groupOrderInfo.setRefundAmount(param.getRefundAmount());

View File

@ -6,6 +6,7 @@
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="orderId" column="order_id" jdbcType="INTEGER"/>
<result property="couponNo" column="coupon_no" jdbcType="VARCHAR"/>
<result property="mchRefundNo" column="mch_refund_no" jdbcType="VARCHAR"/>
<result property="isRefund" column="is_refund" jdbcType="INTEGER"/>
<result property="refundAmount" column="refund_amount" jdbcType="NUMERIC"/>
<result property="refundReason" column="refund_reason" jdbcType="VARCHAR"/>
@ -14,7 +15,7 @@
<sql id="Base_Column_List">
id
, order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc </sql>
, order_id, coupon_no,mch_refund_no, is_refund, refund_amount, refund_reason, refund_desc </sql>
<!--查询单个-->
<select id="queryById" resultMap="TbGroupOrderCouponMap">
@ -59,6 +60,9 @@
<if test="couponNo != null and couponNo != ''">
and coupon_no = #{couponNo}
</if>
<if test="mchRefundNo != null and mchRefundNo != ''">
and mch_refund_no = #{mchRefundNo}
</if>
<if test="isRefund != null">
and is_refund = #{isRefund}
</if>
@ -77,15 +81,15 @@
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into tb_group_order_coupon(order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc)
values (#{orderId}, #{couponNo}, #{isRefund}, #{refundAmount}, #{refundReason}, #{refundDesc})
insert into tb_group_order_coupon(order_id, coupon_no,mch_refund_no, is_refund, refund_amount, refund_reason, refund_desc)
values (#{orderId}, #{couponNo},#{mchRefundNo}, #{isRefund}, #{refundAmount}, #{refundReason}, #{refundDesc})
</insert>
<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into tb_group_order_coupon(order_id, coupon_no, is_refund, refund_amount, refund_reason, refund_desc)
insert into tb_group_order_coupon(order_id, coupon_no,mch_refund_no, is_refund, refund_amount, refund_reason, refund_desc)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.orderId}, #{entity.couponNo}, #{entity.isRefund}, #{entity.refundAmount}, #{entity.refundReason},
(#{entity.orderId}, #{entity.couponNo},#{entity.mchRefundNo} #{entity.isRefund}, #{entity.refundAmount}, #{entity.refundReason},
#{entity.refundDesc})
</foreach>
</insert>
@ -100,6 +104,9 @@
<if test="couponNo != null and couponNo != ''">
coupon_no = #{couponNo},
</if>
<if test="mchRefundNo != null and mchRefundNo != ''">
mch_refund_no = #{mchRefundNo},
</if>
<if test="isRefund != null">
is_refund = #{isRefund},
</if>

View File

@ -565,6 +565,10 @@
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectByPhone" resultMap="BaseResultMap">
select * from tb_user_info where telephone=#{phone,jdbcType=VARCHAR}
</select>
<select id="selectByCardNo" resultMap="BaseResultMap">
select * from tb_user_info where card_no=#{cardNo}
</select>