JLEventController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace Modules\Callback\Http\Controllers\JLEvent;
  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\Callback\Models\JLEventCallbackConfigModel;
  8. use Modules\Callback\Services\CallbackConst;
  9. use Modules\Callback\Services\JLEventService;
  10. use Modules\Common\Errors\Errors;
  11. use Modules\Common\Exceptions\CommonBusinessException;
  12. /**
  13. * 巨量2.0事件-微信小程序
  14. */
  15. class JLEventController extends CatchController
  16. {
  17. use ValidatesRequests;
  18. /**
  19. * 回传配置列表
  20. * @param Request $request
  21. */
  22. public function list(Request $request) {
  23. $id = $request->input('id');
  24. $name = $request->input('name');
  25. $promotionId = $request->input('promotion_id');
  26. $unbind = $request->input('unbind', 0);
  27. $result = DB::table('jl_event_callback_config as config')
  28. ->leftJoin('promotions', function($join){
  29. $join->on('promotions.callback_config_id', '=', 'config.id')
  30. ->where('promotions.callback_type' , CallbackConst::TYPE_JL_EVENT_20);
  31. })
  32. ->where([
  33. 'user_id' => $this->getLoginUserId(),
  34. ])->when($id, function ($query, $id){
  35. return $query->where('config.id', $id);
  36. })->when($name, function ($query, $name){
  37. return $query->where('config.name', 'like', '%' .$name. '%');
  38. })->when($promotionId, function ($query, $promotionId){
  39. return $query->where('promotions.id', $promotionId)
  40. ->where('promotions.callback_type' , CallbackConst::TYPE_JL_EVENT_20);
  41. })->when(1 == $unbind, function ($query){
  42. return $query->whereNull('promotions.id');
  43. })
  44. ->select('config.id', 'config.name', 'config.charge_type', 'config.updated_at',
  45. 'promotions.name as promotion_name', 'promotions.id as promotion_id',
  46. 'config.charge_money_map', 'config.is_roi')
  47. ->orderBy('id', 'desc')
  48. ->paginate($request->input('limit', 15));
  49. foreach ($result as $item){
  50. $item->charge_type_str = CallbackConst::CHARGE_TYPE_MAP[$item->charge_type] ?? '-';
  51. $item->charge_money_map = \json_decode($item->charge_money_map) ?? [];
  52. }
  53. return $result;
  54. }
  55. /**
  56. * 新增回传配置
  57. * @param Request $request
  58. */
  59. public function add(Request $request) {
  60. $this->validate($request, [
  61. 'name' => 'required|string|max:64',
  62. // roi 全量上报:1-全量上报,2-不全量上报
  63. 'is_roi' => 'required|integer|in:1,2',
  64. // 充值行为:1-首充,2-所有充值
  65. 'charge_type' => 'required_if:is_roi,2|integer|in:1,2',
  66. // 金额项
  67. 'charge_money_map' => 'required_if:is_roi,2|array',
  68. 'charge_money_map.*.min_money' => 'integer|min:0',
  69. ]);
  70. if(2 == $request->input('is_roi') &&
  71. (!JLEventService::judgeChargeMoneyOk($request->input('charge_money_map')))) {
  72. CommonBusinessException::throwError(Errors::CALLBACK_CHARGE_MONEY_MAP_ERROR);
  73. }
  74. $userId = $this->getLoginUserId();
  75. $model = JLEventCallbackConfigModel::create(array_merge($request->only('name', 'is_roi', 'charge_type'), [
  76. 'charge_money_map' => \json_encode($request->input('charge_money_map')),
  77. 'user_id' => $userId,
  78. ]));
  79. JLEventService::saveRateConfigLog($userId, $model->id, $request->input('charge_money_map', []));
  80. return 'ok';
  81. }
  82. /**
  83. * 更新回传配置
  84. * @param Request $request
  85. */
  86. public function update(Request $request) {
  87. $this->validate($request, [
  88. 'ids' => 'required|array',
  89. 'ids.*' => 'integer',
  90. // roi 全量上报:1-全量上报,2-不全量上报
  91. 'is_roi' => 'required|integer|in:1,2',
  92. // 充值行为:1-首充,2-所有充值
  93. 'charge_type' => 'required_if:is_roi,2|integer|in:1,2',
  94. // 金额项
  95. 'charge_money_map' => 'required_if:is_roi,2|array',
  96. 'charge_money_map.*.min_money' => 'integer|min:0',
  97. ]);
  98. if(1 == count($request->input('ids'))) {
  99. $updateData = $request->only('is_roi', 'charge_type', 'name');
  100. } else {
  101. $updateData = $request->only('is_roi', 'charge_type');
  102. }
  103. $now = date('Y-m-d H:i:s');
  104. $userId = $this->getLoginUserId();
  105. $configIds = DB::table('jl_event_callback_config')
  106. ->whereIn('id', $request->input('ids'))
  107. ->where('user_id', $userId)
  108. ->select('id')->get()->pluck('id');
  109. DB::table('jl_event_callback_config')
  110. ->whereIn('id', $configIds)
  111. ->update(array_merge($updateData, [
  112. 'charge_money_map' => \json_encode($request->input('charge_money_map', [])),
  113. 'updated_at' => $now,
  114. ]));
  115. foreach ($configIds as $configId) {
  116. JLEventService::saveRateConfigLog($userId, $configId, $request->input('charge_money_map', []));
  117. }
  118. return 'ok';
  119. }
  120. }