user_promote.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. <?php
  2. namespace app\index;
  3. use think\db\exception\DbException;
  4. use think\Exception;
  5. use think\exception\PDOException;
  6. class user_promote extends BaseUser
  7. {
  8. function adduser()
  9. {
  10. $_var_0 = SafeRequest("username", "post");
  11. $_var_1 = SafeRequest("password", "post") ?: 123456;
  12. db("user")->where("in_username", $_var_0)->count() && reJSON("用户名已存在");
  13. $_var_2 = db("user")->insertGetId(["in_username" => $_var_0, "in_userpassword" => password($_var_1), "in_verify" => 0, "in_islock" => 0, "in_points" => IN_LOGINPOINTS, "in_filesize" => 0, "in_spaceuse" => 0, "in_spacetotal" => 0, "pid" => $this->userid, "in_regdate" => date("Y-m-d H:i:s")]);
  14. reJSON($_var_2, $_var_2, $_var_2 ? "添加成功" : "添加失败");
  15. }
  16. function editAttr()
  17. {
  18. $_var_3 = SafeRequest("id", "post");
  19. $_var_4 = SafeRequest("attr", "post");
  20. $_var_5 = SafeRequest("val", "post");
  21. $_var_6 = db("user")->where("in_userid", $_var_3)->find();
  22. if ($_var_4 != "pmark") {
  23. if ($this->user["" . $_var_4] < $_var_5) {
  24. reJSON("可用数量不足");
  25. }
  26. if ($_var_5 < 0 && db("user")->where("in_userid", $_var_3)->value($_var_4) < abs($_var_5)) {
  27. reJSON("下级可扣数量不足");
  28. }
  29. $_var_7 = aclog_save($this->userid, $this->user["" . $_var_4] - $_var_5, $this->user["" . $_var_4], $_var_4, $_var_5 > 0 ? "转给下级-" . $_var_6["in_username"] : "从下级-" . $_var_6["in_username"] . "-转入");
  30. $_var_7 && db("user")->where("in_userid", $this->userid)->dec($_var_4, $_var_5)->update();
  31. $_var_7 = aclog_save($_var_6["in_userid"], $_var_6[$_var_4] + $_var_5, $_var_6[$_var_4], $_var_4, $_var_5 > 0 ? "上级-" . $this->user["in_username"] . "-添加" : "上级-" . $this->user["in_username"] . "-扣除");
  32. $_var_7 = $_var_7 && db("user")->where("in_userid", $_var_3)->inc($_var_4, $_var_5)->update();
  33. } else {
  34. $_var_7 = db("user")->where("in_userid", $_var_3)->update([$_var_4 => $_var_5]);
  35. }
  36. reJSON($_var_7, $_var_7, $_var_7 ? "成功" : "失败");
  37. }
  38. function calc_forp_money()
  39. {
  40. if (!IN_PROMOTE_CASH_DAY) {
  41. return;
  42. }
  43. $_var_8 = db("paylog")->where("pay_status", "0")->where("forp_time", "0")->where("pay_time", "<", strtotime("- " . IN_PROMOTE_CASH_DAY . " days"))->order("pay_time")->select();
  44. foreach ($_var_8 as $_var_9 => $_var_10) {
  45. try {
  46. db()->startTrans();
  47. $_var_11 = db("user")->where("in_userid", $_var_10["in_uid"])->find();
  48. $_var_12 = db("user")->where("in_userid", $_var_11["pid"])->find();
  49. if ($_var_12) {
  50. $_var_13 = $_var_12["promote_money"];
  51. $_var_14 = $_var_10["forp_money"];
  52. db("user")->where("in_userid", $_var_10["in_uid"])->inc("forp_money", $_var_14)->dec("unforp_money", $_var_14)->update();
  53. $_var_15 = db("user")->where("in_userid", $_var_11["pid"])->inc("promote_money", $_var_14)->update();
  54. $_var_15 && aclog_save($_var_11["pid"], $_var_13 + $_var_14, $_var_13, "promote_money", $_var_11["in_username"] . " - 消费返佣");
  55. }
  56. db("paylog")->where("in_id", $_var_10["in_id"])->update(["forp_time" => time()]);
  57. db()->commit();
  58. } catch (\think\db\exception\DataNotFoundException $_var_16) {
  59. db()->rollback();
  60. } catch (\think\db\exception\ModelNotFoundException $_var_16) {
  61. db()->rollback();
  62. } catch (\think\db\exception\DbException $_var_16) {
  63. db()->rollback();
  64. } catch (\think\exception\DbException $_var_16) {
  65. db()->rollback();
  66. }
  67. }
  68. }
  69. function index()
  70. {
  71. if (!IN_PROMOTE) {
  72. redirect();
  73. }
  74. $this->calc_forp_money();
  75. $_var_17 = [];
  76. $_var_17["pid"] = $this->userid;
  77. $_var_18 = db("user")->where($_var_17)->whereTime("in_regdate", "today")->count();
  78. $_var_19 = db("user")->where($_var_17)->whereTime("in_regdate", "week")->count();
  79. $_var_20 = db("user")->where($_var_17)->whereTime("in_regdate", "month")->count();
  80. $_var_21 = db("user")->where($_var_17)->count();
  81. $_var_22 = 10;
  82. $_var_23 = isset($_GET["page"]) ? $_GET["page"] : 1;
  83. $_var_24 = ceil($_var_21 / $_var_22);
  84. $_var_25 = ($_var_23 - 1) * $_var_22;
  85. $_var_26 = db("user")->where($_var_17);
  86. if ($this->action == "today") {
  87. $_var_26 = $_var_26->whereTime("in_regdate", "today");
  88. } elseif ($this->action == "yesterday") {
  89. $_var_26 = $_var_26->whereTime("in_regdate", "yesterday");
  90. } elseif ($this->action == "week") {
  91. $_var_26 = $_var_26->whereTime("in_regdate", "week");
  92. } elseif ($this->action == "last_week") {
  93. $_var_26 = $_var_26->whereTime("in_regdate", "last week");
  94. } elseif ($this->action == "month") {
  95. $_var_26 = $_var_26->whereTime("in_regdate", "month");
  96. } elseif ($this->action == "last_month") {
  97. $_var_26 = $_var_26->whereTime("in_regdate", "last month");
  98. }
  99. $_var_26 = $_var_26->order("forp_money desc,unforp_money desc,in_userid desc")->limit($_var_25, $_var_22)->select();
  100. $_var_27 = $_var_25 + 1;
  101. $_var_28 = $_var_23 == $_var_24 ? $_var_21 : $_var_23 * $_var_22;
  102. $_var_29 = $_var_23 == $_var_24 ? 0 : $_var_23 + 1;
  103. $_var_30 = $_var_23 == 1 ? 0 : $_var_23 - 1;
  104. $_var_31 = $this->user["promote_code"];
  105. if (!$_var_31) {
  106. $_var_31 = promote_code($this->user["promote_code"]);
  107. if ($_var_31) {
  108. db("user")->where("in_userid", $this->userid)->update(["promote_code" => $_var_31]);
  109. }
  110. }
  111. $_var_32 = get_site_url() . "/index/reg/" . $_var_31;
  112. $_var_33 = db("user")->where("pid", $this->userid)->sum("forp_money");
  113. ?> <!DOCTYPE html>
  114. <html lang="">
  115. <head>
  116. <meta charset="utf-8">
  117. <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/>
  118. <meta name="keywords" content="<?php echo IN_KEYWORDS;?>"/>
  119. <meta name="description" content="<?php echo IN_DESCRIPTION;?>"/>
  120. <title>推广加盟 - <?php echo IN_NAME;?> - 免费应用内测托管平台|iOS应用Beta测试分发|Android应用内测分发</title>
  121. <?php
  122. $this->static_();
  123. ?> <style>
  124. .table_top a {
  125. display: block;
  126. float: left;
  127. padding: 10px 20px;
  128. }
  129. .table_top a p.b-num {
  130. color: #fba208;
  131. font-size: 25px;
  132. }
  133. .table_top a p:first-child {
  134. font-size: 15px;
  135. font-weight: bolder;
  136. }
  137. .table_top a p b {
  138. color: #333;
  139. font-size: 12px;
  140. }
  141. .red {
  142. color: red !important;
  143. }
  144. .green {
  145. color: green !important;
  146. }
  147. .blue {
  148. color: blue !important;
  149. }
  150. .orange {
  151. color: orange !important;
  152. }
  153. .warn-prompt {
  154. margin-top: -10px !important;
  155. margin-bottom: 10px;
  156. color: #0c85da;
  157. clear: both;
  158. display: table;
  159. width: 100%;
  160. }
  161. .warn-prompt span {
  162. display: table-cell
  163. }
  164. .warn-prompt .iconfont {
  165. color: #333;
  166. margin-left: 30px;
  167. font-size: 13px;
  168. }
  169. .warn-prompt span b {
  170. padding-left: 5px;
  171. }
  172. .warn-prompt span a {
  173. color: #0c85da;
  174. font-size: 12px;
  175. }
  176. .pmark input {
  177. border: 0;
  178. background: none;
  179. text-align: center;
  180. }
  181. .user-center1 .aside-right .user-table .table th {
  182. padding: 5px 0;
  183. line-height: 35px;
  184. }
  185. </style>
  186. <link rel="stylesheet" href="/css/jcq.css">
  187. </head>
  188. <body>
  189. <?php
  190. $this->header();
  191. ?> <script src="/static/index/js/bootstrap-paginator.js"></script>
  192. <div class="user-center-wrap">
  193. <div class="container">
  194. <div class="crumbs">
  195. <a href="/index/user_profile">个人中心</a><span>/</span>账号信息
  196. </div>
  197. <div class="user-center1">
  198. <div class="row clearfix">
  199. <?php
  200. $this->user_left();
  201. ?>
  202. <div class="col-sm-10">
  203. <div class="aside-right">
  204. <div class="order">
  205. <div class="table-list-wrap" style="background-color: transparent; box-shadow:none; padding:0;">
  206. <div class="table-list">
  207. <div class="table-list-top">
  208. <div class="table_top j-top clearfix top2">
  209. <a href="/index/user_promote">
  210. <p>总推广</p>
  211. <p class="b-num">
  212. <?php echo $_var_21;?><b>人</b>
  213. </p>
  214. </a>
  215. <a href="/index/user_promote/today">
  216. <p>今日推广</p>
  217. <p class="b-num">
  218. <?php echo $_var_18;?><b>人</b>
  219. </p>
  220. </a>
  221. <a href="/index/user_promote/week">
  222. <p>本周推广</p>
  223. <p class="b-num">
  224. <?php echo $_var_19;?><b>人</b>
  225. </p>
  226. </a>
  227. <a href="/index/user_promote/month">
  228. <p>本月推广</p>
  229. <p class="b-num">
  230. <?php echo $_var_20;?><b>人</b>
  231. </p>
  232. </a>
  233. <a href="/index/user_promote">
  234. <p>总佣金</p>
  235. <p class="b-num">
  236. <?php echo $_var_33;?><b>元</b>
  237. </p>
  238. </a>
  239. <a href="javascript:;"
  240. class="ms-btn ms-btn-primary mt3"
  241. id="addcode" style="float: right; width:auto;">添加下級</a>
  242. </div>
  243. <div class="warn-prompt">
  244. <span><i class=" iconfont"><b>推广链接:</b></i>
  245. <?php
  246. if (IN_PROMOTE) {
  247. ?>
  248. <a href="<?php echo $_var_32;?>"
  249. target="_blank"><?php echo $_var_32;?></a>
  250. <?php
  251. } else {
  252. ?>
  253. <a>推广活动已结束</a>
  254. <?php
  255. }
  256. ?>
  257. </span>
  258. <span><i class=" iconfont"><b>如何充值:</b></i><a>点击对应蓝色数值为下级进行充值</a></span>
  259. </div>
  260. </div>
  261. <div class="user-table table-list table-list-body">
  262. <div class="table-wrap">
  263. <div class="table-responsive">
  264. <table class="table app-table" id="table">
  265. <tr>
  266. <th>用户</th>
  267. <th>
  268. 公有池
  269. </th>
  270. <th>
  271. 私有池
  272. </th>
  273. <th>
  274. <?php echo IN_POINTNAME;?> </th>
  275. <th>
  276. 消费金额
  277. </th>
  278. <th>
  279. 返利金额
  280. </th>
  281. <th>
  282. 待返金额
  283. </th>
  284. <?php
  285. if (IN_PROMOTE && IN_PROMOTE_DAY > 0) {
  286. ?>
  287. <th>
  288. 剩余时长
  289. </th>
  290. <?php
  291. }
  292. ?>
  293. <th>
  294. 注册日期
  295. </th>
  296. <th>
  297. 备注
  298. </th>
  299. <th>
  300. 状态
  301. </th>
  302. <th>
  303. 操作
  304. </th>
  305. </tr>
  306. <?php
  307. foreach ($_var_26 as $_var_34 => $_var_35) {
  308. ?>
  309. <tr data-id="<?php echo $_var_35["in_userid"];?>">
  310. <td>
  311. <?php echo $_var_35["in_username"];?><br>
  312. <?php echo $_var_35["in_mobile"];?> </td>
  313. <td onclick="editAttr(<?php echo $_var_35["in_userid"];?>,'device_num',<?php echo $_var_35["device_num"];?>)">
  314. <a class="blue">
  315. <?php echo $_var_35["device_num"];?></a>
  316. </td>
  317. <td onclick="editAttr(<?php echo $_var_35["in_userid"];?>,'prv_device_num',<?php echo $_var_35["prv_device_num"];?>)">
  318. <a class="blue">
  319. <?php echo $_var_35["prv_device_num"];?></a>
  320. </td>
  321. <td onclick="editAttr(<?php echo $_var_35["in_userid"];?>,'in_points',<?php echo $_var_35["in_points"];?>)">
  322. <a class="blue">
  323. <?php echo $_var_35["in_points"];?></a>
  324. </td>
  325. <td>
  326. <a class="orange"><?php echo $_var_35["cost_money"];?></a>
  327. </td>
  328. <td>
  329. <a class="orange"><?php echo $_var_35["forp_money"];?></a>
  330. </td>
  331. <td>
  332. <a class="orange"><?php echo $_var_35["unforp_money"];?></a>
  333. </td>
  334. <?php
  335. if (IN_PROMOTE && IN_PROMOTE_DAY > 0) {
  336. $_var_36 = round(strtotime("+" . IN_PROMOTE_DAY . " days", strtotime($_var_35["in_regdate"]) - time()) / 3600 / 24);
  337. ?>
  338. <td>
  339. <?php echo $_var_36 > 0 ? "<a class=\"green\">" . $_var_36 . "天</a>" : "<a class=\"red\">已结束</a>";?> </td>
  340. <?php
  341. }
  342. ?>
  343. <td>
  344. <?php echo $_var_35["in_regdate"];?> </td>
  345. <td onclick="editAttr(<?php echo $_var_35["in_userid"];?>,'pmark','<?php echo $_var_35["pmark"];?>')">
  346. <a><?php echo $_var_35["pmark"] ?: "--";?></a>
  347. </td>
  348. <td>
  349. <?php echo $_var_35["in_islock"] ? "<i class=\"red\">锁定</i>" : "<i class=\"green\">正常</i>";?> </td>
  350. <td>
  351. <a href="javascript:;"
  352. class="table-btn color-hover"
  353. onclick="editAttr(<?php echo $_var_35["in_userid"];?>,'nopmark')">变更资产</a>
  354. <a href="/index/user_orderp/<?php echo $_var_35["in_userid"];?>"
  355. class="table-btn color-hover">消费记录</a>
  356. </td>
  357. </tr>
  358. <?php
  359. }
  360. ?>
  361. </table>
  362. <?php
  363. if ($_var_21 == 0) {
  364. ?>
  365. <div class="text-center no-content">
  366. <img src="/static/index/image/icon-21.png" alt="">
  367. <p class="color-333 mt10">
  368. 暂无订单信息
  369. </p>
  370. </div>
  371. <?php
  372. }
  373. ?>
  374. </div>
  375. <?php
  376. if ($_var_24 != 1) {
  377. ?>
  378. <?php
  379. if ($_var_21 !== 0) {
  380. ?>
  381. <div style="text-align: center"><ul id="pager" class="pagination"><li><a>共<b><?php echo $_var_21;?></b>条记录</b> <?php echo $_var_23;?>/<?php echo $_var_24;?></a></li><?php
  382. if ($_var_23 == 1) {
  383. ?><li class='active'><a>首页</a></li><?php
  384. } else {
  385. ?><li><a href='?page=1'>首页</a></li><?php
  386. }
  387. if ($_var_30) {
  388. ?><li><a href='?page=<?php echo $_var_30;?>'>上一页</a></li><?php
  389. } else {
  390. }
  391. if ($_var_29) {
  392. ?><li><a href='?page=<?php echo $_var_29;?>'>下一页</a></li><?php
  393. } else {
  394. }
  395. if ($_var_23 == $_var_24) {
  396. ?><li class='active'><a>尾页</a></li><?php
  397. } else {
  398. ?><li><a href='?page=<?php echo $_var_24;?>'>尾页</a></li><?php
  399. }
  400. ?></ul></div> <?php
  401. }
  402. ?> <?php
  403. }
  404. ?>
  405. </div>
  406. </div>
  407. </div>
  408. </div>
  409. </div>
  410. </div>
  411. </div>
  412. </div>
  413. </div>
  414. </div>
  415. </div>
  416. <div class="modal fade in" id="vipkeySC" tabindex="-1" role="dialog"
  417. style="display: none; padding-right: 15px;">
  418. <div class="modal-dialog" role="document">
  419. <div class="modal-content">
  420. <div class="modal-header">
  421. <center>
  422. <h4 class="modal-title">添加下级</h4></center>
  423. </div>
  424. <div class="modal-body">
  425. <div class="size-list">
  426. <form id="upload" method="post" target="post_frame" enctype="multipart/form-data">
  427. <div style="padding-left:30px;">
  428. <div style="margin-top:20px;">
  429. <label style="width:100px;text-align:right;">用户名&nbsp;&nbsp;</label>
  430. <input type="text" name="username" placeholder="(必填)" value=""
  431. style="width:420px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  432. >
  433. </div>
  434. </div>
  435. <div style="padding-left:30px;">
  436. <div style="margin-top:20px;">
  437. <label style="width:100px;text-align:right;">登录密码&nbsp;&nbsp;</label>
  438. <input type="text" placeholder="(必填)" name="password"
  439. style="width:420px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  440. >
  441. </div>
  442. </div>
  443. </form>
  444. </div>
  445. <div style="text-align:right;margin-top:30px;">
  446. <div style="border-top:1px solid #eee;">
  447. <div class="text-right mt30">
  448. <input type="hidden" id="in_tid" value="0">
  449. <button type="button" class="btn btn-default" data-dismiss="modal"
  450. aria-label="Close"
  451. onclick="$('#vipkeySC').toggle();">取消
  452. </button>
  453. <button type="button" class="btn btn-primary" onclick="adduser()">添加</button>
  454. </div>
  455. </div>
  456. </div>
  457. </div>
  458. </div>
  459. </div>
  460. </div>
  461. <div class="modal fade in" id="vipkeySC2" tabindex="-1" role="dialog"
  462. style="display: none; padding-right: 15px;">
  463. <div class="modal-dialog" role="document">
  464. <div class="modal-content">
  465. <div class="modal-header">
  466. <center>
  467. <h4 class="modal-title" id="editAttr_title">资产变更</h4></center>
  468. </div>
  469. <div class="modal-body">
  470. <div class="size-list">
  471. <form id="upload" method="post" target="post_frame" enctype="multipart/form-data">
  472. <div style="padding-left:30px;;display: none">
  473. <div style="margin-top:20px;">
  474. <label style="width:100px;text-align:right;">类型&nbsp;&nbsp;</label>
  475. <select name="type"
  476. style="width:150px;padding-left:10px;height:35px;border:1px solid #e0e0e0;">
  477. <option value="in_points"><?php echo IN_POINTNAME;?></option>
  478. <option value="device_num">公有池</option>
  479. <option value="prv_device_num">私有池</option>
  480. </select>
  481. </div>
  482. </div>
  483. <div style="padding-left:30px;;display: none">
  484. <div style="margin-top:20px;">
  485. <label style="width:100px;text-align:right;">增加&nbsp;&nbsp;</label>
  486. <input type="number" placeholder="(必填)" name="addvalue"
  487. style="width:300px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  488. >
  489. </div>
  490. </div>
  491. <div style="padding-left:30px;display: none" id="pmark">
  492. <div style="margin-top:20px;">
  493. <label style="width:100px;text-align:right;">备注&nbsp;&nbsp;</label>
  494. <input type="text" name="pmark"
  495. style="width:300px;padding-left:10px;height:35px;border:1px solid #e0e0e0;"
  496. >
  497. </div>
  498. </div>
  499. </form>
  500. </div>
  501. <div style="text-align:right;margin-top:30px;">
  502. <div style="border-top:1px solid #eee;">
  503. <div class="text-right mt30">
  504. <input type="hidden" id="in_tid" value="0">
  505. <button type="button" class="btn btn-default" data-dismiss="modal"
  506. aria-label="Close"
  507. onclick="$('#vipkeySC2').toggle();">取消
  508. </button>
  509. <button type="button" class="btn btn-primary" onclick="saveAttr()">确定</button>
  510. </div>
  511. </div>
  512. </div>
  513. </div>
  514. </div>
  515. </div>
  516. </div>
  517. <?php
  518. $this->footer();
  519. ?> <script>
  520. $('#addcode,.btn-new-release').click(function () {
  521. $('#vipkeySC').toggle();
  522. });
  523. var data = {};
  524. function editAttr(id, attr, val) {
  525. data = {id, attr, val};
  526. $('#vipkeySC2').toggle();
  527. if (attr == 'pmark') {
  528. $('#editAttr_title').html('修改备注');
  529. $('#pmark').show().siblings().hide();
  530. $('input[name="pmark"]').val(val);
  531. } else {
  532. $('#editAttr_title').html('资产变更');
  533. $('#pmark').hide().siblings().show();
  534. }
  535. data.id = id;
  536. }
  537. function saveAttr() {
  538. if (data.attr != 'pmark') {
  539. data.attr = $('select[name="type"]').val();
  540. data.val = $('input[name="addvalue"]').val();
  541. if (isNaN(data.val) || data.val == 0) {
  542. return alert('请输入有效数值');
  543. }
  544. } else {
  545. data.val = $('input[name="pmark"]').val();
  546. }
  547. $.post('/index/user_promote/editAttr', data, function (ret) {
  548. if (ret.msg) alert(ret.msg)
  549. if (ret.data) {
  550. location.reload();
  551. }
  552. }, 'json');
  553. }
  554. function adduser() {
  555. var username = $('input[name="username"]').val();
  556. var password = $('input[name="password"]').val();
  557. $.post('/index/user_promote/adduser', {username, password}, function (ret) {
  558. if (ret.msg) alert(ret.msg)
  559. if (ret.data) {
  560. location.reload();
  561. }
  562. }, 'json');
  563. }
  564. </script>
  565. </body>
  566. </html>
  567. <?php
  568. }
  569. }