JuliangAccountController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace Modules\Video\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Illuminate\Foundation\Validation\ValidatesRequests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\Common\Errors\Errors;
  8. use Modules\Common\Exceptions\CommonBusinessException;
  9. use Modules\User\Http\Controllers\UserTrait;
  10. class JuliangAccountController extends CatchController
  11. {
  12. use UserTrait;
  13. use ValidatesRequests;
  14. public function list(Request $request) {
  15. $advAccountId = $request->input('account_id');
  16. $advAccountName = $request->input('account_name');
  17. return DB::table('juliang_account_callback_config')
  18. ->where(['company_uid' => $this->getCompanyUid()])
  19. ->when($advAccountId, function ($query, $advAccountId) {
  20. return $query->where('adv_account_id' , $advAccountId);
  21. })->when($advAccountName, function ($query, $advAccountName) {
  22. return $query->where('adv_account_name', 'like', '%'. $advAccountName. '%');
  23. })
  24. ->paginate($request->input('limit', 30));
  25. }
  26. public function addAccount(Request $request) {
  27. $this->validate($request, [
  28. 'account_id' => 'required|string|max:64',
  29. 'account_name' => 'required|string|max:64',
  30. 'callback_state' => 'required|integer|in:0,1',
  31. 'protect_num' => 'required|integer|min:0',
  32. 'callback_default_rate' => 'required|min:0|max:100',
  33. 'callback_rate_time_config' => 'nullable|array',
  34. 'callback_min_money' => 'required|min:0',
  35. 'callback_max_money' => 'required|min:0'
  36. ]);
  37. if(DB::table('juliang_account_callback_config')
  38. ->where(['company_uid' => $this->getCompanyUid(), 'adv_account_id' => $request->input('account_id')])
  39. ->exists()) {
  40. CommonBusinessException::throwError(Errors::JULIANG_ACCOUNT_EXISTS);
  41. }
  42. $now = date('Y-m-d H:i:s');
  43. DB::table('juliang_account_callback_config')
  44. ->insert([
  45. 'adv_account_id' => $request->input('acccount_id'),
  46. 'adv_account_name' => $request->input('account_name'),
  47. 'callback_state' => $request->input('callback_state'),
  48. 'protect_num' => $request->input('protect_num'),
  49. 'callback_default_rate' => $request->input('callback_default_rate'),
  50. 'callback_rate_time_config' => \json_encode($request->input('callback_rate_time_config', '[]')),
  51. 'callback_min_money' => $request->input('callback_min_money'),
  52. 'callback_max_money' => $request->input('callback_max_money'),
  53. 'company_uid' => $this->getCompanyUid(),
  54. 'created_at' => $now,
  55. 'updated_at' => $now,
  56. ]);
  57. return 'ok';
  58. }
  59. public function updateCallbackConfig(Request $request) {
  60. $this->validate($request, [
  61. 'ids' => 'required|array',
  62. 'callback_state' => 'required|integer|in:0,1',
  63. 'protect_num' => 'required|integer|min:0',
  64. 'callback_default_rate' => 'required|min:0|max:100',
  65. 'callback_rate_time_config' => 'nullable|array',
  66. 'callback_min_money' => 'required|min:0',
  67. 'callback_max_money' => 'required|min:0'
  68. ]);
  69. $now = date('Y-m-d H:i:s');
  70. foreach ($request->input('ids') as $id) {
  71. DB::table('juliang_account_callback_config')
  72. ->where(['id' => $id, 'company_uid' => $this->getCompanyUid()])
  73. ->update([
  74. 'callback_state' => $request->input('callback_state'),
  75. 'protect_num' => $request->input('protect_num'),
  76. 'callback_default_rate' => $request->input('callback_default_rate'),
  77. 'callback_rate_time_config' => \json_encode($request->input('callback_rate_time_config', '[]')),
  78. 'callback_min_money' => $request->input('callback_min_money'),
  79. 'callback_max_money' => $request->input('callback_max_money'),
  80. 'updated_at' => $now,
  81. ]);
  82. }
  83. $advAccountIds = DB::table('juliang_account_callback_config')
  84. ->whereIn('id', $request->input('ids'))
  85. ->where('company_uid', $this->getCompanyUid())
  86. ->select('adv_account_id')->get()->pluck('adv_account_id');
  87. if($advAccountIds->isNotEmpty()) {
  88. DB::table('juliang_account_recharge_report_records')
  89. ->whereIn('account_id', $advAccountIds)
  90. ->update(['is_eanbled' => 0, 'updated_at' => $now]);
  91. }
  92. return 'ok';
  93. }
  94. }