UserYjrecord.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace App\DataApiNew\Models;
  3. use Dcat\Admin\Admin;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Dcat\Admin\Traits\HasDateTimeFormatter;
  7. use Illuminate\Support\Facades\DB;
  8. use Illuminate\Support\Facades\Log;
  9. use Illuminate\Support\Facades\Validator;
  10. // 佣金记录表
  11. class UserYjrecord extends Model
  12. {
  13. use SoftDeletes, HasDateTimeFormatter;
  14. protected $table = 'user_yjrecord';
  15. protected $dateFormat = 'Y-m-d H:i:s';
  16. // 表字段
  17. protected $fillable = [
  18. 'id',
  19. 'user_id', // 用户id
  20. 'order_no', // 订单号
  21. 'balance',
  22. 'source', // 来源
  23. 'type',// 类型
  24. 'status', // 状态 0余额增加,1余额减少
  25. 'created_at', // 创建时间
  26. 'updated_at', // 更新时间
  27. 'deleted_at', // 删除时间
  28. 'yu_yj', // 剩余佣金
  29. 'remark', // 备注
  30. 'order_yj',
  31. // 'royalty_yj',
  32. ];
  33. // 查询字段
  34. public static $selectFields = [
  35. 'id',
  36. 'user_id', // 用户id
  37. 'order_no', // 订单号
  38. 'balance',
  39. 'source', // 来源
  40. 'type',// 类型
  41. 'status', // 状态 0余额增加,1余额减少
  42. 'created_at', // 创建时间
  43. 'updated_at', // 更新时间
  44. // 'deleted_at', // 删除时间
  45. 'yu_yj', // 剩余佣金
  46. 'remark', // 备注
  47. 'order_yj',
  48. // 'royalty_yj',
  49. ];
  50. // 类型
  51. const TYPE_DIRECT = 1; //直营收入
  52. const TYPE_DISTRIBUTION = 2; //分销收入
  53. const TYPE_ROYALTY = 3; //提成
  54. const TYPE_ACTIBVE = 4; //活动
  55. const TYPE_WITHDRAW = 5; //提现
  56. public static $type = [
  57. self::TYPE_DIRECT => '直营收入',
  58. self::TYPE_DISTRIBUTION => '分销收入',
  59. self::TYPE_ROYALTY => '提成',
  60. self::TYPE_ACTIBVE => '活动',
  61. self::TYPE_WITHDRAW => '提现',
  62. ];
  63. // 状态
  64. const STATUS_ADD = 0; //余额增加
  65. const STATUS_SUB = 1; //余额减少
  66. public static $status = [
  67. self::STATUS_ADD => '余额增加',
  68. self::STATUS_SUB => '余额减少',
  69. ];
  70. /**
  71. * 添加记录并修改用户余额
  72. *
  73. * @param array $data 用户相关数据
  74. * - user_id 用户ID
  75. * - yj 金额 (总金额,如:订单佣金 + 提成佣金)
  76. * - status 状态:0 表示余额增加,1 表示余额减少
  77. * - source 来源,例如:订单、提现等
  78. * - order_no 订单号
  79. * - remark 备注信息
  80. * - order_yj 订单佣金
  81. *
  82. * @return array 返回状态、提示信息和相关数据
  83. * - $status bool 操作是否成功
  84. * - $msg string 提示信息
  85. * - $data array 相关数据(例如操作后的余额等)
  86. */
  87. public function recharge($data)
  88. {
  89. $validator = Validator::make($data, [
  90. 'user_id' => 'required', // 用户id
  91. 'yj' => 'required|numeric', // 佣金金额
  92. 'status' => 'required|in:0,1', // 状态 0余额增加,1余额减少
  93. 'type' => 'required|in:'.implode(',',array_keys(self::$type)),
  94. ]);
  95. if ($validator->fails()) {
  96. return [false, $validator->errors()->first(), []];
  97. }
  98. DB::beginTransaction();
  99. try {
  100. $source = $data['source'] ?? null;
  101. $type = $data['type'];
  102. $order_no = $data['order_no'] ?? null;
  103. $remark = $data['remark'] ?? null;
  104. $status = $data['status'];
  105. $user_id = $data['user_id'];
  106. $yj = (string)$data['yj'];
  107. $order_yj = $data['order_yj'] ?? 0;
  108. $userInfo = AdminUsers::find($user_id);
  109. if (empty($userInfo)) {
  110. return [false, "用户不存在", []];
  111. }
  112. $user_yj = (string)$userInfo->yj;
  113. $al_yj = (string)$userInfo->al_yj;
  114. if ($status == 0) {
  115. $yu_yj = bcadd($user_yj, $yj, 2);
  116. $al_yj = bcadd($al_yj, $yj, 2);
  117. $userInfo->update([
  118. 'yj' => $yu_yj,
  119. 'al_yj' => $al_yj,
  120. ]);
  121. } elseif ($status == 1) {
  122. $yu_yj = bcsub($user_yj, $yj, 2);
  123. if ($yu_yj < 0) {
  124. return [false, "余额不足", []];
  125. }
  126. $userInfo->update([
  127. 'yj' => $yu_yj,
  128. ]);
  129. } else {
  130. return [false, "修改余额失败", []];
  131. }
  132. self::create([
  133. 'user_id' => $user_id,
  134. 'order_no' => $order_no,
  135. 'balance' => $yj,
  136. 'source' => $source,
  137. 'type' => $type,
  138. 'status' => $status,
  139. 'yu_yj' => $yu_yj,
  140. 'remark' => $remark,
  141. 'order_yj' => $order_yj,
  142. ]);
  143. DB::commit();
  144. return [true, "success", []];
  145. } catch (\Exception $e) {
  146. DB::rollBack();
  147. Log::error($e);
  148. return [false, "修改余额失败", []];
  149. }
  150. }
  151. }