PaymentChannel.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\common\model\CreditCardConfigModel;
  5. use app\common\model\PaymentChannelModel;
  6. use think\App;
  7. use think\facade\View;
  8. use think\Request;
  9. class PaymentChannel extends BaseController
  10. {
  11. private $model;
  12. private $creditCardConfigModel;
  13. public function __construct(App $app)
  14. {
  15. $this->model = new PaymentChannelModel();
  16. $this->creditCardConfigModel = new CreditCardConfigModel();
  17. parent::__construct($app);
  18. }
  19. public function index() {
  20. $list = $this->model->findAll();
  21. foreach ($list as &$item) $item['type_str'] = [lang("Default"), lang("Zue Coin Setting"), lang("Credit Card Setting")][$item['type'] - 1];
  22. View::assign("list", $list);
  23. return view();
  24. }
  25. public function add() {
  26. if ($this->request->isAjax()) {
  27. $params = $this->request->param();
  28. if(!isset($params['type']))
  29. return $this->fail(lang('type is err'));
  30. $channel = $this->model->findByName($params['name'] ?? '');
  31. if ($channel)
  32. return $this->fail(lang('Data duplication'));
  33. $save_channel = [
  34. 'name' => $params['name'],
  35. 'icon' => $params['icon'],
  36. 'type' => $params['type'],
  37. 'is_upload_code' => $params['is_upload_code'],
  38. 'create_time' => time(),
  39. 'update_time' => time()
  40. ];
  41. $save_channel_credit_config = [];
  42. if ($params['type'] == '2') {
  43. $save_channel['zue_coin_exchange_rate'] = $params['zue_coin_exchange_rate'];
  44. $save_channel['zue_coin_consume_rate'] = $params['zue_coin_consume_rate'];
  45. }
  46. $last_id = $this->model->insert($save_channel,true);
  47. if($params['type'] == '3') {
  48. if (!isset($params['bank']) || !is_array($params['bank']))
  49. return $this->fail(lang('Parameter invalid'));
  50. for ($i = 0; $i < count($params['bank']); $i++) {
  51. array_push($save_channel_credit_config, [
  52. 'channel_id' => $last_id,
  53. 'is_stage' => (int)isset($params['is_stage'][$i]),
  54. 'bank' => $params['bank'][$i],
  55. 'stage_6' => json_encode([(int)isset($params['stage_6_switch'][$i]), $params['stage_6_fee_rate'][$i] ?? 0]),
  56. 'stage_9' => json_encode([(int)isset($params['stage_9_switch'][$i]), $params['stage_9_fee_rate'][$i] ?? 0]),
  57. 'stage_12' => json_encode([(int)isset($params['stage_12_switch'][$i]), $params['stage_12_fee_rate'][$i] ?? 0]),
  58. 'stage_24' => json_encode([(int)isset($params['stage_24_switch'][$i]), $params['stage_24_fee_rate'][$i] ?? 0]),
  59. 'stage_36' => json_encode([(int)isset($params['stage_36_switch'][$i]), $params['stage_36_fee_rate'][$i] ?? 0]),
  60. ]);
  61. }
  62. }
  63. if (count($save_channel_credit_config) > 0)
  64. $this->creditCardConfigModel->saveAll($save_channel_credit_config);
  65. return $this->ok(true);
  66. }
  67. return view();
  68. }
  69. public function delete(Request $request) {
  70. $params = $request->param();
  71. if(!isset($params['ids']))
  72. return $this->fail(lang("Please select the data you want to delete"));
  73. $this->model->deleteByIds(explode(',',$params['ids']));
  74. return $this->ok(true);
  75. }
  76. public function edit() {
  77. $params = $this->request->param();
  78. if(!isset($params['id']))
  79. return $this->fail(lang('ID not exist'));
  80. $channel = $this->model->findById($params['id']);
  81. if (!$channel)
  82. return $this->fail( lang('Data not exist'));
  83. if($this->request->isAjax()) {
  84. $judge = $this->model->findByName($params['name']);
  85. if ($judge && $judge->id != $channel->id)
  86. return $this->fail(lang("Data duplication"));
  87. $update_channel = [
  88. 'name' => $params['name'],
  89. 'icon' => $params['icon'],
  90. 'type' => $params['type'],
  91. 'is_upload_code' => $params['is_upload_code'],
  92. 'update_time' => time()
  93. ];
  94. $save_channel_credit_config = [];
  95. $update_channel_credit_config = [];
  96. if ($params['type'] == '2') {
  97. $update_channel['zue_coin_exchange_rate'] = $params['zue_coin_exchange_rate'];
  98. $update_channel['zue_coin_consume_rate'] = $params['zue_coin_consume_rate'];
  99. }
  100. $this->model->where('id', $params['id'])->update($update_channel);
  101. if($params['type'] == '3') {
  102. if (isset($params['bank']) && is_array($params['bank'])) {
  103. for ($i = 0; $i < count($params['bank']); $i++) {
  104. if(isset($params['config_id'][$i]) && $params['config_id'][$i] > 0) {
  105. array_push($update_channel_credit_config, [
  106. 'id' => $params['config_id'][$i],
  107. 'is_stage' => (int)isset($params['is_stage'][$i]),
  108. 'bank' => $params['bank'][$i],
  109. 'stage_6' => json_encode([(int)isset($params['stage_6_switch'][$i]), $params['stage_6_fee_rate'][$i] ?? 0]),
  110. 'stage_9' => json_encode([(int)isset($params['stage_9_switch'][$i]), $params['stage_9_fee_rate'][$i] ?? 0]),
  111. 'stage_12' => json_encode([(int)isset($params['stage_12_switch'][$i]), $params['stage_12_fee_rate'][$i] ?? 0]),
  112. 'stage_24' => json_encode([(int)isset($params['stage_24_switch'][$i]), $params['stage_24_fee_rate'][$i] ?? 0]),
  113. 'stage_36' => json_encode([(int)isset($params['stage_36_switch'][$i]), $params['stage_36_fee_rate'][$i] ?? 0]),
  114. ]);
  115. } else {
  116. array_push($save_channel_credit_config, [
  117. 'channel_id' => $channel->id,
  118. 'is_stage' => (int)isset($params['is_stage'][$i]),
  119. 'bank' => $params['bank'][$i],
  120. 'stage_6' => json_encode([(int)isset($params['stage_6_switch'][$i]), $params['stage_6_fee_rate'][$i] ?? 0]),
  121. 'stage_9' => json_encode([(int)isset($params['stage_9_switch'][$i]), $params['stage_9_fee_rate'][$i] ?? 0]),
  122. 'stage_12' => json_encode([(int)isset($params['stage_12_switch'][$i]), $params['stage_12_fee_rate'][$i] ?? 0]),
  123. 'stage_24' => json_encode([(int)isset($params['stage_24_switch'][$i]), $params['stage_24_fee_rate'][$i] ?? 0]),
  124. 'stage_36' => json_encode([(int)isset($params['stage_36_switch'][$i]), $params['stage_36_fee_rate'][$i] ?? 0]),
  125. ]);
  126. }
  127. }
  128. }
  129. }
  130. $res = $this->model->where('id',$params['id'])->update($update_channel);
  131. if (count($save_channel_credit_config) > 0) {
  132. $this->creditCardConfigModel->saveAll($save_channel_credit_config);
  133. }
  134. if (count($update_channel_credit_config) > 0) {
  135. foreach ($update_channel_credit_config as $item) $this->creditCardConfigModel->where('id', $item['id'])->update($item);
  136. }
  137. return $this->ok($res);
  138. }
  139. View::assign('channel', $channel);
  140. return view();
  141. }
  142. public function delete_config(Request $request) {
  143. $params = $request->param();
  144. if(!isset($params['ids']))
  145. return $this->fail(lang("Please select the data you want to delete"));
  146. $this->creditCardConfigModel->deleteByIds(explode(',',$params['ids']));
  147. return $this->ok(true);
  148. }
  149. /**
  150. * @return \think\response\Json
  151. */
  152. public function upload() {
  153. // 获取表单上传文件 例如上传了001.jpg
  154. $file = request()->file('file');
  155. // 上传到本地服务器
  156. $save_name = \think\facade\Filesystem::disk('public')->putFile( 'icon', $file);
  157. return $this->ok(str_replace('\\',"/",'/storage/'.$save_name));
  158. }
  159. }