|
@@ -23,6 +23,7 @@ import com.ym.mec.common.dto.OrderCreate;
|
|
|
import com.ym.mec.common.entity.HttpResponseResult;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
+import com.ym.mec.common.page.WrapperUtil;
|
|
|
import com.ym.mec.common.service.IdGeneratorService;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
@@ -37,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
@@ -1033,25 +1035,62 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
|
|
|
, studentIds, courseIds, classGroupStudents, allLockCourseIds, batchNo, adjust.getMasterTotalPrice());
|
|
|
} else if (calender.getPaymentType() == GOODS_PURCHASE) {
|
|
|
//TODO 推送订单到商城
|
|
|
+ MusicGroupPaymentCalenderAddress address = musicGroupPaymentCalenderAddressService.lambdaQuery()
|
|
|
+ .eq(MusicGroupPaymentCalenderAddress::getCalenderId, calender.getId()).one();
|
|
|
+ if (address == null) {
|
|
|
+ throw new BizException("收货地址不存在");
|
|
|
+ }
|
|
|
+ //获取商品信息
|
|
|
+ List<MusicGroupPaymentCalenderGoods> goods = musicGroupPaymentCalenderGoodsService.lambdaQuery()
|
|
|
+ .eq(MusicGroupPaymentCalenderGoods::getCalenderId, calender.getId()).list();
|
|
|
+ if (CollectionUtils.isEmpty(goods)) {
|
|
|
+ throw new BizException("商品信息不存在");
|
|
|
+ }
|
|
|
OrderCreate orderCreate = new OrderCreate();
|
|
|
String orderNo = idGeneratorService.generatorId("payment") + "";
|
|
|
+ address.setOrderNo(orderNo);
|
|
|
orderCreate.setOrderNo(orderNo);
|
|
|
// orderCreate.setOrchestraId(musicGroup.getId());
|
|
|
orderCreate.setMemberId(musicGroup.getSchoolId().longValue());
|
|
|
orderCreate.setTotalAmount(calender.getCurrentTotalAmount());
|
|
|
orderCreate.setOrderFormType("MEC");
|
|
|
orderCreate.setPlatformType("SCHOOL");
|
|
|
- MusicGroupPaymentCalenderAddress address = musicGroupPaymentCalenderAddressService.lambdaQuery()
|
|
|
- .eq(MusicGroupPaymentCalenderAddress::getCalenderId, calender.getId()).one();
|
|
|
- if (address != null) {
|
|
|
- orderCreate.setReceiverName(address.getName());
|
|
|
- orderCreate.setReceiverPostCode(address.getPostCode());
|
|
|
- orderCreate.setReceiverPhone(address.getPhone());
|
|
|
- orderCreate.setReceiverProvince(address.getProvince());
|
|
|
- orderCreate.setReceiverCity(address.getCity());
|
|
|
- orderCreate.setReceiverRegion(address.getRegion());
|
|
|
- orderCreate.setReceiverDetailAddress(address.getAddress());
|
|
|
+ orderCreate.setSourceType(2);
|
|
|
+ orderCreate.setReceiverName(address.getName());
|
|
|
+ orderCreate.setReceiverPostCode(address.getPostCode());
|
|
|
+ orderCreate.setReceiverPhone(address.getPhone());
|
|
|
+ orderCreate.setReceiverProvince(address.getProvince());
|
|
|
+ orderCreate.setReceiverCity(address.getCity());
|
|
|
+ orderCreate.setReceiverRegion(address.getRegion());
|
|
|
+ orderCreate.setReceiverDetailAddress(address.getAddress());
|
|
|
+ List<OrderCreate.OrderItem> orderItems = new ArrayList<>();
|
|
|
+ for (MusicGroupPaymentCalenderGoods e : goods) {
|
|
|
+ BigDecimal totalPrice = e.getTotalPrice();
|
|
|
+ List<ComplementGoodsDto> goodsDtoList = JSON.parseArray(e.getChildGoodsJson(), ComplementGoodsDto.class);
|
|
|
+ //总金额按比例分配
|
|
|
+ //待分配
|
|
|
+ BigDecimal waitRemitFee = totalPrice;
|
|
|
+ BigDecimal totalAmount = WrapperUtil.sumList(goodsDtoList, ComplementGoodsDto::getOrganCostPrice);
|
|
|
+ for (int i = 0; i < goodsDtoList.size(); i++) {
|
|
|
+ ComplementGoodsDto goodsDto = goodsDtoList.get(i);
|
|
|
+ OrderCreate.OrderItem orderItemCreate = new OrderCreate.OrderItem();
|
|
|
+ orderItemCreate.setProductQuantity(1);
|
|
|
+ orderItemCreate.setProductSkuId(goodsDto.getSkuStockId().longValue());
|
|
|
+ //如果是最后一件商品
|
|
|
+ if (i == goodsDtoList.size() - 1) {
|
|
|
+ orderItemCreate.setRealAmount(waitRemitFee);
|
|
|
+ } else {
|
|
|
+ //获取比例
|
|
|
+ BigDecimal ratioAmount = goodsDto.getOrganCostPrice().divide(totalAmount, 6, RoundingMode.HALF_UP);
|
|
|
+ //获取分配的金额
|
|
|
+ BigDecimal multiply = ratioAmount.multiply(totalPrice).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ orderItemCreate.setRealAmount(multiply);
|
|
|
+ waitRemitFee = waitRemitFee.subtract(multiply);
|
|
|
+ }
|
|
|
+ orderItems.add(orderItemCreate);
|
|
|
+ }
|
|
|
}
|
|
|
+ orderCreate.setOrderItemList(orderItems);
|
|
|
}
|
|
|
for (MusicGroupPaymentCalender musicGroupPaymentCalender : musicGroupPaymentCalenders) {
|
|
|
//将0元未缴费学员缴费状态更新为已缴费
|