Răsfoiți Sursa

交易处理

lianghanqiang 4 ani în urmă
părinte
comite
454e59dae1

+ 37 - 5
src/main/java/org/springblade/gateway/common_gateway/handle/DiscountHandle.java

@@ -1,16 +1,22 @@
 package org.springblade.gateway.common_gateway.handle;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.github.classgraph.utils.Join;
 import lombok.AllArgsConstructor;
 import org.springblade.common.cache.PlatformCache;
 import org.springblade.common.config.entity.PlatformConfig;
 import org.springblade.gateway.common_gateway.handle.entity.HandleData;
 import org.springblade.gateway.common_gateway.handle.entity.Order;
-import org.springblade.ldt.mall.service.IMallService;
+import org.springblade.ldt.activity.entity.Activity;
+import org.springblade.ldt.activity.entity.JoinRecord;
+import org.springblade.ldt.activity.service.IActivityService;
+import org.springblade.ldt.activity.service.IJoinRecordService;
 import org.springblade.ldt.shop.entity.Shop;
 import org.springblade.ldt.shop.service.IShopService;
 import org.springblade.payment.entity.SuccessParams;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @author: lianghanqiang
@@ -21,18 +27,44 @@ import java.math.BigDecimal;
 public class DiscountHandle implements BaseHandle {
 
 	private IShopService shopService;
-	private IMallService mallService;
+	private IActivityService activityService;
+	private IJoinRecordService joinRecordService;
 
 	@Override
 	public HandleData handle(BigDecimal remain, Order order, SuccessParams successParams) {
 		PlatformConfig platformConfig = PlatformCache.platFormConfig();
 
-		//商家折扣
+		//获取相关商家、活动、参与情况
 		Shop shop = shopService.getById(order.getShopId());
+		Activity activity = activityService.getById(shop.getActivityId());
+		JoinRecord joinRecord = activityJoin(shop.getId());
+
 
 		//国信服务费
-		double serviceFee = platformConfig.getServiceFee();
+		BigDecimal serviceFee = BigDecimal.valueOf(platformConfig.getServiceFee()).add(BigDecimal.ONE);
+		//商场活动折扣
+		BigDecimal mallDiscount = BigDecimal.valueOf(activity.getDiscount());
+		//商家折扣
+		BigDecimal shopDiscount = BigDecimal.valueOf(joinRecord.getDiscount());
+
+		remain =  remain.multiply(mallDiscount)
+			.multiply(shopDiscount)
+			.multiply(serviceFee);
+
+		return HandleData.builder().successParams(successParams).remain(remain).isSuccess(Boolean.TRUE).build();
+	}
 
-		return null;
+	/**
+	 * 	获取参与活动中,折扣最小的
+	 * */
+	private JoinRecord activityJoin(Long id) {
+		List<JoinRecord> joinList = joinRecordService.list(new QueryWrapper<JoinRecord>().lambda().eq(JoinRecord::getJoinId, id));
+		JoinRecord joinRecord = joinList.get(0);
+		for (JoinRecord join:joinList) {
+			if(join.getDiscount()<joinRecord.getDiscount()){
+				joinRecord=join;
+			}
+		}
+		return joinRecord;
 	}
 }

+ 5 - 3
src/main/java/org/springblade/gateway/common_gateway/handle/Trade.java

@@ -7,6 +7,8 @@ import org.springblade.common.enums.SystemConstant;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.gateway.common_gateway.handle.entity.HandleData;
 import org.springblade.gateway.common_gateway.handle.entity.Order;
+import org.springblade.ldt.activity.service.IActivityService;
+import org.springblade.ldt.activity.service.IJoinRecordService;
 import org.springblade.ldt.bills.service.IBalanceBillsService;
 import org.springblade.ldt.bills.service.IBillsService;
 import org.springblade.ldt.bills.service.IPointBillsService;
@@ -40,9 +42,8 @@ public class Trade {
 	private WebSocketServer webSocketServer;
 	private IPaymentService paymentService;
 	private IShopService shopService;
-	private IMallService mallService;
-	private IPlatformSettingService platformSettingService;
-	private ILoginUserService loginUserService;
+	private IActivityService activityService;
+	private IJoinRecordService joinRecordService;
 
 	/**
 	 * 	交易处理链,每个handle处理负责一个业务节点
@@ -55,6 +56,7 @@ public class Trade {
 
 	 {
 	 	 chain = new ArrayList<>();
+	 	 chain.add(new DiscountHandle(shopService,activityService,joinRecordService));
 		 chain.add(new ChannelPointHandle(pointBillsService));
 		 chain.add(new BalanceHandle(balanceBillsService));
 		 chain.add(new WxPayHandle(billsService,webSocketServer));

+ 3 - 3
src/main/java/org/springblade/ldt/shop/entity/Audit.java

@@ -67,10 +67,10 @@ public class Audit implements Serializable {
 		@ApiModelProperty(value = "具体地址")
 		private String address;
 	/**
-	* 公司网址
+	* 身份证号
 	*/
-		@ApiModelProperty(value = "公司网址")
-		private String webUrl;
+		@ApiModelProperty(value = "身份证号")
+		private String idCard;
 	/**
 	* 营业执照
 	*/

+ 1 - 1
src/main/java/org/springblade/ldt/shop/mapper/AuditMapper.xml

@@ -10,7 +10,7 @@
         <result column="entity" property="entity"/>
         <result column="legal_person" property="legalPerson"/>
         <result column="address" property="address"/>
-        <result column="web_url" property="webUrl"/>
+        <result column="id_card" property="idCard"/>
         <result column="business_license" property="businessLicense"/>
         <result column="shop_id" property="shopId"/>
     </resultMap>