Browse Source

Merge remote-tracking branch 'origin/zx_saas_goods' into zx_saas_goods

yuanliang 1 năm trước cách đây
mục cha
commit
7cfd9c07c1

+ 1 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -243,7 +243,5 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     List<String> getMallProductCategory(@Param("database") String database);
 
-    void updateShippedStatus(@Param("orderNos") List<String> orderNos);
-
-    void updateOrganGoodsCost(@Param("skuSync") OrderSkuSync.SkuSync skuSync, @Param("orderNo") String orderNo);
+    List<SellOrder> queryByOrganNos(@Param("orderNos") List<String> orderNos);
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -18,6 +18,7 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dto.ComplementGoodsDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.mapper.GoodsSubMapper;
+import com.ym.mec.biz.dal.page.MusicGroupShippingAddressQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.api.CommonResult;
 import com.ym.mec.common.dto.OrderCreate;
@@ -81,6 +82,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     private GoodsSubService goodsSubService;
     @Autowired
     private MallFeignService mallFeignService;
+    @Autowired
+    private MusicGroupShippingAddressService musicGroupShippingAddressService;
 
     @Override
     public BaseDAO<Integer, SellOrder> getDAO() {
@@ -619,6 +622,26 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         mallOrder.setPlatformType("STUDENT");
         mallOrder.setSourceType(1);
 
+        // 乐团学生报名默认收货地址
+        if (studentPaymentOrder.getType() == OrderTypeEnum.APPLY && StringUtils.isNotBlank(mallOrder.getOrchestraId())) {
+
+            // 查询乐团默认收货地址
+            MusicGroupShippingAddressQueryInfo queryInfo = new MusicGroupShippingAddressQueryInfo();
+            queryInfo.setMusicGroupId(mallOrder.getOrchestraId());
+            queryInfo.setPage(1);
+            queryInfo.setRows(10);
+            List<MusicGroupShippingAddress> rows = musicGroupShippingAddressService.queryPage(queryInfo).getRows();
+            if (CollectionUtils.isNotEmpty(rows)) {
+                MusicGroupShippingAddress address = rows.get(0);
+                mallOrder.setReceiverName(address.getConsigneeName());
+                mallOrder.setReceiverPhone(address.getMobile());
+                mallOrder.setReceiverProvince(address.getRegionProvince());
+                mallOrder.setReceiverCity(address.getRegionCity());
+                mallOrder.setReceiverRegion(address.getRegionCounty());
+                mallOrder.setReceiverDetailAddress(address.getDetailAddress());
+            }
+        }
+
         CommonResult<Boolean> result = mallFeignService.productOrderCreate(mallOrder);
         if (result.getCode() != 200) {
             throw new BizException("同步商城订单失败",result.getMessage());

+ 49 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -2205,11 +2205,58 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateShippedStatus(List<OrderSkuSync> orderSkuSyncs) {
+        if (CollectionUtils.isEmpty(orderSkuSyncs)) {
+            return;
+        }
+        List<String> orderNos = orderSkuSyncs.stream().map(e -> e.getOrderNo()).collect(Collectors.toList());
+        List<SellOrder> sellOrders = sellOrderDao.queryByOrganNos(orderNos);
+        if (CollectionUtils.isEmpty(sellOrders)) {
+            throw new BizException("订单不存在");
+        }
+        sellOrders = sellOrders.stream().filter(e -> e.getDeliveryTime() == null).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(sellOrders)){
+            return;
+        }
+        Map<String,List<SellOrder>> sellOrderMap = sellOrders.stream().collect(Collectors.groupingBy(SellOrder::getOrderNo));
+        Map<String,Map<Long,BigDecimal>> skuCostMap = new HashMap<>(orderSkuSyncs.size());
         for (OrderSkuSync orderSkuSync : orderSkuSyncs) {
-            for (int i = 0; i < orderSkuSync.getSkuSyncList().size(); i++) {
-                sellOrderDao.updateOrganGoodsCost(orderSkuSync.getSkuSyncList().get(i), orderSkuSync.getOrderNo());
+            List<SellOrder> dtos = sellOrderMap.get(orderSkuSync.getOrderNo());
+            if(CollectionUtils.isEmpty(dtos)){
+                continue;
+            }
+            //获取sku平均成本价
+            Map<Long,List<OrderSkuSync.SkuSync>> skuMap = orderSkuSync.getSkuSyncList().stream().collect(Collectors.groupingBy(OrderSkuSync.SkuSync::getSku));
+            for (Long skuId : skuMap.keySet()) {
+                List<OrderSkuSync.SkuSync> skuSyncs = skuMap.get(skuId);
+                //汇总成本价
+                BigDecimal costPrice = skuSyncs.stream().map(e -> e.getPrice().multiply(new BigDecimal(e.getCount()))).reduce(BigDecimal.ZERO, BigDecimal::add);
+                //获取总数
+                int count = skuSyncs.stream().mapToInt(e -> e.getCount()).sum();
+                BigDecimal avgCostPrice = costPrice;
+                if (count > 1) {
+                    avgCostPrice = costPrice.divide(new BigDecimal(count), 2, BigDecimal.ROUND_HALF_UP);
+                }
+                Map<Long,BigDecimal> costMap = new HashMap<>(1);
+                costMap.put(skuId,avgCostPrice);
+                skuCostMap.put(orderSkuSync.getOrderNo(),costMap);
+            }
+        }
+        Date now = new Date();
+        String format = DateUtil.format(now, DateUtil.ISO_EXPANDED_DATE_FORMAT);
+        for (String orderNo : sellOrderMap.keySet()) {
+            List<SellOrder> sellOrderList = sellOrderMap.get(orderNo);
+            Map<Long,BigDecimal> costMap = skuCostMap.get(orderNo);
+            for (SellOrder sellOrder : sellOrderList) {
+                BigDecimal costPrice = costMap.get(sellOrder.getGoodsSkuId().longValue());
+                if(costPrice == null){
+                    throw new BizException("商品[{}]成本价不存在",sellOrder.getGoodsSkuId());
+                }
+                sellOrder.setSellCost(costPrice);
+                sellOrder.setDeliveryTime(format);
             }
         }
+        sellOrderDao.batchUpdate(sellOrders);
+
     }
 
     public BigDecimal getActualAmount(BigDecimal price, StudentPaymentOrderExportDto row) {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -317,7 +317,7 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
                 if(calender == null || calender.getPaymentType() != MusicGroupPaymentCalender.PaymentType.GOODS_PURCHASE){
                     OrderCreate mallOrder = new OrderCreate();
                     mallOrder.setOrchestraId(studentPaymentOrder.getMusicGroupId());
-                    mallOrder.setStatus(3);
+                    mallOrder.setStatus(1);
                     mallOrder.setOrderNo(studentPaymentRouteOrder.getOrderNo());
                     mallOrder.setTotalAmount(studentPaymentOrder.getExpectAmount());
                     String paymentBusinessChannel = studentPaymentOrder.getPaymentBusinessChannel();

+ 9 - 10
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -270,21 +270,14 @@
                 <if test="sellOrder.goodsSkuId != null">
                     goods_sku_id_ = #{sellOrder.goodsSkuId},
                 </if>
+                <if test="sellOrder.deliveryTime != null and sellOrder.deliveryTime != ''">
+                    delivery_time_ = #{sellOrder.deliveryTime},
+                </if>
                 update_time_ = NOW()
             </set>
             where id_ = #{sellOrder.id} and tenant_id_ = #{sellOrder.tenantId}
         </foreach>
     </update>
-    <update id="updateShippedStatus">
-        update sell_order SET delivery_time_ = NOW() where order_no_ IN
-        <foreach collection="orderNos" item="orderNo" open="(" close=")" separator=",">
-            #{orderNo}
-        </foreach>
-    </update>
-    <update id="updateOrganGoodsCost">
-        update sell_order SET organ_sell_cost_ = #{skuSync.price} ,delivery_time_ = NOW()
-                          where order_no_ = #{orderNo} AND goods_sku_id_ = #{skuSync.sku} AND  organ_sell_cost_ IS NULL
-    </update>
 
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
         insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_,
@@ -703,5 +696,11 @@
     <select id="getMallProductCategory" resultType="java.lang.String">
         select name from mec_mall.pms_product_category where parent_id = 0
     </select>
+    <select id="queryByOrganNos" resultMap="SellOrder">
+        SELECT * FROM sell_order WHERE order_no_ IN
+        <foreach collection="orderNos" item="orderNo" open="(" close=")" separator=",">
+            #{orderNo}
+        </foreach>
+    </select>
 
 </mapper>