WalletLog.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Log;
  6. class WalletLog extends Model
  7. {
  8. protected $guarded = [];
  9. const STATUS_OK = 1;
  10. const STATUS_PAUSE = 0;
  11. public static $statusMaps = [
  12. self::STATUS_OK => '正常',
  13. self::STATUS_PAUSE => '暂停'
  14. ];
  15. const OPERATE_TYPE_ADD = 1;
  16. const OPERATE_TYPE_SUB = 0;
  17. public static $operateTypeMaps = [
  18. self::OPERATE_TYPE_ADD => '充值',
  19. self::OPERATE_TYPE_SUB => '消费'
  20. ];
  21. //充值(微信)
  22. const TYPE_ADD_WECHAT_TO_WALLET = 0;
  23. //骑车消费(从余额)
  24. const TYPE_SUB_WALLET_BIKE_ORDER = 1;
  25. // 后台管理员结算订单(从余额扣除)
  26. const TYPE_ADMIN_SUB_BIKE_ORDER = 2;
  27. // 后台管理员返还(增加到钱包余额)
  28. const TYPE_ADMIN_ADD_TO_WALLET = 3;
  29. //租金消费
  30. const TYPE_SUB_WALLET_RENT_ORDER = 7;
  31. //租车订单消费
  32. const TYPE_SUB_WALLET_RENT_ORDER_MONEY = 5;
  33. // 微信支付订单
  34. const TYPE_ADD_WECHAT_PAY_ORDER = 20;
  35. // 微信订单消费(直接)
  36. const TYPE_SUB_WECHAT_PAY_ORDER = 21;
  37. //微信直接支付租金
  38. const TYPE_ADD_WECHAT_PAY_RENT_ORDER = 30;
  39. //微信直接支付租金
  40. const TYPE_SUB_WECHAT_PAY_RENT_ORDER = 31;
  41. //微信直接支付租金
  42. const TYPE_ADD_WECHAT_PAY_RENT_ORDER_MONEY = 32;
  43. //微信直接支付租金
  44. const TYPE_SUB_WECHAT_PAY_RENT_ORDER_MONEY = 33;
  45. //订单返现
  46. const TYPE_ADD_WECHAT_PAY_ORDER_MONEY = 34;
  47. const TYPE_SUB_ORDER_MONEY_PAY_WECHAT = 35;
  48. // 骑行卡
  49. const TYPE_ADD_WECHAT_PAY_CARD_RIDING_ORDER = 40;
  50. const TYPE_SUB_WECHAT_PAY_CARD_RIDING_ORDER = 41;
  51. //充值赠送
  52. const TYPE_ADD_WECHAT_PREFERENTIAL_TO_WALLET = 10;
  53. //邀新赠送
  54. const TYPE_ADD_INVITE_NEW_TO_WELLET = 12;
  55. public static $typeMaps = [
  56. self::TYPE_ADD_WECHAT_TO_WALLET => '【充值】用户充值(微信)',
  57. self::TYPE_SUB_WALLET_BIKE_ORDER => '【消费】用户消费(骑车)',
  58. self::TYPE_SUB_WALLET_RENT_ORDER => '【消费】用户支付租金',
  59. self::TYPE_SUB_WALLET_RENT_ORDER_MONEY => '【消费】用户支付租车超时金额',
  60. self::TYPE_ADD_WECHAT_PAY_ORDER => '【充值】微信直接支付订单',
  61. self::TYPE_SUB_WECHAT_PAY_ORDER => '【消费】微信直接支付订单',
  62. self::TYPE_ADD_WECHAT_PAY_RENT_ORDER => '【充值】微信直接支付租金',
  63. self::TYPE_SUB_WECHAT_PAY_RENT_ORDER => '【消费】微信直接支付租金',
  64. self::TYPE_ADD_WECHAT_PAY_RENT_ORDER_MONEY => '【充值】微信直接支付租车超时金额',
  65. self::TYPE_SUB_WECHAT_PAY_RENT_ORDER_MONEY => '【消费】微信直接支付租车超时金额',
  66. self::TYPE_ADD_WECHAT_PAY_ORDER_MONEY => '【充值】订单支付金额直接返用户',
  67. self::TYPE_SUB_ORDER_MONEY_PAY_WECHAT => '【消费】订单支付金额直接返用户',
  68. self::TYPE_ADD_WECHAT_PAY_CARD_RIDING_ORDER => '【充值】微信支付购买骑行卡',
  69. self::TYPE_SUB_WECHAT_PAY_CARD_RIDING_ORDER => '【消费】微信支付购买骑行卡',
  70. self::TYPE_ADD_WECHAT_PREFERENTIAL_TO_WALLET => '【充值】用户充值赠送(微信)',
  71. self::TYPE_ADD_INVITE_NEW_TO_WELLET => '【赠送】邀请新用户赠送'
  72. ];
  73. // 用户可看到钱包记录
  74. public static $userShowTypeMaps = [
  75. self::TYPE_ADD_WECHAT_TO_WALLET,//=> '【充值】用户充值(微信)',
  76. self::TYPE_SUB_WALLET_BIKE_ORDER,//=> '【消费】用户消费(骑车)',
  77. self::TYPE_SUB_WALLET_RENT_ORDER,//=> '【消费】用户支付租金',
  78. self::TYPE_SUB_WALLET_RENT_ORDER_MONEY,//=> '【消费】用户支付租车超时金额',
  79. self::TYPE_SUB_WECHAT_PAY_ORDER,//=> '【消费】微信直接支付订单',
  80. self::TYPE_SUB_WECHAT_PAY_RENT_ORDER,//=> '【消费】微信直接支付租金',
  81. self::TYPE_SUB_WECHAT_PAY_RENT_ORDER_MONEY,// => '【消费】微信直接支付租车超时金额',
  82. self::TYPE_ADD_WECHAT_PAY_ORDER_MONEY,//=> '【充值】订单支付金额直接返用户',
  83. self::TYPE_SUB_WECHAT_PAY_CARD_RIDING_ORDER,//=> '【消费】微信支付购买骑行卡',
  84. self::TYPE_ADD_WECHAT_PREFERENTIAL_TO_WALLET,//【充值】用户充值赠送(微信)
  85. self::TYPE_ADD_INVITE_NEW_TO_WELLET,
  86. ];
  87. public static function log($operate_type, $money, $user_id, $type, $area_id, $log_id = false, $log_type = false, $ext = false, $name = false)
  88. {
  89. if (!$name) $name = self::$typeMaps[$type];
  90. if (!$operate_type) {
  91. $money = -$money;
  92. }
  93. $data = [
  94. 'area_id' => $area_id,
  95. 'money' => $money,
  96. 'operate_type' => $operate_type,
  97. 'user_id' => $user_id,
  98. 'type' => $type,
  99. 'name' => $name,
  100. 'status' => self::STATUS_OK
  101. ];
  102. if ($log_id && $log_type) {
  103. $data['log_id'] = $log_id;
  104. $data['log_type'] = $log_type;
  105. }
  106. if ($ext) {
  107. $data['data'] = $ext;
  108. }
  109. self::create($data);
  110. if ($type < 20) {
  111. User::where('id', $user_id)->increment('wallet_money', $money);
  112. if ($type === self::TYPE_ADD_WECHAT_TO_WALLET) {
  113. // 充值
  114. User::where('id', $user_id)->increment('recharge', $money);
  115. }
  116. }
  117. }
  118. }