super_cert.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  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. ?> <?php
  66. if (empty($this->user["in_mobile"])) {
  67. ?> <div class="warn-prompt" style="margin-bottom: 10px;">
  68. <span class="icon-warn iconfont"></span>
  69. 您当前尚未绑定手机号码,绑定手机可以增加账号安全性。
  70. <a href="/index/bind_mobile" class="color-hover">立即绑定手机</a>
  71. </div>
  72. <?php
  73. }
  74. ?> <?php
  75. if ($this->user["in_release"] == 1) {
  76. ?> <div class="warn-prompt" style="margin-bottom: 10px;">
  77. <span class="icon-warn iconfont"></span>
  78. 因发布的APP不符合审核规则,已停用此账号发布功能。
  79. </div>
  80. <?php
  81. }
  82. ?> <div class="table-list-wrap">
  83. <div class="table-list">
  84. <div class="a-top mb10 clearfix">
  85. <div class="input-search fl">
  86. <input class="super-search" type="text" class="fl" placeholder="输入开发者账号" name="search_input"
  87. id="keyword" value="<?php echo $_var_1;?>">
  88. <span class="iconfont icon-search"></span>
  89. </div>
  90. <div class="super-btn-box">
  91. <div class="fr clearfix how-many">
  92. <dl class="clearfix">
  93. <dd class="fl total">
  94. <div class="clearfix">
  95. <div class="fr">
  96. <p class="p1">
  97. 总计
  98. </p>
  99. <span class="iconfont icon-prompt1"
  100. data-container="body"
  101. data-toggle="popover" data-placement="top"
  102. data-trigger="hover" data-html="true"
  103. data-content="">
  104. </span>
  105. </div>
  106. </div>
  107. <div class="p2 clearfix">
  108. <span><?php echo $_var_5;?></span>
  109. </div>
  110. <div class="right-line mob-none">
  111. </div>
  112. </dd>
  113. <dt class="fl btn-box">
  114. <a href="https://appstoreconnect.apple.com/access/api"
  115. class="ms-btn ms-btn-primary mt3" target="_blank">p8证书</a>
  116. <?php
  117. if (IN_SUPER_PRV) {
  118. ?> <a href="javascript:;" onclick="$('#vipp8SC').toggle();"
  119. class="ms-btn ms-btn-primary mt3">添加账号</a>
  120. <?php
  121. } else {
  122. ?> <a href="javascript:;" disabled=""
  123. class="ms-btn ms-btn-primary mt3">暂不开放</a>
  124. <?php
  125. }
  126. ?> </dt>
  127. </dl>
  128. </div>
  129. </div>
  130. </div>
  131. <div class="app-table-wrap">
  132. <div class="table-wrap">
  133. <div class="table-responsive">
  134. <table class="table app-table">
  135. <tr>
  136. <th width="100" class="app-th-name">账号</th>
  137. <th>Iss</th>
  138. <th>Kid</th>
  139. <th>Tid</th>
  140. <th>P8</th>
  141. <th>P12</th>
  142. <th>P12密码</th>
  143. <th>已使用</th>
  144. <th>剩余</th>
  145. <th>到期时间</th>
  146. <th>备注</th>
  147. <th>状态</th>
  148. <th>操作</th>
  149. </tr>
  150. <?php
  151. foreach ($_var_10 as $_var_15 => $_var_16) {
  152. ?> <tr class="app_list" data-id="<?php echo $_var_16["id"];?>">
  153. <td><?php echo $_var_16["team_id"] ?: $_var_16["username"] ?: "--";?></td>
  154. <td><?php echo $_var_16["iss"];?></td>
  155. <td><?php echo $_var_16["kid"];?></td>
  156. <td><?php echo $_var_16["tid"];?></td>
  157. <td>
  158. <a href="/download/cert/<?php echo bees_encrypt($_var_16["id"] . ".8." . time());?>">下载</a>
  159. </td>
  160. <td>
  161. <a href="/download/cert/<?php echo bees_encrypt($_var_16["id"] . ".12." . time());?>">下载</a>
  162. </td>
  163. <td><?php echo $_var_16["p12_pwd"];?></td>
  164. <td><?php echo $_var_16["total_count"];?></td>
  165. <td><?php echo $_var_16["limit_count"];?></td>
  166. <td><?php echo date("Y-m-d", $_var_16["expirationDate"]);?></td>
  167. <td><?php echo $_var_16["mark"];?></td>
  168. <td><?php echo ["-1" => "被封", "0" => "<font color=\"red\">未启用</font>", "1" => "启用", "401" => "疑被封", "403" => "启用"][$_var_16["status"]];?> </td>
  169. <td>
  170. <a href="javascript:;"
  171. class="table-btn color-hover statuson"
  172. data-status="<?php echo $_var_16["status"];?>"><?php echo $_var_16["status"] ? "停用" : "启用";?></a>
  173. <a href="javascript:;" class="table-btn color-hover"
  174. onclick="update('<?php echo $_var_16["id"];?>')">更新</a>
  175. <a href="javascript:;"
  176. class="table-btn color-delete">删除</a>
  177. </td>
  178. </tr>
  179. <?php
  180. }
  181. ?> </table>
  182. </div>
  183. <?php
  184. if ($_var_5 == 0) {
  185. ?> <div class="no-app text-center">
  186. <div class="mt60 small">
  187. <img src="/static/index/image/icon-19.png">
  188. </div>
  189. <div class="color-333 mt20">
  190. 暂无开发者账号
  191. </div>
  192. <?php
  193. if (IN_SUPER_PRV) {
  194. ?>
  195. <a href="javascript:;"
  196. class="ms-btn ms-btn-primary btn-new-release clearfix mt20"
  197. onclick="$('#vipp8SC').toggle();">
  198. <span class="iconfont icon-upload fl"></span>
  199. <span class="text fl">立即添加</span>
  200. </a>
  201. <?php
  202. } else {
  203. ?> <a href="javascript:;"
  204. class="ms-btn ms-btn-primary btn-new-release clearfix mt20"
  205. disabled="">
  206. <span class="text fl">暂不开放</span>
  207. </a>
  208. <?php
  209. }
  210. ?> </div>
  211. <?php
  212. }
  213. ?> </div>
  214. <?php
  215. if ($_var_8 != 1) {
  216. ?> <?php
  217. if ($_var_5 !== 0) {
  218. ?> <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
  219. if ($_var_7 == 1) {
  220. ?><li class='active'><a>首页</a></li><?php
  221. } else {
  222. ?><li><a href='?page=1&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>首页</a></li><?php
  223. }
  224. if ($_var_14) {
  225. ?><li><a href='?page=<?php echo $_var_14;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>上一页</a></li><?php
  226. } else {
  227. }
  228. if ($_var_13) {
  229. ?><li><a href='?page=<?php echo $_var_13;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>下一页</a></li><?php
  230. } else {
  231. }
  232. if ($_var_7 == $_var_8) {
  233. ?><li class='active'><a>尾页</a></li><?php
  234. } else {
  235. ?><li><a href='?page=<?php echo $_var_8;?>&ext=<?php echo $_var_0;?>&keyword=<?php echo $_var_1;?>'>尾页</a></li><?php
  236. }
  237. ?></ul></div> <?php
  238. }
  239. ?> <?php
  240. }
  241. ?> </div>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. </div>
  250. <div class="modal fade in" id="vipp8SC" tabindex="-1" role="dialog"
  251. style="display: none; padding-right: 15px;">
  252. <div class="modal-dialog" role="document">
  253. <div class="modal-content">
  254. <div class="modal-header">
  255. <center>
  256. <h4 class="modal-title">添加P8开发者证书</h4></center>
  257. </div>
  258. <div class="modal-body">
  259. <div class="size-list">
  260. <form id="upload" method="post" target="post_frame" enctype="multipart/form-data">
  261. <div style="padding-left:30px;">
  262. <div style="margin-top:20px;">
  263. <label class="j-label-open" style="width:100px;text-align:right;">账号<span
  264. style="color:red;margin-left:2px">*</span>:</label>
  265. <input class="j-label-text" type="text"
  266. style="width:420px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  267. placeholder="(必填)" name="team_id" id="team_id">
  268. </div>
  269. <div style="margin-top:10px;">
  270. <label class="j-label-open" style="width:100px;text-align:right;">Iss<span
  271. style="color:red;margin-left:2px">*</span>:</label>
  272. <input class="j-label-text" type="text"
  273. style="width:420px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  274. placeholder="(必填)" name="iss" id="iss">
  275. </div>
  276. <div style="margin-top:10px;">
  277. <label class="j-label-open" style="width:100px;text-align:right;">Kid<span
  278. style="color:red;margin-left:2px">*</span>:</label>
  279. <input class="j-label-text" type="text"
  280. style="width:420px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  281. placeholder="(必填)" name="kid" id="kid">
  282. </div>
  283. <div style="margin-top:10px;">
  284. <label class="j-label-open" style="width:100px;text-align:right;">备注:</label>
  285. <input class="j-label-text" type="text"
  286. style="width:420px;padding-left:10px;height:70px;border:1px solid #e0e0e0;"
  287. placeholder="(选填)" name="mark" id="mark">
  288. </div>
  289. <br>
  290. <div style="margin-top:10px;">
  291. <label class="j-label-open" style="text-align:right;">P8密钥<span
  292. style="color:red;margin-left:2px">*</span>:</label>
  293. <input class="j-label-text-je" type="file" class="form-control"
  294. style="display: inline-block; height:35px;border:1px solid #e0e0e0;" placeholder="(必填)"
  295. accept=".p8"
  296. name="p8" id="p8">
  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>
  308. </form>
  309. </div>
  310. <div style="text-align:right;margin-top:30px;">
  311. <div style="border-top:1px solid #eee;">
  312. <div class="text-right mt30">
  313. <button type="button" class="btn btn-default" data-dismiss="modal"
  314. aria-label="Close" onclick="$('#vipp8SC').toggle();">取消
  315. </button>
  316. <input type="hidden" name="user_id"
  317. value="<?php echo $_COOKIE["in_userid"];?>"/>
  318. <button type="button" class="btn btn-primary" onclick="addCert()">
  319. 立即添加
  320. </button>
  321. </div>
  322. </div>
  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. }