Ver Fonte

交易处理

lianghanqiang há 4 anos atrás
pai
commit
b1f3dd8e39

+ 1 - 5
src/main/java/org/springblade/gateway/shop_gateway/controller/AppAccountController.java

@@ -1,16 +1,13 @@
 package org.springblade.gateway.shop_gateway.controller;
 
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import org.springblade.common.enums.AppConstant;
 import org.springblade.common.enums.ResCode;
-import org.springblade.common.enums.ShopEnum;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.api.R;
@@ -22,7 +19,6 @@ import org.springblade.ldt.account.service.IAccountService;
 import org.springblade.ldt.shop.entity.Shop;
 import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.modules.resource.utils.SmsUtil;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -31,7 +27,6 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import java.util.List;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 /**
  * @author cy-computer
@@ -110,6 +105,7 @@ public class AppAccountController {
 	 *
 	 * @return
 	 */
+	@SneakyThrows
 	private Account VerifyCode(AppAccountDto appAccountDto) {
 		Account account = accountService.getOne(new QueryWrapper<Account>().lambda()
 			.eq(Account::getPhone, appAccountDto.getPhone())

+ 73 - 0
src/main/java/org/springblade/point/listener/SendPointHandle.java

@@ -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);
+	}
 }