super_cert.php 25 KB

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