当前位置: 首页 > news >正文

做贷超网站 前期需要什么分析网站建设与维护一般需要多少钱每年

做贷超网站 前期需要什么分析,网站建设与维护一般需要多少钱每年,房山企业网站建设公司,wordpress3.8模板登录处理代码 在src目录新建login_handle.rs文件 目录结构如下: project |—src |—params //封装参数结构体模块 |—req.rs //封装请求参数结构体 |—resp.rs //封装返回数据结构体 |—result_parse.rs //解析返回参数结构体 |—mod.rs //导出模块 …
登录处理代码

在src目录新建login_handle.rs文件

目录结构如下:

project

|—src

        |—params   //封装参数结构体模块

                 |—req.rs    //封装请求参数结构体

                 |—resp.rs  //封装返回数据结构体

                 |—result_parse.rs  //解析返回参数结构体

                 |—mod.rs    //导出模块       

        |—common    //公共模块

                |—db.rs    //构造数据库连接池

                |—jwt.rs   //处理token

                |—mistake.rs  //处理错误

                |—util.rs  //工具函数

                |—mod.rs  //导出模块

        |—logic    //业务逻辑模块

                |—wechat.rs    //处理业务

                |—mod.rs   //导出模块

        |—login_handle.rs   //登录处理函数

login_handle.rs代码如下:

