Subcard.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. <?php
  2. namespace app\api\controller;
  3. use think\facade\Db;
  4. class Subcard extends MobileMember
  5. {
  6. /**
  7. * 消费卡券绑定相关
  8. */
  9. public function testAbc()
  10. {
  11. $member_model = model('member');
  12. $where = [];
  13. $where['member_id'] = ['=', 1];
  14. // $list = $member_model->where($where)->select();
  15. $list = Db::name('seller')->where([['member_id', '=', 1]])->find();
  16. echo json_encode($list);
  17. }
  18. /**
  19. * 卡绑定的接口
  20. */
  21. public function bindCard()
  22. {
  23. $originParam = $this->request->param();
  24. $param = $originParam['card'];
  25. // ds_json_encode(10001, lang('ds_common_op_fail')); 10000成功, 10001失败
  26. if (empty($param['card_no'])) {
  27. ds_json_encode(10001, '卡号不能为空!');
  28. }
  29. if (empty($param['card_pwd'])) {
  30. ds_json_encode(10001, '卡号密码不能为空');
  31. }
  32. $cardNo = $param['card_no'];
  33. $cardPwd = $param['card_pwd'];
  34. $checkHost = config('ds_config.do_net_card_url');
  35. $url = $checkHost . '/api/card.number/verify';
  36. $checkCard = common_curl($url,
  37. [
  38. 'cardNo' => $cardNo,
  39. 'cardPassword' => $cardPwd,
  40. "userId" => $this->member_info['member_id'],
  41. ]
  42. );
  43. if ($checkCard['code']) {
  44. ds_json_encode(10001, $checkCard['msg']);
  45. }
  46. $resData = $checkCard['data'];
  47. if (!$resData) {
  48. ds_json_encode(10000, '绑定失败!');
  49. }
  50. if (empty($resData['balance']) || $resData['balance'] == 0) {
  51. ds_json_encode(10001, '这是空的卡券');
  52. }
  53. //$checkCard = [
  54. // 'balance' => 121,
  55. // 'amount' => 121,
  56. // 'goodsClassIds' => '5|10|15'
  57. // ];
  58. if (empty($resData['goodsClassIds'])) {
  59. $isLimit = 0; //不限制
  60. $bindCate = '';
  61. } else if ($resData['goodsClassIds'] == 9999) {
  62. $bindCate = 9999;
  63. $isLimit = 1; //有限制
  64. } else {
  65. $bindCate = '';
  66. $cateIds = explode('|', $resData['goodsClassIds']);
  67. if (empty($cateIds)) {
  68. $isLimit = 0;
  69. } else {
  70. $isLimit = 1; //有限制
  71. $bindCate = $this->getBindCate($cateIds);
  72. }
  73. }
  74. if (empty($resData['storeClassIds'])) {
  75. $storeLimit = 0;
  76. $bindStore = '';
  77. } else {
  78. $storeLimit = 1;
  79. $bindStore = $resData['storeClassIds'];
  80. }
  81. $cardInfo = Db::name('sub_card')->where([
  82. ['card_no', '=', $cardNo],
  83. ])->find();
  84. if (!empty($cardInfo)) {
  85. ds_json_encode(10001, '卡号已绑定,请勿重复操作!');
  86. }
  87. $time = time();
  88. $insertData = [
  89. 'card_no' => $cardNo,
  90. 'card_type' => 1,
  91. 'member_id' => $this->member_info['member_id'],
  92. 'balance' => $resData['balance'],
  93. 'worth' => $resData['amount'],
  94. 'start_date' => empty($resData['startDateTime']) ? 'NULL' : strtotime($resData['startDateTime']),
  95. 'end_date' => empty($resData['endDateTime']) ? 'NULL' : strtotime($resData['endDateTime']),
  96. 'goods_cate_ids' => empty($resData['goodsClassIds']) ? '' : $resData['goodsClassIds'],
  97. 'is_limit' => $isLimit, //是否有限制分类使用
  98. 'bind_cate' => $bindCate, //绑定的分类id列表
  99. 'store_limit' => $storeLimit,
  100. 'bind_store' => $bindStore,
  101. 'create_time' => $time,
  102. 'update_time' => $time,
  103. ];
  104. $res = Db::name('sub_card')->insertGetId($insertData);
  105. if ($res) {
  106. if (!$this->member_info['member_cardbind']) {
  107. $member_model = model('member');
  108. $condition = [];
  109. $condition[] = ['member_id', '=', $this->member_info['member_id']];
  110. $result = $member_model->editMember($condition, ['member_cardbind' => 1], $this->member_info['member_id']);
  111. }
  112. $count = Db::name('sub_card')->where(['member_id' => $this->member_info['member_id'], 'card_status' => ['neq', 3]])->count();
  113. ds_json_encode(10000, '绑定成功', ['id' => $res, 'count' => $count]);
  114. } else {
  115. ds_json_encode(10000, '绑定失败!');
  116. }
  117. }
  118. /**
  119. * 获取用户的卡券列表
  120. */
  121. public function cardListByUser()
  122. {
  123. $param = $this->request->param();
  124. $userId = $this->member_info['member_id'];
  125. $page = empty($param['page']) ? 1 : $param['page'];
  126. $limit = empty($param['limit']) ? 10 : $param['limit'];
  127. // $where = $where_or = [];
  128. $where = "member_id = " . $userId;
  129. // $where[] = ['member_id', '=', $userId];
  130. $isAll = 0;
  131. if (!empty($param['state'])) {
  132. if ($param['state'] == 3) {
  133. $where .= ' and (card_status in (3,5) or end_date < ' . time() . ')';
  134. // $where[] = ['card_status', 'in', [3, 5]];
  135. // $where_or[] = ['end_date','<',time()];
  136. } else {
  137. $where .= ' and card_status = ' . $param['state'] . ' and end_date > ' . time();
  138. // $where[] = ['card_status', '=', $param['state']];
  139. // $where[] = ['end_date','>',time()];
  140. }
  141. } else {
  142. $isAll = 1;
  143. $where .= ' and card_status not in (3,5) and end_date > ' . time();
  144. }
  145. $list = Db::name('sub_card')
  146. ->where($where)
  147. // ->whereOr($where_or)
  148. ->page($page)
  149. ->limit($limit)
  150. ->order('create_time desc')
  151. ->select()->toArray();
  152. // if ($this->member_info['member_id'] == 109) {
  153. // var_dump(Db::getLastsql());exit();
  154. // }
  155. $count = Db::name('sub_card')->where($where)->count();
  156. if (!empty($list)) {
  157. $cateIds = [];
  158. foreach ($list as $v) {
  159. if (!empty($v['goods_cate_ids'])) {
  160. $cateData = explode('|', $v['goods_cate_ids']);
  161. if (!empty($cateData)) {
  162. foreach ($cateData as $c) {
  163. $cateIds[] = $c;
  164. }
  165. }
  166. }
  167. }
  168. $showCateList = [];
  169. if (!empty($cateIds)) {
  170. $showCateList = Db::name('goodsclass')
  171. ->where([['gc_id', 'in', $cateIds]])->column('gc_name', 'gc_id');
  172. }
  173. foreach ($list as $k => $v) {
  174. $list[$k]['create_time'] = date('Y-m-d H:i:s', $v['create_time']);
  175. $list[$k]['update_time'] = date('Y-m-d H:i:s', $v['update_time']);
  176. $list[$k]['start_date'] = date('Y-m-d H:i:s', $v['start_date']);
  177. $list[$k]['end_date'] = date('Y-m-d H:i:s', $v['end_date']);
  178. if ($isAll || $param['state'] == 3) {
  179. switch ($v['card_status']) {
  180. case 1:
  181. $list[$k]['status_name'] = '未使用';
  182. break;
  183. case 2:
  184. $list[$k]['status_name'] = '使用中';
  185. break;
  186. case 3:
  187. $list[$k]['status_name'] = '已失效';
  188. break;
  189. case 5:
  190. $list[$k]['status_name'] = '已冻结';
  191. $list[$k]['reasons'] = '卡被系统冻结,请联系负责人';
  192. break;
  193. default:
  194. $list[$k]['status_name'] = '';
  195. break;
  196. }
  197. }
  198. //卡片使用范围展示
  199. if (empty($v['goods_cate_ids'])) {
  200. $list[$k]['using_range'] = '所有';
  201. $list[$k]['is_check'] = 1; //是否可以被用
  202. } else if ($v['bind_cate'] == '9999') {
  203. $list[$k]['using_range'] = '电影票';
  204. $list[$k]['is_check'] = 1; //是否可以被用
  205. } else {
  206. $cateIds = explode('|', $v['goods_cate_ids']);
  207. $rangeList = [];
  208. foreach ($cateIds as $c) {
  209. if (!empty($showCateList[$c])) {
  210. $rangeList[] = $showCateList[$c];
  211. }
  212. }
  213. $list[$k]['using_range'] = str_replace(' ', '', implode('、', $rangeList));
  214. }
  215. }
  216. }
  217. // var_dump(1);exit();
  218. if (count($list) < $limit) {
  219. $hasMore = false;
  220. } else {
  221. $hasMore = true;
  222. }
  223. $data = [
  224. 'count' => $count,
  225. 'list' => $list,
  226. 'hasmore' => $hasMore,
  227. ];
  228. ds_json_encode(10000, '查询成功', $data);
  229. }
  230. /**
  231. * 获取用户的卡券列表(绑卡那个页面用的)
  232. */
  233. public function cardListByMember()
  234. {
  235. $param = $this->request->param();
  236. $is_vir = $param['is_vir'];
  237. $gcIds = [];
  238. $store_id = 0;
  239. if ($is_vir == 3) {
  240. //到店
  241. $store_id = $param['store_id'];
  242. } else {
  243. //商品
  244. if (!empty($param['goods_data'])) {
  245. if ($is_vir == 1) {
  246. //虚拟商品
  247. $goodsList = [$param['goods_data']];
  248. } else {
  249. //实物商品
  250. $goodsData = $param['goods_data'];
  251. $goodsList = [];
  252. if (!empty($goodsData)) {
  253. foreach ($goodsData as $v) {
  254. foreach ($v['goods_list'] as $good) {
  255. $goodsList[] = $good;
  256. }
  257. }
  258. }
  259. }
  260. } else {
  261. $goodsList = [];
  262. }
  263. $gcIds = array_column($goodsList, 'gc_id');
  264. if ($is_vir == 2) {
  265. //购物车中, 所有尚品的分类id
  266. $gcIds = [9999];
  267. }
  268. }
  269. //搜索条件
  270. $userId = $this->member_info['member_id'];
  271. $where = [];
  272. $where[] = ['member_id', '=', $userId];
  273. $isAll = 0;
  274. $where[] = ['card_status', 'in', [1, 2]]; //过滤已失效的卡
  275. $where[] = ['end_date', '>=', time()];
  276. if ($is_vir == 3) {
  277. //到店付款
  278. $class_id = Db::name('store')->where('store_id', $store_id)->value('storeclass_id');
  279. $list = Db::name('sub_card')->where(function ($query) use ($where, $class_id) {
  280. $query->where($where)->where(function ($query) use ($class_id) {
  281. $query->where([['store_limit', '=', 0]])->whereOr(function ($query) use ($class_id) {
  282. if (!empty($class_id)) {
  283. $query->where('find_in_set(:id,bind_store)', ['id' => $class_id]);
  284. }
  285. });
  286. });
  287. })->order('create_time desc')->select()->toArray();
  288. } else {
  289. //正常商品
  290. $list = Db::name('sub_card')->where(function ($query) use ($where, $gcIds) {
  291. $query->where($where)->where(function ($query) use ($gcIds) {
  292. $query->where([['is_limit', '=', 0]])->whereOr(function ($query) use ($gcIds) {
  293. if (!empty($gcIds)) {
  294. foreach ($gcIds as $v) {
  295. $query->where('find_in_set(:id,bind_cate)', ['id' => $v]);
  296. }
  297. }
  298. });
  299. });
  300. })->order('create_time desc')->select()->toArray();
  301. }
  302. if (!empty($list)) {
  303. if ($is_vir == 3) {
  304. //到店
  305. $showStoreIds = [];
  306. //变更$list的格式
  307. foreach ($list as $k => $v) {
  308. if ($v['bind_store']) {
  309. $showStoreIds = array_merge($showStoreIds, explode(',', $v['bind_store'])); //拆分要用的分类id
  310. $list[$k]['bind_store'] = explode(',', $v['bind_store']);
  311. }
  312. }
  313. //展示卡券使用范围的数据
  314. if (!empty($showStoreIds)) {
  315. $showStoreIds = array_values(array_unique($showStoreIds));
  316. $showClassList = Db::name('storeclass')
  317. ->where('storeclass_id', 'in', $showStoreIds)->column('storeclass_name', 'storeclass_id');
  318. }
  319. } else {
  320. //商品
  321. $goodsShowCateIds = [];
  322. //变更$list的格式
  323. foreach ($list as $k => $v) {
  324. if ($v['bind_cate']) {
  325. $list[$k]['bind_cateIds'] = explode(',', $v['bind_cate']); //拆分要用的分类id
  326. }
  327. if ($v['goods_cate_ids']) {
  328. $goodsCateIds = explode('|', $v['goods_cate_ids']); //拆分初始的几个分类id
  329. $list[$k]['goods_cate_ids'] = $goodsCateIds;
  330. $goodsShowCateIds = array_merge($goodsShowCateIds, $goodsCateIds);
  331. }
  332. }
  333. //展示卡券使用范围的数据
  334. if (!empty($goodsShowCateIds)) {
  335. $showCateIds = array_values(array_unique($goodsShowCateIds));
  336. $showCateList = Db::name('goodsclass')
  337. ->where([['gc_id', 'in', $showCateIds]])->column('gc_name', 'gc_id');
  338. }
  339. }
  340. foreach ($list as $k => $v) {
  341. $list[$k]['type'] = $k % 5;
  342. $list[$k]['create_time'] = date('Y-m-d H:i:s', $v['create_time']);
  343. $list[$k]['balance'] = number_format($v['balance'], 2);
  344. $list[$k]['worth'] = number_format($v['worth'], 2);
  345. if ($isAll) {
  346. switch ($v['card_status']) {
  347. case 1:
  348. $list[$k]['status_name'] = '未使用';
  349. break;
  350. case 2:
  351. $list[$k]['status_name'] = '使用中';
  352. break;
  353. default:
  354. $list[$k]['status_name'] = '';
  355. break;
  356. }
  357. }
  358. if ($is_vir == 3) {
  359. //到店
  360. $list[$k]['is_check'] = 1;
  361. if (empty($v['bind_store'])) {
  362. $list[$k]['store_range'] = '所有';
  363. } else {
  364. $bind_store = $v['bind_store'];
  365. $rangeList = [];
  366. foreach ($bind_store as $id) {
  367. if (!empty($showClassList[$id])) {
  368. $rangeList[] = $showClassList[$id];
  369. }
  370. }
  371. $list[$k]['store_range'] = str_replace(' ', '', implode(',', $rangeList));
  372. }
  373. } else {
  374. //卡片使用范围展示
  375. if (empty($v['goods_cate_ids'])) {
  376. $list[$k]['using_range'] = '所有';
  377. $list[$k]['is_check'] = 1; //是否可以被用
  378. } else if ($v['bind_cate'] == '9999') {
  379. $list[$k]['using_range'] = '电影票';
  380. $list[$k]['is_check'] = 1; //是否可以被用
  381. } else {
  382. $cateIds = $v['goods_cate_ids'];
  383. $rangeList = [];
  384. foreach ($cateIds as $c) {
  385. if (!empty($showCateList[$c])) {
  386. $rangeList[] = $showCateList[$c];
  387. }
  388. }
  389. $list[$k]['using_range'] = str_replace(' ', '', implode(',', $rangeList));
  390. $list[$k]['is_check'] = 1;
  391. }
  392. }
  393. }
  394. }
  395. $data = [
  396. 'list' => $list,
  397. ];
  398. ds_json_encode(10000, '查询成功', $data);
  399. }
  400. /**
  401. * 获取默认卡片
  402. */
  403. public function defaultCard()
  404. {
  405. //初始化参数
  406. $goods_id = $this->request->param('goods_id', 0);
  407. $is_vir = $this->request->param('is_vir', 0);
  408. $cate_id = 0;
  409. if ($is_vir == 2) {
  410. //电影票
  411. $cate_id = 9999;
  412. } elseif (!empty($goods_id)) {
  413. $gc_id = Db::name('goods')->where('goods_id', $goods_id)->value('gc_id');
  414. $cate_id = $gc_id ?: 0;
  415. }
  416. //获取卡券数据
  417. $userId = $this->member_info['member_id'];
  418. $where = [];
  419. $where[] = ['member_id', '=', $userId];
  420. $where[] = ['card_status', 'in', [1, 2]]; //过滤已失效的卡
  421. $where[] = ['end_date', '>=', time()];
  422. if ($is_vir == 3) {
  423. $store_id = $this->request->param('store_id', 0);
  424. //到店付款
  425. $class_id = Db::name('store')->where('store_id', $store_id)->value('storeclass_id');
  426. $info = Db::name('sub_card')->where(function ($query) use ($where, $class_id) {
  427. $query->where($where)->where(function ($query) use ($class_id) {
  428. $query->where([['store_limit', '=', 0]])->whereOr(function ($query) use ($class_id) {
  429. if (!empty($class_id)) {
  430. $query->where('find_in_set(:id,bind_store)', ['id' => $class_id]);
  431. }
  432. });
  433. });
  434. })->find();
  435. } else {
  436. //商品
  437. $info = Db::name('sub_card')->where(function ($query) use ($where, $cate_id) {
  438. $query->where($where)->where(function ($query) use ($cate_id) {
  439. $query->where([['is_limit', '=', 0]])->whereOr(function ($query) use ($cate_id) {
  440. $query->where('find_in_set(:id,bind_cate)', ['id' => $cate_id]);
  441. });
  442. });
  443. })->find();
  444. }
  445. //处理参数
  446. $res = '';
  447. if (!empty($info)) {
  448. $res = [
  449. 'card_id' => (string)$info['id'],
  450. 'card_balance' => sprintf("%.2f", $info['balance']),
  451. 'card_total_balance' => sprintf("%.2f", $info['worth']),
  452. 'card_content' => $info['card_no'],
  453. ];
  454. }
  455. $data = [
  456. 'cardInfo' => $res,
  457. ];
  458. ds_json_encode(10000, '查询成功', $data);
  459. }
  460. /**
  461. * 卡片详情接口
  462. */
  463. public function cardInfoByUser()
  464. {
  465. $param = $this->request->param();
  466. if (empty($param['id'])) {
  467. ds_json_encode(10001, '卡券已被下架,请刷新后重试!');
  468. }
  469. $userId = $this->member_info['member_id'];
  470. // echo $userId;exit;
  471. $id = $param['id'];
  472. $where = [];
  473. $where[] = ['id', '=', $id];
  474. $where[] = ['member_id', '=', $userId];
  475. $info = Db::name('sub_card')->where($where)->find();
  476. if (!empty($info)) {
  477. $info['create_time'] = date('Y-m-d H:i:s', $info['create_time']);
  478. $info['end_date'] = date('Y-m-d H:i:s', $info['end_date']);
  479. } else {
  480. ds_json_encode(10001, '卡券已失效!');
  481. }
  482. $info['expense'] = $info['worth'] - $info['balance'];
  483. if (empty($info['goods_cate_ids'])) {
  484. $info['using_range'] = '所有';
  485. $info['is_check'] = 1; //是否可以被用
  486. } else if ($info['bind_cate'] == '9999') {
  487. $info['using_range'] = '电影票';
  488. $info['is_check'] = 1; //是否可以被用
  489. } else {
  490. $cateIds = explode('|', $info['goods_cate_ids']);
  491. $showCateList = [];
  492. if (!empty($cateIds)) {
  493. $showCateList = Db::name('goodsclass')
  494. ->where([['gc_id', 'in', $cateIds]])->column('gc_name', 'gc_id');
  495. }
  496. $rangeList = [];
  497. foreach ($cateIds as $c) {
  498. if (!empty($showCateList[$c])) {
  499. $rangeList[] = $showCateList[$c];
  500. }
  501. }
  502. $info['using_range'] = str_replace(' ', '', implode('、', $rangeList));
  503. }
  504. if (empty($info['bind_store'])) {
  505. $info['store_range'] = '所有';
  506. } else {
  507. $storeIds = explode(',', $info['bind_store']);
  508. $showStoreList = Db::name('storeclass')->where('storeclass_id', 'in', $storeIds)->column('storeclass_name', 'storeclass_id');
  509. $storeRangeList = [];
  510. foreach ($storeIds as $id) {
  511. if (!empty($showStoreList[$id])) {
  512. $storeRangeList[] = $showStoreList[$id];
  513. }
  514. }
  515. $info['store_range'] = str_replace(' ', '', implode('、', $storeRangeList));
  516. }
  517. ds_json_encode(10000, '查询成功', ['info' => $info]);
  518. }
  519. /**
  520. * 卡片消费记录
  521. */
  522. public function expenseList()
  523. {
  524. $param = $this->request->param();
  525. $page = empty($param['page']) ? 1 : $param['page'];
  526. $limit = empty($param['limit']) ? 10 : $param['limit'];
  527. $member_id = $this->member_info['member_id'];
  528. $card_id = $param['card_id'];
  529. if (empty($card_id)) {
  530. ds_json_encode(10001, '卡券不存在或已下架!');
  531. }
  532. $where['expense_status'] = [1, 3];
  533. $where['card_id'] = $card_id;
  534. $where['member_id'] = $member_id;
  535. $count = Db::name('sub_card_expense')->where($where)->count();
  536. $list = Db::name('sub_card_expense')->where($where)
  537. ->page($page)
  538. ->limit($limit)->order('id desc')
  539. ->select()->toArray();
  540. if (count($list) < $limit) {
  541. $hasMore = false;
  542. } else {
  543. $hasMore = true;
  544. }
  545. $order = [];
  546. if (!empty($list)) {
  547. foreach ($list as $key => $value) {
  548. $condition = [];
  549. $condition['order_id'] = $value['order_id'];
  550. $is_vir = $value['is_vir'];
  551. if ($is_vir == 1) {
  552. $Vrorder = model('Vrorder');
  553. $order = $Vrorder->getVrorderInfo($condition);
  554. if (empty($order)) {
  555. continue;
  556. }
  557. $order['goods_image_url'] = goods_cthumb($order['goods_image'], 240, $order['store_id']);
  558. } elseif ($is_vir == 0) {
  559. $Order = model('Order');
  560. $order = $Order->getOrderInfo($condition, ['order_goods']);
  561. if (empty($order)) {
  562. continue;
  563. }
  564. if (count($order['extend_order_goods']) > 0) {
  565. $goods = $order['extend_order_goods'][0];
  566. $order['goods_name'] = $goods['goods_name'];
  567. $order['goods_image_url'] = goods_cthumb($goods['goods_image'], 240, $order['store_id']);
  568. }
  569. $state_text_arr = [0 => '已取消', 10 => '未支付', 14 => '待付定金', 15 => '待付定金', 20 => '已支付', 30 => '已发货', 35 => '待自提', 40 => '已收货,交易成功'];
  570. $order['order_state_text'] = isset($state_text_arr[$order['order_state']]) ? $state_text_arr[$order['order_state']] : $order['order_state'];
  571. } elseif ($is_vir == 2) {
  572. $TicketOrder = model('TicketOrder');
  573. $order = $TicketOrder->detail(['id' => $value['order_id']]);
  574. $order['goods_name'] = '电影票';
  575. $order['goods_image_url'] = 'https://www.jucai.gov.cn/storage/ueditor/uploads/image/2022/02/07/d29a7d4b33277f445b2826c434374d06.jpg';
  576. if (empty($order)) {
  577. continue;
  578. }
  579. }
  580. $list[$key]['expense_time'] = date('Y-m-d H:i:s', $value['expense_time']);
  581. $list[$key]['orderInfo']['order_name'] = $order['goods_name'];
  582. $list[$key]['orderInfo']['order_image'] = $order['goods_image_url'];
  583. $list[$key]['image'] = $order['goods_image_url'];
  584. $list[$key]['real_amount'] = $value['order_amount'];
  585. $list[$key]['expense_amount'] = $value['expense_amount'];
  586. $list[$key]['order_amount'] = $value['order_amount'];
  587. $list[$key]['order_state'] = $order['order_state'];
  588. $list[$key]['order_status_name'] = $order['order_state_text'];
  589. }
  590. }
  591. ds_json_encode(10000, '查询成功', ['count' => $count, 'list' => $list, 'hasmore' => $hasMore]);
  592. }
  593. /**
  594. * 获取绑定的分类数据
  595. */
  596. private function getBindCate($cateIds)
  597. {
  598. //拿到的是一个id的数组列表
  599. $allCate = [];
  600. if (!empty($cateIds)) {
  601. foreach ($cateIds as $v) {
  602. $allCate[] = $v;
  603. $cateData = $this->get_child_all($v);
  604. if (!empty($cateData)) {
  605. $cateList = $cateData['class_list'];
  606. }
  607. if (!empty($cateList)) {
  608. foreach ($cateList as $v1) {
  609. $allCate[] = $v1['gc_id'];
  610. if (!empty($v1['child'])) {
  611. $childIds = array_column($v1['child'], 'gc_id');
  612. if (!empty($childIds)) {
  613. foreach ($childIds as $v2) {
  614. $allCate[] = $v2;
  615. }
  616. }
  617. }
  618. }
  619. }
  620. }
  621. }
  622. if (!empty($allCate)) {
  623. $bindCate = implode(',', $allCate);
  624. } else {
  625. $bindCate = '';
  626. }
  627. return $bindCate;
  628. }
  629. /**
  630. * 获取全部子集分类
  631. */
  632. public function get_child_all($gcId)
  633. {
  634. $gc_id = $gcId;
  635. $data = [];
  636. if ($gc_id > 0) {
  637. $prefix = 'api-goodsclass-all-';
  638. $data = rcache($gc_id, $prefix);
  639. if (empty($data)) {
  640. $data = $this->_get_class_list($gc_id);
  641. if (!empty($data['class_list'])) {
  642. foreach ($data['class_list'] as $key => $val) {
  643. $d = $this->_get_class_list($val['gc_id']);
  644. $data['class_list'][$key]['child'] = $d['class_list'];
  645. }
  646. }
  647. wcache($gc_id, $data, $prefix, 3600);
  648. }
  649. }
  650. return $data;
  651. }
  652. /**
  653. * 根据分类编号返回下级分类列表
  654. */
  655. private function _get_class_list($gc_id)
  656. {
  657. $goods_class_array = model('goodsclass')->getGoodsclassForCacheModel();
  658. $goods_class['child'] = '';
  659. if (!empty($goods_class_array[$gc_id])) {
  660. $goods_class = $goods_class_array[$gc_id];
  661. }
  662. if (empty($goods_class['child'])) {
  663. //无下级分类返回0
  664. return ['class_list' => []];
  665. } else {
  666. //返回下级分类列表
  667. $class_list = [];
  668. $child_class_string = $goods_class_array[$gc_id]['child'];
  669. $child_class_array = explode(',', $child_class_string);
  670. foreach ($child_class_array as $child_class) {
  671. $class_item = [];
  672. $class_item['gc_id'] = '';
  673. $class_item['gc_name'] = '';
  674. $class_item['gc_id'] .= $goods_class_array[$child_class]['gc_id'];
  675. $class_item['gc_name'] .= $goods_class_array[$child_class]['gc_name'];
  676. $class_item['image'] = ds_get_pic(ATTACH_COMMON, $goods_class_array[$child_class]['gc_image']);
  677. $class_list[] = $class_item;
  678. }
  679. return ['class_list' => $class_list];
  680. }
  681. }
  682. }