|
|
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fs.common.core.domain.R;
|
|
|
import com.fs.common.exception.ServiceException;
|
|
|
import com.fs.common.utils.DateUtils;
|
|
|
+import com.fs.common.utils.SnowflakeUtil;
|
|
|
import com.fs.common.utils.StringUtils;
|
|
|
import com.fs.common.utils.ServletUtils;
|
|
|
import com.fs.common.utils.ip.IpUtils;
|
|
|
@@ -80,6 +81,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
@@ -208,12 +210,12 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
if (product == null || 1 == product.getIsDel()) {
|
|
|
return R.error("商品不存在");
|
|
|
}
|
|
|
- String orderCode = OrderCodeUtils.getOrderSn();
|
|
|
+// String orderCode = OrderCodeUtils.getOrderSn();
|
|
|
+ String orderCode = SnowflakeUtil.nextIdStr();
|
|
|
if (StringUtils.isEmpty(orderCode)) {
|
|
|
return R.error("订单生成失败,请重试");
|
|
|
}
|
|
|
BigDecimal price = product.getPrice() == null ? BigDecimal.ZERO : product.getPrice();
|
|
|
- String redeemQrUrl = generateRedeemedQrUrl(orderCode);
|
|
|
FsStoreOrderScrm order = new FsStoreOrderScrm();
|
|
|
order.setOrderCode(orderCode);
|
|
|
order.setUserId(user.getUserId());
|
|
|
@@ -222,9 +224,14 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
order.setUserPhone(user.getPhone());
|
|
|
order.setUserAddress(param.getPickupAddress());
|
|
|
order.setTotalNum(1L);
|
|
|
- order.setTotalPrice(price);
|
|
|
- order.setPayPrice(price);
|
|
|
- order.setPayMoney(BigDecimal.ZERO);
|
|
|
+
|
|
|
+ // 计算订单价格
|
|
|
+ Integer productNum = param.getProductNum();
|
|
|
+ BigDecimal num = new BigDecimal(productNum);
|
|
|
+ BigDecimal priceN = price.multiply(num).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ order.setTotalPrice(priceN);
|
|
|
+ order.setPayPrice(priceN);
|
|
|
+ order.setPayMoney(priceN);
|
|
|
order.setPaid(0);
|
|
|
order.setIsPay(0);
|
|
|
order.setPayType("1");
|
|
|
@@ -241,7 +248,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
}
|
|
|
order.setOrderType(8);
|
|
|
order.setIsPickup(1);
|
|
|
- order.setRedeemedCode(redeemQrUrl);
|
|
|
order.setRedeemedStatus(1);
|
|
|
order.setCompanyId(param.getCompanyId());
|
|
|
order.setCompanyUserId(param.getCompanyUserId());
|
|
|
@@ -256,13 +262,13 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
orderItem.setOrderId(order.getId());
|
|
|
orderItem.setOrderCode(orderCode);
|
|
|
orderItem.setProductId(product.getProductId());
|
|
|
- orderItem.setNum(1);
|
|
|
+ orderItem.setNum(param.getProductNum());
|
|
|
PickItemJsonInfo jsonInfo = new PickItemJsonInfo();
|
|
|
jsonInfo.setImage(product.getImage());
|
|
|
jsonInfo.setProductId(product.getProductId());
|
|
|
- jsonInfo.setNum(1);
|
|
|
+ jsonInfo.setNum(param.getProductNum());
|
|
|
jsonInfo.setProductName(product.getProductName());
|
|
|
- jsonInfo.setPrice(price);
|
|
|
+ jsonInfo.setPrice(priceN);
|
|
|
orderItem.setJsonInfo(JSONUtil.toJsonStr(jsonInfo));
|
|
|
fsStoreOrderItemScrmMapper.insertFsStoreOrderItem(orderItem);
|
|
|
List<FsStoreOrderItemScrm> itemList = new ArrayList<>();
|
|
|
@@ -271,6 +277,8 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
updateOrder.setId(order.getId());
|
|
|
updateOrder.setItemJson(JSONUtil.toJsonStr(itemList));
|
|
|
updateOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ String redeemQrUrl = generateRedeemedQrUrl(order.getId().toString());
|
|
|
+ updateOrder.setRedeemedCode(redeemQrUrl);
|
|
|
fsStoreOrderScrmMapper.updateFsStoreOrder(updateOrder);
|
|
|
return R.ok().put("order", order);
|
|
|
}
|
|
|
@@ -310,7 +318,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
if (payPrice.compareTo(new BigDecimal(0)) > 0) {
|
|
|
if (param.getPayType().equals(1)) {
|
|
|
//全款支付
|
|
|
- payMoney = payPrice;
|
|
|
payRemain = new BigDecimal(0);
|
|
|
payDelivery = new BigDecimal(0);
|
|
|
}
|
|
|
@@ -343,8 +350,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
}
|
|
|
FsStoreOrderPickComputeParam computeParam = new FsStoreOrderPickComputeParam();
|
|
|
computeParam.setOrderId(order.getId());
|
|
|
- computeParam.setCompanyId(order.getCompanyId());
|
|
|
- computeParam.setCompanyUserId(order.getCompanyUserId());
|
|
|
computeParam.setPayType(param.getPayType());
|
|
|
Map<String, Object> moneys = computeOrderMoney(order.getTotalPrice(), computeParam);
|
|
|
FsStoreOrderScrm updateOrder = new FsStoreOrderScrm();
|
|
|
@@ -729,8 +734,7 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
|
|
|
*/
|
|
|
private String generateRedeemedQrUrl(String orderCode) {
|
|
|
try {
|
|
|
- String qrContent = "pickOrderCode=" + orderCode;
|
|
|
- byte[] imageBytes = QRCodeUtils.create(qrContent).toByteArray();
|
|
|
+ byte[] imageBytes = QRCodeUtils.create(orderCode).toByteArray();
|
|
|
CloudStorageService storage = OSSFactory.build();
|
|
|
if (storage == null) {
|
|
|
throw new ServiceException("OSS配置异常");
|