BalanceRecordsController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /****************************************************************
  3. * Author: libaojia
  4. * Date: 2017/7/11 下午9:25
  5. * Email: livsyitian@163.com
  6. * QQ: 995265288
  7. * User: 芸众商城 www.yunzshop.com
  8. ****************************************************************/
  9. namespace app\backend\modules\finance\controllers;
  10. use app\backend\modules\finance\models\Balance;
  11. use app\common\components\BaseController;
  12. use app\common\facades\Setting;
  13. use app\common\helpers\PaginationHelper;
  14. use app\common\services\credit\ConstService;
  15. use app\common\services\ExportService;
  16. use app\common\services\member\group\GroupService;
  17. use app\common\services\member\level\LevelService;
  18. class BalanceRecordsController extends BaseController
  19. {
  20. const PAGE_SIZE = 20;
  21. public function index()
  22. {
  23. $source_name = $this->getServiceType();
  24. $source_name_show = [];
  25. foreach ($source_name as $key => $item) {
  26. array_push($source_name_show, [
  27. 'id' => $key,
  28. 'value' => $item,
  29. ]);
  30. }
  31. return view('finance.balance.balanceRecords', [
  32. 'head_img' => yz_tomedia($this->getShopSet()['headimg']),
  33. 'source_name' => json_encode($source_name_show),
  34. 'member_levels' => json_encode($this->getMemberList()),
  35. 'member_groups' => json_encode($this->getMemberGroup()),
  36. ])->render();
  37. }
  38. public function search()
  39. {
  40. $records = Balance::records()->where('change_money', '!=', 0);
  41. $search = $this->getPostSearch();
  42. if (request()->ajax()) {
  43. $records = $records->search($search);
  44. if ($search['member']||$search['member_level']||$search['member_group']) {
  45. $records = $records->searchMember($search);
  46. }
  47. }
  48. $amount = $records->sum('change_money');
  49. $pageList = $records->orderBy('yz_balance.id', 'desc')->paginate(static::PAGE_SIZE);
  50. return $this->successJson('ok', [
  51. 'list' => $pageList,
  52. 'amount' => $amount,
  53. ]);
  54. }
  55. public function export()
  56. {
  57. $file_name = date('Ymdhis', time()) . '余额明细导出';
  58. $search = $this->getPostSearch();
  59. $list = Balance::records()->search($search)->searchMember($search);
  60. $export_page = request()->export_page ? request()->export_page : 1;
  61. $export_model = new ExportService($list, $export_page);
  62. $export_data[0] = ['时间', '会员ID', '会员姓名', '会员手机号', '会员等级', '会员分组', '订单号', '业务类型', '收入/支出', '变动前余额', '变动余额', '变动后余额', '备注'];
  63. $shopSet = $this->getShopSet();
  64. $list = $list->get();
  65. foreach ($list as $key => $item) {
  66. if ($item->member) {
  67. $member_id = $item->member->uid;
  68. $member_name = $item->member->realname ?: $item->member->nickname;
  69. $member_mobile = $item->member->mobile;
  70. $member_level = $shopSet['level_name'];
  71. $member_group = '无分组';
  72. if ($item->member->yzMember->group) {
  73. $member_group = $item->member->yzMember->group->group_name ?: '无分组';
  74. }
  75. if ($item->member->yzMember->level) {
  76. $member_level = $item->member->yzMember->level->level_name ?: $shopSet['level_name'];
  77. }
  78. } else {
  79. $member_id = '';
  80. $member_name = '';
  81. $member_mobile = '';
  82. $member_level = $shopSet['level_name'];
  83. $member_group = '无分组';
  84. }
  85. $export_data[$key + 1] = [
  86. $item->created_at,
  87. $member_id,
  88. $member_name,
  89. $member_mobile,
  90. $member_level,
  91. $member_group,
  92. $item->serial_number,
  93. $item->service_type_name,
  94. $item->type_name,
  95. $item->old_money,
  96. $item->change_money,
  97. $item->new_money,
  98. $item->remark
  99. ];
  100. }
  101. $export_model->export($file_name, $export_data, 'finance.balance-records.export');
  102. // 商城更新,无法使用
  103. // \Excel::create($file_name, function ($excel) use ($export_data) {
  104. // // Set the title
  105. // $excel->setTitle('Office 2005 XLSX Document');
  106. //
  107. // // Chain the setters
  108. // $excel->setCreator('芸众商城')
  109. // ->setLastModifiedBy("芸众商城")
  110. // ->setSubject("Office 2005 XLSX Test Document")
  111. // ->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")
  112. // ->setKeywords("office 2005 openxml php")
  113. // ->setCategory("report file");
  114. //
  115. // $excel->sheet('info', function ($sheet) use ($export_data) {
  116. // $sheet->rows($export_data);
  117. // });
  118. //
  119. //
  120. // })->export('xls');
  121. }
  122. private function getPostSearch()
  123. {
  124. return \YunShop::request()->search;
  125. }
  126. private function getShopSet()
  127. {
  128. return Setting::get('shop.member');
  129. }
  130. private function getServiceType()
  131. {
  132. return (new ConstService(''))->sourceComment();
  133. }
  134. private function getMemberList()
  135. {
  136. return LevelService::getMemberLevelList();
  137. }
  138. private function getMemberGroup()
  139. {
  140. return GroupService::getMemberGroupList();
  141. }
  142. }