$userId]) ->field('id,sn,sex,account,password,cert_id,nickname,server_type,real_name,avatar,mobile,create_time,user_money,no_reflect_amount,work_day,work_start,work_end,address_id,is_mileage') ->findOrEmpty(); $user['work_time'] = $user->work_start.'~'.$user->work_end; $result = array_map(function($n) { $week = ['一', '二', '三', '四', '五', '六', '日']; return '周' . $week[$n-1]; }, explode(',', $user->work_day)); $user['address'] = ''; if($user['address_id'] !== 0){ $team_address = TeamasterAddress::where([ 'id'=>$user->address_id, 'del'=>0 ])->find(); if($team_address){ $user['address'] = $team_address['address']; }else{ $user['address'] = ''; } } $user['work_day'] = $user->work_day; $user['work'] = implode(',',$result); $user['avatar'] = FileService::getImgUrl($user['avatar']); return $user->toArray(); } public static function editAvatar($post,$user_id){ TeamasterUser::where('id',$user_id)->update([ 'avatar'=>$post['avatar'] ]); return []; } public static function editNickname($post,$user_id){ TeamasterUser::where('id',$user_id)->update([ 'nickname'=>$post['nickname'] ]); return []; } public static function getTeaStoreCity(){ $lists = TeaStoreCity::where("status",1) ->where("del",0) ->select(); $data = [ 'list' => $lists ]; return $data; } public static function editServer($post,$user_id){ TeamasterUser::where('id',$user_id)->update([ 'is_mileage'=>$post['is_mileage'] ]); return []; } public static function editWork($post,$user_id){ TeamasterUser::where('id',$user_id)->update([ 'work_day'=>$post['work_day'], 'work_start'=>$post['work_start'], 'work_end'=>$post['work_end'], ]); return []; } public static function addressList($user_id){ $address_list = TeamasterAddress::where([ 'team_user_id'=>$user_id, 'del'=>0 ])->select()->toArray(); return $address_list; } public static function addressDetails($post, $user_id){ try { $list = TeamasterAddress::where('id',$post['id'])->find(); if(!$list){ throw new \Exception('信息不存在'); } $city_name =TeaStoreCity::where('id',$list['city_id'])->find(); $list['city_name'] = $city_name['name']; return $list->toarray(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function addAddress($post, $user_id){ try { $addressCount = TeamasterAddress::where([ 'team_user_id' => $user_id, 'del' => 0 ])->count(); if($addressCount >= 5){ throw new \Exception('地址簿最多添加5条'); } $data = [ 'team_user_id' => $user_id, 'city_id' => $post['city_id'], 'longitude' => $post['longitude'], 'latitude' => $post['latitude'], 'address' => $post['address'], 'dtime' => time() ]; // 如果是第一条地址,设为默认 if($addressCount == 0){ $data['status'] = 1; } $addressInsert = TeamasterAddress::create($data); $addressId = $addressInsert->id; // 如果是第一条地址,更新用户默认地址 if($addressCount == 0){ TeamasterUser::where('id', $user_id)->update([ 'address_id' => $addressId ]); } return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function editAddress($post,$user_id){ try { $address = TeamasterAddress::where(['id'=>$post['id'],'del'=>0])->find(); if(!$address){ throw new \Exception('地址蒲不存在'); } $post['uptime']=time(); $address->allowField(['city_id', 'longitude', 'latitude','address','uptime']) ->save($post); return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function selAddress($post,$user_id){ try { TeamasterAddress::where('team_user_id',$user_id)->update([ 'status'=>0, 'uptime' => time() ]); TeamasterAddress::where('id',$post['id'])->update(['status'=>1]); TeamasterUser::where('id',$user_id)->update([ 'address_id'=>$post['id'] ]); return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function delAddress($post,$user_id){ $user = TeamasterAddress::where([ 'team_user_id'=>$user_id, 'del'=>0 ])->count(); if($user ==1){ TeamasterUser::where([ 'id'=>$user_id ])->update(['address_id',0]); } TeamasterAddress::where('id',$post['id'])->update([ 'del'=>1, 'uptime'=>time() ]); return []; } public static function Introduction($user_id){ $user = TeamasterUser::where('id',$user_id)->find(); $result = Teamaster::where('team_user_id',$user_id)->find(); $img_arr = explode(",",$result['image']); foreach($img_arr as $key=>$value){ // if (isset($value) && strpos($value, 'uploads') !== false) { // // 包含 "uploads" // $img_arr[$key]= !empty($value) ? FileService::getFileUrl($value) : ''; // } else { // // 不包含 "uploads" // $img_arr[$key]= !empty($value) ? FileService::getFileUrl("uploads".$value) : ''; // } $img_arr[$key] = FileService::getImgUrl($value); } $result['image_arr'] = $img_arr; $result['level'] =$user['level']; $result['price'] = $user['price']; $result['mileage_price'] = $user['mileage_price']; $result['star'] =$user['star']; $result['age'] = self::calculateAge($result['both']); $result['age_range'] = substr($result['both'], 2, 1).'0'; return $result->toarray(); } public static function editIntrod($post,$user_id){ try { $teamaster = Teamaster::where(['team_user_id'=>$user_id])->find(); if(!$teamaster){ throw new \Exception('信息不存在'); } $post['uptime']=time(); $teamaster->allowField(['name', 'sex', 'both','weight','height','hobby_introduce','image','uptime']) ->save($post); return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function certDetails($post,$user_id){ try { $lists = TeamasterCert::where('id',$post['cert_id'])->find(); if(!$lists){ throw new \Exception('未找到资质信息'); } $lists['license_img'] = FileService::getFileUrl($lists['license_img']); $lists['cert_img'] = FileService::getFileUrl($lists['cert_img']); $lists['fitness_img'] = FileService::getFileUrl($lists['fitness_img']); return $lists->toarray(); } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function addCert($post,$user_id){ try { $list =TeamasterCert::where(['team_user_id'=>$user_id])->find(); if($list){ throw new \Exception('已经添加资质'); } $data = [ 'license_img'=>$post['license_img'], 'cert_img'=>$post['cert_img'], 'fitness_img'=>$post['fitness_img'], 'status'=>0, 'team_user_id'=>$user_id, 'dtime'=>time() ]; $cert = TeamasterCert::create($data); $cert_id = $cert->id; TeamasterUser::where('id',$user_id)->update([ 'cert_id'=>$cert_id ]); return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function editCert($post,$user_id){ try { $list =TeamasterCert::where(['id'=>$post['id'],'del'=>0])->find(); if(!$list){ throw new \Exception('资质信息不存在'); } $post['uptime']=time(); $list->allowField(['license_img', 'cert_img', 'fitness_img','uptime']) ->save($post); return []; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function addBank($params,$user_id){ Db::startTrans(); try { // 校验验证码 $smsDriver = new SmsDriver(); // if (!$smsDriver->verify($params['mobile'], $params['code'], NoticeEnum::FIND_MOBILE_CAPTCHA)) { // throw new \Exception('验证码错误'); // } // 新增 TeamasterUserBank::create([ "team_user_id"=>$user_id, "name"=>$params['name'], "bank_name"=>$params['bank_name'], "bank_card"=>$params['bank_card'], "bank_open_name"=>$params['bank_open_name'], "mobile"=>$params['mobile'], "dtime"=>time() ]); Db::commit(); return []; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function checkBank($user_id){ $lists = TeamasterUserBank::where("team_user_id",$user_id) ->where("del",0) ->where("status",1) ->order("id","desc") ->select() ->toarray(); foreach($lists as $key=>$value){ $lists[$key]['bank_card'] = substr($value['bank_card'], -4); } $data = [ 'list' => $lists ]; return $data; } public static function delBank($params){ Db::startTrans(); try { $result = TeamasterUserBank::where("id",$params['id'])->find(); if (!$result) { throw new \Exception('暂无数据'); } // 删除 $r = TeamasterUserBank::where("id",$params['id'])->update(['del'=>1]); Db::commit(); if($r){ return []; } throw new \Exception('数据错误'); } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function checkAccountList($data,$user_id){ Db::startTrans(); try { $times = date("Y-m"); list($year, $month) = explode('-', $times); $startTimestamp = strtotime($year . '-' . $month . '-01 00:00:00'); $endTimestamp = strtotime(date('Y-m-t 23:59:59', $startTimestamp)); if(isset($data['times'])){ if($data['times']!=""&&$data['times']!=null){ list($year, $month) = explode('-', $data['times']); // 转换为日期范围 $startTimestamp = strtotime($year . '-' . $month . '-01 00:00:00'); $endTimestamp = strtotime(date('Y-m-t 23:59:59', $startTimestamp)); } } $count = TeamasterAccountLog::where("team_user_id",$user_id) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->count(); $lists = TeamasterAccountLog::where("team_user_id",$user_id) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->page($data['page'], $data['size']) ->order("id","desc") ->select() ->toarray(); foreach ($lists as &$item){ $item['mobile'] = ''; if($item['change_type'] == 1||$item['change_type'] == 2||$item['change_type'] == 3){ $user = User::where('id',$item['user_id'])->find(); $item['mobile'] = $user['mobile']; } } $data = [ 'list' => $lists, 'page' => $data['page'], 'size' => $data['size'], 'count' => $count, 'more' => is_more($count, $data['page'], $data['size']) ]; return $data; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function reflectDetails($data){ $result = TeamasterAccountLog::where("id",$data['id'])->find(); $reflect = TeamasterUserReflect::where('order_sn',$result->source_sn)->find(); $back = TeamasterUserBank::where('id',$reflect['bank_id'])->find(); $data = [ 'dtime'=>date('Y-m-d H:i:s',$reflect['dtime']), 'amount'=>$reflect['amount'], 'back_name'=>$back['bank_name'], 'status'=>$reflect['status'], 'bank_card'=>substr($back['bank_card'], -4), 'update_dtime'=>$reflect['update_dtime'] ]; return $data; } public static function accounDetails($data){ $result = TeamasterAccountLog::where("id",$data['id'])->find(); $user = User::where('id',$result['user_id'])->find(); $result['user_name'] = $user->nickname; $result['create_time'] = date('Y-m-d H:i:s'); if( $result['change_object'] == 1){ $result['pay_way_title'] = "余额支付"; } if( $result['change_object'] == 2){ $result['pay_way_title'] = "微信支付"; } return $result->toarray(); } public static function submitReflect($params,$user_id){ Db::startTrans(); try { // 查询是否余额充足 $team_user = TeamasterUser::where("id",$user_id)->where("del",0)->find(); if($team_user == null){ throw new \Exception('暂无数据'); } if($team_user['user_money'] < $params['amount']){ throw new \Exception('余额不足'); } // 新增提现记录 $order_sn = createSn("teamaster_user_reflect","order_sn"); TeamasterUserReflect::create([ "team_user_id"=>$user_id, "order_sn"=>$order_sn, "bank_id"=>$params['bank_id'], "amount"=>$params['amount'], "dtime"=>time() ]); // 计算扣除余额 $user_money = round($team_user['user_money']-$params['amount'],2); // 计算总提现金额 $reflect_money = round($team_user['total_reflect_amount']+$params['amount'],2); $dt['user_money'] = $user_money; $dt['total_reflect_amount'] = $reflect_money; $rs = TeamasterUser::where("id",$user_id)->update($dt); if(!$rs){ throw new \Exception('计算错误'); } // 新增流水 $data = [ 'sn' => createSn("store_user_account_log","sn"), 'team_user_id' => $team_user->id, 'user_id'=>0, 'change_type' => 5, 'action' => 2, "amount"=>$params['amount'], 'before_amount' => $team_user['user_money'], 'after_amount' => $user_money, 'source_sn' => $order_sn, 'remark' => "茶艺师提现" ]; $r = TeamasterAccountLog::create($data); Db::commit(); if($r){ return []; } throw new \Exception('提现失败'); } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * 根据生日计算年龄 * @param string|int $birthday 生日(时间戳或日期字符串) * @return int */ public static function calculateAge($birthday) { if (empty($birthday)) { return 0; } // 转换为时间戳 $birthTimestamp = is_numeric($birthday) ? $birthday : strtotime($birthday); if ($birthTimestamp === false) { return 0; } // 计算年龄 $birthYear = date('Y', $birthTimestamp); $birthMonth = date('m', $birthTimestamp); $birthDay = date('d', $birthTimestamp); $currentYear = date('Y'); $currentMonth = date('m'); $currentDay = date('d'); $age = $currentYear - $birthYear; // 如果当前月日小于生日月日,年龄减1 if ($currentMonth < $birthMonth || ($currentMonth == $birthMonth && $currentDay < $birthDay)) { $age--; } return max(0, $age); // 确保年龄不小于0 } public static function balanceLogList($post,$user_id){ $t = ""; if(isset($post['end_time'])){ if($post['end_time']!=""&&$post['end_time']!=null){ $end_time = strtotime($post['end_time']); $t = "create_time <= '".$end_time."'"; } } $count = StoreUserAccountLog::where($t)->where("user_id",$user_id)->count(); $lists = StoreUserAccountLog::where($t) ->where("user_id",$user_id) ->page($post['page'], $post['size']) ->order("id","desc") ->select() ->toarray(); foreach($lists as $key=>$value){ $lists[$key]['mobile'] = ""; $lists[$key]['reflect_status'] = ""; if($value['change_type'] != 3){ $order = OrderStore::where("order_sn",$value['source_sn'])->find(); if($order!=null){ $user = User::where("id",$order['user_id'])->find(); $lists[$key]['mobile'] = $user['mobile']; } }else{ $reflect_status = StoreUserReflect::where("order_sn",$value['source_sn'])->find(); if($reflect_status!= null){ $lists[$key]['reflect_status'] = $reflect_status['status']; } } } $data = [ 'list' => $lists, 'page' => $post['page'], 'size' => $post['size'], 'count' => $count, 'more' => is_more($count, $post['page'], $post['size']) ]; return $data; } public static function balanceLogDetails($post){ $details = StoreUserAccountLog::where("id",$post['id'])->find(); if($details['change_type'] == 3){ $order = StoreUserReflect::where("order_sn",$details['source_sn'])->find(); if($order!=null){ $bank = StoreUserBank::where("id",$order['bank_id'])->find(); $order['bank_name'] = $bank['bank_name']; $order['bank_card'] = substr($bank['bank_card'], -4); $order['dtime'] = date("Y-m-d H:i:s",$order['dtime']); $order['update_dtime'] = date("Y-m-d H:i:s",$order['update_dtime']); }else{ $order = []; $order['bank_name'] = ""; $order['bank_card'] = ""; } $details['order'] = $order; }else{ $details['store'] = ""; $store = TeaStore::where("id",$details['store_id'])->find(); if($store!=null){ $details['store'] = $store; } $details['room'] = ""; $room = TeaStoreRoom::where("id",$details['room_id'])->find(); if($room!=null){ $details['room'] = $room; } $order = OrderStore::where("order_sn",$details['source_sn'])->find(); if($order!=null){ $user = User::where("id",$order['user_id'])->find(); $order['nickname'] = ""; $order['mobile'] = ""; if($user!=null){ $order['nickname'] = $user['nickname']; $order['mobile'] = $user['mobile']; } $order['pay_way_title'] = ""; if( $order['pay_way'] == 1){ $order['pay_way_title'] = "余额支付"; } if( $order['pay_way'] == 2){ $order['pay_way_title'] = "微信支付"; } if( $order['pay_way'] == 3){ $order['pay_way_title'] = "门店余额支付"; } if( $order['pay_way'] == 4){ $order['pay_way_title'] = "管理员添加"; } $order['group'] = []; $user_group = UserGroup::where("id",$order['group_coupon_id'])->find(); if($user_group!=null){ $order['group'] = TeaStoreGroup::where("id",$user_group['group_id'])->find(); $order['group']['yanquan_dtime'] = $user_group['update_dtime']; $order['group']['qr_sn'] = $user_group['qr_sn']; $order['group']['yanquan_status'] = $user_group['status']; } }else{ $order = []; $order['group'] = []; $order['pay_way_title'] = ""; $order['nickname'] = ""; $order['mobile'] = ""; } $details['order'] = $order; } $data = [ 'details' => $details ]; return $data; } public static function checkMoney($data){ $result = TeaStore::where("id",$data['store_id'])->find(); $d['store_msg'] = $result; return $d; } public static function checkStoreUserList($data){ $count = StoreMember::where("store_id",$data['store_id'])->count(); $lists = StoreMember::where("store_id",$data['store_id']) ->page($data['page'], $data['size']) ->order("id","desc") ->select() ->toarray(); foreach($lists as $key=>$value){ $lists[$key]['user'] = User::where("id",$value['user_id'])->find(); } $data = [ 'list' => $lists, 'page' => $data['page'], 'size' => $data['size'], 'count' => $count, 'more' => is_more($count, $data['page'], $data['size']) ]; return $data; } public static function checkStoreUserDetails($params){ // 门店用户基本信息 $store_user_member = StoreMember::where("user_id",$params['user_id']) ->where("store_id",$params['store_id']) ->find(); // 用户基本信息 $user = User::where("id",$params['user_id'])->find(); $user['remark'] = $store_user_member['remark']; $user['store_user_id'] = $store_user_member['id']; $user['create_time'] = date("Y-m-d",strtotime($user['create_time'])); $user_member = UserAccountLog::where("id",$params['user_id'])->where("store_id",$params['store_id'])->where("action",2)->find(); // 会员到期时间 $user['expiration_time'] = ""; if($user_member != null){ $user['expiration_time'] = $user_member['expiration_time']; } $user_store_money = UserStoreMoney::where("user_id",$params['user_id'])->where("store_id",$params['store_id'])->find(); if($user_store_money != null){ $user['user_store_money'] = $user_store_money['money']; } // 门店用户总消费 $user['order_amount'] = OrderStore::where("store_id",$params['store_id'])->where("user_id",$params['user_id'])->sum("order_amount"); $data = [ 'user' => $user ]; return $data; } public static function editStoreUserRemark($data){ Db::startTrans(); try { // 查询是否余额充足 $StoreMemberUser = StoreMember::where("id",$data['id'])->where("status",1)->find(); if($StoreMemberUser == null){ throw new \Exception('暂无用户'); } $StoreMemberUser::where("id",$data['id'])->update(['remark'=>$data['remark']]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function checkStoreUserBuyList($data){ $count = UserAccountLog::where("store_id",$data['store_id']) ->where("user_id",$data['user_id']) ->where("action",2) ->count(); $lists = UserAccountLog::where("store_id",$data['store_id']) ->where("user_id",$data['user_id']) ->where("action",2) ->page($data['page'], $data['size']) ->order("id","desc") ->select() ->toarray(); foreach($lists as $key=>$value){ $lists[$key]['pay_way_title'] = ""; if( $value['change_object'] == 1){ $lists[$key]['pay_way_title'] = "余额支付"; } if( $value['change_object'] == 2){ $lists[$key]['pay_way_title'] = "微信支付"; } if( $value['change_object'] == 3){ $lists[$key]['pay_way_title'] = "支付宝支付"; } $lists[$key]['store_name'] = TeaStore::where("id",$value['store_id'])->value("name"); } $data = [ 'list' => $lists, 'page' => $data['page'], 'size' => $data['size'], 'count' => $count, 'more' => is_more($count, $data['page'], $data['size']) ]; return $data; } public static function checkStoreAccountList($data,$user_id){ $times = date("Y-m"); list($year, $month) = explode('-', $times); $startTimestamp = strtotime($year . '-' . $month . '-01 00:00:00'); $endTimestamp = strtotime(date('Y-m-t 23:59:59', $startTimestamp)); if(isset($data['times'])){ if($data['times']!=""&&$data['times']!=null){ list($year, $month) = explode('-', $data['times']); // 转换为日期范围 $startTimestamp = strtotime($year . '-' . $month . '-01 00:00:00'); $endTimestamp = strtotime(date('Y-m-t 23:59:59', $startTimestamp)); } } $count = StoreUserAccountLog::where("user_id",$user_id) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",1) ->count(); $all_price = StoreUserAccountLog::where("user_id",$user_id) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",1) ->sum("amount"); $lists = StoreUserAccountLog::where("user_id",$user_id) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",1) ->page($data['page'], $data['size']) ->order("id","desc") ->select() ->toarray(); foreach($lists as $key=>$value){ $lists[$key]['store'] = TeaStore::where("id",$value['store_id'])->find(); $lists[$key]['room'] = TeaStoreRoom::where("id",$value['room_id'])->find(); $lists[$key]['order'] = ""; $lists[$key]['group'] = ""; if($value['action'] == 1){ $order = OrderStore::where("order_sn",$value['source_sn'])->find(); $lists[$key]['order'] = $order; if($order!=null){ $order_group = UserGroup::where("id",$order['group_coupon_id'])->find(); if($order_group!=null){ $lists[$key]['group'] = TeaStoreGroup::where("id",$order_group['group_id'])->find(); } } } } $data = [ 'list' => $lists, 'page' => $data['page'], 'size' => $data['size'], "all_price"=>$all_price, 'count' => $count, 'more' => is_more($count, $data['page'], $data['size']) ]; return $data; } public static function checkMoth($data,$user_id){ // 本月收入 $times = date("Y-m"); list($year, $month) = explode('-', $times); $startTimestamp = strtotime($year . '-' . $month . '-01 00:00:00'); $endTimestamp = strtotime(date('Y-m-t 23:59:59', $startTimestamp)); $result['month'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",1) ->sum("amount"); // 今日收入 $today = date('Y-m-d'); $startTime = strtotime($today . ' 00:00:00'); $endTime = strtotime($today . ' 23:59:59'); $result['today_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type","in","1,2") ->where("action",1) ->sum("amount"); // 今日验券 $result['yan_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type",4) ->where("action",1) ->sum("amount"); // 昨日收入 $yesterday = date('Y-m-d', strtotime('-1 day')); // 计算时间戳范围 $startTime = strtotime($yesterday . ' 00:00:00'); $endTime = strtotime($yesterday . ' 23:59:59'); $result['yesterday_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type","in","1,2") ->where("action",1) ->sum("amount"); // 昨日验券 $result['yesterday_yan_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type",4) ->where("action",1) ->sum("amount"); $d = [ "result"=>$result ]; return $d; } }