Member.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // |
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-31 20:43
  10. // +----------------------------------------------------------------------
  11. namespace app\system\controller;
  12. use app\BaseController;
  13. use app\lib\OrderLib;
  14. use app\model\api\PayTrade;
  15. use library\utils\WxpayV2 as wxpayApi;
  16. use app\model\api\User as UserModel;
  17. use app\model\api\UserDetail as UserDetailModel;
  18. use app\model\api\UserScoreDetail as UserScoreDetailModel;
  19. use app\model\api\UserShowTemplate;
  20. use library\services\UtilService;
  21. use app\Request;
  22. use think\facade\Db;
  23. class Member extends BaseController
  24. {
  25. /**
  26. * 会员列表
  27. * @param Request $request
  28. * @return mixed
  29. */
  30. public function list(Request $request)
  31. {
  32. $pageSize = 50;
  33. $post = UtilService::getMore([
  34. ['page',1],
  35. ['pageSize',50],
  36. ['nickname',''],
  37. ['uid',''],
  38. ['parent_uid',''],
  39. ['mobile',''],
  40. ['status',''],
  41. ['time',[]],
  42. ],$request);
  43. $data = (new UserModel)->getDataList($post,"*",1);
  44. return app('json')->success([
  45. 'list' => $data["list"],
  46. 'pageCount' => $data["totalCount"],
  47. 'pageSize' => $data["pageSize"],
  48. 'page' => $data["page"],
  49. ]);
  50. }
  51. /**
  52. * 编辑
  53. */
  54. public function save(Request $request){
  55. $post = UtilService::getMore([
  56. ['uid','0'],
  57. ['status',''],
  58. ['name',''],
  59. ['nickname',''],
  60. ],$request);
  61. $uid = (int)$post["uid"];
  62. if(empty($uid)){
  63. return app('json')->fail("参数错误");
  64. }
  65. unset($post["uid"]);
  66. $r=0;
  67. if(!in_array((string)$post["status"],['1','-1'])){
  68. return app('json')->success("状态错误");
  69. }
  70. //用户信息
  71. $save=[];
  72. $save["status"] = $post["status"];
  73. if(!empty($post["name"])){
  74. $save["name"] = $post["name"];
  75. }
  76. if(!empty($post["nickname"])){
  77. $save["nickname"] = $post["nickname"];
  78. }
  79. $r = (new UserModel)->where("uid",$uid)->update($save);
  80. return app('json')->success("数据保存成功");
  81. }
  82. /**
  83. * 会员收益明细列表
  84. * @param Request $request
  85. * @return mixed
  86. */
  87. public function moneyDetail (Request $request)
  88. {
  89. $pageSize = 50;
  90. $post = UtilService::getMore(
  91. [
  92. ['page', '1'],
  93. ['uid', '0'],
  94. ['mobile', ''],
  95. ['time', []],
  96. ['type', ''],
  97. ['code', ''],
  98. ], $request
  99. );
  100. $where = [];
  101. if (!empty($post['uid'])){
  102. $where[]=["d.uid","=",$post['uid']];
  103. }
  104. if (!empty($post['mobile'])) {
  105. $m = Db::name("user")->where("mobile",$post['mobile'])->find();
  106. if(!empty($m)) {
  107. $where[]=["d.uid","=",$m['uid']];
  108. }
  109. }
  110. $startTime = "";
  111. $endTime = "";
  112. if(!empty($post['time'][0]) && !empty($post['time'][1])) {
  113. $startTime = strtotime($post['time'][0]);
  114. $endTime = strtotime($post['time'][1]);
  115. $where[]=["d.time","between","{$startTime},{$endTime}"];
  116. }
  117. if (!empty($post['type']) && in_array(strval($post['type']), ["1","-1"])) {
  118. $where[]=["d.type","=",$post['type']];
  119. }
  120. if(!empty($post['code']) && $post['code']!="all"){
  121. $where[]=["d.code","=",$post['code']];
  122. }
  123. $data = (new UserDetailModel)
  124. ->alias("d")
  125. ->field("d.*,u.mobile")
  126. ->leftJoin("user u", "u.uid = d.uid")
  127. ->where($where)
  128. ->page((int)$post["page"], $pageSize)
  129. ->order("d.id","desc")
  130. ->select()
  131. ->toArray();
  132. $pageCount = (new UserDetailModel)->alias("d")->where($where)->count();
  133. foreach($where as $k=>$v){
  134. if($v[0]=="d.type"){
  135. array_splice($where,$k,1);
  136. }
  137. }
  138. //收入
  139. $inWhere = $where;
  140. $inWhere[]=["d.type","=",1];
  141. $inTotal = (new UserDetailModel)->alias("d")->where($inWhere)->sum("d.into");
  142. //支出
  143. $outWhere = $where;
  144. $outWhere[]=["d.type","=",-1];
  145. $outTotal = (new UserDetailModel)->alias("d")->where($outWhere)->sum("d.into");
  146. $result = UtilService::getParam(
  147. [
  148. 'id',
  149. 'uid',
  150. 'mobile',
  151. 'title',
  152. 'content',
  153. 'type',
  154. 'into',
  155. 'money',
  156. ['time', 'time', 'date("Y-m-d H:i:s",$1)'],
  157. ], $data);
  158. return app('json')->success([
  159. 'list' => $result,
  160. 'pageCount' => $pageCount,
  161. 'pageSize' => $pageSize,
  162. 'page' => $post['page'],
  163. 'inTotal' => empty($inTotal) ? 0 : floatval($inTotal),
  164. 'outTotal' => empty($outTotal)? 0 : floatval($outTotal),
  165. ]);
  166. }
  167. /**
  168. * 收益增/减
  169. * @param Request $request
  170. */
  171. public function moneyDetailSave(Request $request)
  172. {
  173. $post = UtilService::getMore([
  174. ['uid', '', 'empty', '参数错误'],
  175. ['type', '1'],
  176. ['into', '0', 'gt|0', '输入值错误'],
  177. ['othen', ''],
  178. ], $request);
  179. $userData = (new UserModel)->where("uid",$post["uid"])->find();
  180. if(empty($userData)){
  181. return app('json')->fail('用户不存在,请输入正确的用户uid');
  182. }
  183. if(!in_array((string)$post["type"],["1","-1"])){
  184. return app('json')->fail('请选择增减');
  185. }
  186. $post["into"] = bcadd("0",$post["into"],2);
  187. if(!is_numeric($post["into"]) || $post["into"]<=0){
  188. return app('json')->fail('请输入正确的金额');
  189. }
  190. if ($post['type'] == 1)
  191. $bool = (new UserDetailModel)->adminAddMoney($userData['uid'], $post['into'], $request->adminInfo['id'],$post['othen']);
  192. if ($post['type'] == -1){
  193. if($userData["money"]-$post['into']<0){
  194. return app('json')->fail('余额不足');
  195. }
  196. $bool = (new UserDetailModel)->adminCutMoney($userData['uid'], $post['into'], $request->adminInfo['id'],$post['othen']);
  197. }
  198. if ($bool)
  199. return app('json')->success('操作成功');
  200. else
  201. return app('json')->fail('操作失败');
  202. }
  203. /**
  204. * 钻石收益明细列表
  205. * @param Request $request
  206. * @return mixed
  207. */
  208. public function scoreDetail (Request $request)
  209. {
  210. $pageSize = 50;
  211. $post = UtilService::getMore(
  212. [
  213. ['page', '1'],
  214. ['uid', '0'],
  215. ['mobile', ''],
  216. ['type', ''],
  217. ['code', ''],
  218. ['time', []],
  219. ], $request
  220. );
  221. $where = [];
  222. if (!empty($post['uid'])){
  223. $where[]=["d.uid","=",$post['uid']];
  224. }else if (!empty($post['mobile'])) {
  225. $m = Db::name("user")->where("mobile",$post['mobile'])->find();
  226. if(!empty($m)) {
  227. $where[]=["d.uid","=",$m['uid']];
  228. }
  229. }
  230. $startTime = "";
  231. $endTime = "";
  232. if(!empty($post['time'][0]) && !empty($post['time'][1])) {
  233. $startTime = strtotime($post['time'][0]);
  234. $endTime = strtotime($post['time'][1]);
  235. $where[]=["d.time","between","{$startTime},{$endTime}"];
  236. }
  237. if (!empty($post['type']) && in_array(strval($post['type']), ["1","-1"])) {
  238. $where[]=["d.type","=",$post['type']];
  239. }
  240. if (!empty($post['code'])) {
  241. $where[]=["d.code","=",$post['code']];
  242. }
  243. $data = (new UserScoreDetailModel)
  244. ->alias("d")
  245. ->field("d.*,u.mobile")
  246. ->leftJoin("user u", "u.uid = d.uid")
  247. ->where($where)
  248. ->page((int)$post["page"], $pageSize)
  249. ->order("d.id","desc")
  250. ->select()
  251. ->toArray();
  252. $pageCount = (new UserScoreDetailModel)->alias("d")->where($where)->count();
  253. foreach($where as $k=>$v){
  254. if($v[0]=="d.type"){
  255. array_splice($where,$k,1);
  256. }
  257. }
  258. //收入
  259. $inWhere = $where;
  260. $inWhere[]=["d.type","=",1];
  261. $inTotal = (new UserScoreDetailModel)->alias("d")->where($inWhere)->sum("d.v");
  262. //支出
  263. $outWhere = $where;
  264. $outWhere[]=["d.type","=",-1];
  265. $outTotal = (new UserScoreDetailModel)->alias("d")->where($outWhere)->sum("d.v");
  266. $result = UtilService::getParam(
  267. [
  268. 'id',
  269. 'uid',
  270. 'mobile',
  271. 'title',
  272. 'content',
  273. 'type',
  274. ['into','v'],
  275. 'money',
  276. ['time', 'time', 'date("Y-m-d H:i:s",$1)'],
  277. ], $data);
  278. return app('json')->success([
  279. 'list' => $result,
  280. 'pageCount' => $pageCount,
  281. 'pageSize' => $pageSize,
  282. 'page' => $post['page'],
  283. 'inTotal' => empty($inTotal) ? 0 : floatval($inTotal),
  284. 'outTotal' => empty($outTotal)? 0 : floatval($outTotal),
  285. ]);
  286. }
  287. /**
  288. * 积分增/减
  289. * @param Request $request
  290. */
  291. public function scoreDetailSave(Request $request)
  292. {
  293. $post = UtilService::getMore([
  294. ['uid', '', 'empty', '参数错误'],
  295. ['type', '1'],
  296. ['into', '0', 'gt|0', '输入值错误'],
  297. ['othen', ''],
  298. ], $request);
  299. $userData = (new UserModel)->where("uid",$post["uid"])->find();
  300. if(empty($userData)){
  301. return app('json')->fail('用户不存在,请输入正确的用户uid');
  302. }
  303. if ($post['type'] == 1)
  304. $bool = (new UserScoreDetailModel)->adminAddMoney($userData['uid'], intval($post['into']), $request->adminInfo['id'],$post['othen']);
  305. if ($post['type'] == -1){
  306. if($userData["score"]-$post['into']<0){
  307. return app('json')->fail('剩余积分不足');
  308. }
  309. $bool = (new UserScoreDetailModel)->adminCutMoney($userData['uid'], intval($post['into']), $request->adminInfo['id'],$post['othen']);
  310. }
  311. if ($bool)
  312. return app('json')->success('操作成功');
  313. else
  314. return app('json')->fail('操作失败');
  315. }
  316. /**
  317. * 获取会员数据
  318. * @param Request $request
  319. * @return mixed
  320. */
  321. public function getItem(Request $request)
  322. {
  323. $post = UtilService::getMore([
  324. ['uid', 1],
  325. ]);
  326. $data = (new UserModel)
  327. ->alias("u")
  328. ->field("u.uid,u.mobile,u.nickname,u.avatar,u.status,u.regtime,u.lasttime,u.parent_uid.p.nickname as parent_nickname")
  329. ->leftJoin("user p","p.uid = u.parent_uid")
  330. ->where("u.uid",$post["uid"])
  331. ->find()
  332. ->toArray();
  333. if(!empty($data)){
  334. $data["regtime"] = date("Y-m-d H:i:s",$data["regtime"]);
  335. $data["lasttime"] = date("Y-m-d H:i:s",$data["lasttime"]);
  336. }
  337. return app('json')->success(empty($data) ? [] : $data);
  338. }
  339. public function shopSave(Request $request){
  340. $post = UtilService::getMore([
  341. ['id','','empty','参数错误'],
  342. ['name','','empty','请输入名称'],
  343. ['tel','','empty','请输入联系电话'],
  344. ['lx_name','','empty','请输入联系人'],
  345. ['address','','empty','请输入门店地址'],
  346. ['longitude',''],
  347. ['latitude',''],
  348. ['is_show',''],
  349. ],$request);
  350. $id = (int)$post["id"];
  351. if(empty($id)){
  352. return app('json')->fail("参数错误");
  353. }
  354. unset($post["id"]);
  355. $shopSave=[
  356. "name" => $post["name"],
  357. "tel" => $post["tel"],
  358. "address" => $post["address"],
  359. "lx_name" => $post["lx_name"],
  360. "longitude" => $post["longitude"],
  361. "latitude" => $post["latitude"],
  362. "is_show" => $post["is_show"]==1?1:0,
  363. ];
  364. if(empty($shopSave["name"])){
  365. return app('json')->fail("请输入门店名称");
  366. }
  367. if(empty($shopSave["tel"])){
  368. return app('json')->fail("请输入门店联系电话");
  369. }
  370. if(empty($shopSave["address"])){
  371. return app('json')->fail("请输入门店地址");
  372. }
  373. if(empty($shopSave["lx_name"])){
  374. return app('json')->fail("请输入门店联系人");
  375. }
  376. (new UserShopModel)->where("id",$id)->update($shopSave);
  377. return app('json')->success("数据保存成功");
  378. }
  379. public function shopList(Request $request){
  380. $pageSize = 50;
  381. $post = UtilService::getMore(
  382. [
  383. ['page', '1'],
  384. ['uid', ''],
  385. ['is_show', ''],
  386. ['mobile', ''],
  387. ['name', ''],
  388. ['pageSize', ''],
  389. ], $request);
  390. $where = [];
  391. if(!empty($post["pageSize"]) && $post["pageSize"]>50){
  392. $pageSize = (int)$post["pageSize"];
  393. }
  394. //用户
  395. if (!empty($post['uid'])){
  396. $where[]=["t.uid","=",$post['uid']];
  397. }else if (!empty($post['mobile'])) {
  398. $m = Db::name("user")->where("mobile",$post['mobile'])->find();
  399. if(!empty($m)) {
  400. $where[]=["t.uid","=",$m['uid']];
  401. }
  402. }
  403. if(is_numeric($post['is_show']) && in_array((string)$post['is_show'],['0','1'])) {
  404. $where[]=["t.is_show","=",(int)$post['is_show']];
  405. }
  406. if(!empty($post['name'])){
  407. $where[]=["t.name","like","%{$post['name']}%"];
  408. }
  409. $data = (new UserShopModel)
  410. ->alias("t")
  411. ->field("t.*,u.nickname as nickname")
  412. ->leftJoin("user u" , "u.uid = t.uid")
  413. ->where($where)
  414. ->page((int)$post["page"], $pageSize)
  415. ->order("t.id","desc")
  416. ->select()
  417. ->toArray();
  418. $pageCount = (new UserShopModel)->alias("t")->where($where)->count();
  419. $result = UtilService::getParam(
  420. [
  421. 'id',
  422. 'uid',
  423. 'nickname',
  424. 'name',
  425. 'area',
  426. 'address',
  427. 'tel',
  428. 'lx_name',
  429. 'longitude',
  430. "latitude",
  431. 'is_show',
  432. ['time', 'time', function($item){
  433. return empty($item) ? "--" : date("Y-m-d H:i:s",$item);
  434. }],
  435. ], $data);
  436. return app('json')->success([
  437. 'list' => $result,
  438. 'pageCount' => $pageCount,
  439. 'pageSize' => $pageSize,
  440. 'page' => $post['page'],
  441. ]);
  442. }
  443. /**
  444. * 支付任务列表
  445. * @param \app\model\api\Request $request
  446. */
  447. public function payTradeList(Request $request){
  448. $pageSize = 50;
  449. $post = UtilService::getMore(
  450. [
  451. ['page', '1'],
  452. ['uid', ''],
  453. ['status', ''],
  454. ['mobile', ''],
  455. ['type', ''],
  456. ['pay_no', ''],
  457. ['order_id', ''],
  458. ['time', []],
  459. ], $request);
  460. $where = [];
  461. //用户
  462. if (!empty($post['uid'])){
  463. $where[]=["t.uid","=",$post['uid']];
  464. }else if (!empty($post['mobile'])) {
  465. $m = Db::name("user")->where("mobile",$post['mobile'])->find();
  466. if(!empty($m)) {
  467. $where[]=["t.uid","=",$m['uid']];
  468. }
  469. }
  470. if(is_numeric($post['status']) && in_array((string)$post['status'],['0','1'])) {
  471. $where[]=["t.status","=",(int)$post['status']];
  472. }
  473. if(!empty($post['pay_type']) && in_array($post['pay_type'],['wxpay','system'])) {
  474. $where[]=["t.pay_type","=",$post['pay_type']];
  475. }
  476. if(!empty($post['type']) && in_array($post['type'],['pro','temp','activity'])) {
  477. $where[]=["t.type","=",$post['type']];
  478. }
  479. if(!empty($post['pay_no'])){
  480. $where[]=["t.pay_no","=",$post['pay_no']];
  481. }
  482. if(!empty($post['order_id'])){
  483. $where[]=["t.order_id","=",$post['order_id']];
  484. }
  485. $startTime = "";
  486. $endTime = "";
  487. if(!empty($post['time'][0]) && !empty($post['time'][1])) {
  488. $startTime = strtotime($post['time'][0]);
  489. $endTime = strtotime($post['time'][1]);
  490. $where[]=["t.time","between","{$startTime},{$endTime}"];
  491. }
  492. $data = (new PayTrade)
  493. ->alias("t")
  494. ->field("t.*,u.nickname as nickname,a.username as admin_name")
  495. ->leftJoin("user u" , "u.uid = t.uid")
  496. ->leftJoin("admin a", "a.id = t.admin_id")
  497. ->where($where)
  498. ->page((int)$post["page"], $pageSize)
  499. ->order("t.id","desc")
  500. ->select()
  501. ->toArray();
  502. $pageCount = (new PayTrade)->alias("t")->where($where)->count();
  503. $result = UtilService::getParam(
  504. [
  505. 'id',
  506. 'uid',
  507. 'nickname',
  508. "admin_id",
  509. "admin_name",
  510. 'pay_no',
  511. 'out_trade_no',
  512. 'pay_no',
  513. 'order_id',
  514. 'pay_type',
  515. 'type',
  516. 'money',
  517. 'content',
  518. "d_json",
  519. 'status',
  520. 'mono',
  521. ['time', 'time', function($item){
  522. return empty($item) ? "--" : date("Y-m-d H:i:s",$item);
  523. }],
  524. ['pay_time' , 'pay_time', function($item){
  525. return empty($item) ? "--" : date("Y-m-d H:i:s",$item);
  526. }],
  527. ['pay_json', 'pay_json', function($item){
  528. if(empty($item)){
  529. return "";
  530. }
  531. $payData = json_decode($item,true);
  532. return $payData;
  533. }],
  534. ], $data);
  535. return app('json')->success([
  536. 'list' => $result,
  537. 'pageCount' => $pageCount,
  538. 'pageSize' => $pageSize,
  539. 'page' => $post['page'],
  540. ]);
  541. }
  542. /**
  543. * 搜索交易数据
  544. * @param Request $request
  545. */
  546. public function searchPayTrade(Request $request){
  547. $post = UtilService::getMore(
  548. [
  549. ['id', '','empty',''],
  550. ], $request);
  551. $data = (new PayTrade)->where("id",$post["id"])->find();
  552. if(empty($data)){
  553. return app("json")->fail("数据不存在");
  554. }
  555. if($data["status"]==1 && !empty($data["pay_json"])){
  556. return app("json")->success("交易支付成功", json_decode($data["pay_json"],true));
  557. }
  558. $out_trade_no = $data["out_trade_no"];
  559. //微信支付
  560. if($data["pay_type"]=="wxpay"){
  561. $wxpay = new wxpayApi();
  562. $resAr = $wxpay->searchOrderQuery($out_trade_no);
  563. if(empty($resAr) || !is_array($resAr)){
  564. return app("json")->fail("查询失败");
  565. }
  566. if(empty($resAr["trade_state"])){
  567. return app("json")->fail("查询状态错误");
  568. }
  569. if($resAr["trade_state"]=="NOTPAY"){
  570. return app("json")->fail("未支付");
  571. }
  572. if($resAr["trade_state"]=="REFUND"){
  573. return app("json")->fail("转入退款");
  574. }
  575. if($resAr["trade_state"]=="CLOSED"){
  576. return app("json")->fail("已关闭");
  577. }
  578. if($resAr["trade_state"]=="REVOKED"){
  579. return app("json")->fail("已撤销(付款码支付)");
  580. }
  581. if($resAr["trade_state"]=="USERPAYING"){
  582. return app("json")->fail("用户支付中(付款码支付)");
  583. }
  584. if($resAr["trade_state"]=="PAYERROR"){
  585. return app("json")->fail("支付失败(其他原因,如银行返回失败)");
  586. }
  587. if($resAr["trade_state"]=="ACCEPT"){
  588. return app("json")->fail("已接收,等待扣款");
  589. }
  590. if($resAr["trade_state"]=="SUCCESS"){
  591. if(empty($resAr["payMoney"])){
  592. return app("json")->fail("交易支付成功,但是查询不到金额信息");
  593. }
  594. $payDataInfo = [
  595. 'totalMoney' =>empty($resAr["total_fee"]) ? "未返回" : $resAr["total_fee"]/100,
  596. 'payMoney' =>empty($resAr["cash_fee"]) ? "未返回" : $resAr["cash_fee"]/100,
  597. 'payTradeNo' =>empty($resAr["transaction_id"]) ? "未返回" : $resAr["transaction_id"],
  598. 'outTradeNo' =>empty($resAr["out_trade_no"]) ? "未返回" : $resAr["out_trade_no"],
  599. "tradeStatus"=>empty($resAr["trade_state"]) ? "未返回" : $resAr["trade_state"],
  600. "payTime" =>empty($resAr["time_end"]) ? "未返回" : $resAr["time_end"],
  601. "attach" =>empty($resAr["attach"]) ? "未返回" : $resAr["attach"],
  602. ];
  603. //重新调用支付处理
  604. if(!empty($data["o_id"]) && $data["status"]==0){
  605. $pay_json = json_encode($payDataInfo);
  606. (new OrderLib)->orderPay($payDataInfo["outTradeNo"], $pay_json);
  607. }
  608. return app("json")->success("交易支付成功",$payDataInfo);
  609. }
  610. return app("json")->fail("支付状态未知");
  611. }
  612. return app("json")->fail("查询失败");
  613. }
  614. /**
  615. * 用户模板列表
  616. * @param Request $request
  617. */
  618. public function showTemplateList(Request $request){
  619. $post = UtilService::getMore([
  620. ['page', 1],
  621. ['pageSize', 50],
  622. ['uid', ''],
  623. ['mobile', ''],
  624. ], $request);
  625. $post["pageSize"] = $post["pageSize"]>50 ? 50 : (int)$post["pageSize"];
  626. $post["page"] = $post["page"]<=0 ? 1 : (int)$post["page"];
  627. $where=[];
  628. //用户
  629. if (!empty($post['uid'])){
  630. $where[]=["ut.uid","=",$post['uid']];
  631. }else if (!empty($post['mobile'])) {
  632. $m = Db::name("user")->where("mobile",$post['mobile'])->find();
  633. if(!empty($m)) {
  634. $where[]=["ut.uid","=",$m['uid']];
  635. }
  636. }
  637. $totalCount = (new UserShowTemplate)->alias("ut")->where($where)->count();
  638. $data=null;
  639. if($totalCount>0){
  640. $data = (new UserShowTemplate)
  641. ->field("ut.id,ut.uid,ut.start_time,t.id as show_template_id,t.title,t.price,t.old_price,t.status,t.imgs,t.is_hot,t.is_recommend,t.code,look_count,t.real_sales,t.unreal_sales,ut.is_default,u1.mobile,u1.nickname")
  642. ->alias("ut")
  643. ->join("show_template t", "t.id = ut.show_template_id","left")
  644. ->leftJoin("user u1","u1.uid = ut.uid")
  645. ->where($where)
  646. ->order("ut.id", "desc")
  647. ->page($post["page"], $post["pageSize"])
  648. ->select();
  649. foreach($data as $k=>$v){
  650. $data[$k]["is_use"] = 1;//是否已经购买或者可以使用
  651. $data[$k]["imgs"] = getImageAr($v["imgs"]);
  652. $data[$k]["img"] = empty($data[$k]["imgs"]) ? "" : $data[$k]["imgs"][0];
  653. $data[$k]["sales_count"] = $data[$k]["real_sales"] + $data[$k]["unreal_sales"];
  654. unset($data[$k]["real_sales"]);
  655. unset($data[$k]["unreal_sales"]);
  656. $data[$k]["start_time"] = date("Y-m-d H:i:s",$v["start_time"]);
  657. }
  658. }
  659. $data = empty($data)?[]:$data;
  660. return app('json')->success(["list" => $data, "pageSize" => $post["pageSize"],"page"=>$post["page"],"pageCount"=>$totalCount]);
  661. }
  662. }