love_php/app/Http/Controllers/Admin/FellowingCardController.php
2026-04-02 09:20:51 +08:00

183 lines
6.0 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use EasyWeChat;
use Illuminate\Http\Request;
use App\Models\FellowingCard as Card;
use App\Models\FellowingCardHistory as CardMember;
use App\Models\FellowingCardHistory;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Support\Facades\Log;
class FellowingCardController extends Controller
{
/**
* 团契会员卡列表
* @param Request $request [description]
* @return [type] [description]
*/
public function fellowingCards(Request $request)
{
$cards = Card::with('user', 'shareUSer')->whereHas('user', function($sql){
$sql->where('id', '>', 0);
});
$keyword = $request->input('keyword');
if ($keyword) {
$cards = $cards->where('name',"like", "%$keyword%");
}
$cards = $cards->orderBy('id', 'desc')->paginate();
return $this->success('ok', $cards);
}
/**
* 团契会员详情
* @param Request $request [description]
* @param [type] $card_id [description]
* @return [type] [description]
*/
public function fellowingCard(Request $request, $card_id)
{
$card = Card::with('user', 'shareUSer')->findOrFail($card_id);
$card->userd_num = $card->num - $card->remain_num;
//会员记录
$histories = FellowingCardHistory::where('card_id', $card_id)->paginate();
foreach ($histories as $history) {
$user = User::where('id', $history->user_id)->first();
$circle_avatar = '';
$name = '';
if (!empty($user)) {
$circle_avatar = $user->circle_avatar;
$name = $user->name;
}
$history->circle_avatar = $circle_avatar;
$history->name = $name;
}
return $this->success('ok', compact('card', 'histories'));
}
/**
* 添加团契会员卡
* @param Request $request [description]
*/
public function addFellowingCard(Request $request)
{
$share_user_id = $request->input('share_user_id', 0);
$name = $request->input("name");
if (empty($name)) {
return $this->failure('请输入团契会员卡名称');
}
$user_id = $request->input('user_id');
if (empty($user_id)) {
return $this->failure('请输入拥有人信息');
}
$num = $request->input("num", 0);
if (empty($num)) {
return $this->failure('请输入团契会员卡数量');
}
$remain_num = $num;
$rank_id = $request->input('rank_id', 0);
if (empty($rank_id)) {
return $this->failure('请选择会员级别');
}
$month = $request->input('month', 0);
$day = $request->input('day', 0);
if (empty($month) && empty($day)) {
return $this->failure('请选择会员期限');
}
$card = new Card();
$card->share_user_id = $share_user_id;
$card->user_id = $user_id;
$card->name = $name;
$card->num = $num;
$card->remain_num = $remain_num;
$card->rank_id = $rank_id;
$card->month = $month;
$card->day = $day;
$card->save();
$app = EasyWechat::miniProgram();
$optional = [
'page' => 'pages/users/groupMember',
'width' => 260,
'is_hyaline'=>true,
'auto_color'=>true,
];
$response = $app->app_code->getUnlimit('id='.$card->id.'&from_user_id='.$card->user_id, $optional);
$qrcode_path = storage_path('qrcode');
$file_name = time().$card->id.'fellow_card_qrcode.png';
// 保存小程序码到文件
if ($response instanceof \EasyWeChat\Kernel\Http\StreamResponse) {
$response->saveAs($qrcode_path, $file_name);
}
$qrcode_path = storage_path()."/qrcode/".$file_name;
$qrcode = $this->uploadFile($qrcode_path);
$card->qrcode = $qrcode;
$card->save();
return $this->success('ok', $card);
}
/**
* 修改团契会员卡
* @param Request $request [description]
* @param [type] $card_id [description]
* @return [type] [description]
*/
public function updateFellowingCard(Request $request, $card_id)
{
$card = Card::findOrFail($card_id);
if ($request->has('user_id') && $request->input('user_id') != $card->user_id) {
$card->user_id = $request->user_id;
}
if ($request->has('share_user_id') && $request->input('share_user_id') != $card->share_user_id) {
$card->share_user_id = $request->share_user_id;
}
if ($request->has('name') && $request->input('name') != $card->name) {
$card->name = $request->name;
}
if ($request->has('num') && $request->input('num') != $card->num) {
$card->num = $request->num;
}
if ($request->has('rank_id') && $request->input('rank_id') != $card->rank_id) {
$card->rank_id = $request->rank_id;
}
if ($request->has('month') && $request->input('month') != $card->month) {
$card->month = $request->month;
$card->day = 0;
}
if ($request->has('day') && $request->input('day') != $card->day) {
$card->day = $request->day;
$card->month = 0;
}
$card->save();
return $this->success('ok', $card);
}
/**
* 删除团契会员卡
* @param Request $request [description]
* @param [type] $card_id [description]
* @return [type] [description]
*/
public function deleteFellowingCard(Request $request, $card_id)
{
$card = Card::findOrFail($card_id);
$card->delete();
return $this->success('ok');
}
/**
* 团契卡成员
* @param Request $request [description]
* @param Card $card [description]
* @return [type] [description]
*/
public function cardMemebrs(Request $request, Card $card)
{
$members = $card->members()->with('user')->orderBy('id', 'desc')->paginate();
return $this->success('ok', $members);
}
}