transaction(function () use ($data) { $this->save($data); $id = (int)$this['id']; $data['audit_status'] = 0; $data['target_type'] = 2; (new MemberCardsAction())->add($id, $data); }); return true; } /** * 编辑 * @param $data * @return bool|int */ public function edit($data) { $this->transaction(function () use ($data) { $data['audit_status'] = 0; $data['audit_time'] = date('Y-m-d H:i:s'); $this->save($data); $id = (int)$this['id']; $data['target_type'] = 2; (new MemberCardsAction())->add($id, $data); }); return true; } /** * 审核 * @param array $data * @return bool */ public function audit(array $data): bool { unset($data['target_type']); $this->transaction(function () use ($data) { $this->save($data); $id = (int)$this['id']; $data['target_type'] = 2; if($data['audit_status']==1){ (new MemberCardsAction())->add($id, $data); } if($data['audit_status']==2){ //$data['audit_reason'] = '不同意'." ".$data['audit_reason']; (new MemberCardsAction())->add($id, $data); } }); return true; } public function lists($params){ $t_now =intval(date('Ym')); $where = $this->getFilter($params); return self::where($where) ->field('id,target_type,number,name,cost,start_time,end_time,create_time,order_at,audit_status') ->order('order_at asc,id desc') ->paginate(15)->each(function(&$item) use ($t_now){ $item['ff_text'] = ''; $item['start_time'] = substr($item['start_time'],0,7); $item['end_time'] = substr($item['end_time'],0,7); if ($item['audit_status'] == 1){ $t1 = explode('-',$item['end_time']); $e_month = intval($t1[0].$t1[1]);//202204; $t2 = explode('-',$item['start_time']); $s_month = intval($t2[0].$t2[1]);//202204; if ($t_now > $e_month){ $item['ff_text'] = '已过期'; }elseif($t_now < $s_month){ $item['ff_text'] = '未生效'; }else{ $item['ff_text'] = '生效中'; } } }); } public function listsDiff($params,$toExport=false){ $t_now = date('Y-m-d'); $where = $this->getFilter($params); $where[] = ['target_type','=',2]; $query = self::where($where) ->field('id,target_type,number,name,cost,provider,start_time,end_time,create_time,order_at,audit_status') ->withCount(['draws'=>function($query){ $query->where('target_type',2); }]) ->withCount(['drawsChecked'=>function($query){ $query->where('target_type',2)->where('check_status',1); }]) ->withCount(['drawsExpired'=>function($query) use ($t_now){ $query->where('target_type',2)->where('check_status',0)->where('use_end_time','<',$t_now); }]) ->order('order_at asc'); if ($toExport == true){ $query = $query->select(); }else{ $query = $query->paginate(15); } return $query->each(function(&$item){ $item['start_time'] = substr($item['start_time'],0,7); $item['end_time'] = substr($item['end_time'],0,7); }); } public function getFilter($params){ $where[] = ['is_delete','=',0]; !empty($params['number']) && $where[] = ['number','like','%'.$params['number'].'%']; !empty($params['name']) && $where[] = ['name','like','%'.$params['name'].'%']; !empty($params['provider']) && $where[] = ['provider','like','%'.trim($params['provider']).'%']; if(isset($params['targetType']) && $params['targetType']>0 ){ $where[] = ['target_type','=',$params['targetType']]; } if(!empty($params['betweenTime'])){ $timesDay = between_time($params['betweenTime']); $times['start_time'] = date('Y-m-01',$timesDay['start_time']); $nextM = mktime(0,0,0,date('m',$timesDay['end_time']) +1,1,date('Y',$timesDay['end_time'])); $times['end_time'] = date('Y-m-d',$nextM - 1 ); $where[] = ['start_time','between',[$times['start_time'],$times['end_time']]]; } return $where; } /** * 编辑排序 * @param $data * @return bool|int */ public function editOrder($data) { $this->transaction(function () use ($data) { $m = self::detail($data['id']); $m->order_at = $data['order_at']; $m->save(); }); return true; } /** * 编辑排序 * @param $data * @return bool|int */ public function del($data) { self::where('id',$data['id'])->update(['is_delete'=>1]); return true; } public function getExchangeTypeAttr($value,$data){ return json_decode($value); } /** * 异业福利领取记录导出 * @param $param * @return array */ public function diffwDrawExportData($param){ $data['header'] = ['福利编号','福利名称','福利提供方', '价值','时间','实际领取数','已核销','已过期']; $data['filename'] = '异业福利领取记录导出'; $data['data'] = []; $items = $this->listsDiff($param,true); $datas = []; foreach ($items as $item){ $temp = []; $temp['number'] = $item['number']; $temp['name'] = $item['name']; $temp['provider'] = $item['provider']; $temp['cost'] = $item['cost']; $temp['times'] = $item['start_time'].'-'.$item['end_time']; $temp['draws_count'] = $item['draws_count']; $temp['draws_checked_count'] = $item['draws_checked_count']; $temp['draws_expired_count'] = $item['draws_expired_count']; $datas[] = $temp; } $data['data'] = $datas; return $data; } }