$userId]) ->field('id,sn,sex,account,password,nickname,real_name,avatar,mobile,create_time,user_money,total_amount,total_reflect_amount') ->find(); // $user['avatar'] = FileService::getFileUrl($user['avatar']); return $user->toArray(); } public static function updateUser($params, $userId) { Db::startTrans(); try { if(isset($params['band_mobile'])){ $user = User::where("mobile",$params['band_mobile']) ->where("is_disable",0) ->find(); if(!$user){ throw new \Exception('客户端用户不存在'); } $params['bind_user_id'] = $user->id; } StoreUser::where(['id' => $userId])->update($params); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } 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; } if($details['change_type'] == 9){ $order = OrderStoreRecharge::where("order_sn",$details['source_sn'])->find(); $order['pay_time'] = date('Y-m-d H:i'); $order['dtime'] = $order['create_time']; }elseif($details['change_type'] == 4){ $order = OrderGroup::where("order_sn",$details['source_sn'])->find(); $details['room'] = ["title"=>'到店核销']; }else{ $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($details['change_type'] == 4){ $user_group = UserGroup::where("order_id",$order['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 addBank($params,$user_id){ Db::startTrans(); try { // 校验验证码 $smsDriver = new SmsDriver(); if (!$smsDriver->verify($params['mobile'], $params['code'], NoticeEnum::FIND_MOBILE_CAPTCHA)) { throw new \Exception('验证码错误'); } // 新增 StoreUserBank::create([ "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 true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function checkBank($user_id){ $lists = StoreUserBank::where("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 = StoreUserBank::where("id",$params['id'])->find(); if ($result!=null) { throw new \Exception('暂无数据'); } // 删除 $r = StoreUserBank::where("id",$params['id'])->update(['del'=>1]); Db::commit(); if($r){ return true; } throw new \Exception('数据错误'); } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function submitReflect($params,$user_id){ Db::startTrans(); try { // 查询是否余额充足 $store = TeaStore::where("id",$params['store_id'])->where("del",0)->find(); if($store == null){ throw new \Exception('暂无数据'); } if($store['balance'] < $params['amount']){ throw new \Exception('余额不足'); } // 新增提现记录 $order_sn = createSn("store_user_reflect","order_sn"); StoreUserReflect::create([ "user_id"=>$user_id, "store_id"=>$params['store_id'], "order_sn"=>$order_sn, "bank_id"=>$params['bank_id'], "amount"=>$params['amount'], "dtime"=>time() ]); // 计算扣除余额 $user_money = round($store['balance']-$params['amount'],2); // 计算总提现金额 $reflect_money = round($store['total_reflect_amount']+$params['amount'],2); $dt['balance'] = $user_money; $dt['total_reflect_amount'] = $reflect_money; $rs = TeaStore::where("id",$params['store_id'])->update($dt); if(!$rs){ throw new \Exception('计算错误'); } // 新增流水 $data = [ 'sn' => createSn("store_user_account_log","sn"), 'user_id' => $user_id, 'change_type' => 3, 'action' => 2, "amount"=>$params['amount'], 'before_amount' => $dt['balance'], 'after_amount' => $user_money, 'source_sn' => $order_sn, 'remark' => "用户提现" ]; $r = StoreUserAccountLog::create($data); Db::commit(); if($r){ return true; } throw new \Exception('提现失败'); } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public static function checkStoreUserList($data){ $s = ""; if(isset($data['search'])){ if($data['search'] != ""){ $b = $data['search']; $s = "b.mobile like '%".$b."%'"; } } $count = StoreMember::alias("a") ->join("user b", "b.id = a.user_id", "left") ->where("a.store_id",$data['store_id']) ->where($s) ->count(); $lists = StoreMember::alias("a") ->join("user b", "b.id = a.user_id", "left") ->where("a.store_id",$data['store_id']) ->where($s) ->field("a.id,a.remark,b.mobile,b.member,a.user_id,b.nickname,b.avatar") ->page($data['page'], $data['size']) ->order("a.id","desc") ->select() ->toarray(); $totalMoney = UserStoreMoney::where([ 'store_id' => $data['store_id'], 'status' => 1 // 根据业务需要,可能只统计有效状态的 ])->sum('money'); $money = 0; foreach($lists as $key=>$value){ $lists[$key]['avatar'] =!empty($value['avatar']) ? FileService::getFileUrl($value['avatar']) : FileService::getFileUrl('uploads/images/20260106/20260106104232ef02b9224.png'); $StoreMoney = UserStoreMoney::where([ 'store_id'=>$data['store_id'], 'user_id'=>$value['user_id'] ])->find(); if($value['member'] ==1){ $UserMember = UserMember::where([ 'user_id'=>$value['user_id'] ])->find(); if($UserMember){ $lists[$key]['expiration_time'] = date('Y-m-d',$UserMember->expiration_time); }else{ $lists[$key]['expiration_time'] = '--'; } }else{ $lists[$key]['expiration_time'] = '--'; } if($StoreMoney){ $lists[$key]['store_money'] = $StoreMoney->money; }else{ $lists[$key]['store_money'] = $money; } } $data = [ 'list' => $lists, 'page' => $data['page'], 'size' => $data['size'], 'count' => $count, 'more' => is_more($count, $data['page'], $data['size']), 'totalMoney'=>$totalMoney ]; return $data; } public static function storeRechargeLists($data){ $yearMonth = $data['month'] ?? date('Y-m'); // 默认当前月 // 生成月份的起始和结束时间 $startTimestamp = strtotime(date('Y-m-01 00:00:00', strtotime($yearMonth))); $endTimestamp = strtotime(date('Y-m-t 23:59:59', strtotime($yearMonth))); $count = OrderStoreRecharge::alias("a") ->join("user b", "b.id = a.user_id", "left") ->join("tea_store_recharge c", "c.id = a.recharge_id", "left") ->where("a.store_id",$data['store_id']) ->where("a.pay_status",1) ->whereBetween("a.pay_time", [$startTimestamp, $endTimestamp]) ->count(); $lists = OrderStoreRecharge::alias("a") ->join("user b", "b.id = a.user_id", "left") ->join("tea_store_recharge c", "c.id = a.recharge_id", "left") ->where("a.store_id",$data['store_id']) ->where("a.pay_status",1) ->whereBetween("a.pay_time", [$startTimestamp, $endTimestamp]) ->field("a.order_amount,a.recharge_price,a.gift_price,b.mobile,b.nickname,a.pay_time,c.title") ->page($data['page'], $data['size']) ->order("a.id","desc") ->select() ->toarray(); $total_recharge_price= OrderStoreRecharge::where([ 'store_id' => $data['store_id'], 'pay_status' => 1 // 根据业务需要,可能只统计有效状态的 ])->whereBetween("pay_time", [$startTimestamp, $endTimestamp])->sum('recharge_price'); $total_gift_price= OrderStoreRecharge::where([ 'store_id' => $data['store_id'], 'pay_status' => 1 // 根据业务需要,可能只统计有效状态的 ])->whereBetween("pay_time", [$startTimestamp, $endTimestamp])->sum('gift_price'); foreach ($lists as &$item){ $item['pay_time'] = date('Y-m-d H:i'); } $data = [ 'total_recharge_price'=>$total_recharge_price, 'total_gift_price'=>$total_gift_price, '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 = UserMember::where('user_id',$params['user_id'])->find(); // 会员到期时间 $user['expiration_time'] = ""; if($user_member){ $user['expiration_time'] = date('Y-m-d H:i',$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){ $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("store_id",$data['store_id']) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->count(); $all_price = StoreUserAccountLog::where("store_id",$data['store_id']) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",1) ->sum("amount"); $all_action_price = StoreUserAccountLog::where("store_id",$data['store_id']) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",2) ->sum("amount"); $lists = StoreUserAccountLog::where("store_id",$data['store_id']) ->where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->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(); if($value['change_type'] == 4){ $lists[$key]['room'] = ["title"=>'到店核销']; }else{ $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"=>round($all_price-$all_action_price,2), '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"); $result['refund_month'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTimestamp, $endTimestamp]) ->where("action",2) ->sum("amount"); $result['month'] = $result['month']-$result['refund_month']; // 今日收入 $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['refund_today_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) // ->where("change_type","in","1,2") ->where("action",2) ->sum("amount"); $result['today_price'] = $result['today_price'] -$result['refund_today_price']; // 今日验券 $result['yan_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_object",4) ->where("action",1) ->sum("amount"); $result['refund_yan_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->whereIn("change_object",[0,4]) ->where("action",2) ->sum("amount"); $result['yan_price'] = $result['yan_price'] -$result['refund_yan_price']; // 昨日收入 $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['refund_yesterday_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type","in","1,2") ->where("action",2) ->sum("amount"); $result['yesterday_price'] = $result['yesterday_price'] -$result['refund_yesterday_price']; // 昨日验券 $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"); $result['refund_yesterday_yan_price'] = StoreUserAccountLog::where("store_id",$data['store_id']) ->whereBetween('create_time', [$startTime, $endTime]) ->where("change_type",4) ->where("action",1) ->sum("amount"); $result['yesterday_yan_price'] = $result['yesterday_yan_price']-$result['refund_yesterday_yan_price']; $d = [ "result"=>$result ]; return $d; } }