Member.php 27 KB

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