MultiplePackagesOrderGoodsController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/3/4
  6. * Time: 上午9:09
  7. */
  8. namespace app\backend\modules\order\controllers;
  9. use app\backend\modules\order\models\Order;
  10. use app\backend\modules\order\models\OrderGoods;
  11. use app\backend\modules\goods\models\Goods;
  12. use app\backend\modules\order\services\OrderPackageService;
  13. use app\common\components\BaseController;
  14. use app\common\models\order\OrderPackage;
  15. class MultiplePackagesOrderGoodsController extends BaseController
  16. {
  17. /**
  18. * 获取可选择的商品 用户多包裹发货
  19. */
  20. public function getOrderGoods()
  21. {
  22. $order_id = intval(request()->input('order_id'));
  23. //查询这个订单没有发货的商品
  24. $where[] = ['order_id','=',$order_id];
  25. // $where[] = ['order_express_id','=',null];
  26. $select = ['id','goods_id','order_id','thumb','title','goods_option_title','goods_sn','goods_market_price','payment_amount','total'];
  27. $order_goods = OrderGoods::uniacid()->where($where)->whereNull('order_express_id')->select($select)->get()->makeVisible('order_id');
  28. $order_package = OrderPackage::uniacid()->where($where)->whereNotNull('order_express_id')->get();
  29. $order_goods = OrderPackageService::filterGoods($order_goods,$order_package);
  30. $order_goods = array_values($order_goods->toArray());
  31. return $this->successJson('操作成功',$order_goods);
  32. }
  33. /**
  34. * 用来修复多包裹发货默认值为1(部分发货) 之后批量发货造成默认值不会更改 造成用户无法收货的问题
  35. */
  36. public function repairMultiplePackages()
  37. {
  38. $where[] = ['status','!=',2];
  39. $where[] = ['is_all_send_goods','=',1];
  40. Order::where($where)->update(['is_all_send_goods'=>0]); //修改所有状态不等于发货的状态为0
  41. $where = [];
  42. $where[] = ['status','=',2];
  43. $where[] = ['is_all_send_goods','=',1];
  44. $data = Order::where($where)->with(['hasManyOrderGoods'])->get();
  45. foreach ($data as $k=>$v){
  46. $order_data = $v->toArray();
  47. if(count($order_data['has_many_order_goods'])==1){
  48. $v->is_all_send_goods = 0;
  49. $v->save();
  50. }else{
  51. $order_goods_express_id_is_null = 0; //计数 如果订单商品所有该字段都是空 则状态变为全部发货
  52. $order_goods_express_id_num = 0;//计数 如果订单商品所有该字段都不为空则变为全部发货
  53. foreach ($order_data['has_many_order_goods'] as $k1=>$v1){
  54. if(empty($v1['order_express_id'])){
  55. $order_goods_express_id_is_null++;
  56. }else{
  57. $order_goods_express_id_num++;
  58. }
  59. }
  60. if($order_goods_express_id_is_null == count($order_data['has_many_order_goods'])){
  61. $v->is_all_send_goods = 0;
  62. $v->save();
  63. }
  64. if($order_goods_express_id_num == count($order_data['has_many_order_goods'])){
  65. $v->is_all_send_goods = 0;
  66. $v->save();
  67. }
  68. }
  69. }
  70. return $this->successJson();
  71. }
  72. }