Browse Source

refactor: 部分发货功能重构

wechat_public_accounts
travis 5 years ago
parent
commit
5269d6f002
  1. 1
      backend/modules/shop/controllers/OrderController.php
  2. 19
      backend/modules/shop/logic/delivery/DeliveryManager.php
  3. 144
      backend/modules/shop/views/order/delivery_goods.php
  4. 1
      console/controllers/TestController.php

1
backend/modules/shop/controllers/OrderController.php

@ -172,7 +172,6 @@ class OrderController extends Controller
/*获取发货商品信息(包括已发货和未发货)*/ /*获取发货商品信息(包括已发货和未发货)*/
$deliveryGoods = DeliveryManager::deliveryGoodsInfo($id); $deliveryGoods = DeliveryManager::deliveryGoodsInfo($id);
return $this->render('delivery', [ return $this->render('delivery', [
'order' => $order, 'order' => $order,
'delivery' => $delivery, 'delivery' => $delivery,

19
backend/modules/shop/logic/delivery/DeliveryManager.php

@ -107,12 +107,11 @@ class DeliveryManager
return ['unShipped' => $unShippedGoods]; return ['unShipped' => $unShippedGoods];
} }
$filter = [];
$deliveryIds = []; $deliveryIds = [];
foreach ($delivery as $value) { foreach ($delivery as $value) {
$deliveryIds[] = $value->id; $deliveryIds[] = $value->id;
} }
$filter = [];
$deliveryGoods = DeliveryGoods::find()->where(['delivery_id' => $deliveryIds])->all(); $deliveryGoods = DeliveryGoods::find()->where(['delivery_id' => $deliveryIds])->all();
for ($i = 0; $i < count($deliveryGoods); $i++) { for ($i = 0; $i < count($deliveryGoods); $i++) {
$orderGoodsId = $deliveryGoods[$i]['order_goods_id']; $orderGoodsId = $deliveryGoods[$i]['order_goods_id'];
@ -120,7 +119,7 @@ class DeliveryManager
$filter[$orderGoodsId] = $deliveryGoods[$i]['goods_count']; $filter[$orderGoodsId] = $deliveryGoods[$i]['goods_count'];
for ($j = 0; $j < count($deliveryGoods); $j++) { for ($j = 0; $j < count($deliveryGoods); $j++) {
//如果发货商品中有其他相同orderGoods的商品 //如果发货商品中有其他相同orderGoods的商品
if ($orderGoodsId == $deliveryGoods[$j]['order_goods_id'] && $i !== $j) {
if ($orderGoodsId == $deliveryGoods[$j]['order_goods_id'] && $i != $j) {
//商品数量叠加起来并保存 //商品数量叠加起来并保存
$filter[$orderGoodsId] += $deliveryGoods[$j]['goods_count']; $filter[$orderGoodsId] += $deliveryGoods[$j]['goods_count'];
} }
@ -154,14 +153,12 @@ class DeliveryManager
$shipped = []; $shipped = [];
$delivery = Delivery::findAll(['order_id' => $order_id]); $delivery = Delivery::findAll(['order_id' => $order_id]);
foreach ($delivery as $k => $value) { foreach ($delivery as $k => $value) {
// $expressTemplate = ExpressTemplate::find()
// ->select('name')
// ->where(['id' => $value->shipping_id])
// ->one();
// $deliveryInfo[$k]['logisticInfo'] = [
// 'exp_name'=> $expressTemplate ? $expressTemplate->name : '',
// 'invoice_no'=> $value->invoice_no
// ]; //物流公司和运单号
$shipped[$k]['logisticInfo'] = [
'exp_name' => '',
'invoice_no' => '',
'created_at' => '',
]; //物流公司和运单号
$shipped[$k]['goodsInfo'] = self::getDeliverGoodsInfo($value->id); //获取商品信息 $shipped[$k]['goodsInfo'] = self::getDeliverGoodsInfo($value->id); //获取商品信息
} }

144
backend/modules/shop/views/order/delivery_goods.php

@ -11,13 +11,16 @@
.box { .box {
margin-top: 20px; margin-top: 20px;
} }
.unShipped-table,.shipped-table {
.unShipped-table, .shipped-table {
margin:15px; margin:15px;
width:90%; width:90%;
padding:5px; padding:5px;
border-radius: 10px; border-radius: 10px;
box-shadow:0 4px 30px 2px rgba(223, 225, 230, 0.5) !important; box-shadow:0 4px 30px 2px rgba(223, 225, 230, 0.5) !important;
} }
.logistic {
text-align: center;
}
input { input {
width: 50%; width: 50%;
} }
@ -50,110 +53,45 @@
</table> </table>
</div> </div>
<div class="box shipped-box"> <div class="box shipped-box">
<h5>已发货商品</h5>
<?php
if (!empty($deliveryGoods['shipped'])) {
echo '<h5>已发货商品</h5>';
foreach ($deliveryGoods['shipped'] as $shipped) {
echo '<div class="logistic"> 快递公司:';
echo "{$shipped['logisticInfo']['exp_name']}";
echo '&nbsp&nbsp&nbsp 运单号:';
echo "{$shipped['logisticInfo']['invoice_no']}";
echo '&nbsp&nbsp&nbsp 创建时间:';
echo "{$shipped['logisticInfo']['created_at']}";
echo '</div>';
echo
'<table class="table shipped-table">' .
'<tr>' .
'<th>商品ID</th>' .
'<th>商品名称</th>' .
'<th>商品sku</th>' .
'<th>发货数量</th>' .
'</tr>';
foreach ($shipped['goodsInfo'] as $goodsInfo) {
echo '<tr>' .
"<td> {$goodsInfo['goods_id']} </td>" .
"<td> {$goodsInfo['goods_name']} </td>" .
"<td> {$goodsInfo['sku_value']} </td>" .
"<td> {$goodsInfo['delivery_number']} </td>" .
'</tr>';
}
echo '</table>';
}
}
?>
</div> </div>
</div> </div>
<?php
//$js = <<<SCRIPT
////初始化订单商品数据
/* var data = "<?php echo json_encode($deliveryGoods) ?>";*/
// console.log(data);
// var unShipped = {};
// function init() {
//<!-- unShipped = data.unShipped;-->
//<!-- showUnShipped(unShipped);-->
//<!-- if(data.shipped){-->
//<!-- var shipped = data.shipped;-->
//<!-- showShipped(shipped)-->
//<!-- }-->
// unShipped = JSON.stringify(unShipped);
// $('#deliveryGoods').val(unShipped)
// }
// init();
//
// //编辑发货数量
// function updateGoods(ref){
// ref = $(ref)[0].target;
// $(ref).hide();
// $(ref).next().show();
// $(ref).parent().parent().find('.goods_count').removeAttr('disabled')
// }
//
// //保存编辑
// function saveGoods(ref) {
// if(typeof unShipped =='string'){
// unShipped = JSON.parse(unShipped)
// }
// ref = $(ref)[0].target;
// var tr = $(ref).parent().parent();
// tr.find('.goods_count').attr('disabled', 'disabled');
// var index = tr.attr('data-index');
// var number = tr.find('.goods_count').val();
// if (number < 0) {
// alert('发货数量不能低于0');
// tr.find('.goods_count').val(0);
// return false;
// }
// unShipped[index].goods_count = number;
// unShipped = JSON.stringify(unShipped);
// $('#deliveryGoods').val(unShipped);
// $(ref).hide();
// $(ref).prev().show();
// }
//
// //显示未发货商品
// function showUnShipped(unShipped) {
// unShipped.forEach(function (item,index) {
// var tr = "<tr data-index='" + index +"'>" +
// "<td class='goods_id' name='goodsId[]'>" + item.goods_id + "</td>" +
// "<td class='goods_name'>" + item.goods_name + "</td>" +
// "<td class='goods_sku'>" + item.sku_value + "</td>" +
// "<td class='lack_number'>" + item.lack_number + "</td>" +
// "<td><input type='text' class='goods_count' value='"+item.lack_number+"' name='deliveryGoods' disabled/></td>" +
// "<td>" +
// "<input type='button' class='btn btn-primary btn-update' value='编辑'/>" +
// "<input type='button' class='btn btn-primary btn-save' value='保存' style='display: none' />" +
// "</td>" +
// "</tr>";
// $('.unShipped-table').append(tr)
// });
// }
//
// //显示已发货商品
// function showShipped(shipped) {
// shipped.forEach(function(item,index) {
// var table = ' <table class="table shipped-table">' +
// '<tr>' +
// '<th>商品名称</th>' +
// '<th>商品sku</th>' +
// '<th>发货数量</th>' +
// '</tr>' +
// '</table>';
// // var div = document.createElement('div');
// // div.innerText = '运单号:' + item.logisticInfo.invoice_no + '快递公司:'+ item.logisticInfo.exp_name;
// // $('.shipped-box').append(div);
// $('.shipped-box').append(table);
// table = $('.shipped-table').eq(index);
// item.goodsInfo.forEach(function (item,index) {
// var tr = "<tr data-index='" + index +"'>" +
// "<td class='goods_name'>" + item.goods_name + "</td>" +
// "<td class='goods_sku'>" + item.sku_value + "</td>" +
// "<td class='goods_count'>" + item.delivery_number + "</td>" +
// "</tr>";
// $(table).append(tr);
// });
// })
// }
//
// var btnUpdate = $('.btn-update');
// var btnSave = $('.btn-save');
// for (i = 0; i < btnUpdate.length; i++) {
// btnUpdate[i].addEventListener("click", updateGoods);
// btnSave[i].addEventListener("click", saveGoods);
// }
//SCRIPT;
//$this->registerJs($js);
//?>

1
console/controllers/TestController.php

@ -42,6 +42,7 @@ class TestController extends Controller {
try { try {
$order = new Order(); $order = new Order();
$order->user_id = 1; $order->user_id = 1;
$order->status = Order::STATUS_TO_BE_SHIPPING;
$order->type = Order::TYPE_SHOPPING; $order->type = Order::TYPE_SHOPPING;
$order->order_sn = date('Ymd', time()) . rand(0, 100); $order->order_sn = date('Ymd', time()) . rand(0, 100);
$order->invoice_id = date('Ymd', time()) . rand(0, 100); $order->invoice_id = date('Ymd', time()) . rand(0, 100);

Loading…
Cancel
Save