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

View File

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

View File

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

View File

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

View File

@@ -556,12 +556,12 @@ public class PayService {
return Result.fail(CodeEnum.MEMBERNOEXIST); return Result.fail(CodeEnum.MEMBERNOEXIST);
} }
if (N.gt(orderInfo.getPayAmount(), user.getAmount())) { if (N.gt(orderInfo.getOrderAmount(), user.getAmount())) {
return Result.fail(CodeEnum.MEMBERINSUFFICIENTFUNDS); return Result.fail(CodeEnum.MEMBERINSUFFICIENTFUNDS);
} }
user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount())); 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.setConsumeNumber(user.getConsumeNumber() + 1);
user.setUpdatedAt(System.currentTimeMillis()); user.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.updateByPrimaryKeySelective(user); tbShopUserMapper.updateByPrimaryKeySelective(user);
@@ -1093,6 +1093,53 @@ public class PayService {
if (param.getNum() > tbGroupOrderCoupons.size()) { if (param.getNum() > tbGroupOrderCoupons.size()) {
return Result.fail("可退数量不足"); 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++) { for (int i = 0; i < param.getNum(); i++) {
TbGroupOrderCoupon coupon = tbGroupOrderCoupons.get(i); TbGroupOrderCoupon coupon = tbGroupOrderCoupons.get(i);
coupon.setIsRefund(1); coupon.setIsRefund(1);
@@ -1101,32 +1148,6 @@ public class PayService {
coupon.setRefundReason(param.getRefundReason()); coupon.setRefundReason(param.getRefundReason());
couponMapper.update(coupon); 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()); groupOrderInfo.setRefundNumber(groupOrderInfo.getRefundNumber() + param.getNum());
if (groupOrderInfo.getRefundAmount() == null) { if (groupOrderInfo.getRefundAmount() == null) {
groupOrderInfo.setRefundAmount(param.getRefundAmount()); groupOrderInfo.setRefundAmount(param.getRefundAmount());

View File

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

View File

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