123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- <?php
- namespace app\store\model\member;
- use app\common\model\member\MemberCardsAction;
- use app\common\model\member\MemberWelfare as MemberWelfareModel;
- /**
- * 会员卡行为操作模型
- * @package app\common\model
- */
- class MemberWelfare extends MemberWelfareModel
- {
- protected $append = [];
- public function getStartTimeAttr($value,$data){
- return substr($value,0,7);
- }
- public function getEndTimeAttr($value,$data){
- return substr($value,0,7);
- }
- /**
- * 添加
- * @param $data
- * @return false|int
- */
- public function addOne($data)
- {
- $this->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;
- }
- }
|