Rebate.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace app\api\model\service;
  3. use think\Model;
  4. class Rebate extends Model
  5. {
  6. // 表名
  7. protected $name = 'service_rebate';
  8. // 自动写入时间戳字段
  9. protected $autoWriteTimestamp = 'int';
  10. // 定义时间戳字段名
  11. protected $createTime = 'createtime';
  12. protected $updateTime = 'updatetime';
  13. public static function getCount($params)
  14. {
  15. return self::where($params)->count();
  16. }
  17. public static function getNum($params)
  18. {
  19. return self::where($params)->sum('num');
  20. }
  21. public static function orderRebate($order)
  22. {
  23. if(!$order){
  24. return false;
  25. }
  26. if(!$order['skill_id'] && !$order['shop_id'])
  27. {
  28. return true;
  29. }
  30. $order = Order::where('id',$order['id'])->find();
  31. $skillPrice = $order['skill_id']?self::getRebatePrice($order['skill_percent'],$order['settle_price']):0;
  32. $shopPrice = 0;
  33. $totalPrice = sprintf("%.2f",$skillPrice);
  34. if($order['shop_id'])
  35. {
  36. $shopPrice = self::getRebatePrice($order['shop_percent'],$order['settle_price']);
  37. $totalPrice = sprintf("%.2f",$shopPrice);
  38. }
  39. $platformPrice = bcsub($order['settle_price'],$totalPrice,2);
  40. Order::where('id',$order['id'])->update(['skill_price'=>$skillPrice,'shop_price'=>$shopPrice,'platform_price'=>$platformPrice]);
  41. return true;
  42. }
  43. public static function handleRebate($order)
  44. {
  45. if(!$order){
  46. return false;
  47. }
  48. $goodsName = OrderDetail::where(['order_id'=>$order['id']])->value('name');
  49. $skillUserId = Skill::where(['id'=>$order['skill_id']])->value('user_id');
  50. $shopUserId = $order['shop_id']?Shop::where(['id'=>$order['shop_id']])->value('user_id'):'';
  51. $rebateData = ['from_user_id'=>$order['user_id'],'type'=>0,'order_id'=>$order['id'],'rebatetype'=>1,'memo'=>$goodsName.'订单收益到账','state'=>1,'num'=>$order['skill_price']];
  52. if($order['shop_id'])
  53. {
  54. if($order['skill_id']){
  55. $rebateData['user_id'] = $skillUserId;
  56. UserInfo::shopMoney(+$order['skill_price'],$skillUserId,$goodsName.'门店订单收益到账',$order['id']);
  57. self::create($rebateData);
  58. if($order['act_travel_price']>0)
  59. {
  60. UserInfo::shopMoney(+$order['act_travel_price'],$skillUserId,$goodsName.'订单车费结算到账',$order['id']);
  61. $rebateData['rebatetype'] = 2;
  62. $rebateData['num'] = $order['act_travel_price'];
  63. $rebateData['memo'] = $goodsName.'订单车费结算到账';
  64. self::create($rebateData);
  65. UserInfo::shopUserMoney(+$order['act_travel_price'],$shopUserId,$goodsName.'订单车费结算到账',$order['id']);
  66. $rebateData['user_id'] = $shopUserId;
  67. $rebateData['type'] = 1;
  68. self::create($rebateData);
  69. }
  70. }
  71. $rebateData['user_id'] = $shopUserId;
  72. $rebateData['type'] = 1;
  73. $rebateData['rebatetype'] = 0;
  74. $shopPrice = $rebateData['num'] = $order['shop_price'];
  75. UserInfo::shopUserMoney(+$shopPrice,$shopUserId,$goodsName.'订单门店收益到账',$order['id']);
  76. self::create($rebateData);
  77. }else{
  78. $rebateData['rebatetype'] = 0;
  79. $rebateData['user_id'] = $skillUserId;
  80. UserInfo::money(+$order['skill_price'],$skillUserId,$goodsName.'平台订单收益到账',$order['id']);
  81. self::create($rebateData);
  82. if($order['act_travel_price']>0)
  83. {
  84. UserInfo::money(+$order['act_travel_price'],$skillUserId,$goodsName.'订单车费结算到账',$order['id']);
  85. $rebateData['rebatetype'] = 2;
  86. $rebateData['num'] = $order['act_travel_price'];
  87. $rebateData['memo'] = $goodsName.'订单车费结算到账';
  88. self::create($rebateData);
  89. }
  90. }
  91. return true;
  92. }
  93. public static function getRebatePrice($percent,$settlePrice)
  94. {
  95. return bcmul(($percent*$settlePrice),0.01,2);
  96. }
  97. }