getQueryFilter($param); $useStatus = $this->fetchUseStatusSql($param); // 查询列表数据 $list = self::alias('card') ->leftJoin('user','card.user_id=user.user_id') ->leftJoin('rice_card_order','card.order_id=rice_card_order.id') ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id') ->field('card.id,card.card_name,card.user_id,card.card_id,card.activation_state,card.effect_state,card.activation_time,card.face_value,card.balance,card.parent_id,card.frozen_state,user.nick_name,user.mobile,buyer.nick_name as buyer_name,buyer.mobile as buyer_mobile') ->where("card.is_delete", '=', 0) ->where("card.type", 'in', [2,4]) ->where("card.user_id", '>', 0) ->whereRaw($useStatus) ->where($query) ->order(["card.id" => 'desc']) ->paginate(15)->toArray(); //dd($list); $stat = self::alias('card') ->leftJoin('user','card.user_id=user.user_id') ->leftJoin('rice_card_order','card.order_id=rice_card_order.id') ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id') ->field('sum(card.face_value) as face_value,sum(card.balance) as balance') ->where("card.is_delete", '=', 0) ->where("card.type", '=', 2) ->where("card.user_id", '>', 0) ->whereRaw($useStatus) ->where($query)->find()->toArray(); return ['list'=>$list,'stat'=>$stat]; } /** * 设置检索查询条件 * @param array $params * @return array */ private function getQueryFilter(array $params): array { // 默认参数 //$params = $this->setQueryDefaultValue($param); // 检索查询条件 $filter = []; // 激活状态 if (isset($params['activationState']) && in_array(intval($params['activationState']),[0,1])) { $filter[] = ['card.activation_state', '=', $params['activationState']]; } // 持有人 if (!empty($params['nickName'])) { $filter[] = ['user.nick_name', 'like', "%{$params['nickName']}%"]; } // 持有人手机号 if (!empty($params['mobile'])) { $filter[] = ['user.mobile', 'like', "%{$params['mobile']}%"]; } // 是否转赠 if (isset($params['gift']) && $params['gift'] != -1) { if ($params['gift'] == 0){ $filter[] = ['card.parent_id', '=', 0]; }else{ $filter[] = ['card.parent_id', '>', 0]; } } // 购买人 if (!empty($params['buyerName'])) { $filter[] = ['buyer.nick_name', 'like', "%{$params['buyerName']}%"]; } // 购买人手机号 if (!empty($params['buyerMobile'])) { $filter[] = ['buyer.mobile', 'like', "%{$params['buyerMobile']}%"]; } //激活时间 if (isset($params['betweenTime']) && $params['betweenTime']){ if (isset($params['betweenTime'][0]) && $params['betweenTime'][0] && isset($params['betweenTime'][1]) && $params['betweenTime'][1]){ $times = between_date($params['betweenTime']); $filter[] = ['card.activation_time','between',[$times['start_date'],$times['end_date']]]; } } //有效期 if (!empty($params['betweenTime2'])) { if (isset($params['betweenTime2'][0]) && $params['betweenTime2'][0] && isset($params['betweenTime2'][1]) && $params['betweenTime2'][1]) { $times = between_date($params['betweenTime2']); $filter[] = ['card.expire_time', 'between', [$times['start_date'], $times['end_date']]]; } } //兑换状态 return $filter; } private function fetchUseStatusSql($params){ $sql = ' 1=1 '; // 使用状态,1未使用:已激活但未开始消费的米卡,即交易数=0,2使用中:已激活且已开始消费的米卡,即交易数>0,3已用完:余额为0的米卡 if (!empty($params['useStatus'])) { if ($params['useStatus'] == 1){ $sql .= ' and card.activation_state=1 and card.face_value - card.balance=0'; } if ($params['useStatus'] == 2){ $sql .= ' and card.activation_state=1 and card.face_value - card.balance>0 and card.balance>0'; } if ($params['useStatus'] == 3){ $sql .= ' and card.activation_state=1 and card.balance=0'; } } //yoshop_user_rice_delivery //是否已兑换商品 if (isset($params['exchange']) && in_array($params['exchange'],[0,1])){ if ($params['exchange'] == 0){ $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) = 0'; }else{ $sql .= 'and (select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) > 0'; } } return $sql; } /** * @param $id * @param $type * @return bool */ public function freezeCard($id,$type){ if (in_array($type,[0,1])){ if($type == 0){ self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>1]); } if($type == 1){ self::where('id',$id)->update(['frozen_state'=>$type,'effect_state'=>2]); } } return true; } public function getListReal($param){ $query = $this->getQueryFilter($param); $useStatus = $this->fetchUseStatusSql($param); // 查询列表数据 return self::alias('card') ->leftJoin('user','card.user_id=user.user_id') ->leftJoin('rice_card_order','card.order_id=rice_card_order.id') ->leftJoin('user buyer','rice_card_order.user_id=buyer.user_id') ->field('card.id,card.card_name,card.user_id,card.card_id,card.activation_state,card.effect_state,card.activation_time,if(card.expire_time="2047-07-01 23:59:59","永久有效",card.expire_time) as expire_time,card.parent_id,card.frozen_state,user.nick_name,user.mobile,buyer.nick_name as buyer_name,buyer.mobile as buyer_mobile,(select count(id) from yoshop_user_rice_delivery where user_rice_card_id=card.id) as goods_count') ->where("card.is_delete", '=', 0) ->where("card.type", '=', 3) ->where("card.user_id", '>', 0) ->whereRaw($useStatus) ->where($query) ->order(["card.id" => 'desc']) ->paginate(15); } }