PremiumPlatformPackageController.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. namespace App\Http\Controllers\Admin\Premium;
  3. use Illuminate\Http\Request;
  4. use App\Services\AipHttpClient;
  5. use App\Http\Controllers\Controller;
  6. use Illuminate\Support\Facades\DB;
  7. use App\Models\Premium\PremiumPlatform;
  8. use App\Models\Telegram\TelegramBot;
  9. use App\Models\Premium\PremiumPlatformPackage;
  10. use App\Http\Controllers\Admin\Setting\ConfigController;
  11. class PremiumPlatformPackageController extends Controller
  12. {
  13. public $PlatformName = ['1' => '自己搭建'];
  14. public $Status = ['开启','关闭'];
  15. public $PackageMonth = ['3' => '3个月','6' => '6个月','12' => '12个月'];
  16. public function index(Request $request)
  17. {
  18. $PlatformName = PremiumPlatform::pluck('rid','rid');
  19. $Status = $this->Status;
  20. $PackageMonth = $this->PackageMonth;
  21. $botData = TelegramBot::pluck('bot_username','rid');
  22. return view('admin.premium.package.index',compact("PlatformName","Status","PackageMonth","botData"));
  23. }
  24. //列表
  25. public function getData(Request $request)
  26. {
  27. $model = PremiumPlatformPackage::from('premium_platform_package as a')
  28. ->leftJoin('telegram_bot as b','a.bot_rid','b.rid')
  29. ->where(function($query) use ($request){
  30. if ($request->package_name != '') {
  31. $query->where('a.package_name', 'like' ,"%" . $request->package_name ."%");
  32. }
  33. if ($request->bot_rid != '') {
  34. $query->where('a.bot_rid', $request->bot_rid);
  35. }
  36. });
  37. $count = $model->count();
  38. $limit = $request->limit ?? 15;
  39. $offset = $request->page ? ($request->page - 1) * $limit : 0;
  40. $data = $model->limit($limit)->offset($offset)->select('a.*','b.bot_token','b.bot_firstname','b.bot_username')->orderBy('a.rid','desc')->get();
  41. $PackageMonth = $this->PackageMonth;
  42. $data = $data->map(function($query) use ($PackageMonth){
  43. $query->package_month_val = $PackageMonth[$query->package_month];
  44. return $query;
  45. });
  46. return ['code' => '0', 'data' => $data, 'count' => $count];
  47. }
  48. //添加
  49. public function add(Request $request)
  50. {
  51. if(empty($request->usdt_price) || $request->usdt_price <= 0){
  52. return $this->responseData(400, 'usdt售价不能小于0');
  53. }
  54. if(empty($request->package_name)){
  55. return $this->responseData(400, '套餐名称不能为空');
  56. }
  57. $data = PremiumPlatform::where('rid',$request->premium_platform_rid)->first();
  58. if(empty($data)){
  59. return $this->responseData(400, '会员平台不存在');
  60. }
  61. $res = PremiumPlatformPackage::create([
  62. 'bot_rid' => $data->bot_rid,
  63. 'premium_platform_rid' => $request->premium_platform_rid,
  64. 'package_name' => $request->package_name,
  65. 'package_month' => $request->package_month,
  66. 'usdt_price' => $request->usdt_price ?? 0.1,
  67. 'seq_sn' => $request->seq_sn ?? 0,
  68. 'callback_data' => 'premium_'.md5(nowDate()),
  69. 'show_notes' => $request->show_notes ?? '',
  70. 'create_time' => nowDate()
  71. ]);
  72. return $res ? $this->responseData(200, '添加成功') : $this->responseData(400, '添加失败');
  73. }
  74. //删除
  75. public function delete(Request $request)
  76. {
  77. $res = PremiumPlatformPackage::where('rid', $request->rid)->delete();
  78. return $res ? $this->responseData(200, '删除成功') : $this->responseData(400, '删除失败');
  79. }
  80. //编辑
  81. public function update(Request $request, ConfigController $upload)
  82. {
  83. if(empty($request->usdt_price) || $request->usdt_price <= 0){
  84. return $this->responseData(400, 'usdt售价不能小于0');
  85. }
  86. if(empty($request->package_name)){
  87. return $this->responseData(400, '套餐名称不能为空');
  88. }
  89. $data = PremiumPlatform::where('rid',$request->premium_platform_rid)->first();
  90. if(empty($data)){
  91. return $this->responseData(400, '会员平台不存在');
  92. }
  93. $packageData = PremiumPlatformPackage::where('rid', $request->rid)->first();
  94. if(empty($packageData)){
  95. return $this->responseData(400, '数据不存在');
  96. }
  97. if(!empty($request->file('thumb'))){
  98. $filedata = $upload->uploadfile($request->file('thumb'), 'news');
  99. $fileurl = $filedata['data']['url'];
  100. }else{
  101. $fileurl = $packageData->reply_photo;
  102. }
  103. DB::beginTransaction();
  104. try {
  105. $packageData->bot_rid = $data->bot_rid;
  106. $packageData->premium_platform_rid = $request->premium_platform_rid;
  107. $packageData->package_name = $request->package_name;
  108. $packageData->package_month = $request->package_month;
  109. $packageData->usdt_price = $request->usdt_price ?? 0.1;
  110. $packageData->seq_sn = $request->seq_sn ?? 0;
  111. $packageData->show_notes = $request->show_notes ?? '';
  112. $packageData->package_pic = $fileurl;
  113. $packageData->update_time = nowDate();
  114. $packageData->save();
  115. DB::commit();
  116. return $this->responseData(200, '更新成功');
  117. } catch (\Exception $e) {
  118. DB::rollBack();
  119. return $this->responseData(400, '更新失败'.$e->getMessage());
  120. }
  121. }
  122. //编辑状态
  123. public function change_status(Request $request)
  124. {
  125. DB::beginTransaction();
  126. try {
  127. $data = PremiumPlatformPackage::where('rid', $request->rid)->first();
  128. $data->status = $request->status == 1 ? 0 : 1;
  129. $data->save();
  130. DB::commit();
  131. return $this->responseData(200, '更新成功');
  132. } catch (\Exception $e) {
  133. DB::rollBack();
  134. return $this->responseData(400, '更新失败'.$e->getMessage());
  135. }
  136. }
  137. // 编辑页面查看
  138. public function show(Request $request)
  139. {
  140. $PlatformName = PremiumPlatform::pluck('rid','rid');
  141. $Status = $this->Status;
  142. $PackageMonth = $this->PackageMonth;
  143. $data = PremiumPlatformPackage::from('premium_platform_package as a')
  144. ->leftJoin('telegram_bot as b','a.bot_rid','b.rid')
  145. ->where('a.rid',$request->rid)
  146. ->select('a.*','b.bot_token','b.bot_firstname','b.bot_username')
  147. ->first();
  148. return view('admin.premium.package.edit',compact("PlatformName","Status","PackageMonth","data"));
  149. }
  150. //复制
  151. public function copyPaste(Request $request)
  152. {
  153. if(empty($request->copy_premium_platform_rid) || empty($request->paste_premium_platform_rid)){
  154. return $this->responseData(400, '覆盖和来源会员平台必填');
  155. }
  156. if($request->copy_premium_platform_rid == $request->paste_premium_platform_rid){
  157. return $this->responseData(400, '覆盖和来源会员平台不能一致');
  158. }
  159. $copyData = PremiumPlatform::where('rid', $request->copy_premium_platform_rid)->first();
  160. if(empty($copyData)){
  161. return $this->responseData(400, '来源会员平台不存在');
  162. }
  163. $pasteData = PremiumPlatform::where('rid', $request->paste_premium_platform_rid)->first();
  164. if(empty($pasteData)){
  165. return $this->responseData(400, '覆盖会员平台不存在');
  166. }
  167. $data = PremiumPlatformPackage::where('premium_platform_rid', $request->copy_premium_platform_rid)->get();
  168. if($data->count() == 0){
  169. return $this->responseData(400, '来源会员平台无数据可复制');
  170. }
  171. DB::beginTransaction();
  172. try {
  173. PremiumPlatformPackage::where('premium_platform_rid', $request->paste_premium_platform_rid)->delete();
  174. PremiumPlatformPackage::insertUsing([
  175. 'bot_rid', 'premium_platform_rid', 'package_name', 'package_month','usdt_price','callback_data','seq_sn','status','show_notes','package_pic','comments','create_time'
  176. ], PremiumPlatformPackage::selectRaw(
  177. "$pasteData->bot_rid, $request->paste_premium_platform_rid, package_name, package_month, usdt_price, concat('premium_',md5(rand())), seq_sn, status, show_notes, package_pic, comments, sysdate()"
  178. )->where('premium_platform_rid', $request->copy_premium_platform_rid));
  179. DB::commit();
  180. return $this->responseData(200, '复制成功');
  181. } catch (\Exception $e) {
  182. DB::rollBack();
  183. return $this->responseData(400, '复制失败'.$e->getMessage());
  184. }
  185. }
  186. }