publish_detail.php 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. <?php
  2. // by 请勿倒卖,已申请软著,否则追究法律责任
  3. namespace app\index;
  4. class publish_detail extends BaseUser
  5. {
  6. function index()
  7. {
  8. $id = bees_decrypt(SafeRequest("id", "get"));
  9. $row = db("appid")->where("in_uid", $this->userid)->where("in_id", $id)->find();
  10. $row or exit(include_once dirname(__FILE__) . "/../pack/error/404.php");
  11. $page = SafeRequest("page", "get");
  12. $tab = SafeRequest("tab", "get");
  13. // 如果没有指定tab,默认显示应用版本tab
  14. if (empty($tab)) {
  15. $tab = "version";
  16. }
  17. $fnum = $this->action != "super" ? $row["in_deduct"] : 1;
  18. $ftype = $this->action != "super" ? IN_POINTNAME : "设备";
  19. $durl = getlink($row["in_id"], $this->action == "super");
  20. ?>
  21. <!DOCTYPE html>
  22. <html lang="">
  23. <head>
  24. <meta charset="utf-8">
  25. <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" />
  26. <meta name="keywords" content="<?php echo IN_KEYWORDS; ?>" />
  27. <meta name="description" content="<?php echo IN_DESCRIPTION; ?>" />
  28. <title><?php echo $row["in_name"]; ?> - 应用详情 - <?php echo IN_NAME; ?></title>
  29. <?php
  30. $this->static_();
  31. ?>
  32. <link rel="stylesheet" href="/static/index/css/apps-detail.css" />
  33. <style>
  34. .app-details{
  35. min-height:auto;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <?php
  41. $this->header();
  42. ?>
  43. <link rel="stylesheet" href="/static/pack/font-awesome-4.7.0/css/font-awesome.css" />
  44. <link rel="stylesheet" type="text/css" href="/static/index/css/jquery.datetimepicker.css?20190530" />
  45. <script src="/static/index/js/jquery.form.js"></script>
  46. <script src="/static/index/js/jquery.datetimepicker.js?20190530"></script>
  47. <link rel="stylesheet" href="/static/index/css/apps.css">
  48. <div class="release-app-wrap">
  49. <div class="container">
  50. <div class="release-app2">
  51. <div class="crumbs">
  52. <a href="/index/apps/apps">我的应用</a>
  53. <span>/</span>
  54. <a href="/index/apps/apps">应用列表</a>
  55. <span>/</span>
  56. <!-- <?php echo $row["in_name"]; ?> -->
  57. 应用详情
  58. </div>
  59. <div class="row clearfix">
  60. <?php
  61. $this->publish_app_list();
  62. ?> <div class="col-sm-10">
  63. <div class="aside-right">
  64. <div class="app-details app-details2">
  65. <?php
  66. $this->publish_top($row);
  67. ?> <div class="app-information">
  68. <hr class="hidden-xs">
  69. <hr class="visible-xs" style="
  70. margin-left: -50%;
  71. width: 200%;
  72. ">
  73. <div class="details-bottom">
  74. <div class="d-table-wrap">
  75. <div class="table-responsive hidden-xs">
  76. <table>
  77. <tr>
  78. <th><span class="th-line">包名(BundleID)</span></th>
  79. <th><span class="th-line">状态</span></th>
  80. <th><span class="th-line">下载地址</span></th>
  81. </tr>
  82. <tr>
  83. <td>
  84. <span id="copy" class="bundle-length bundle-length1"
  85. data-container="body" data-toggle="popover"
  86. data-placement="bottom"
  87. data-content="<?php echo $row["in_bid"]; ?>"
  88. data-trigger="hover"><?php echo $row["in_bid"]; ?></span>
  89. <span class="copy top-5" data-clipboard-action="copy"
  90. data-clipboard-target="#copy">复制</span>
  91. </td>
  92. <td>
  93. <div>
  94. <?php echo [-1 => "审核中", "正常", "封禁"][$row["in_applock"]]; ?> </div>
  95. </td>
  96. <td>
  97. <?php if (!$row["in_applock"]) { ?>
  98. <div class="test-download clearfix">
  99. <a href="<?php echo $durl; ?>"
  100. target="_blank"
  101. class="fl link bundle-length1"
  102. data-container="body" data-toggle="popover"
  103. data-placement="bottom"
  104. data-content="<?php echo $durl; ?>"
  105. data-trigger="hover"><?php echo $durl; ?></a>
  106. <span class="copy top-5" data-clipboard-text="<?php echo $durl; ?>">复制</span>
  107. </div>
  108. <?php } else { ?>
  109. <?php echo [-1 => "审核中", "正常", "封禁"][$row["in_applock"]]; ?>
  110. <?php } ?>
  111. </td>
  112. </tr>
  113. </table>
  114. <?php
  115. if ($row["in_form"] == "iOS" && strstr($row["in_app"], "ipa") && $this->action != "super") {
  116. ?> <table>
  117. <tr>
  118. <th>
  119. <span class="th-line" title="苹果企业证书公司名称">公司名称</span>
  120. </th>
  121. <th>
  122. <span class="th-line" title="苹果企业证书集团信息">集团信息</span>
  123. </th>
  124. <th>
  125. <span class="th-line">下载二维码</span>
  126. </th>
  127. </tr>
  128. <tr>
  129. <td>
  130. <span id="copy1" class="bundle-length bundle-length1"
  131. data-container="body" data-toggle="popover"
  132. data-placement="bottom"
  133. data-content="<?php echo $row["in_nick"]; ?>"
  134. data-trigger="hover"><?php echo $row["in_nick"]; ?></span>
  135. <span class="copy top-5"
  136. data-clipboard-action="copy"
  137. data-clipboard-target="#copy1">复制</span>
  138. </td>
  139. <td>
  140. <span id="copy2" class="bundle-length bundle-length1"
  141. data-container="body" data-toggle="popover"
  142. data-placement="bottom"
  143. data-content="<?php echo $row["in_team"]; ?>"
  144. data-trigger="hover"><?php echo $row["in_team"]; ?></span>
  145. <span class="copy top-5"
  146. data-clipboard-action="copy"
  147. data-clipboard-target="#copy2">复制</span>
  148. </td>
  149. <td>
  150. <span href="javascript:;" class="more-wrap">
  151. <a class="more">&nbsp;</a>
  152. <img src="/qrcode?link=<?php echo $durl; ?>">
  153. </span>
  154. </td>
  155. </tr>
  156. </table>
  157. <?php
  158. }
  159. ?> <table>
  160. <tr>
  161. <th>
  162. <span class="th-line" title="当前app下载次数">下载次数</span>
  163. </th>
  164. <th>
  165. <span class="th-line">下载扣除</span>
  166. </th>
  167. <th>
  168. </th>
  169. <!-- <?php
  170. if (IN_SIGN && $row["in_form"] == "iOS") {
  171. ?> <th>
  172. <span class="th-line">签名期限</span>
  173. </th>
  174. <?php
  175. } else {
  176. ?><th></th>
  177. <?php } ?> -->
  178. </td>
  179. </tr>
  180. <tr>
  181. <td>
  182. <div class="bundle-length bundle-length2"
  183. data-container="body"
  184. data-toggle="popover" data-placement="bottom"
  185. data-content="已下载<?php echo $row["in_downloads"]; ?>次"
  186. data-trigger="hover">
  187. <?php echo $row["in_downloads"]; ?> </div>
  188. </td>
  189. <td>
  190. <div class="bundle-length bundle-length2"
  191. data-container="body"
  192. data-toggle="popover" data-placement="bottom"
  193. data-content="单次下载扣除<?php echo $fnum; ?><?php echo $ftype; ?>"
  194. data-trigger="hover">
  195. <?php echo $fnum; ?><?php echo $ftype; ?> </div>
  196. </td>
  197. <td>
  198. </td>
  199. <!-- <?php
  200. if (IN_SIGN && $row["in_form"] == "iOS") {
  201. ?> <td>
  202. <div class="test-download clearfix">
  203. <a href="/index/publish_sign?id=<?php echo bees_encrypt($row["in_id"]); ?>"
  204. class="fl link bundle-length1"
  205. data-container="body"
  206. data-toggle="popover"
  207. data-placement="bottom"
  208. data-content="<?php echo $row["in_sign"] ? date("Y-m-d H:i:s", $row["in_sign"]) : "未开通在线签名"; ?>"
  209. data-trigger="hover"><?php echo $row["in_sign"] ? date("Y-m-d H:i:s", $row["in_sign"]) : "未开通在线签名"; ?></a>
  210. </div>
  211. </td>
  212. <?php
  213. } else {
  214. ?><th></th>
  215. <?php } ?> -->
  216. </tr>
  217. </table>
  218. </div>
  219. <div class="table-responsive visible-xs">
  220. <!-- 第一行:包名 + 公司名称 -->
  221. <div class="info-container">
  222. <div class="info-group" style="width: 55%;">
  223. <span class="info-label">包名(BundleID)</span>
  224. <span class="info-value"
  225. id="copy-bid"
  226. data-popover="true"
  227. data-content="<?= htmlspecialchars($row['in_bid']) ?>">
  228. <?= htmlspecialchars($row['in_bid']) ?></span>
  229. <button class="copy info-copy" data-clipboard-action="copy"
  230. data-clipboard-target="#copy-bid">复制</button>
  231. </div>
  232. <?php if ($row["in_form"] == "iOS" && strstr($row["in_app"], "ipa") && $this->action != "super"): ?>
  233. <div class="info-group" style="width: 45%;">
  234. <span class="info-label" title="苹果企业证书公司名称">公司名称</span>
  235. <span class="info-value"
  236. id="copy-nick"
  237. data-popover="true"
  238. data-content="<?= htmlspecialchars($row['in_nick']) ?>">
  239. <?= htmlspecialchars($row['in_nick']) ?></span>
  240. <button class="copy info-copy"
  241. data-clipboard-action="copy"
  242. data-clipboard-target="#copy-nick">复制</button>
  243. </div>
  244. <?php endif; ?>
  245. </div>
  246. <!-- 第二行:下载次数 + 状态 + 集团信息 -->
  247. <div class="info-container">
  248. <div class="info-group" style="width: 30%;">
  249. <span class="info-label" title="当前app下载次数">下载次数</span>
  250. <span class="info-value"
  251. data-popover="true"
  252. data-content="已下载<?php echo $row["in_downloads"]; ?>次">
  253. <?php echo $row["in_downloads"]; ?>
  254. </span>
  255. </div>
  256. <div class="info-group" style="width: 25%;">
  257. <span class="info-label">状态</span>
  258. <span class="info-value">
  259. <?php echo [-1 => "审核中", "正常", "封禁"][$row["in_applock"]]; ?>
  260. </span>
  261. </div>
  262. <?php if ($row["in_form"] == "iOS" && strstr($row["in_app"], "ipa") && $this->action != "super"): ?>
  263. <div class="info-group" style="width: 45%;">
  264. <span class="info-label" title="苹果企业证书集团信息">集团信息</span>
  265. <span class="info-value"
  266. id="copy-team"
  267. data-popover="true"
  268. data-content="<?= htmlspecialchars($row['in_team']) ?>"
  269. ><?= htmlspecialchars($row['in_team']) ?></span>
  270. <button class="copy info-copy"
  271. data-clipboard-action="copy"
  272. data-clipboard-target="#copy-team">复制</button>
  273. </div>
  274. <?php endif; ?>
  275. </div>
  276. <!-- 第三行:签名期限 + 下载扣除 -->
  277. <div class="info-container">
  278. <!-- <?php if (IN_SIGN && $row["in_form"] == "iOS"): ?>
  279. <div class="info-group" style="width: 55%;">
  280. <span class="info-label">签名期限</span>
  281. <span class="info-value">
  282. <a href="/index/publish_sign?id=<?php echo bees_encrypt($row["in_id"]); ?>"
  283. data-popover="true"
  284. data-content="<?php echo $row["in_sign"] ? date("Y-m-d H:i:s", $row["in_sign"]) : "未开通在线签名"; ?>">
  285. <?php echo $row["in_sign"] ? date("Y-m-d H:i:s", $row["in_sign"]) : "未开通在线签名"; ?>
  286. </a>
  287. </span>
  288. </div>
  289. <?php endif; ?> -->
  290. <div class="info-group" style="width: <?php echo (IN_SIGN && $row["in_form"] == "iOS") ? '100%' : '100%'; ?>;">
  291. <span class="info-label">下载扣除</span>
  292. <span class="info-value"
  293. data-popover="true"
  294. data-content="单次下载扣除<?php echo $fnum; ?><?php echo $ftype; ?>">
  295. <?php echo $fnum; ?><?php echo $ftype; ?>
  296. </span>
  297. </div>
  298. </div>
  299. <div class="info-container">
  300. <div class="info-group" style="width: 100%;">
  301. <span class="info-label">下载链接</span>
  302. <span class="info-value">
  303. <?php if (!$row["in_applock"]): ?>
  304. <a href="<?php echo $durl; ?>"
  305. target="_blank"
  306. data-popover="true"
  307. data-content="<?php echo $durl; ?>"
  308. style="vertical-align: middle;display: inline-block;"
  309. >
  310. <?php echo $durl; ?>
  311. </a>
  312. <button class="copy info-copy"
  313. data-clipboard-action="copy"
  314. data-clipboard-text="<?php echo $durl; ?>">复制</button>
  315. <?php else: ?>
  316. <?php echo [-1 => "审核中", "正常", "封禁"][$row["in_applock"]]; ?>
  317. <?php endif; ?>
  318. </span>
  319. </div>
  320. </div>
  321. <!-- 第五行:下载二维码 -->
  322. <?php if (!$row["in_applock"] && $row["in_form"] == "iOS" && strstr($row["in_app"], "ipa") && $this->action != "super"): ?>
  323. <div class="info-container">
  324. <div class="info-group" style="width: 100%;">
  325. <span class="info-label">下载二维码</span>
  326. <span class="info-value">
  327. <span href="javascript:;" class="more-wrap">
  328. <a class="more">&nbsp;</a>
  329. <img src="/qrcode?link=<?php echo $durl; ?>">
  330. </span>
  331. </span>
  332. </div>
  333. </div>
  334. <?php endif; ?>
  335. </div>
  336. </div>
  337. </div>
  338. </div>
  339. <!-- 应用版本 基本设置 高级设置 模板设置 下载明细 -->
  340. <div class="tabs" style="background: #fff;">
  341. <ul class="nav nav-tabs" role="tablist">
  342. <li role="presentation" class="<?php echo ($tab == 'version') ? 'active' : ''; ?>">
  343. <a href="?id=<?php echo bees_encrypt($id); ?>&tab=version" aria-controls="tab-version" role="tab">应用版本</a>
  344. </li>
  345. <li role="presentation" class="<?php echo ($tab == 'basic') ? 'active' : ''; ?>">
  346. <a href="?id=<?php echo bees_encrypt($id); ?>&tab=basic" aria-controls="tab-basic" role="tab">基本设置</a>
  347. </li>
  348. <li role="presentation" class="<?php echo ($tab == 'advanced') ? 'active' : ''; ?>">
  349. <a href="?id=<?php echo bees_encrypt($id); ?>&tab=advanced" aria-controls="tab-advanced" role="tab">高级设置</a>
  350. </li>
  351. <li role="presentation" class="<?php echo ($tab == 'template') ? 'active' : ''; ?>">
  352. <a href="?id=<?php echo bees_encrypt($id); ?>&tab=template" aria-controls="tab-template" role="tab">模板设置</a>
  353. </li>
  354. <li role="presentation" class="<?php echo ($tab == 'download') ? 'active' : ''; ?>">
  355. <a href="?id=<?php echo bees_encrypt($id); ?>&tab=download" aria-controls="tab-download" role="tab">下载明细</a>
  356. </li>
  357. </ul>
  358. <div class="tab-content">
  359. <?php if ($tab == 'version'): ?>
  360. <div role="tabpanel" class="tab-pane active" id="tab-version">
  361. <?php include_once 'publish_tab_version.php'; ?>
  362. </div>
  363. <?php endif; ?>
  364. <?php if ($tab == 'basic'): ?>
  365. <div role="tabpanel" class="tab-pane active" id="tab-basic">
  366. <?php include_once 'publish_tab_basic.php'; ?>
  367. </div>
  368. <?php endif; ?>
  369. <?php if ($tab == 'advanced'): ?>
  370. <div role="tabpanel" class="tab-pane active" id="tab-advanced">
  371. <?php include_once 'publish_tab_advanced.php'; ?>
  372. </div>
  373. <?php endif; ?>
  374. <?php if ($tab == 'template'): ?>
  375. <div role="tabpanel" class="tab-pane active" id="tab-template">
  376. <?php include_once 'publish_tab_template.php'; ?>
  377. </div>
  378. <?php endif; ?>
  379. <?php if ($tab == 'download'): ?>
  380. <div role="tabpanel" class="tab-pane active" id="tab-download">
  381. <?php include_once 'publish_tab_download.php'; ?>
  382. </div>
  383. <?php endif; ?>
  384. </div>
  385. </div>
  386. </div>
  387. </div>
  388. </div>
  389. </div>
  390. </div>
  391. </div>
  392. </div>
  393. <div class="modal fade" id="adhocUDIDBox" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
  394. aria-hidden="true">
  395. <div class="modal-dialog">
  396. <div class="modal-content">
  397. <div class="modal-header">
  398. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  399. aria-hidden="true">&times;</span>
  400. </button>
  401. <h4 class="modal-title" id="myModalLabel">UDIDs</h4>
  402. </div>
  403. <div class="modal-body">
  404. <code><?php
  405. $row["in_udids"] = str_replace(",", "</code><br /><code>", $row["in_udids"]);
  406. ?><?php echo $row["in_udids"]; ?></code><br />
  407. </div>
  408. </div>
  409. </div>
  410. </div>
  411. <div class="modal fade" role="dialog" id="updateModal">
  412. <div class="modal-dialog" role="document">
  413. <div class="modal-content">
  414. <div class="modal-header">
  415. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
  416. </button>
  417. <h4>版本编辑</h4>
  418. </div>
  419. <div class="modal-body">
  420. <div class="app-details-update">
  421. <div class="form-group clearfix">
  422. <label class="col-sm-2 control-label">更新说明</label>
  423. <div class="col-sm-10">
  424. <textarea rows="6" name="desc" class="form-control"></textarea>
  425. </div>
  426. </div>
  427. </div>
  428. </div>
  429. <div class="modal-footer">
  430. <button type="button" class="ms-btn ms-btn-primary w120 plugin-save mr20" data-dismiss="modal">
  431. 保存
  432. </button>
  433. </div>
  434. </div>
  435. </div>
  436. </div>
  437. <?php
  438. $this->inc_merge();
  439. ?> <script src="/static/index/js/clipboard.min.js"></script>
  440. <script>
  441. var clipboard = new ClipboardJS('.copy-btn');
  442. clipboard.on('success', function(e) {
  443. alert('复制成功');
  444. });
  445. clipboard.on('error', function(e) {
  446. alert('复制失败');
  447. });
  448. var app_id = '<?php echo bees_encrypt($id); ?>';
  449. $('.icon-fabu').click(function() {
  450. var history_id = $(this).parent().find('input').val();
  451. $.post('/index/ajax_profile/setUseHistory', {
  452. id: history_id,
  453. app_id: app_id
  454. }, function(data) {
  455. if (data.code == 200) {
  456. alert('发布版本成功', function() {
  457. window.location.reload();
  458. });
  459. return true;
  460. }
  461. }, 'json');
  462. });
  463. $('.icon-shanchu').click(function() {
  464. var history_id = $(this).parent().find('input').val();
  465. alert('<b>你确定要删除该版本信息吗?</b><br/>删除后将无法恢复!', function() {
  466. $.post('/index/ajax_profile/delHistory', {
  467. 'id': history_id,
  468. app_id: app_id
  469. }, function(data) {
  470. if (data.code == 200) {
  471. alert('删除版本成功', function() {
  472. window.location.reload();
  473. });
  474. return true;
  475. } else {
  476. alert(data.msg);
  477. }
  478. }, 'json');
  479. }, function() {}, 'center', '删除', '取消');
  480. });
  481. $('.icon-edit').click(function() {
  482. var history_id = $(this).parent().find('input').val();
  483. $.get('/index/ajax_profile/getHistory?id=' + history_id + '&app_id=' + app_id, function(data) {
  484. if (data.code != 200) {
  485. alert('系统繁忙,请稍后重试');
  486. return true;
  487. }
  488. $("#updateModal textarea[name='desc']").val('').val(data.data.desc);
  489. $('#updateModal').modal('show');
  490. $('#updateModal .ms-btn-primary').unbind().click(function() {
  491. var desc = $("#updateModal textarea[name='desc']").val();
  492. alert(desc);
  493. $.post('/index/ajax_profile/updateHistory', {
  494. 'id': history_id,
  495. app_id: app_id,
  496. desc: desc
  497. }, function(data) {
  498. if (data.code == 200) {
  499. alert('更新说明操作成功', function() {
  500. window.location.reload();
  501. });
  502. return true;
  503. }
  504. }, 'json');
  505. })
  506. }, 'json');
  507. });
  508. //自动删除版本
  509. var del_vid = <?php echo $del_vid; ?>;
  510. if (del_vid > 0) {
  511. $.post('/index/ajax_profile/delHistory', {
  512. 'id': del_vid,
  513. app_id: app_id
  514. }, function(data) {
  515. if (data.code == 200) {
  516. return true;
  517. } else {
  518. console.log(data.msg);
  519. }
  520. }, 'json');
  521. }
  522. </script>
  523. <?php
  524. $this->footer();
  525. ?>
  526. </body>
  527. </html>
  528. <?php
  529. }
  530. }