BasePurchase.php 5.5 KB

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