Commit 541e5c79 by 刘鹏飞
parents a1887678 fd8998aa
...@@ -48,6 +48,8 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -48,6 +48,8 @@ public class CreateOrderProductRequest extends BaseConfig {
* 商品货号,商品服务可重复 * 商品货号,商品服务可重复
*/ */
private String productCode; private String productCode;
/** /**
* 商品价格 单价分 * 商品价格 单价分
*/ */
...@@ -201,6 +203,8 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -201,6 +203,8 @@ public class CreateOrderProductRequest extends BaseConfig {
private String classificationName; private String classificationName;
private String category;
private List<String> specialCodes; private List<String> specialCodes;
private List<OrderSpecialExtraAttrRequest> specialAttrs; private List<OrderSpecialExtraAttrRequest> specialAttrs;
......
...@@ -11,4 +11,5 @@ ...@@ -11,4 +11,5 @@
| 1.1.3.RELEASE| 增加统计分类classificationId  ,setClassificationName | | 2020-06-16 | | 1.1.3.RELEASE| 增加统计分类classificationId  ,setClassificationName | | 2020-06-16 |
| 1.1.5.RELEASE| 商品加料  | | 2020-08-24 | | 1.1.5.RELEASE| 商品加料  | | 2020-08-24 |
| 1.1.6.RELEASE| 新增商品券名称字段| 孙昱 | 2020-11-09 | | 1.1.6.RELEASE| 新增商品券名称字段| 孙昱 | 2020-11-09 |
| 1.1.7.RELEASE| 标识套餐类型| 孙昱 | 2020-12-01 | | 1.1.7.RELEASE| 标识套餐类型| 孙昱 | 2020-12-01 |
\ No newline at end of file | 1.1.8.RELEASE| 拼单| 缪晖 | 2020-12-10 |
\ No newline at end of file
...@@ -29,7 +29,7 @@ public class SubscribeMessageRequest { ...@@ -29,7 +29,7 @@ public class SubscribeMessageRequest {
* 5 字节小程序 * 5 字节小程序
* 6 h5 * 6 h5
*/ */
private Integer channel; private Integer channel =1;
/** /**
* 配送异常提醒 * 配送异常提醒
......
...@@ -170,6 +170,7 @@ public enum ResponseResult { ...@@ -170,6 +170,7 @@ public enum ResponseResult {
COLLAGE_ORDER_CREATE_ERROR_NOT_EXIST("45070", "拼单信息不存在,无法创建订单"), COLLAGE_ORDER_CREATE_ERROR_NOT_EXIST("45070", "拼单信息不存在,无法创建订单"),
COLLAGE_ORDER_CREATE_ERROR_PAYING("45071", "拼单正在支付,请勿重复提交"), COLLAGE_ORDER_CREATE_ERROR_PAYING("45071", "拼单正在支付,请勿重复提交"),
COLLAGE_ORDER_CREATE_ERROR_PAYED("45072", "拼单已支付完成,请返回订单列表查看"), COLLAGE_ORDER_CREATE_ERROR_PAYED("45072", "拼单已支付完成,请返回订单列表查看"),
STORE_SELF_ERROR("45069", "请选择截止营业时间大于45分钟下单"),
/** /**
......
...@@ -59,12 +59,14 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; ...@@ -59,12 +59,14 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.NewOrderType;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -110,7 +112,7 @@ public class CheckOrder { ...@@ -110,7 +112,7 @@ public class CheckOrder {
private MemberPropertyService memberPropertyService; private MemberPropertyService memberPropertyService;
@Autowired @Autowired
private ShoppingCartClient shoppingCartClient; private ShoppingCartClient shoppingCartClient;
// @Autowired // @Autowired
// private OrderAdapter orderAdapter; // private OrderAdapter orderAdapter;
@Autowired @Autowired
private StoreServiceImpl storeService; private StoreServiceImpl storeService;
...@@ -133,6 +135,7 @@ public class CheckOrder { ...@@ -133,6 +135,7 @@ public class CheckOrder {
@Value("${coco.partnerId}") @Value("${coco.partnerId}")
private String cocoPartnerId; private String cocoPartnerId;
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
...@@ -193,8 +196,8 @@ public class CheckOrder { ...@@ -193,8 +196,8 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND); throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
} }
//订单预约单检查 //订单预约单检查
OrderCheckAdapter.check(createOrderVo, storeResponse);
OrderCheckAdapter.check(createOrderVo, storeResponse);
StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO(); StoreResponse.BizVO storeResponseDto = storeResponse.getBizVO();
// 校验门店是否停业 1 营业 2 停业 3 繁忙置休 // 校验门店是否停业 1 营业 2 停业 3 繁忙置休
if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) { if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) {
...@@ -274,6 +277,23 @@ public class CheckOrder { ...@@ -274,6 +277,23 @@ public class CheckOrder {
} else { } else {
storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo); storeDeliveryInfoDto = getNewStoreDeliveryInfo(storeResponseDto, config, appId, trackingNo);
} }
//coco自配送提前45分钟,禁止下单
if (cocoPartnerId.equals(createOrderVo.getPartnerId()) &&
CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) &&
"self".equals(storeDeliveryInfoDto.getDeliveryType())
) {
//即时单是下单时间,预约单是预约单时间
Date orderDate = createOrderVo.getExpectTime() != null
? DateUtil.convert2Date(createOrderVo.getExpectTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)
: new Date();
Date todayEnd = DateUtil.setEndDay(new Date());
boolean toDay = orderDate.before(todayEnd);
BusinessDate businessDate = getStoreBusinessDate(storeResponseDto, toDay);
boolean businessEndDate = (DateUtils.addMinutes(orderDate, 45).compareTo(businessDate.getEndDate()) <= 0);
if (businessEndDate) {
throw new ServiceException(ResponseResult.STORE_SELF_ERROR);
}
}
//todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用 //todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用
//外卖起送条件(1:杯数,2:金额) //外卖起送条件(1:杯数,2:金额)
if (!Arrays.asList(1, 2).contains(storeDeliveryInfoDto.getDeliveryCondition())) { if (!Arrays.asList(1, 2).contains(storeDeliveryInfoDto.getDeliveryCondition())) {
...@@ -297,6 +317,22 @@ public class CheckOrder { ...@@ -297,6 +317,22 @@ public class CheckOrder {
return pushOrderTime; return pushOrderTime;
} }
/**
* 获取门店营业时间
*
* @param storeResponseDto
* @param toDay true 今日,false 明天
* @return
*/
private BusinessDate getStoreBusinessDate(StoreResponse.BizVO storeResponseDto, boolean toDay) {
List<String> todayBusinessTimes = storeCenterService.getTodayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay());
if (CollectionUtils.isEmpty(todayBusinessTimes)) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
}
BusinessDate businessDate = getStoreBusinessDate(todayBusinessTimes.get(todayBusinessTimes.size() - 1), toDay);
return businessDate;
}
public void checkOrderExpectTime(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, Date takeMealDateTime) { public void checkOrderExpectTime(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, Date takeMealDateTime) {
if (takeMealDateTime == null) { if (takeMealDateTime == null) {
return; return;
...@@ -706,19 +742,19 @@ public class CheckOrder { ...@@ -706,19 +742,19 @@ public class CheckOrder {
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
} else { } else {
//如果是coco查询配送服务判断是平台配送还是自配送 //如果是coco查询配送服务判断是平台配送还是自配送
if(cocoPartnerId.equals(storeResponseDto.getPartnerId())){ if (cocoPartnerId.equals(storeResponseDto.getPartnerId())) {
GetDeliveryFlagRequest getDeliveryFlagRequest = new GetDeliveryFlagRequest(); GetDeliveryFlagRequest getDeliveryFlagRequest = new GetDeliveryFlagRequest();
getDeliveryFlagRequest.setPartnerId(storeResponseDto.getPartnerId()); getDeliveryFlagRequest.setPartnerId(storeResponseDto.getPartnerId());
getDeliveryFlagRequest.setStoreId(storeResponseDto.getStoreId()); getDeliveryFlagRequest.setStoreId(storeResponseDto.getStoreId());
DeliveryBaseResponse<GetDeliveryFlagResponseDto> deliveryBaseResponse = deliveryFeiginClient.getThirdDeliveryFlag(getDeliveryFlagRequest); DeliveryBaseResponse<GetDeliveryFlagResponseDto> deliveryBaseResponse = deliveryFeiginClient.getThirdDeliveryFlag(getDeliveryFlagRequest);
if(deliveryBaseResponse.getCode() == 100 && deliveryBaseResponse.getData() != null && deliveryBaseResponse.getData().isThirdDeliveryFlag()){ if (deliveryBaseResponse.getCode() == 100 && deliveryBaseResponse.getData() != null && deliveryBaseResponse.getData().isThirdDeliveryFlag()) {
storeDeliveryInfoDto.setDeliveryType("third"); storeDeliveryInfoDto.setDeliveryType("third");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
}else { } else {
storeDeliveryInfoDto.setDeliveryType("self"); storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
} }
}else{ } else {
if (ObjectUtils.equals(openPlatformIappWxappConfig.getTakeType(), 1)) { if (ObjectUtils.equals(openPlatformIappWxappConfig.getTakeType(), 1)) {
storeDeliveryInfoDto.setDeliveryType("self"); storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
...@@ -774,19 +810,19 @@ public class CheckOrder { ...@@ -774,19 +810,19 @@ public class CheckOrder {
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
} else { } else {
//如果是coco查询配送服务判断是平台配送还是自配送 //如果是coco查询配送服务判断是平台配送还是自配送
if(cocoPartnerId.equals(storeResponseDto.getPartnerId())){ if (cocoPartnerId.equals(storeResponseDto.getPartnerId())) {
GetDeliveryFlagRequest getDeliveryFlagRequest = new GetDeliveryFlagRequest(); GetDeliveryFlagRequest getDeliveryFlagRequest = new GetDeliveryFlagRequest();
getDeliveryFlagRequest.setPartnerId(storeResponseDto.getPartnerId()); getDeliveryFlagRequest.setPartnerId(storeResponseDto.getPartnerId());
getDeliveryFlagRequest.setStoreId(storeResponseDto.getStoreId()); getDeliveryFlagRequest.setStoreId(storeResponseDto.getStoreId());
DeliveryBaseResponse<GetDeliveryFlagResponseDto> deliveryBaseResponse = deliveryFeiginClient.getThirdDeliveryFlag(getDeliveryFlagRequest); DeliveryBaseResponse<GetDeliveryFlagResponseDto> deliveryBaseResponse = deliveryFeiginClient.getThirdDeliveryFlag(getDeliveryFlagRequest);
if(deliveryBaseResponse.getCode() == 100 && deliveryBaseResponse.getData() != null && deliveryBaseResponse.getData().isThirdDeliveryFlag()){ if (deliveryBaseResponse.getCode() == 100 && deliveryBaseResponse.getData() != null && deliveryBaseResponse.getData().isThirdDeliveryFlag()) {
storeDeliveryInfoDto.setDeliveryType("third"); storeDeliveryInfoDto.setDeliveryType("third");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
}else { } else {
storeDeliveryInfoDto.setDeliveryType("self"); storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
} }
}else{ } else {
if (ObjectUtils.equals(openPlatformIappWxappConfig.getTakeType(), 1)) { if (ObjectUtils.equals(openPlatformIappWxappConfig.getTakeType(), 1)) {
storeDeliveryInfoDto.setDeliveryType("self"); storeDeliveryInfoDto.setDeliveryType("self");
storeDeliveryInfoDto.setPushOrderTime(0); storeDeliveryInfoDto.setPushOrderTime(0);
......
package cn.freemud.utils;
import cn.freemud.base.util.DateUtil;
import org.apache.commons.lang.time.DateUtils;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtilsTest {
@Test
public void testDateCompare() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2020-12-30 00:00:00");
Date date2 = sdf.parse("2020-12-14 11:50:00");
System.out.println("date1 : " + sdf.format(date1));
System.out.println("date2 : " + sdf.format(date2));
System.out.println(date1.compareTo(date2));
if (date1.compareTo(date2) > 0) {
System.out.println("Date1 时间在 Date2 之后");
} else if (date1.compareTo(date2) < 0) {
System.out.println("Date1 时间在 Date2 之前");
} else if (date1.compareTo(date2) == 0) {
System.out.println("Date1 时间与 Date2 相等");
} else {
System.out.println("程序怎么会运行到这里?正常应该不会");
}
boolean x =(DateUtils.addMinutes(new Date(), 45).compareTo(date2) <= 0);
System.out.println(x);
}
@Test
public void testBefore() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2020-12-30 00:00:00");
Date date = DateUtil.setEndDay(new Date());
String s = DateUtil.convert2String(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(date.before(date1));
}
}
...@@ -26,7 +26,7 @@ public class PaySuccessResp { ...@@ -26,7 +26,7 @@ public class PaySuccessResp {
//总排队人数 //总排队人数
private Integer queueNumber; private Integer queueNumber;
//取餐码 //取餐码
private Integer pickUpGoodsNo; private String pickUpGoodsNo;
//门店订单序号 //门店订单序号
private Integer daySeq; private Integer daySeq;
......
...@@ -694,7 +694,9 @@ public class ShoppingCartConvertAdapter { ...@@ -694,7 +694,9 @@ public class ShoppingCartConvertAdapter {
productComboType = parentProductBean.getProductComboList().stream().filter(p -> ObjectUtils.equals(comboxGoods.getGoodsId(), p.getProductId())).findFirst().orElse(new ProductTypeBeanDTO.ProductComboType()); productComboType = parentProductBean.getProductComboList().stream().filter(p -> ObjectUtils.equals(comboxGoods.getGoodsId(), p.getProductId())).findFirst().orElse(new ProductTypeBeanDTO.ProductComboType());
} else { } else {
Map<String, ProductTypeBeanDTO.ProductGroupType.GroupDetailType> map = new HashMap<>(); Map<String, ProductTypeBeanDTO.ProductGroupType.GroupDetailType> map = new HashMap<>();
parentProductBean.getProductGroupList().stream().map(t -> t.getGroupDetail()).forEach(group -> group.forEach(detailType -> map.put(detailType.getProductId(), detailType))); if (CollectionUtils.isNotEmpty(parentProductBean.getAdditionalGroupList())){
parentProductBean.getProductGroupList().stream().map(t -> t.getGroupDetail()).forEach(group -> group.forEach(detailType -> map.put(detailType.getProductId(), detailType)));
}
groupDetailType = map.get(comboxGoods.getGoodsId()); groupDetailType = map.get(comboxGoods.getGoodsId());
} }
...@@ -871,14 +873,15 @@ public class ShoppingCartConvertAdapter { ...@@ -871,14 +873,15 @@ public class ShoppingCartConvertAdapter {
//套餐可选商品 //套餐可选商品
if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : cartGoods.getProductGroupList()){ for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods comboxGoods : cartGoods.getProductGroupList()){
ProductTypeBeanDTO productBeanDTO = subProductTypeMap.get(comboxGoods.getSpuId());
//套餐子商品多规格商品 //套餐子商品多规格商品
if(comboxGoods.getSpuId() != null && !comboxGoods.getSkuId().equals(comboxGoods.getSpuId()) ){ if(comboxGoods.getSpuId() != null && !comboxGoods.getSkuId().equals(comboxGoods.getSpuId()) ){
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false); updateComboxGoodsInfoForMCoffee(productGroup, productBeanDTO, false);
} }
}else { }else {
for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) { for (com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoods.ComboxGoods productGroup : cartGoods.getProductGroupList()) {
updateComboxGoodsInfoForMCoffee(productGroup, spuProduct, false); updateComboxGoodsInfoForMCoffee(productGroup, productBeanDTO, false);
} }
} }
} }
......
...@@ -738,11 +738,12 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -738,11 +738,12 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
* 重新计算拼单购物车行总折扣金额 * 重新计算拼单购物车行总折扣金额
*/ */
private void updateTotalDiscountAmount(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto) { private void updateTotalDiscountAmount(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto) {
if (null != shoppingCartGoodsDto && null != shoppingCartGoodsDto.getProducts() && null != calculationDiscountResult.getGoods()) { if (null != shoppingCartGoodsDto && null != shoppingCartGoodsDto.getProducts() && null != calculationDiscountResult && null != calculationDiscountResult.getGoods()) {
shoppingCartGoodsDto.getProducts().stream().forEach(product -> { shoppingCartGoodsDto.getProducts().stream().forEach(product -> {
calculationDiscountResult.getGoods().stream().forEach(goods -> { calculationDiscountResult.getGoods().stream().forEach(goods -> {
if (goods.getCartGoodsUid().equals(product.getCartGoodsUid())) { if (goods.getCartGoodsUid().equals(product.getCartGoodsUid())) {
product.setTotalDiscountAmount(Integer.valueOf(String.valueOf(goods.getDiscountAmount()))); long totalDiscountAmount = product.getOriginalPrice() * product.getQty() - goods.getRealAmount();
product.setTotalDiscountAmount(Integer.valueOf(String.valueOf(totalDiscountAmount)));
} }
}); });
}); });
......
...@@ -270,8 +270,11 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -270,8 +270,11 @@ public class ShoppingCartMCoffeeServiceImpl {
isContinue= false; isContinue= false;
} }
if(StringUtils.isNotEmpty(goodsId) && StringUtils.isNotEmpty(couponCode) && isContinue if(StringUtils.isNotEmpty(goodsId) && StringUtils.isNotEmpty(couponCode) && isContinue
&& cartGoods.getName().equals("啡常搭") && CollectionUtils.isNotEmpty(cartGoods.getProductComboList()) && cartGoods.getProductComboList().size() == 1 && cartGoods.getName().equals("啡常搭") && cartGoods.getGoodsType().equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType())
&& CollectionUtils.isEmpty(cartGoods.getProductGroupList()) && cartGoods.getProductComboList().get(0).getSkuId().equals(goodsId)) { && CollectionUtils.isNotEmpty(cartGoods.getProductComboList()) && cartGoods.getProductComboList().size() == 1
&& cartGoods.getProductComboList().get(0).getSkuId().equals(goodsId)
&& CollectionUtils.isNotEmpty(cartGoods.getProductGroupList()) && cartGoods.getProductGroupList().size() == 1
&& cartGoods.getProductGroupList().get(0).getSkuId().equals("0") && cartGoods.getProductGroupList().get(0).getSkuName().equals("无")) {
// 如果购物车商品存在商品规格,替换时复制规格信息 // 如果购物车商品存在商品规格,替换时复制规格信息
if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList().get(0).getSpecialExtra())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductComboList().get(0).getSpecialExtra())) {
addShoppingCartGoodsRequestVo.setSpecialExtra(cartGoods.getProductComboList().get(0).getSpecialExtra()); addShoppingCartGoodsRequestVo.setSpecialExtra(cartGoods.getProductComboList().get(0).getSpecialExtra());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment