WriteOffController.php 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace app\admin\controller\member;
  3. use app\controller\Curd;
  4. use app\model\MemberBenefit;
  5. use app\model\RuleAddedComponent;
  6. use app\model\SysUser;
  7. use support\Db;
  8. use support\Request;
  9. class WriteOffController extends Curd
  10. {
  11. public function __construct()
  12. {
  13. // $this->model = new ;
  14. }
  15. public function list(Request $request)
  16. {
  17. $page = $request->get('page', 1);
  18. $pageSize = $request->get('pageSize', 50);
  19. $keywords = $request->get('keywords','');
  20. $date = $request->get('date',[]);
  21. $appointmentList = Db::table('appointment')
  22. ->leftJoin('member','member.member_id' ,'=','appointment.join_appointment_member_id')
  23. ->leftJoin('member_cert','member_cert.join_cert_member_id' ,'=','appointment.join_appointment_member_id')
  24. ->select('appointment.appointment_id as quota_id', 'appointment.join_appointment_member_id as member_id', 'appointment.appointment_done_json as used_json', 'appointment.appointment_done_datetime as used_time','appointment.join_appointment_member_benefit_id as benefit_id',
  25. 'member.member_mobile','member_cert.member_cert_name'
  26. )
  27. ->when($keywords != '',function($query) use ($keywords){
  28. $query->where('member.member_mobile','like','%'.$keywords.'%');
  29. })->when(!empty($date),function($query) use ($date){
  30. $date[0] = date('Y-m-d',strtotime($date[0])).' 00:00:00';
  31. $date[1] = date('Y-m-d',strtotime($date[1])). ' 23:59:59';
  32. $query->whereBetween('appointment.appointment_done_datetime',$date);
  33. })
  34. ->where('appointment_status', 'DONE');
  35. $quotaList = Db::table('member_quota')
  36. ->leftJoin('member','member.member_id' ,'=','member_quota.join_quota_member_id')
  37. ->leftJoin('member_cert','member_cert.join_cert_member_id' ,'=','member_quota.join_quota_member_id')
  38. ->select('member_quota.member_quota_id as quota_id', 'member_quota.join_quota_member_id as member_id', 'member_quota.member_quota_used_json as used_json', "member_quota.member_quota_extend_json->writeOffTime as used_time","member_quota.join_member_rule_added_component_id as benefit_id",
  39. 'member.member_mobile','member_cert.member_cert_name')
  40. ->when($keywords != '',function($query) use ($keywords){
  41. $query->where('member.member_mobile','like','%'.$keywords.'%');
  42. })->when(!empty($date),function($query) use ($date){
  43. $date[0] = date('Y-m-d',strtotime($date[0])).' 00:00:00';
  44. $date[1] = date('Y-m-d',strtotime($date[1])). ' 23:59:59';
  45. $query->whereBetween('member_quota.member_quota_extend_json->writeOffTime',$date);
  46. })
  47. ->where('member_quota_status', 'USED')
  48. // ->toSql();
  49. ->union($appointmentList);
  50. $total = $quotaList->count('*');
  51. $quotaList = $quotaList->orderBy('used_time', 'DESC')
  52. ->forPage($page, $pageSize)
  53. ->get();
  54. $rows = [];
  55. foreach ($quotaList as $item) {
  56. $username = '';
  57. $premises = '';
  58. $benefitName = '';
  59. if (!empty($item->used_json)) {
  60. $usedJson = json_decode($item->used_json,true);
  61. if (isset($usedJson['charge']) && isset($usedJson['charge']['charge_user_id'])){
  62. $username = SysUser::where('user_id',$usedJson['charge']['charge_user_id'])->value('user_name');
  63. }
  64. if (isset($usedJson['charge']) && isset($usedJson['charge']['charge_premises'])){
  65. $premises = $usedJson['charge']['charge_premises'];
  66. }
  67. if (substr($item->quota_id,0,2) == 'AP'){
  68. $benefitName = MemberBenefit::where('member_benefit_id',$item->benefit_id)->value('member_benefit_name');
  69. }elseif (substr($item->quota_id,0,2) == 'MQ'){
  70. $benefitName = RuleAddedComponent::where('rule_added_component_id',$item->benefit_i)->value('rule_added_component_name');
  71. }
  72. }
  73. $rows[] = [
  74. 'quota_id' => $item->quota_id,
  75. 'username' => $username,
  76. 'premises' => $premises,
  77. 'benefit_name' => $benefitName,
  78. 'used_time'=>$item->used_time,
  79. 'member_name' => $item->member_cert_name ? $item->member_cert_name.'-' : '',
  80. 'member_mobile' => $item->member_mobile ? $item->member_mobile : '',
  81. 'nbr'=>1
  82. ];
  83. }
  84. return json_success('', compact('rows', 'page', 'pageSize', 'total'));
  85. }
  86. }