where("id",$userId) ->select(["user_head_img_url","user_nickname","user_sex","user_balance","user_unreceive_balance","created_at","id"]) ->first(); $user["user_fans_num"] = UserModel::query()->where("invite_user_id",$userId)->count(); $user["user_crash_balance"] = 0;//累计提现金额 $user["user_unreceive_balance"] = UserOrderCommissionModel::query() ->where("user_id",$userId) ->where("commission_status",0) ->sum("order_commission");//带结算佣金 $last_start_time = date("Y-m-",strtotime("-1 month"))."01 00:00:00"; $last_end_time = date("Y-m")."-01 00:00:00"; $start_time = date("Y-m")."-01 00:00:00"; $end_time = date("Y-m-d H:i:s"); $user["last_month_money"] = UserOrderCommissionModel::query() ->where("user_id",$userId) ->whereIn("commission_status",[0,1]) ->where("created_at",">=",$last_start_time) ->where("created_at","<=",$last_end_time) ->sum("order_commission"); $user["month_money"] = UserOrderCommissionModel::query() ->where("user_id",$userId) ->whereIn("commission_status",[0,1]) ->where("created_at",">=",$start_time) ->where("created_at","<=",$end_time) ->sum("order_commission"); return $user; } /** * 获取用户粉丝逻辑 */ public static function getFansListLogic() { $userId = BaseUtil::getUserId(); $params = request()->all(); $query = UserModel::query() ->where("invite_user_id",$userId) ->select( [ "user_nickname", "user_head_img_url", "created_at" ] )->orderBy("id","desc"); switch ($params["type"]){ case 1: //未激活 $query->where("user_order_type",0); break; case 2: //已激活 $query->where("user_order_type",1); break; } $res = $query->paginate($params["page_size"]); return [ "total"=>$res->total(), "list"=>$res->items() ]; } /** * 收支明细逻辑 */ public static function getFinanceListLogic() { $userId = BaseUtil::getUserId(); $params = request()->all(); $query = UserFinanceModel::query() ->where("user_id",$userId); switch ($params["finance_type"]){ case 1://收入 $query->where("finance_type",$params["finance_type"]); break; case 2://提现 $query->where("finance_type",$params["finance_type"]); break; } $res = $query ->select( [ "finance_balance", "finance_type", "finance_number", "created_at", "cash_status", "id", "order_number" ] ) ->paginate($params["page_size"]); return [ "total"=>$res->total(), "list"=>$res->items() ]; } /** * 流水详情逻辑 */ public static function getFinanceDetailLogic() { $userId = BaseUtil::getUserId(); $params = request()->all(); $finance = UserFinanceModel::query() ->where("user_id",$userId) ->select( [ "finance_balance", "finance_remark", "finance_number", "created_at", "cash_status", "order_number" ] )->find($params["id"]); return $finance; } /** * 提现逻辑 */ public static function getCashLogic() { $params = request()->all(); $crashBalance = $params["amount"]; $userId = BaseUtil::getUserId(); $user = UserModel::query()->find($userId); if($user->user_balance < $crashBalance){ throw new CommonException(ErrorEnum::ERROR_CASH_ENUGH); } $key = "cashMoeny:".$userId; BaseUtil::setRedisLock($key,60); //开启事务 DB::beginTransaction(); //1.修改用户可提现金额 $user = UserModel::query()->lockForUpdate()->find($userId); $userBalance = $user->user_balance; $user->user_balance -= $crashBalance; $userRes = $user->save(); if(!$userRes){ DB::rollBack(); throw new CommonException(ErrorEnum::ERROR_CASH); } //2.写入流水记录 $financeRes = UserFinanceModel::query()->insertGetId( [ "user_id"=>$userId, "user_before_balance"=>$userBalance, "user_after_balance"=>$userBalance-$crashBalance, "finance_balance"=>$crashBalance, "finance_remark"=>"用户提现", "finance_type"=>2, "finance_number"=>time(), "created_at"=>date("Y-m-d H:i:s"), "updated_at"=>date("Y-m-d H:i:s"), ] ); if(!$financeRes){ DB::rollBack(); throw new CommonException(ErrorEnum::ERROR_CASH); } //3.写入提现记录 $cashRes = UserCashModel::query()->insert( [ "user_id"=>$userId, "user_finance_id"=>$financeRes, "cash_money"=>$crashBalance, "cash_status"=>0, "check_status"=>1, "check_remark"=>"用户提现", "created_at"=>date("Y-m-d H:i:s"), "updated_at"=>date("Y-m-d H:i:s"), "cash_order_number"=>BaseUtil::getOrderNumber($userId) ] ); if(!$cashRes){ DB::rollBack(); throw new CommonException(ErrorEnum::ERROR_CASH); } DB::commit(); //发送企微通知 BaseUtil::sendBaoJing("","用户【".$user["id"]."】提现,金额:".$crashBalance,"用户提现申请"); } /** * 获取用户推广二维码逻辑 */ public static function getRecommendUrlLogic() { $userId = BaseUtil::getUserId(); $params = request()->all(); $app = WechatAccountUtil::getApp($params["code"]); return $app->qrcode->forever($userId); } /** * 反馈逻辑 */ public static function feedbackLogic() { $userId = BaseUtil::getUserId(); $params = request()->all(); $user = UserModel::findById($userId); UserFeadbackModel::query() ->insert( [ "user_id"=>$userId, "user_nick_name"=>$user["user_nickname"], "content"=>$params["content"], "created_at"=>date("Y-m-d H:i:s"), "updated_at"=>date("Y-m-d H:i:s"), "status"=>0 ] ); } }