super_cert.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <?php
  2. namespace app\index;
  3. class super_cert extends BaseUser
  4. {
  5. function index()
  6. {
  7. $_var_0 = SafeRequest("ext", "get");
  8. $_var_1 = SafeRequest("keyword", "get");
  9. $_var_2 = $_var_3 = "";
  10. $_var_4 = [];
  11. if (!empty($_var_0)) {
  12. $_var_4["type"] = $_var_0;
  13. }
  14. if (!empty($_var_1)) {
  15. $_var_4["iss|kid|tid"] = ["like", "%" . $_var_1 . "%"];
  16. }
  17. $_var_5 = db("super_cert")->where($_var_4)->where("user_id", $this->userid)->count();
  18. $_var_6 = 10;
  19. $_var_7 = isset($_GET["page"]) ? $_GET["page"] : 1;
  20. $_var_8 = ceil($_var_5 / $_var_6);
  21. $_var_9 = ($_var_7 - 1) * $_var_6;
  22. $_var_10 = db("super_cert")->where($_var_4)->where("user_id", $this->userid)->order("create_time desc")->limit($_var_9, $_var_6)->select();
  23. $_var_11 = $_var_9 + 1;
  24. $_var_12 = $_var_7 == $_var_8 ? $_var_5 : $_var_7 * $_var_6;
  25. $_var_13 = $_var_7 == $_var_8 ? 0 : $_var_7 + 1;
  26. $_var_14 = $_var_7 == 1 ? 0 : $_var_7 - 1;
  27. ?> <!DOCTYPE html>
  28. <html lang="">
  29. <head>
  30. <meta charset="utf-8">
  31. <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/>
  32. <meta name="keywords" content="<?php echo IN_KEYWORDS;?>"/>
  33. <meta name="description" content="<?php echo IN_DESCRIPTION;?>"/>
  34. <title>应用管理 - <?php echo IN_NAME;?> - 免费应用内测托管平台|iOS应用Beta测试分发|Android应用内测分发</title>
  35. <?php
  36. $this->static_();
  37. ?>
  38. <link rel="stylesheet" href="/css/jcq.css">
  39. </head>
  40. <body>
  41. <?php
  42. $this->header();
  43. ?> <link rel="stylesheet" href="/static/pack/font-awesome-4.7.0/css/font-awesome.css"/>
  44. <script src="/static/index/js/bootstrap-paginator.js"></script>
  45. <div class="release-app-wrap">
  46. <div class="container">
  47. <div class="release-app2">
  48. <div class="crumbs">
  49. <a href="/index/apps/apps">我的应用</a><span>/</span>应用列表
  50. </div>
  51. <div class="row clearfix">
  52. <?php
  53. $this->left();
  54. ?> <div class="col-sm-10">
  55. <div class="aside-right">
  56. <?php
  57. if (IN_VERIFY == 1 && $this->user["in_verify"] != 1) {
  58. ?> <div class="warn-prompt" style="margin-bottom: 10px;">
  59. <span class="icon-warn iconfont"></span>
  60. 您当前尚未实名,不能上传APP;实名认证通过后,才可以上传应用。
  61. <a href="/index/certification" class="color-hover">立即实名认证</a>
  62. </div>
  63. <?php
  64. }
  65. ?>
  66. <!-- <?php
  67. if (empty($this->user["in_mobile"])) {
  68. ?> <div class="warn-prompt" style="margin-bottom: 10px;">
  69. <span class="icon-warn iconfont"></span>
  70. 您当前尚未绑定手机号码,绑定手机可以增加账号安全性。
  71. <a href="/index/bind_mobile" class="color-hover">立即绑定手机</a>
  72. </div>
  73. <?php
  74. }
  75. ?> -->
  76. <?php
  77. if ($this->user["in_release"] == 1) {
  78. ?> <div class="warn-prompt" style="margin-bottom: 10px;">
  79. <span class="icon-warn iconfont"></span>
  80. 因发布的APP不符合审核规则,已停用此账号发布功能。
  81. </div>
  82. <?php
  83. }
  84. ?> <div class="table-list-wrap">
  85. <div class="table-list">
  86. <div class="a-top mb10 clearfix">
  87. <div class="input-search fl">
  88. <input class="super-search" type="text" class="fl" placeholder="输入开发者账号" name="search_input"
  89. id="keyword" value="<?php echo $_var_1;?>">
  90. <span class="iconfont icon-search"></span>
  91. </div>
  92. <div class="super-btn-box">
  93. <div class="fr clearfix how-many">
  94. <dl class="clearfix">
  95. <dd class="fl total">
  96. <div class="clearfix">
  97. <div class="fr">
  98. <p class="p1">
  99. 总计
  100. </p>
  101. <span class="iconfont icon-prompt1"
  102. data-container="body"
  103. data-toggle="popover" data-placement="top"
  104. data-trigger="hover" data-html="true"
  105. data-content="">
  106. </span>
  107. </div>
  108. </div>
  109. <div class="p2 clearfix">
  110. <span><?php echo $_var_5;?></span>
  111. </div>
  112. <div class="right-line mob-none">
  113. </div>
  114. </dd>
  115. <dt class="fl btn-box">
  116. <a href="https://appstoreconnect.apple.com/access/api"
  117. class="ms-btn ms-btn-primary mt3" target="_blank">p8证书</a>
  118. <?php
  119. if (IN_SUPER_PRV) {
  120. ?> <a href="javascript:;" onclick="$('#vipp8SC').toggle();"
  121. class="ms-btn ms-btn-primary mt3">添加账号</a>
  122. <?php
  123. } else {
  124. ?> <a href="javascript:;" disabled=""
  125. class="ms-btn ms-btn-primary mt3">暂不开放</a>
  126. <?php
  127. }
  128. ?> </dt>
  129. </dl>
  130. </div>
  131. </div>
  132. </div>
  133. <div class="app-table-wrap">
  134. <div class="table-wrap">
  135. <div class="table-responsive">
  136. <table class="table app-table">
  137. <tr>
  138. <th width="100" class="app-th-name">账号</th>
  139. <th>Iss</th>
  140. <th>Kid</th>
  141. <th>Tid</th>
  142. <th>P8</th>
  143. <th>P12</th>
  144. <th>P12密码</th>
  145. <th>已使用</th>
  146. <th>剩余</th>
  147. <th>到期时间</th>
  148. <th>备注</th>
  149. <th>状态</th>
  150. <th>操作</th>
  151. </tr>
  152. <?php
  153. foreach ($_var_10 as $_var_15 => $_var_16) {
  154. ?> <tr class="app_list" data-id="<?php echo $_var_16["id"];?>">
  155. <td><?php echo $_var_16["team_id"] ?: $_var_16["username"] ?: "--";?></td>
  156. <td><?php echo $_var_16["iss"];?></td>
  157. <td><?php echo $_var_16["kid"];?></td>
  158. <td><?php echo $_var_16["tid"];?></td>
  159. <td>
  160. <a href="/download/cert/<?php echo bees_encrypt($_var_16["id"] . ".8." . time());?>">下载</a>
  161. </td>
  162. <td>
  163. <a href="/download/cert/<?php echo bees_encrypt($_var_16["id"] . ".12." . time());?>">下载</a>
  164. </td>
  165. <td><?php echo $_var_16["p12_pwd"];?></td>
  166. <td><?php echo $_var_16["total_count"];?></td>
  167. <td><?php echo $_var_16["limit_count"];?></td>
  168. <td><?php echo date("Y-m-d", $_var_16["expirationDate"]);?></td>
  169. <td><?php echo $_var_16["mark"];?></td>
  170. <td><?php echo ["-1" => "被封", "0" => "<font color=\"red\">未启用</font>", "1" => "启用", "401" => "疑被封", "403" => "启用"][$_var_16["status"]];?> </td>
  171. <td>
  172. <a href="javascript:;"
  173. class="table-btn color-hover statuson"
  174. data-status="<?php echo $_var_16["status"];?>"><?php echo $_var_16["status"] ? "停用" : "启用";?></a>
  175. <a href="javascript:;" class="table-btn color-hover"
  176. onclick="update('<?php echo $_var_16["id"];?>')">更新</a>
  177. <a href="javascript:;"
  178. class="table-btn color-delete">删除</a>
  179. </td>
  180. </tr>
  181. <?php
  182. }
  183. ?> </table>
  184. </div>
  185. <?php
  186. if ($_var_5 == 0) {
  187. ?> <div class="no-app text-center">
  188. <div class="mt60 small">
  189. <img src="/static/index/image/icon-19.png">
  190. </div>
  191. <div class="color-333 mt20">
  192. 暂无开发者账号
  193. </div>
  194. <?php
  195. if (IN_SUPER_PRV) {
  196. ?>
  197. <a href="javascript:;"
  198. class="ms-btn ms-btn-primary btn-new-release clearfix mt20"
  199. onclick="$('#vipp8SC').toggle();">
  200. <span class="iconfont icon-upload fl"></span>
  201. <span class="text fl">立即添加</span>
  202. </a>
  203. <?php
  204. } else {
  205. ?> <a href="javascript:;"
  206. class="ms-btn ms-btn-primary btn-new-release clearfix mt20"
  207. disabled="">
  208. <span class="text fl">暂不开放</span>
  209. </a>
  210. <?php
  211. }
  212. ?> </div>
  213. <?php
  214. }
  215. ?> </div>
  216. <?php
  217. if ($_var_8 != 1) {
  218. ?> <?php
  219. if ($_var_5 !== 0) {
  220. ?> <div style="text-align: center"><ul id="pager" class="pagination"><li><a>共<b><?php echo $_var_5;?></b>个应用</b> <?php echo $_var_7;?>/<?php echo $_var_8;?></a></li><?php
  221. if ($_var_7 == 1) {
  222. ?><li class='active'><a>首页</a></li><?php
  223. } else {
  224. ?><li><a href='?page=1&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>首页</a></li><?php
  225. }
  226. if ($_var_14) {
  227. ?><li><a href='?page=<?php echo $_var_14;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>上一页</a></li><?php
  228. } else {
  229. }
  230. if ($_var_13) {
  231. ?><li><a href='?page=<?php echo $_var_13;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>下一页</a></li><?php
  232. } else {
  233. }
  234. if ($_var_7 == $_var_8) {
  235. ?><li class='active'><a>尾页</a></li><?php
  236. } else {
  237. ?><li><a href='?page=<?php echo $_var_8;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>尾页</a></li><?php
  238. }
  239. ?></ul></div> <?php
  240. }
  241. ?> <?php
  242. }
  243. ?> </div>
  244. </div>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. <div class="modal fade in" id="vipp8SC" tabindex="-1" role="dialog"
  253. style="display: none; padding-right: 15px;">
  254. <div class="modal-dialog" role="document">
  255. <div class="modal-content">
  256. <div class="modal-header">
  257. <center>
  258. <h4 class="modal-title">添加P8开发者证书</h4></center>
  259. </div>
  260. <div class="modal-body">
  261. <div class="size-list">
  262. <form id="upload" method="post" target="post_frame" enctype="multipart/form-data">
  263. <div style="padding-left:30px;">
  264. <div style="margin-top:20px; display: flex;">
  265. <label class="j-label-open" style="width:100px;text-align:right;">账号<span
  266. style="color:red;margin-left:2px">*</span>:</label><input
  267. class="j-label-text" type="text"
  268. style="padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  269. placeholder="(必填)" name="team_id" id="team_id">
  270. </div>
  271. <div style="margin-top:10px;">
  272. <label class="j-label-open" style="width:100px;text-align:right;">Iss<span
  273. style="color:red;margin-left:2px">*</span>:</label><input
  274. class="j-label-text" type="text"
  275. style="padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  276. placeholder="(必填)" name="iss" id="iss">
  277. </div>
  278. <div style="margin-top:10px;">
  279. <label class="j-label-open" style="width:100px;text-align:right;">Kid<span
  280. style="color:red;margin-left:2px">*</span>:</label><input
  281. class="j-label-text" type="text"style="padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  282. placeholder="(必填)" name="kid" id="kid">
  283. </div>
  284. <div style="margin-top:10px;">
  285. <label class="j-label-open" style="width:100px;text-align:right;">备注:</label><input
  286. class="j-label-text" type="text"
  287. style="padding-left:10px;height:70px;border:1px solid #e0e0e0;"
  288. placeholder="(选填)" name="mark" id="mark">
  289. </div>
  290. <br>
  291. <div style="margin-top:10px;">
  292. <label class="j-label-open" style="text-align:right;">P8密钥<span
  293. style="color:red;margin-left:2px">*</span>:</label><input
  294. class="j-label-text-je" type="file" class="form-control"
  295. style="display: inline-block; height:35px;border:1px solid #e0e0e0;" placeholder="(必填)"
  296. accept=".p8"
  297. name="p8" id="p8">
  298. </div>
  299. <br><br>
  300. <div class="form-group" style="margin-top:10px;">
  301. <div class="tipPanel"
  302. style="margin: 10px;padding: 10px;font-size: 14px;border: 1px dotted gray;border-radius: 8px;">
  303. <div class="tipItem">
  304. <font color="red">温馨提示:</font>使用独有个人开发者账号,请采购私有池签名数
  305. </div>
  306. </div>
  307. </div>
  308. </div>
  309. </form>
  310. </div>
  311. <div style="text-align:right;margin-top:30px;">
  312. <div style="border-top:1px solid #eee;">
  313. <div class="text-right mt30">
  314. <button type="button" class="btn btn-default" data-dismiss="modal"
  315. aria-label="Close" onclick="$('#vipp8SC').toggle();">取消
  316. </button>
  317. <input type="hidden" name="user_id"
  318. value="<?php echo $_COOKIE["in_userid"];?>"/>
  319. <button type="button" class="btn btn-primary" onclick="addCert()" style="background:#157df1;">
  320. 立即添加
  321. </button>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. </div>
  327. </div>
  328. </div>
  329. <?php
  330. $this->inc_merge();
  331. ?> <script>
  332. $('.icon-search').click(function () {
  333. var keyword = $('#keyword').val();
  334. if (keyword) {
  335. window.location.href = "/index/super_cert?ext=<?php echo $_var_0;?>&keyword=" + $('#keyword').val();
  336. }
  337. });
  338. $(".app_device li").on('click', function () {
  339. ext = $(this).data('system');
  340. window.location.href = "/index/super_cert?keyword=<?php echo $_var_1;?>&ext=" + ext;
  341. });
  342. $('#keyword').bind('keyup', function (event) {
  343. if (event.keyCode == "13") {
  344. //回车执行查询
  345. $('.icon-search').click();
  346. }
  347. });
  348. $('.app_list .statuson').click(function () {
  349. var id = $(this).parents('tr').attr('data-id');
  350. var status = $(this).attr('data-status') != 0 ? 0 : 1;
  351. console.log($(this).attr('data-status'));
  352. console.log({id, status});
  353. $.post('/index/super_ajax/set_status', {id, status}, function (data) {
  354. alert(data.msg);
  355. if (data.code == 200) {
  356. setTimeout(function () {
  357. window.location.reload();
  358. }, 1500)
  359. }
  360. }, 'json');
  361. });
  362. function addCert() {
  363. var data = new FormData($('#upload')[0]);
  364. $.ajax({
  365. url: '/index/super_ajax/save',
  366. data: data,
  367. type: 'POST',
  368. processData: false,
  369. contentType: false,
  370. dataType: "json",
  371. success: function (ret) {
  372. if (ret.msg) alert(ret.msg);
  373. if (ret.code == 200) {
  374. window.location.reload();
  375. }
  376. }
  377. })
  378. }
  379. function update(id) {
  380. $.post('/index/super_ajax/save', {id}, function (ret) {
  381. if (ret.msg) alert(ret.msg);
  382. if (ret.code == 200) {
  383. window.location.reload();
  384. }
  385. }, 'json');
  386. }
  387. $(".color-delete").click(function () {
  388. var id = $(this).parents('tr').attr('data-id');
  389. alert('你确定要删除该app吗?', function () {
  390. $.post('/index/super_ajax/del', {id}, function (data) {
  391. if (data.code == 200) {
  392. window.location.reload();
  393. } else {
  394. alert('删除失败');
  395. }
  396. }, 'json')
  397. }, function () {
  398. }, 'center', '确定', '取消');
  399. });
  400. <?php
  401. if (IN_VERIFY == 1 && $this->user["in_verify"] != 1) {
  402. ?> Modal.templateModal({
  403. imgName: "modal-bg-2.jpg",
  404. title1: '提示',
  405. title2: '账户尚未实名,请尽快操作实名认证',
  406. p: '建议您:<br>尽快登录<?php echo IN_NAME;?>网站,点击右上角未实名认证,进行认证。<br>未实名认证,不能上传应用。',
  407. align: 'left', // 居左 left, 居中 center, 居右 right
  408. btnText: '知道了',
  409. btnClass: "modal-btn1"
  410. });
  411. <?php
  412. }
  413. ?> </script>
  414. <?php
  415. $this->footer();
  416. ?> </body>
  417. </html>
  418. <?php
  419. }
  420. }