InOutEvent.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace app\event\statistics;
  3. use app\model\DataInout;
  4. use app\model\Order;
  5. use app\model\OrderSheet;
  6. use app\model\PayDetail;
  7. use app\model\SysDept;
  8. use support\Log;
  9. class InOutEvent
  10. {
  11. /*
  12. * {"label": "标准订单收入", "value": "标准订单收入"},
  13. {"label": "餐饮订单收入", "value": "餐饮订单收入"},
  14. {"label": "购买康养城VIP套餐包收入", "value": "购买康养城VIP套餐包收入"},
  15. {"label": "购买会员合伙人收入", "value": "购买会员合伙人收入"},
  16. {"label": "购买康养推荐官收入", "value": "购买康养推荐官收入"},
  17. {"label": "购买组合包收入", "value": "购买组合包收入"},
  18. {"label": "会员充值订单收入", "value": "会员充值订单收入"},
  19. {"label": "挂账订单结算收入", "value": "挂账订单结算收入"},
  20. {"label": "购买储值卡订单收入", "value": "购买储值卡订单收入"},
  21. {"label": "佣金提现", "value": "佣金提现"},
  22. {"label": "退款", "value": "退款"}
  23. */
  24. public function dataIn($params)
  25. {
  26. try {
  27. $order = Order::where('order_id', $params['orderId'])->first();
  28. $sheets = OrderSheet::with([
  29. 'goods' => function ($query) {
  30. $query->select('goods_id', 'goods_name', 'goods_classify');
  31. }
  32. ])->where('join_sheet_order_id', $params['orderId'])
  33. ->get()
  34. ->toArray();
  35. $payDetails = PayDetail::where('join_pay_order_id', $order->order_groupby)
  36. ->where('pay_status', 'SUCCESS')
  37. ->get()
  38. ->toArray();
  39. $data = [
  40. 'dept_id' => 0,
  41. 'member_id' => $order->join_order_member_id,
  42. 'inout_classify' => 'IN',
  43. 'inout_category' => $params['inout_category'] ?? '标准订单收入',
  44. ];
  45. // 部门id
  46. if (!empty($order->order_config_json)) {
  47. $orderConfigJson = json_decode($order->order_config_json, true);
  48. if (!empty($orderConfigJson['dept'])) {
  49. $data['dept_id'] = $orderConfigJson['dept'];
  50. } elseif (!empty($orderConfigJson['premises'])) {
  51. $data['dept_id'] = SysDept::where('dept_name', $orderConfigJson['premises'])->value('dept_id');
  52. }
  53. }
  54. $inoutObjectJson = [];
  55. // 产品
  56. foreach ($sheets as $sheet) {
  57. $inoutObjectJson['goods'][] = [
  58. 'goods_id' => $sheet['goods']['goods_id'] ?? '',
  59. 'goods_name' => $sheet['goods']['goods_name'] ?? ''
  60. ];
  61. $data['inout_name'][] = $sheet['goods']['goods_name'] ?? '';
  62. if (!isset($inoutObjectJson['order'])) {
  63. $inoutObjectJson['order'][$params['orderId']] = [
  64. 'pay' => $order->order_amount_pay,
  65. 'classify' => $order->order_classify,
  66. 'discount' => $order->order_discount_json ?? json_decode($order->order_discount_json)
  67. ];
  68. }
  69. $inoutObjectJson['order'][$params['orderId']]['goods'][] = [
  70. 'goods_id' => $sheet['goods']['goods_id'] ?? '',
  71. 'goods_name' => $sheet['goods']['goods_name'] ?? '',
  72. 'order_sheet_num' => $sheet['order_sheet_amount'],
  73. 'order_sheet_pay' => $sheet['order_sheet_pay']
  74. ];
  75. $inoutObjectJson['classify'][] = $sheet['goods']['goods_classify'] ?? '';
  76. }
  77. $data['inout_object_json'] = $inoutObjectJson;
  78. $data['inout_name'] = implode(',',$data['inout_name']);
  79. foreach ($payDetails as $payDetail) {
  80. if (in_array($payDetail['pay_prepayid'],['WXPAY','ALIPAY','OFFLINE_WXPAY','OFFLINE_ALIPAY','MONEY'])){
  81. $data['inout_attr'] = 'MONEY';
  82. }else{
  83. $data['inout_attr'] = 'ACCOUNT';
  84. }
  85. $this->dataSave($data);
  86. }
  87. } catch (\Exception $e) {
  88. _syslog("统计", '收支明细统计失败', ['msg' => $e->getMessage()]);
  89. Log::error("收支明细统计失败", ['msg' => $e->getMessage()]);
  90. }
  91. }
  92. public function dataOut()
  93. {
  94. }
  95. public function dataSave($data)
  96. {
  97. DataInout::insert([
  98. 'join_data_inout_dept_id' => $data['dept_id'],
  99. 'join_data_inout_member_id' => $data['member_id'],
  100. 'join_data_inout_object_json' => $data['inout_object_json'],
  101. 'data_inout_is_valid' => 'Y',
  102. 'data_inout_valid_date' => date('Y-m-d'),
  103. 'data_inout_valid_time' => date('Y-m-d H:i:s'),
  104. 'data_inout_status' => 'VALID',
  105. 'data_inout_attr' => $data['inout_attr'],
  106. 'data_inout_classify' => $data['inout_classify'],
  107. 'data_inout_category' => $data['inout_category'],
  108. 'data_inout_name' => $data['inout_name'],
  109. 'data_inout_amount' => '',
  110. 'data_inout_count' => '',
  111. 'data_inout_json' => '',
  112. 'data_inout_pay_type' => '',
  113. 'data_inout_pay_json' => '',
  114. 'data_inout_process_json' => '',
  115. 'data_inout_occurtime' => '',
  116. 'data_inout_remark' => '',
  117. 'data_inout_extend_json' => '',
  118. 'data_inout_addtimes' => time()
  119. ]);
  120. }
  121. }