Commit ce4054ee authored by shiyu's avatar shiyu

微信预支付订单金额改为优惠后的金额

parent a616d6af
......@@ -238,7 +238,8 @@ public class WxPayCallbackController {
if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap);
}
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) {
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()
|| distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.BLACK_COLLECTION.getCode()) {
//藏馆订单
Result updateResult = handleOrderOfCollector(transaction);
if (!updateResult.getSuccess()) {
......
......@@ -430,10 +430,26 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
return Result.failed("超出购买上限" + buyLimitNum + "件");
}
DistributionOrder distributionOrder = new DistributionOrder();
long orderAmount = supplierItem.getDistributionPrice() * dto.getItemNum();
//盲盒订单存在优惠活动,特殊处理
if (dto.getType() != null && DistributionEnum.DistributionTypeEnum.BLACK_COLLECTION.getCode() == dto.getType()) {
//盲袋订单,盲袋编码在remark字段中
distributionOrder.setRemark(dto.getRemark());
SellActivityRequestDto sellActivityRequestDto = new SellActivityRequestDto();
sellActivityRequestDto.setOrderAmount(orderAmount);
//查询优惠活动后的订单价格
Result<Long> result = sellActivityService.getActivityDiscountPrice(sellActivityRequestDto);
if (result.getSuccess()) {
orderAmount = result.getData();
}
}
String distributionOrderId = IdUtils.getOrderNumber(DISTRIBUTION_ORDER_PREFIX);
DistributionOrderRequestDto prePayDto = new DistributionOrderRequestDto();
prePayDto.setDistributionOrderId(distributionOrderId);
prePayDto.setAmount(String.valueOf(supplierItem.getDistributionPrice() * dto.getItemNum()));
prePayDto.setAmount(String.valueOf(orderAmount));
prePayDto.setBuyerOpenid(dto.getBuyerOpenid());
prePayDto.setItemName(supplierItem.getName());
......@@ -459,7 +475,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
}
//查询佣金比例
double rebate = distributorProfitService.getIntroduceRebate(dto.getBuyerId(), introducerId);
DistributionOrder distributionOrder = new DistributionOrder();
distributionOrder.setIntroduceRebate(BigDecimal.valueOf(rebate));
distributionOrder.setIntroducerId(introducerId);
distributionOrder.setItemId(itemId);
......@@ -471,20 +487,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrder.setBuyerOpenid(dto.getBuyerOpenid());
distributionOrder.setShopId(supplierItem.getCreatorId());
distributionOrder.setSellerId(supplierItem.getCreatorId());
long orderAmount = supplierItem.getDistributionPrice() * dto.getItemNum();
//盲盒订单存在优惠活动,特殊处理
if (dto.getType() != null && DistributionEnum.DistributionTypeEnum.BLACK_COLLECTION.getCode() == dto.getType()) {
//盲袋订单,盲袋编码在remark字段中
distributionOrder.setRemark(dto.getRemark());
SellActivityRequestDto sellActivityRequestDto = new SellActivityRequestDto();
sellActivityRequestDto.setOrderAmount(orderAmount);
//查询优惠活动后的订单价格
Result<Long> result = sellActivityService.getActivityDiscountPrice(sellActivityRequestDto);
if (result.getSuccess()) {
orderAmount = result.getData();
}
}
distributionOrder.setAmount(orderAmount);
distributionOrder.setAddressId(dto.getAddressId());
distributionOrder.setReceiverAddress(dto.getReceiverAddress());
......
package com.wwdz.ch.wx.impl.distribution;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.db.dao.distribution.SellActivityDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.distribution.SellActivity;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SellActivityRequestDto;
import com.wwdz.ch.wx.service.distribution.SellActivityService;
import org.slf4j.Logger;
......@@ -11,7 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Handler;
@Service
public class SellActivityServiceImpl implements SellActivityService {
......@@ -21,6 +28,9 @@ public class SellActivityServiceImpl implements SellActivityService {
@Autowired
SellActivityDao sellActivityDao;
@Autowired
SupplierItemDao supplierItemDao;
@Override
public Result<Long> getActivityDiscountPrice(SellActivityRequestDto dto) {
try {
......@@ -39,4 +49,32 @@ public class SellActivityServiceImpl implements SellActivityService {
}
return Result.failed();
}
@Override
public Result getDiscountForItem(DistributionOrderRequestDto dto) {
try {
SupplierItem supplierItem = supplierItemDao.findById(dto.getItemId());
//优惠活动的起始时间小于当前,结束时间大于当前时间,按照使用门槛倒序排列
SellActivityRequestDto sellActivityRequestDto = new SellActivityRequestDto();
sellActivityRequestDto.setCurrentTime(new Date());
List<SellActivity> sellActivityList = sellActivityDao.findList(sellActivityRequestDto);
long orderAmount = supplierItem.getDistributionPrice() * dto.getItemNum();
Map<String, Object> map = new HashMap<>();
map.put("orderAmount", PriceUtil.convertPriceFenToYuan(orderAmount));
for (SellActivity sellActivity : sellActivityList) {
if (sellActivity.getThresholdAmount() <= orderAmount) {
map.put("discountAmount", PriceUtil.convertPriceFenToYuan(sellActivity.getDiscountAmount()));
map.put("payAmount", PriceUtil.convertPriceFenToYuan(orderAmount - sellActivity.getDiscountAmount()));
} else {
map.put("discountAmount", "0");
map.put("payAmount", PriceUtil.convertPriceFenToYuan(orderAmount));
}
}
return Result.success(map);
} catch (Exception e) {
logger.error("获取商品折扣信息失败error:{}", e);
}
return Result.failed();
}
}
package com.wwdz.ch.wx.service.distribution;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SellActivityRequestDto;
public interface SellActivityService {
......@@ -12,4 +14,13 @@ public interface SellActivityService {
* @return
*/
Result getActivityDiscountPrice(SellActivityRequestDto dto);
/**
* 获取商品折扣后的价格
* @param dto
* @return
*/
Result getDiscountForItem(DistributionOrderRequestDto dto);
}
package com.wwdz.ch.wx.web.distribution;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.wx.entity.request.SelfPageRequestDto;
import com.wwdz.ch.wx.service.distribution.SellActivityService;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/wx/sellActivity")
public class SellActivityController {
private static final Logger logger = LoggerFactory.getLogger(SellActivityController.class);
@Autowired
SellActivityService sellActivityService;
@ApiOperation(value = "获取商品折扣后的价格")
@PostMapping("/getDistributorPageInfo")
public Result getDistributorPageInfo(@RequestBody DistributionOrderRequestDto dto) {
logger.info("获取商品折扣后的价格,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("itemId", "商品id").must().number()
.set("itemNum", "商品数量").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
}
return sellActivityService.getDiscountForItem(dto);
}
}
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