提交 c1b76766 authored 作者: 吴德鹏's avatar 吴德鹏

update activity

上级 7f1bb22f
package com.example.afrishop_v3.controllers; package com.example.afrishop_v3.controllers;
import com.alibaba.fastjson.JSONObject;
import com.example.afrishop_v3.base.Result; import com.example.afrishop_v3.base.Result;
import com.example.afrishop_v3.enums.ResultCodeEnum; import com.example.afrishop_v3.enums.ResultCodeEnum;
import com.example.afrishop_v3.models.Activity; import com.example.afrishop_v3.models.Activity;
import com.example.afrishop_v3.models.TbCfCartRecordR;
import com.example.afrishop_v3.models.TbCfStationItem; import com.example.afrishop_v3.models.TbCfStationItem;
import com.example.afrishop_v3.repository.ActivityRepository; import com.example.afrishop_v3.repository.ActivityRepository;
import com.example.afrishop_v3.repository.TbCfCartRecordRRepository;
import com.example.afrishop_v3.repository.TbCfStationItemRepository; import com.example.afrishop_v3.repository.TbCfStationItemRepository;
import org.checkerframework.checker.units.qual.A; import com.example.afrishop_v3.vo.Condition;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/** /**
* @Auther: wudepeng * @Auther: wudepeng
...@@ -32,10 +30,12 @@ public class ActivityController { ...@@ -32,10 +30,12 @@ public class ActivityController {
private final ActivityRepository activityRepository; private final ActivityRepository activityRepository;
private final TbCfStationItemRepository itemRepository; private final TbCfStationItemRepository itemRepository;
private final TbCfCartRecordRRepository cartRecordRRepository;
public ActivityController(ActivityRepository activityRepository, TbCfStationItemRepository itemRepository) { public ActivityController(ActivityRepository activityRepository, TbCfStationItemRepository itemRepository, TbCfCartRecordRRepository cartRecordRRepository) {
this.activityRepository = activityRepository; this.activityRepository = activityRepository;
this.itemRepository = itemRepository; this.itemRepository = itemRepository;
this.cartRecordRRepository = cartRecordRRepository;
} }
@GetMapping("/getAllActivity") @GetMapping("/getAllActivity")
...@@ -60,6 +60,7 @@ public class ActivityController { ...@@ -60,6 +60,7 @@ public class ActivityController {
//全场活动 //全场活动
if (activityRepository.existsByUseType(1)) { if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1); List<Activity> fullList = activityRepository.findAllByUseType(1);
if (fullList != null && fullList.size() > 0)
activity = fullList.get(0); activity = fullList.get(0);
} }
...@@ -135,5 +136,110 @@ public class ActivityController { ...@@ -135,5 +136,110 @@ public class ActivityController {
return t; return t;
} }
@GetMapping("/caculateCartDiscount")
public Result caculateCartDiscount(@RequestBody String[] cartIds) {
// Activity activity = null;
// List<Activity> activityList = new ArrayList<>();
BigDecimal itemPrice = BigDecimal.ZERO;
BigDecimal lessAmount = BigDecimal.ZERO;
String discount = null;
int itemCount = 0;
Map<String, Object> map = new HashMap<>();
for (String cartId : cartIds) {
Optional<TbCfCartRecordR> byId = cartRecordRRepository.findById(cartId);
if (byId.isPresent()) {
TbCfCartRecordR cart = byId.get();
itemPrice = itemPrice.add(cart.getItemPrice());
itemCount += cart.getItemNum();
// String itemId = cart.getItemId();
// activity = checkActivity(itemId);
// activityList.add(activity);
}
}
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
Activity activity = fullList.get(0);
String type = activity.getType().toString();
List<Condition> conList = JSONObject.parseArray(activity.getCondition(), Condition.class);
Collections.sort(conList, Comparator.comparing(Condition::getKey));
// BigDecimal finalItemPrice = itemPrice;
if ("1".equals(type) || "2".equals(type)) {
for (Condition con : conList) {
double key = con.getKey();
BigDecimal threshold = new BigDecimal(key);
double value = con.getValue();
discount = String.valueOf(value);
if (itemPrice.compareTo(threshold) < 0) {
lessAmount = threshold.subtract(itemPrice);
map.put("discount", discount);
map.put("lessAmount", lessAmount);
}
break;
}
} else if ("3".equals(type)) {
for (Condition con : conList) {
int key = (int) con.getKey();
double value = con.getValue();
discount = String.valueOf(value);
if (itemCount < key) {
map.put("discount", discount);
map.put("lessAmount", key - itemCount);
}
break;
}
}
}
return new Result(map);
}
public Activity checkActivity(String itemId) {
Result result = new Result();
Activity activity = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//全场活动
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
activity = fullList.get(0);
}
//商品分类活动
if (activityRepository.existsByUseType(2)) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
if (byId.isPresent()) {
TbCfStationItem item = byId.get();
String category1 = item.getItemCategory();
String category2 = item.getItemCategorytwo();
String category3 = item.getItemDescritionId();
String con2 = category1 + "," + category2;
String con3 = category1 + "," + category2 + "," + category3;
List<Activity> activityList = activityRepository.findAllByUseType(2);
List<Activity> actList = new ArrayList<>();
for (Activity act2 : activityList) {
if (category1.equals(act2.getCategoryId())) {
act2.setOrder(3);
actList.add(act2);
}
if (con2.equals(act2.getCategoryId())) {
act2.setOrder(2);
actList.add(act2);
}
if (con3.equals(act2.getCategoryId())) {
act2.setOrder(1);
actList.add(act2);
}
}
Collections.sort(actList, Comparator.comparing(Activity::getOrder));
if (actList.size() > 0 && actList != null)
activity = actList.get(0);
}
}
return activity;
}
} }
...@@ -23,6 +23,7 @@ import java.io.IOException; ...@@ -23,6 +23,7 @@ import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.text.ParseException;
import java.time.Duration; import java.time.Duration;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
...@@ -101,7 +102,7 @@ public class OrderController extends Controller { ...@@ -101,7 +102,7 @@ public class OrderController extends Controller {
@RequestParam(value = "itemSku", defaultValue = "") String itemSku, @RequestParam(value = "itemSku", defaultValue = "") String itemSku,
@RequestParam(value = "itemSkuId", required = false) String itemSkuId, @RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "toitableId", required = false) String toitableId, @RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "open", required = false) boolean open) { @RequestParam(value = "open", required = false) boolean open) throws ParseException {
TbCfOrder order = new TbCfOrder(); TbCfOrder order = new TbCfOrder();
...@@ -150,7 +151,7 @@ public class OrderController extends Controller { ...@@ -150,7 +151,7 @@ public class OrderController extends Controller {
@PostMapping("/settle") @PostMapping("/settle")
public Result<TbCfOrder> settleAccount(@RequestBody String[] ids, @RequestParam(value = "toitableId", required = false) String toitableId, public Result<TbCfOrder> settleAccount(@RequestBody String[] ids, @RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "open", required = false) boolean open) { @RequestParam(value = "open", required = false) boolean open) throws ParseException {
//String userId = user.userId(); //String userId = user.userId();
List<TbCfCartRecordR> allByUserId = cartRepository.findAllByCartRecordIdIn(ids); List<TbCfCartRecordR> allByUserId = cartRepository.findAllByCartRecordIdIn(ids);
BigDecimal orderPrice = BigDecimal.ZERO; BigDecimal orderPrice = BigDecimal.ZERO;
...@@ -206,7 +207,7 @@ public class OrderController extends Controller { ...@@ -206,7 +207,7 @@ public class OrderController extends Controller {
@RequestParam(value = "itemSkuId", required = false) String itemSkuId, @RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "orderSource", required = false) Integer orderSource, @RequestParam(value = "orderSource", required = false) Integer orderSource,
@RequestParam(value = "open", required = false) boolean open @RequestParam(value = "open", required = false) boolean open
) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException { ) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException, ParseException {
TbCfUserInfo user = this.user.user(); TbCfUserInfo user = this.user.user();
String userId = user.getUserId(); String userId = user.getUserId();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论