super_cert.php 25 KB

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