BasePurchase.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace addons\Bargain\common\logic\order\purchase;
  3. use addons\Bargain\common\models\BargainOrder;
  4. use common\models\mall\Mall;
  5. use Exception;
  6. use yii\helpers\Json;
  7. // 支付方式接口
  8. abstract class BasePurchase extends \common\logic\order\purchase\BasePurchase
  9. {
  10. /**
  11. * @desc:
  12. * @Author: hua
  13. * @Date: 2022/1/6
  14. * @Time: 9:59
  15. * @Copyright: copyright (c) 2021 广东七件事集团
  16. * @param $form
  17. * @return mixed
  18. */
  19. abstract public function execute( $form);
  20. /**
  21. * 获取下单类型
  22. * @Author bing
  23. * @DateTime 2021-09-23 09:48:45
  24. * @return string
  25. * @copyright: Copyright (c) 2020 广东七件事集团
  26. */
  27. abstract public static function getType(): string;
  28. public function afterExecute($form, string $type)
  29. {
  30. try {
  31. // 重组默认商品信息
  32. $order_goods = $form['order_goods'];
  33. $group_order_goods = [];
  34. $data = is_array($form->data) ? $form->data : Json::decode($form->data, true);
  35. $mall_id_arr = array_column($order_goods,'mall_id');
  36. $mall_list = Mall::lists(['where'=>[['id' =>$mall_id_arr]],'select'=>'id,name'], true);
  37. $mall_arr = array_column($mall_list,'name','id');
  38. // 产品按照商户重新归类组别
  39. foreach ($order_goods as $item) {
  40. if (!isset($group_order_goods[$item['mch_id']])) {
  41. $group_order_goods[$item['mch_id']]['mch_order_info']['mch_id'] = $item['mch_id'];
  42. if ($item['mch_id'] == 0) {
  43. // 平台
  44. if(empty($mall_arr[$item['mall_id']])) throw new Exception('商城不存在');
  45. $group_order_goods[$item['mch_id']]['mch_order_info']['mch_name'] = $mall_arr[$item['mall_id']];
  46. } else {
  47. // 查询商户信息
  48. }
  49. // 主订单信息
  50. $group_order_goods[$item['mch_id']]['mch_order_info']['bargain_active_id'] = $data['active_id'];
  51. $group_order_goods[$item['mch_id']]['mch_order_info']['goods_id'] = $item['goods_id'];
  52. $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_id'] = $item['goods_attr_id'];
  53. $group_order_goods[$item['mch_id']]['mch_order_info']['user_id'] = $item['user_id'];
  54. $group_order_goods[$item['mch_id']]['mch_order_info']['mall_id'] = $item['mall_id'];
  55. $group_order_goods[$item['mch_id']]['mch_order_info']['price'] = $item['price'];
  56. $group_order_goods[$item['mch_id']]['mch_order_info']['bargain_price'] = $item['goods_price'];
  57. $group_order_goods[$item['mch_id']]['mch_order_info']['address_id'] = 0;
  58. $group_order_goods[$item['mch_id']]['mch_order_info']['remark'] = $data['remark'][$item['mch_id']] ?? '';
  59. $group_order_goods[$item['mch_id']]['mch_order_info']['original_goods_price'] = $item['original_goods_price'] ?? 0;
  60. $group_order_goods[$item['mch_id']]['mch_order_info']['goods_price'] = $item['goods_price'];
  61. $group_order_goods[$item['mch_id']]['mch_order_info']['pay_money'] = $item['goods_price'];
  62. $group_order_goods[$item['mch_id']]['mch_order_info']['total_price'] = $item['goods_price'];
  63. $group_order_goods[$item['mch_id']]['mch_order_info']['total_pay_price'] = $item['goods_price'];
  64. $group_order_goods[$item['mch_id']]['mch_order_info']['num'] = $item['num'];
  65. $group_order_goods[$item['mch_id']]['mch_order_info']['goods_name'] = $item['goods_name'];
  66. $group_order_goods[$item['mch_id']]['mch_order_info']['goods_attr_name'] = $item['goods_attr_name'];
  67. $group_order_goods[$item['mch_id']]['mch_order_info']['pic_url'] = $item['pic_url'];
  68. }
  69. if (!isset($group_order_goods[$item['mch_id']]['goods'][$item['goods_id']])) {
  70. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_id'] = $item['goods_id'];
  71. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] = 0;
  72. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] = 0;
  73. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_name'] = $item['goods_name'];
  74. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'] = [];
  75. }
  76. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_price'] += $item['goods_price'];
  77. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['original_goods_price'] =
  78. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['original_goods_price'] ?? 0;
  79. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['original_goods_price'] += ($item['original_goods_price'] ?? 0);
  80. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['num'] += $item['num'];
  81. $group_order_goods[$item['mch_id']]['goods'][$item['goods_id']]['goods_details'][] = $item;
  82. }
  83. // 写入组别
  84. $form['group_order_goods'] = $group_order_goods;
  85. $form['address_id'] = $data['address_id'];
  86. return $form;
  87. } catch (Exception $e) {
  88. $this->setError($e->getMessage());
  89. return false;
  90. }
  91. }
  92. }