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