use crate::common::db;
use crate::params::req;
use crate::params::req::Userparam;
use crate::params::resp;
use crate::common::utils::get_uuid;
use crate::common::jwt::get_token;use rocket::get;
use rocket_db_pools::Connection;
use rocket_db_pools::sqlx::{self,Row};
use rocket::serde::json::{Value,Json,json};//注册
pub async fn register(mut db:  Connection<db::Prodb>,regpram:Json<req::Userparam>)->Json<resp::Regresp> {let userid=get_uuid();let sql = sqlx::query("insert into users (uname,id) values ($1,$2)").bind(&regpram.uname).bind(&userid).execute(& mut **db).await;match sql {Ok(_result) => {Json(resp::Regresp { code:1,message:"Success".to_string(),uid:userid})},Err(err) => {Json(resp::Regresp { code:0,message:err.to_string(),uid:"null".to_owned()})}}
}//获取用户idpub async fn get_id(mut db: Connection<db::Prodb>,uname:String)->String {let uid = sqlx::query("select id from users where uname=$1").bind(&uname).fetch_one(&mut **db).await.unwrap().get(0);return uid;}//验证
#[get("/verify/<uname>")]
pub async fn verify(mut db: Connection<db::Prodb>,uname:String)->Value {let count = sqlx::query("select count(*) from users where uname=$1").bind(&uname).fetch_one(&mut **db).await;match count{Ok(a)=>{  //非空行,有数据let num:i64 =a.get(0);if num>0{let id=get_id(db, uname.clone()).await;let user=Userparam{uname:uname.clone(),id:id};get_token(Json(user)).await}else{let userid=get_uuid();let regparam=Userparam{uname:uname.clone(),id:userid};let reg:Json<resp::Regresp>= register(db, Json(regparam)).await;let uid=&reg.uid;if reg.code==1{let user=Userparam{uname:uname,id:uid.to_owned()};get_token(Json(user)).await}else{json!(resp::Resp { code:0,message:"认证失败!".to_string(),})}}},Err(_b)=>{  //空行,无数据let userid=get_uuid();let regparam=Userparam{uname:uname.clone(),id:userid};let reg:Json<resp::Regresp>= register(db, Json(regparam)).await;let uid=&reg.uid;if reg.code==1{let user=Userparam{uname:uname,id:uid.to_owned()};get_token(Json(user)).await}else{json!(resp::Resp { code:0,message:"认证失败!".to_string(),})}}}}
CRUD与上传文件处理代码

在src目录新建xxx_handle.rs文件

目录结构如下:

project

|—src

        |—params   //封装参数结构体模块

                 |—req.rs    //封装请求参数结构体

                 |—resp.rs  //封装返回数据结构体

                 |—result_parse.rs  //解析返回参数结构体

                 |—mod.rs    //导出模块       

        |—common    //公共模块

                |—db.rs    //构造数据库连接池

                |—jwt.rs   //处理token

                |—mistake.rs  //处理错误

                |—util.rs  //工具函数

                |—mod.rs  //导出模块

        |—logic    //业务逻辑模块

                |—wechat.rs    //处理业务

                |—mod.rs   //导出模块

        |—login_handle.rs   //登录处理函数

        |—xxx_handle.rs   //CRUD与上传文件处理函数示例

xxx_handle.rs处理函数代码示例:

use rocket::{post,get};
use rocket_db_pools::Connection;
use rocket_db_pools::sqlx::{self,Row};
use rocket::serde::json::Json;
use sqlx::postgres::PgRow;
use rocket::form::Form;
use std::collections::HashMap;
use std::env;use crate::logic::wechat::{ocr,parse_ocr,del_img};
use crate::common::db;
use crate::params::req::{self, UploadImg};
use crate::params::resp;
use crate::common::utils::get_uuid;
use crate::common::jwt::Token;//上传文件处理
#[post("/upload",data="<img>")]
pub async fn upload_file(mut img:Form<UploadImg<'_>>)->Result<Json<HashMap<String, String>>,std::io::Error>{//处理图片上传逻辑//获取项目部署路径let exe_path=env::current_exe().unwrap();let mut path=exe_path.parent().ok_or_else(|| std::io::Error::new(std::io::ErrorKind::Other, "No parent directory found")).unwrap().to_path_buf();//拼接路径path.push("tmp");path.push(img.name);let url=path.to_str().unwrap();//将临时文件移动到路径img.file.persist_to(url).await.unwrap();//图片服务器let http_img=String::from("https://www.xxxyyy.cn/images/")+img.name;//返回识别数据let datas= ocr(&http_img).await ;if let Ok(data)=datas{let parser =parse_ocr(&data).await;return Ok(Json(parser));}else{println!("OCR文本识别失败,请重新再试");//删除临时图片del_img(String::from(url)).await.unwrap();let resp=[("code".to_string(),"0".to_string()),("msg".to_string(),"识别失败".to_string())];return Ok(Json(HashMap::from(resp)));}}//插入数据
#[post("/insert",data="<liverpram>")]
pub async fn insert_liver(mut db: Connection<db::Prodb>,liverpram:Json<req::Liverparam<'_>>,auth:Token)->Json<resp::Resp> {//获取uuidlet liverid=get_uuid();//获取从token中解析出来的用户信息let uname=auth.uname;let sql = sqlx::query("insert into livers (livervalue,checktime,uid,id) values ($1,$2,$3,$4)").bind(liverpram.livervalue).bind(liverpram.checktime).bind(uname).bind(liverid).execute(&mut **db).await;match sql {Ok(_result) => {Json(resp::Resp { code:1,message:"Success".to_string(),})},Err(err) => {Json(resp::Resp { code:0,message:err.to_string(),})}}
}//删除数据
#[get("/delete/<id>")]
pub async fn delete_liver(mut db: Connection<db::Prodb>,id:String,_auth:Token)->Json<resp::Resp> {let sql = sqlx::query("delete from livers where id=$1").bind(id).execute(&mut **db).await;match sql {Ok(_result) => {Json(resp::Resp { code:1,message:"Success".to_string(),})},Err(err) => {Json(resp::Resp { code:0,message:err.to_string(),})}}
}//返回数据
//返回liver数组--倒序
#[get("/list")]
pub async fn list_liver(mut db: Connection<db::Prodb>,auth:Token) -> Json<Vec<resp::Listliver>> {let uname=auth.uname;let rows =sqlx::query("SELECT id,uid,livervalue,checktime FROM livers where uid=$1 order by checktime desc limit 7").bind(uname);let list:Result<Vec<resp::Listliver>,sqlx::Error>=rows.map(|r:PgRow|resp::Listliver{livervalue:r.get("livervalue"),checktime:r.get("checktime"),uid:r.get("uid"),id:r.get("id")}).fetch_all(&mut **db).await;match list {Ok(data)=>{Json(data)},Err(_err)=>{Json(Vec::new())}}}//返回AFP数组--正序
#[get("/listasc")]
pub async fn list_liver_asc(mut db: Connection<db::Prodb>,auth:Token) -> Json<Vec<resp::Listliver>> {let uname=auth.uname;let rows =sqlx::query("select id,uid,livervalue,checktime from (SELECT id,uid,livervalue,checktime FROM livers where uid=$1 order by checktime desc limit 7) order by checktime asc").bind(uname);let list:Result<Vec<resp::Listliver>,sqlx::Error>=rows.map(|r:PgRow|resp::Listliver{livervalue:r.get("livervalue"),checktime:r.get("checktime"),uid:r.get("uid"),id:r.get("id")}).fetch_all(&mut **db).await;match list {Ok(data)=>{Json(data)},Err(_err)=>{Json(Vec::new())}}}//返回AFP数组--倒序
#[get("/listall")]
pub async fn list_liver_all(mut db: Connection<db::Prodb>,auth:Token) -> Json<Vec<resp::Listliver>> {let uname=auth.uname;let rows =sqlx::query("SELECT id,uid,livervalue,checktime FROM livers where uid=$1 order by checktime desc").bind(uname);let list:Result<Vec<resp::Listliver>,sqlx::Error>=rows.map(|r:PgRow|resp::Listliver{livervalue:r.get("livervalue"),checktime:r.get("checktime"),uid:r.get("uid"),id:r.get("id")}).fetch_all(&mut **db).await;match list{Ok(data)=>{Json(data)},Err(_err)=>{Json(Vec::new())}}}//返回AFP数组--正序
#[get("/listallasc")]
pub async fn list_liver_all_asc(mut db: Connection<db::Prodb>,auth:Token) -> Json<Vec<resp::Listliver>> {let uname=auth.uname;let rows =sqlx::query("SELECT id,uid,livervalue,checktime FROM livers where uid=$1 order by checktime asc").bind(uname);let list:Result<Vec<resp::Listliver>,sqlx::Error>=rows.map(|r:PgRow|resp::Listliver{livervalue:r.get("livervalue"),checktime:r.get("checktime"),uid:r.get("uid"),id:r.get("id")}).fetch_all(&mut **db).await;match list{Ok(data)=>{Json(data)},Err(_err)=>{Json(Vec::new())}}  }
http://www.dtcms.com/a/417156.html

相关文章:

  • 安徽专业做网站的大公司刚做的网站怎么在百度搜到
  • 地方门户网站有前景吗网页设计与制作课程教学总结
  • 宁波网站制作公司排名vue.js wordpress
  • 金山区做网站吗网站建设参考网站的说明
  • 互联网公司的招聘信息seo企业网站优化
  • 网站建网站建设和优做一个简单的网站要多少钱
  • 集团网站源码wordpress二次元模板
  • 企业门户网站的设计 流程图注册一个劳务公司需要多少钱
  • 品牌免费网站建设合肥市高端网站建设
  • 付费ppt模板网站哪个好江苏建设厅执业网站
  • 做后台财务系统网站网络seo软件
  • 建设公共网站的目的公众号如何导入wordpress
  • 南昌哪家做网站好敬请期待哦
  • 阿里云服务器官方网站北京最大专业网站建设
  • 网站建设文献翻译wordpress视频模版
  • 网站服务器速度it外包人员最后什么下场
  • 湖南省造价管理站官网做网站排名费用
  • 网站源码下载 用户注册2024年1月新冠高峰期
  • 大安市建设局网站网页设计html代码大全下载
  • 做网站怎么开发客户源公司网络组建方案设计
  • 响应式制作网站建设网站案例分析教育
  • 免费网站seo软件网站无icp备案
  • 做网站和做软件哪个难python开发微信小程序
  • 网站建设使用的语言wordpress在哪看代码
  • 弹幕网站制作开发网站 语言
  • 网站建设的流程图最新新闻摘抄
  • 线上少儿编程网站开发网站检测报告那里做
  • 珠海专业网站建设费用浅谈一下网络营销的几个误区
  • 网站正在建设中的网页怎么做找人做网站需要注意问题
  • 医疗软件网站建设公司排名wordpress 网络公司主题