MerchantFlowingWater.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\wap\model\merchant;
  12. use traits\ModelTrait;
  13. use basic\ModelBasic;
  14. use app\wap\model\merchant\MerchantBill;
  15. /**
  16. * Class MerchantFlowingWater
  17. * @package app\admin\model\merchant
  18. */
  19. class MerchantFlowingWater extends ModelBasic
  20. {
  21. use ModelTrait;
  22. /**
  23. * @param $order
  24. * @param int $type
  25. */
  26. public static function setMerchantFlowingWater($order, $type = 0)
  27. {
  28. if ($order['mer_id'] <= 0) return true;
  29. $mer_id = $order['mer_id'];//讲师ID
  30. $mer_divide = Merchant::where('id', $mer_id)->field('now_money,mer_special_divide,mer_store_divide,mer_event_divide,mer_data_divide,mer_test_divide')->find();//讲师分成
  31. switch ($type) {
  32. case 0://课程订单
  33. $divide = bcdiv($mer_divide['mer_special_divide'], 100, 2);//百分比
  34. if ($divide <= 0) return true;
  35. $data['total_price'] = $order['total_price'];
  36. $data['pay_price'] = $order['pay_price'];
  37. $data['price'] = bcmul($data['total_price'], $divide, 2);
  38. $title = '购买课程';
  39. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  40. break;
  41. case 2://商品订单
  42. $divide = bcdiv($mer_divide['mer_store_divide'], 100, 2);//百分比
  43. if ($divide <= 0) return true;
  44. $data['total_price'] = $order['total_price'];
  45. $data['pay_price'] = $order['pay_price'];
  46. $price = bcmul($data['total_price'], $divide, 2);
  47. $data['price'] = bcadd($price, $order['total_postage'], 2);
  48. $title = '购买商品';
  49. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  50. break;
  51. case 3://资料订单
  52. $divide = bcdiv($mer_divide['mer_data_divide'], 100, 2);//百分比
  53. if ($divide <= 0) return true;
  54. $data['total_price'] = $order['total_price'];
  55. $data['pay_price'] = $order['pay_price'];
  56. $data['price'] = bcmul($data['total_price'], $divide, 2);
  57. $title = '购买资料';
  58. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  59. break;
  60. case 4://报名订单
  61. $divide = bcdiv($mer_divide['mer_event_divide'], 100, 2);//百分比
  62. if ($divide <= 0) return true;
  63. $data['total_price'] = $order['pay_price'];
  64. $data['pay_price'] = $order['pay_price'];
  65. $data['price'] = bcmul($data['total_price'], $divide, 2);
  66. $title = '活动报名';
  67. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  68. break;
  69. case 5://试卷订单
  70. $divide = bcdiv($mer_divide['mer_test_divide'], 100, 2);//百分比
  71. if ($divide <= 0) return true;
  72. $data['total_price'] = $order['total_price'];
  73. $data['pay_price'] = $order['pay_price'];
  74. $data['price'] = bcmul($data['total_price'], $divide, 2);
  75. $title = '购买试卷';
  76. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  77. break;
  78. case 6://学习计划订单
  79. $divide = bcdiv($mer_divide['mer_test_divide'], 100, 2);//百分比
  80. if ($divide <= 0) return true;
  81. $data['total_price'] = $order['total_price'];
  82. $data['pay_price'] = $order['pay_price'];
  83. $data['price'] = bcmul($data['total_price'], $divide, 2);
  84. $title = '购买学习计划';
  85. $mark = $title . '支付' . floatval($data['pay_price']) . '元';
  86. break;
  87. }
  88. Merchant::beginTrans();
  89. $data['oid'] = $order['id'];
  90. $data['mer_id'] = $mer_id;
  91. $data['type'] = $type;
  92. $data['status'] = 1;
  93. $data['add_time'] = time();
  94. $price = $data['price'];
  95. $res = self::set($data);
  96. $res1 = Merchant::setMerchantNowMoney($mer_id, $price);
  97. if ($res && $res1) {
  98. MerchantBill::income($title, $order['id'], $mer_id, 'now_money', 'user_pay', $price, bcadd($mer_divide['now_money'], $price, 2), $mark);
  99. Merchant::commitTrans();
  100. return true;
  101. } else {
  102. Merchant::rollbackTrans();
  103. return false;
  104. }
  105. }
  106. /**收益统计
  107. * @param int $mer_id
  108. * @return mixed
  109. */
  110. public static function get_merchant_data($mer_id = 0)
  111. {
  112. $now_day = strtotime(date('Y-m-d'));//今日
  113. $profit = MerchantBill::where(['mer_id' => $mer_id, 'pm' => 1, 'category' => 'now_money'])->where('type', 'in', ['gold_extract', 'user_pay'])->sum('number');
  114. $return = MerchantBill::where(['mer_id' => $mer_id, 'pm' => 0, 'category' => 'now_money'])->where('type', 'in', ['user_refund'])->sum('number');
  115. $data['total'] = bcsub($profit, $return, 2);
  116. $today_profit = MerchantBill::where(['mer_id' => $mer_id, 'pm' => 1, 'category' => 'now_money'])->where('add_time', 'gt', $now_day)->where('type', 'in', ['gold_extract', 'user_pay'])->sum('number');
  117. $today_return = MerchantBill::where(['mer_id' => $mer_id, 'pm' => 0, 'category' => 'now_money'])->where('add_time', 'gt', $now_day)->where('type', 'in', ['user_refund'])->sum('number');
  118. $data['today'] = bcsub($today_profit, $today_return, 2);
  119. return $data;
  120. }
  121. }