CashierService.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace addons\Happiness\common\service;
  3. use addons\Happiness\common\logic\order\OrderLogic;
  4. use addons\Happiness\common\models\HappinessCashierOrder;
  5. use addons\Happiness\common\models\HappinessCashierOrderDetail;
  6. use addons\Happiness\common\models\HappinessClerk;
  7. use addons\Happiness\common\models\HappinessClerkLog;
  8. use addons\Happiness\common\models\HappinessStore;
  9. use addons\Happiness\common\models\HappinessStoreGoods;
  10. use common\enums\StatusEnum;
  11. use common\helpers\ApiCode;
  12. use common\enums\AddonsEnum;
  13. use common\models\goods\Goods;
  14. use common\models\user\User;
  15. use yii\helpers\Json;
  16. use Exception;
  17. use Money\Exchange;
  18. use Swoole\Http\Status;
  19. use Yii;
  20. class CashierService extends BaseService
  21. {
  22. //创建订单商品详情
  23. public function createDetail($id, $data)
  24. {
  25. $t=Yii::$app->db->beginTransaction();
  26. try {
  27. $order = HappinessCashierOrder::find()->where(['id' => $id])->asArray()->one();
  28. $order_detail = [];
  29. foreach ($data as $key => $value) {
  30. $order_detail[] = [
  31. 'attr_id' => $value['id'],
  32. 'num' => $value['buy_num'],
  33. ];
  34. }
  35. $money = $order['pay_money'];
  36. $goods_price=bcdiv($money,count($order_detail),2);
  37. $res = HappinessCashierOrderDetail::batchDataSave($order_detail, [
  38. 'cashier_order_id' => $id,
  39. 'mall_id' => $order['mall_id'],
  40. 'store_id' => $order['store_id'],
  41. 'user_id' => $order['user_id'],
  42. 'pay_money' => $goods_price
  43. ]);
  44. if (!$res) throw new Exception(HappinessCashierOrderDetail::getStaticError());
  45. $form = [];
  46. $form['id'] = $order['id'];
  47. $form['mall_id'] = $order['mall_id'];
  48. $form['store_id'] = $order['store_id'];
  49. $form['user_id'] = $order['user_id'];
  50. $form['price'] = $order['pay_money'];
  51. $form['parent_id'] = 0;
  52. $form['type'] = 2;
  53. $details=HappinessCashierOrderDetail::find()->where(['cashier_order_id' => $id])->asArray()->all();
  54. $total=array_sum(array_column($details,'goods_price'));
  55. $order['goods_price']=$total;
  56. $order['detail']=$details;
  57. (new OrderLogic)->setStoreCommission($form, $order);
  58. $model = HappinessCashierOrder::find()->where(['id' => $id])->one();
  59. $model->money = array_sum(array_column($details,'original_goods_price'));
  60. $model->save();
  61. //发送佣金
  62. (new CommissionService())->send($order,0);
  63. //养老金
  64. (new PensionService())->record($order,0);
  65. //pv值
  66. $store_order['store_id']=$order['store_id'];
  67. (new PvService)->send($order,0,$store_order);
  68. (new WeightService())->record($order,0);
  69. $t->commit();
  70. return true;
  71. } catch (Exception $e) {
  72. $this->error($e->getMessage());
  73. $t->rollBack();
  74. return false;
  75. }
  76. }
  77. public function settle($id)
  78. {
  79. try {
  80. $order = HappinessCashierOrder::findOne($id);
  81. $form = [];
  82. $form['id'] = $order['id'];
  83. $form['mall_id'] = $order['mall_id'];
  84. $form['store_id'] = $order['store_id'];
  85. $form['user_id'] = $order['user_id'];
  86. $form['price'] = $order['pay_money'];
  87. $form['parent_id'] = 0;
  88. $form['type'] = 2;
  89. (new OrderLogic)->frozeCommission($form, $order);
  90. //发送佣金
  91. (new CommissionService())->send($order,1);
  92. //养老金
  93. (new PensionService())->record($order,1);
  94. //pv值
  95. $store_order['store_id']=$order['store_id'];
  96. (new PvService)->send($order,1,$store_order);
  97. //返还提货券
  98. (new VoucherService())->returnOrderVoucherCashier($order['id']);
  99. (new WeightService())->record($order,1);
  100. return true;
  101. } catch (Exception $e) {
  102. $this->error($e->getMessage());
  103. return false;
  104. }
  105. }
  106. }