Memberrecharge0625.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\memberrecharge\shop\controller;
  11. use addon\memberrecharge\model\MemberRechargeCard as MemberRechargeCardModel;
  12. use addon\memberrecharge\model\Memberrecharge as MemberRechargeModel;
  13. use addon\memberrecharge\model\MemberrechargeOrder as MemberRechargeOrderModel;
  14. use app\shop\controller\BaseShop;
  15. /**
  16. * 会员充值
  17. */
  18. class Memberrecharge extends BaseShop
  19. {
  20. public function __construct()
  21. {
  22. parent::__construct();
  23. $this->replace = [
  24. 'MEMBERRECHARGE_CSS' => __ROOT__ . '/addon/memberrecharge/shop/view/public/css',
  25. 'MEMBERRECHARGE_JS' => __ROOT__ . '/addon/memberrecharge/shop/view/public/js',
  26. 'MEMBERRECHARGE_IMG' => __ROOT__ . '/addon/memberrecharge/shop/view/public/img',
  27. ];
  28. }
  29. //套餐字段
  30. protected $field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id,sale_num,create_time,status';
  31. //开卡字段
  32. protected $card_field = 'card_id,recharge_id,card_account,cover_img,face_value,point,growth,coupon_id,buy_price,member_img,nickname,order_id,order_no,from_type,use_status,create_time,use_time';
  33. //订单字段
  34. protected $order_field = 'order_id,recharge_name,recharge_id,order_no,out_trade_no,member_id,cover_img,face_value,buy_price,point,growth,coupon_id,price,pay_type,pay_type_name,status,create_time,pay_time,member_img,nickname,order_from_name,order_from';
  35. //优惠券字段
  36. protected $coupon_field = 'coupon_type_id,coupon_name,money,count,lead_count,max_fetch,at_least,end_time,image,validity_type,fixed_term';
  37. /**
  38. * 充值会员套餐列表
  39. * @return array|mixed
  40. */
  41. public function lists()
  42. {
  43. $model = new MemberRechargeModel();
  44. //获取续签信息
  45. if (request()->isAjax()) {
  46. $status = input('status', '');//套餐状态
  47. $condition = [];
  48. if ($status) {
  49. $condition[] = [ 'status', '=', $status ];
  50. }
  51. $condition[] = [ 'site_id', '=', $this->site_id ];
  52. $page = input('page', 1);
  53. $page_size = input('page_size', PAGE_LIST_ROWS);
  54. $list = $model->getMemberRechargePageList($condition, $page, $page_size, 'recharge_id desc', $this->field);
  55. return $list;
  56. } else {
  57. $config = $model->getConfig($this->site_id);
  58. $config = $config[ 'data' ];
  59. $this->assign("config", $config);
  60. return $this->fetch('memberrecharge/lists');
  61. }
  62. }
  63. /**
  64. * 添加充值套餐
  65. * @return array|mixed
  66. */
  67. public function add()
  68. {
  69. if (request()->isAjax()) {
  70. $data = [
  71. 'site_id' => $this->site_id,
  72. 'recharge_name' => input('recharge_name', ''),//套餐名称
  73. 'cover_img' => input('cover_img', ''),//封面
  74. 'face_value' => input('face_value', ''),//面值
  75. 'buy_price' => input('buy_price', ''),//价格
  76. 'point' => input('point', ''),//赠送积分
  77. 'growth' => input('growth', ''),//赠送成长值
  78. 'coupon_id' => input('coupon_id', '')//优惠券id
  79. ];
  80. $model = new MemberRechargeModel();
  81. return $model->addMemberRecharge($data);
  82. } else {
  83. return $this->fetch('memberrecharge/add');
  84. }
  85. }
  86. /**
  87. * 编辑充值套餐
  88. * @return array|mixed
  89. */
  90. public function edit()
  91. {
  92. $rechargeModel = new MemberRechargeModel();
  93. $recharge_id = input('recharge_id', '');
  94. if (request()->isAjax()) {
  95. $data = [
  96. 'recharge_name' => input('recharge_name', ''),//套餐名称
  97. 'cover_img' => input('cover_img', ''),//封面
  98. 'face_value' => input('face_value', ''),//面值
  99. 'buy_price' => input('buy_price', ''),//价格
  100. 'point' => input('point', ''),//赠送积分
  101. 'growth' => input('growth', ''),//赠送成长值
  102. 'coupon_id' => input('coupon_id', '')//优惠券id
  103. ];
  104. return $rechargeModel->editMemberRecharge(
  105. [
  106. [ 'recharge_id', '=', $recharge_id ],
  107. [ 'site_id', '=', $this->site_id ]
  108. ], $data);
  109. } else {
  110. //获取套餐详情
  111. $recharge = $rechargeModel->getMemberRechargeInfo(
  112. [
  113. [ 'recharge_id', '=', $recharge_id ],
  114. [ 'site_id', '=', $this->site_id ]
  115. ],
  116. $this->field
  117. );
  118. if (empty($recharge[ 'data' ])) $this->error('未获取到套餐数据', addon_url('memberrecharge://shop/memberrecharge/lists'));
  119. $this->assign('recharge', $recharge);
  120. return $this->fetch('memberrecharge/edit');
  121. }
  122. }
  123. /**
  124. * 充值套餐详情
  125. * @return mixed
  126. */
  127. public function detail()
  128. {
  129. $recharge_model = new MemberRechargeModel();
  130. $recharge_id = input('recharge_id', '');
  131. //获取套餐详情
  132. $info = $recharge_model->getMemberRechargeInfo(
  133. [
  134. [ 'recharge_id', '=', $recharge_id ],
  135. [ 'site_id', '=', $this->site_id ]
  136. ],
  137. $this->field
  138. )[ 'data' ] ?? [];
  139. if (empty($info)) $this->error('未获取到套餐数据', addon_url('memberrecharge://shop/memberrecharge/lists'));
  140. $this->assign('info', $info);
  141. return $this->fetch('memberrecharge/detail');
  142. }
  143. /**
  144. * 停用充值套餐
  145. * @return array
  146. */
  147. public function invalid()
  148. {
  149. $model = new MemberRechargeModel();
  150. $recharge_id = input('recharge_id', '');
  151. $data = [ 'status' => 2 ];
  152. $condition = [ [ 'recharge_id', '=', $recharge_id ] ];
  153. $res = $model->editMemberRecharge($condition, $data);
  154. return $res;
  155. }
  156. /**
  157. * 开启充值套餐
  158. * @return array
  159. */
  160. public function open()
  161. {
  162. $model = new MemberRechargeModel();
  163. $recharge_id = input('recharge_id', '');
  164. $data = [ 'status' => 1 ];
  165. $condition = [ [ 'recharge_id', '=', $recharge_id ] ];
  166. $res = $model->editMemberRecharge($condition, $data);
  167. return $res;
  168. }
  169. /**
  170. * 删除充值套餐
  171. * @return mixed
  172. */
  173. public function delete()
  174. {
  175. $model = new MemberRechargeModel();
  176. $recharge_id = input('recharge_id', '');
  177. return $model->deleteMemberRecharge([ [ 'recharge_id', '=', $recharge_id ] ]);
  178. }
  179. /**
  180. * 开卡列表
  181. * @return array|mixed
  182. */
  183. public function cardLists()
  184. {
  185. $recharge_id = input('recharge_id', '');
  186. $page_size = input('page_size', PAGE_LIST_ROWS);
  187. $model = new MemberRechargeCardModel();
  188. $condition[] = [ 'site_id', '=', $this->site_id ];
  189. $condition[] = [ 'recharge_id', '=', $recharge_id ];
  190. //获取续签信息
  191. if (request()->isAjax()) {
  192. $status = input('use_status', '');//使用状态
  193. if ($status) {
  194. $condition[] = [ 'use_status', '=', $status ];
  195. }
  196. $page = input('page', 1);
  197. $list = $model->getMemberRechargeCardPageList($condition, $page, $page_size, 'card_id desc', $this->card_field);
  198. return $list;
  199. } else {
  200. $page_size = input('page_size', PAGE_LIST_ROWS);
  201. $list = $model->getMemberRechargeCardPageList($condition, 1, $page_size, 'card_id desc', $this->card_field);
  202. $this->assign('list', $list);
  203. $this->assign('recharge_id', $recharge_id);
  204. return $this->fetch('memberrecharge/card_lists');
  205. }
  206. }
  207. /**
  208. * 开卡详情
  209. * @return mixed
  210. */
  211. public function cardDetail()
  212. {
  213. $model = new MemberRechargeCardModel();
  214. $card_id = input('card_id', '');
  215. //获取详情
  216. $info = $model->getMemberRechargeCardInfo(
  217. [ [ 'card_id', '=', $card_id ] ],
  218. $this->card_field
  219. )[ 'data' ] ?? [];
  220. $this->assign('info', $info);
  221. return $this->fetch('memberrecharge/card_detail');
  222. }
  223. /**
  224. * 订单列表
  225. * @return array|mixed
  226. */
  227. public function orderLists()
  228. {
  229. $condition[] = [ 'site_id', '=', $this->site_id ];
  230. $recharge_id = input('recharge_id', 0);
  231. if ($recharge_id > 0) {
  232. $condition[] = [ 'recharge_id', '=', $recharge_id ];
  233. }
  234. $model = new MemberRechargeOrderModel();
  235. //获取续签信息
  236. if (request()->isAjax()) {
  237. $page = input('page', 1);
  238. $page_size = input('page_size', PAGE_LIST_ROWS);
  239. $nickname = input('nickname', '');
  240. $start_time = input('start_time', '');
  241. $end_time = input('end_time', '');
  242. $order_no = input('order_no', '');
  243. $condition[] = [ 'status', '=', 2 ];
  244. if ($nickname) {
  245. $condition[] = [ 'nickname', 'like', '%' . $nickname . '%' ];
  246. }
  247. if ($order_no) {
  248. $condition[] = [ 'order_no', '=', $order_no ];
  249. }
  250. //支付时间
  251. if (!empty($start_time) && empty($end_time)) {
  252. $condition[] = [ "pay_time", ">=", date_to_time($start_time) ];
  253. } elseif (empty($start_time) && !empty($end_time)) {
  254. $condition[] = [ "pay_time", "<=", date_to_time($end_time) ];
  255. } elseif (!empty($start_time) && !empty($end_time)) {
  256. $condition[] = [ 'pay_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  257. }
  258. $list = $model->getMemberRechargeOrderPageList($condition, $page, $page_size, 'order_id desc', $this->order_field);
  259. return $list;
  260. } else {
  261. $this->assign('recharge_id', $recharge_id);
  262. $order_num = $model->getOrderCount([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 2 ] ], 'order_id')[ 'data' ];
  263. $this->assign('order_num', $order_num);
  264. $order_money = $model->getOrderSum([ [ 'site_id', '=', $this->site_id ], [ 'status', '=', 2 ] ], 'price')[ 'data' ];
  265. $this->assign('order_money', $order_money);
  266. return $this->fetch('memberrecharge/order_lists', [], $this->replace);
  267. }
  268. }
  269. /**
  270. * 订单详情
  271. * @return mixed
  272. */
  273. public function orderDetail()
  274. {
  275. $model = new MemberRechargeOrderModel();
  276. $order_id = input('order_id', '');
  277. //获取详情
  278. $info = $model->getMemberRechargeOrderInfo(
  279. [
  280. [ 'order_id', '=', $order_id ],
  281. [ 'site_id', '=', $this->site_id ]
  282. ],
  283. $this->order_field
  284. )[ 'data' ] ?? [];
  285. if (empty($info)) $this->error('未获取到订单数据', addon_url('memberrecharge://shop/memberrecharge/order_lists'));
  286. $this->assign('info', $info);
  287. return $this->fetch('memberrecharge/order_detail');
  288. }
  289. /**
  290. * 是否开启充值
  291. * @return mixed
  292. */
  293. public function setConfig()
  294. {
  295. $model = new MemberRechargeModel();
  296. $is_use = input('is_use', 0);
  297. $data = [];
  298. return $model->setConfig($data, $is_use, $this->site_id);
  299. }
  300. public function exportRecharge()
  301. {
  302. $recharge_id = input("recharge_id", "");//订单状态
  303. $condition[] = [ "recharge_id", "=", $recharge_id ];
  304. $model = new MemberRechargeCardModel();
  305. $list = $model->getMemberRechargeCardPageList($condition, 1, 0, 'card_id desc', "*");
  306. if (empty($list[ 'data' ][ 'list' ])) {
  307. return $this->error("未查询到数据");
  308. }
  309. // 实例化excel
  310. $phpExcel = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
  311. $phpExcel->getProperties()->setTitle("充值记录");
  312. $phpExcel->getProperties()->setSubject("充值记录");
  313. // 对单元格设置居中效果
  314. $phpExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  315. $phpExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  316. $phpExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  317. $phpExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  318. $phpExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  319. $phpExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  320. $phpExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  321. $phpExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  322. $phpExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  323. $phpExcel->getActiveSheet()->getStyle('J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  324. $phpExcel->getActiveSheet()->getStyle('K')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  325. $phpExcel->getActiveSheet()->getStyle('L')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  326. //单独添加列名称
  327. $phpExcel->setActiveSheetIndex(0);
  328. $phpExcel->getActiveSheet()->setCellValue('A1', '店铺名称');//可以指定位置
  329. $phpExcel->getActiveSheet()->setCellValue('B1', '充值卡号');
  330. $phpExcel->getActiveSheet()->setCellValue('C1', '套餐名称');
  331. $phpExcel->getActiveSheet()->setCellValue('D1', '面值');
  332. $phpExcel->getActiveSheet()->setCellValue('E1', '积分');
  333. $phpExcel->getActiveSheet()->setCellValue('F1', '成长值');
  334. $phpExcel->getActiveSheet()->setCellValue('G1', '购买金额');
  335. $phpExcel->getActiveSheet()->setCellValue('H1', '会员昵称');
  336. $phpExcel->getActiveSheet()->setCellValue('I1', '订单编号');
  337. $phpExcel->getActiveSheet()->setCellValue('J1', '使用状态');
  338. $phpExcel->getActiveSheet()->setCellValue('K1', '创建时间');
  339. $phpExcel->getActiveSheet()->setCellValue('L1', '使用时间');
  340. //循环添加数据(根据自己的逻辑)
  341. foreach ($list[ 'data' ][ 'list' ] as $k => $v) {
  342. $i = $k + 2;
  343. if ($v[ 'use_status' ] == 1) {
  344. $status_name = "未使用";
  345. } else {
  346. $status_name = "已使用";
  347. }
  348. $phpExcel->getActiveSheet()->setCellValue('A' . $i, $v[ 'site_name' ]);
  349. $phpExcel->getActiveSheet()->setCellValue('B' . $i, $v[ 'card_account' ]);
  350. $phpExcel->getActiveSheet()->setCellValue('C' . $i, $v[ 'recharge_name' ]);
  351. $phpExcel->getActiveSheet()->setCellValue('D' . $i, $v[ 'face_value' ]);
  352. $phpExcel->getActiveSheet()->setCellValue('E' . $i, $v[ 'point' ]);
  353. $phpExcel->getActiveSheet()->setCellValue('F' . $i, $v[ 'growth' ]);
  354. $phpExcel->getActiveSheet()->setCellValue('G' . $i, $v[ 'buy_price' ]);
  355. $phpExcel->getActiveSheet()->setCellValue('H' . $i, $v[ 'nickname' ]);
  356. $phpExcel->getActiveSheet()->setCellValue('I' . $i, ' ' . (string) $v[ 'order_no' ]);
  357. $phpExcel->getActiveSheet()->setCellValue('J' . $i, $status_name);
  358. $phpExcel->getActiveSheet()->setCellValue('K' . $i, date('Y-m-d', $v[ 'create_time' ]));
  359. $phpExcel->getActiveSheet()->setCellValue('L' . $i, date('Y-m-d', $v[ 'use_time' ]));
  360. }
  361. // 重命名工作sheet
  362. $phpExcel->getActiveSheet()->setTitle('充值记录');
  363. // 设置第一个sheet为工作的sheet
  364. $phpExcel->setActiveSheetIndex(0);
  365. // 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx
  366. $objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($phpExcel, 'Xlsx');
  367. $file = date('Y年m月d日-充值记录表', time()) . '.xlsx';
  368. $objWriter->save($file);
  369. header("Content-type:application/octet-stream");
  370. $filename = basename($file);
  371. header("Content-Disposition:attachment;filename = " . $filename);
  372. header("Accept-ranges:bytes");
  373. header("Accept-length:" . filesize($file));
  374. readfile($file);
  375. unlink($file);
  376. exit;
  377. }
  378. }