|
|
@@ -18,8 +18,10 @@ import org.springblade.ldt.mall.service.IMallService;
|
|
|
import org.springblade.ldt.shop.entity.Shop;
|
|
|
import org.springblade.ldt.shop.service.IShopService;
|
|
|
import org.springblade.ldt.user.entity.LoginUser;
|
|
|
+import org.springblade.ldt.user.entity.Member;
|
|
|
import org.springblade.ldt.user.entity.UserChannelPoint;
|
|
|
import org.springblade.ldt.user.service.ILoginUserService;
|
|
|
+import org.springblade.ldt.user.service.IMemberService;
|
|
|
import org.springblade.ldt.user.service.IUserChannelPointService;
|
|
|
import org.springblade.payment.entity.SuccessParams;
|
|
|
import org.springframework.context.event.EventListener;
|
|
|
@@ -46,6 +48,7 @@ public class SendPointHandle {
|
|
|
private IPointBillsService pointBillsService;
|
|
|
private IUserChannelPointService userChannelPointService;
|
|
|
private IBillsService billsService;
|
|
|
+ private IMemberService memberService;
|
|
|
|
|
|
@EventListener
|
|
|
@Transactional
|
|
|
@@ -82,7 +85,9 @@ public class SendPointHandle {
|
|
|
user.setBalance(user.getBalance().add(sendNum));
|
|
|
shop.setBalance(shop.getBalance().subtract(sendNum));
|
|
|
sendBill.setStatus(SystemConstant.BillPayStatus.付款成功.name());
|
|
|
+
|
|
|
Assert.isTrue(loginUserService.saveOrUpdate(user),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
+ Assert.isTrue(handleShopMember(sendBill,pointRate,payNum),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
Assert.isTrue(shopService.saveOrUpdate(shop),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
}
|
|
|
|
|
|
@@ -94,6 +99,7 @@ public class SendPointHandle {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 商场赠送积分
|
|
|
* */
|
|
|
@@ -122,6 +128,7 @@ public class SendPointHandle {
|
|
|
Assert.isTrue(loginUserService.saveOrUpdate(user),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
Assert.isTrue(updateChannelAccount(mall,sendNum,user),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
Assert.isTrue(mallService.saveOrUpdate(mall),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
+ Assert.isTrue(handleMallMember(sendBill,pointRate,payNum),() ->{throw new ServiceException(ResCode.USER_PAY_CALLBACK_ERROR);});
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
@@ -176,4 +183,70 @@ public class SendPointHandle {
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商户会员管理
|
|
|
+ *
|
|
|
+ * @param sendBill
|
|
|
+ * @param pointRate
|
|
|
+ * @param payNum
|
|
|
+ * */
|
|
|
+ private boolean handleShopMember(BalanceBills sendBill, BigDecimal pointRate, BigDecimal payNum){
|
|
|
+ Member member = memberService.getOne(new QueryWrapper<Member>()
|
|
|
+ .lambda()
|
|
|
+ .eq(Member::getType,SystemConstant.MALLORSHOP.SHOP.name())
|
|
|
+ .eq(Member::getUserId,sendBill.getReceiveId())
|
|
|
+ .eq(Member::getShopId, sendBill.getPayId()));
|
|
|
+
|
|
|
+ if(Objects.isNull(member)){
|
|
|
+ Shop shop = shopService.getById(sendBill.getPayId());
|
|
|
+ member = new Member();
|
|
|
+ member.setMallId(shop.getMallId());
|
|
|
+ member.setShopId(shop.getId());
|
|
|
+ member.setUserId(sendBill.getReceiveId());
|
|
|
+ member.setPointValue(BigDecimal.ZERO);
|
|
|
+ member.setPointTotal(BigDecimal.ZERO);
|
|
|
+ member.setPayTotal(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal pointNum = payNum.multiply(pointRate);
|
|
|
+
|
|
|
+ member.setPayTotal(member.getPayTotal().add(payNum));
|
|
|
+ member.setPointTotal(member.getPointTotal().add(pointNum));
|
|
|
+ member.setPointValue(member.getPointValue().add(sendBill.getPrice()));
|
|
|
+
|
|
|
+ return memberService.saveOrUpdate(member);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商场会员管理
|
|
|
+ * @param sendBill
|
|
|
+ * @param pointRate
|
|
|
+ * @param payNum
|
|
|
+ * */
|
|
|
+ private boolean handleMallMember(PointBills sendBill, BigDecimal pointRate, BigDecimal payNum){
|
|
|
+ Member member = memberService.getOne(new QueryWrapper<Member>()
|
|
|
+ .lambda()
|
|
|
+ .eq(Member::getType,SystemConstant.MALLORSHOP.MALL.name())
|
|
|
+ .eq(Member::getUserId,sendBill.getReceiveId())
|
|
|
+ .eq(Member::getShopId, sendBill.getPayId()));
|
|
|
+
|
|
|
+ if(Objects.isNull(member)){
|
|
|
+ member = new Member();
|
|
|
+ member.setMallId(sendBill.getPayId());
|
|
|
+ member.setUserId(sendBill.getReceiveId());
|
|
|
+ member.setPointValue(BigDecimal.ZERO);
|
|
|
+ member.setPointTotal(BigDecimal.ZERO);
|
|
|
+ member.setPayTotal(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal pointNum = payNum.multiply(pointRate);
|
|
|
+
|
|
|
+ member.setPayTotal(member.getPayTotal().add(payNum));
|
|
|
+ member.setPointTotal(member.getPointTotal().add(pointNum));
|
|
|
+ member.setPointValue(member.getPointValue().add(sendBill.getPrice()));
|
|
|
+
|
|
|
+ return memberService.saveOrUpdate(member);
|
|
|
+ }
|
|
|
}
|