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

tuchuang_共享文件_图片_取消_删除










🌳 api_deal_sharefile.cc 函数调用树
ApiDealsharefile()                       # 共享文件操作接口主入口
├── QueryParseKeyValue()                 # 解析URL中的cmd参数
├── decodeDealsharefileJson()            # 解析请求JSON
│   ├── jsonReader.parse()               # JSON字符串解析
│   ├── root["user"].asString()          # 提取用户名
│   ├── root["md5"].asString()           # 提取文件MD5
│   └── root["filename"].asString()      # 提取文件名
├── 根据cmd分发到不同处理逻辑
│   ├── cmd = "cancel" → 取消分享文件
│   │   └── handleCancelShareFile()      # 处理取消分享
│   │       ├── CDBManager::getInstance() # 获取数据库管理器
│   │       ├── GetDBConn("tuchuang_master") # 获取主库连接
│   │       ├── CacheManager::getInstance() # 获取缓存管理器
│   │       ├── GetCacheConn("ranking_list") # 获取Redis连接
│   │       ├── sprintf(fileid, "%s%s")  # 生成文件唯一标识
│   │       ├── 更新用户文件共享状态
│   │       │   ├── sprintf(sql_cmd, "update user_file_list set shared_status = 0...")
│   │       │   └── db_conn->ExecuteUpdate() # 执行更新
│   │       ├── 删除分享记录
│   │       │   ├── sprintf(sql_cmd, "delete from share_file_list...")
│   │       │   └── db_conn->ExecuteDrop() # 执行删除
│   │       ├── 清理Redis缓存
│   │       │   ├── cache_conn->ZsetZrem(FILE_PUBLIC_ZSET, fileid) # 删除有序集合
│   │       │   └── cache_conn->Hdel(FILE_NAME_HASH, fileid) # 删除哈希映射
│   │       └── 返回处理结果
│   ├── cmd = "save" → 转存文件
│   │   └── handleSaveFile()             # 处理文件转存
│   │       ├── CDBManager::getInstance() # 获取数据库管理器
│   │       ├── GetDBConn("tuchuang_master") # 获取主库连接
│   │       ├── 检查文件是否已存在
│   │       │   ├── sprintf(sql_cmd, "select * from user_file_list...")
│   │       │   └── CheckwhetherHaveRecord() # 检查记录是否存在
│   │       ├── 查询文件引用计数
│   │       │   ├── sprintf(sql_cmd, "select count from file_info...")
│   │       │   └── GetResultOneCount()  # 获取当前计数
│   │       ├── 更新文件引用计数
│   │       │   ├── sprintf(sql_cmd, "update file_info set count = %d...")
│   │       │   └── db_conn->ExecuteUpdate() # 执行更新
│   │       ├── 生成创建时间
│   │       │   ├── gettimeofday()       # 获取当前时间
│   │       │   ├── localtime()          # 转换为本地时间
│   │       │   └── strftime()           # 格式化时间字符串
│   │       ├── 插入用户文件记录
│   │       │   ├── sprintf(sql_cmd, "insert into user_file_list...")
│   │       │   └── db_conn->ExecuteCreate() # 执行插入
│   │       └── 返回处理结果
│   └── cmd = "pv" → 共享文件下载计数
│       └── handlePvFile()               # 处理共享文件下载计数
│           ├── CDBManager::getInstance() # 获取数据库管理器
│           ├── GetDBConn("tuchuang_master") # 获取主库连接
│           ├── CacheManager::getInstance() # 获取缓存管理器
│           ├── GetCacheConn("ranking_list") # 获取Redis连接
│           ├── sprintf(fileid, "%s%s")  # 生成文件唯一标识
│           ├── 查询共享文件PV值
│           │   ├── sprintf(sql_cmd, "select pv from share_file_list...")
│           │   ├── ExecuteQuery()       # 执行查询
│           │   │   └── result_set->GetInt("pv")
│           │   └── delete result_set    # 释放结果集
│           ├── 更新MySQL PV值
│           │   ├── sprintf(sql_cmd, "update share_file_list set pv = %d...")
│           │   └── db_conn->ExecuteUpdate() # 执行更新
│           ├── 检查Redis中是否存在
│           │   └── cache_conn->ZsetExit(FILE_PUBLIC_ZSET, fileid)
│           ├── 根据Redis状态处理
│           │   ├── 情况1: Redis中不存在
│           │   │   ├── cache_conn->ZsetAdd() # 添加有序集合
│           │   │   └── cache_conn->Hset() # 添加哈希映射
│           │   ├── 情况2: Redis中存在
│           │   │   └── cache_conn->ZsetIncr() # 增加PV值
│           │   └── 情况3: Redis操作出错
│           └── 返回处理结果
├── encodeDealsharefileJson()            # 封装响应JSON
│   ├── root["code"] = ret               # 设置状态码
│   └── writer.write(root)               # JSON序列化
└── 返回处理结果



 api_dealfile.cc 函数调用树
ApiDealfile()                           # 文件操作接口主入口
├── QueryParseKeyValue()                 # 解析URL中的cmd参数
├── 根据cmd分发到不同处理逻辑
│   ├── cmd = "share" → 分享文件
│   │   ├── decodeDealfileJson()         # 解析分享请求JSON
│   │   │   ├── jsonReader.parse()       # JSON字符串解析
│   │   │   ├── root["user"].asString()  # 提取用户名
│   │   │   ├── root["token"].asString() # 提取Token
│   │   │   ├── root["md5"].asString()   # 提取文件MD5
│   │   │   └── root["filename"].asString() # 提取文件名
│   │   ├── handleShareFile()            # 处理文件分享
│   │   │   ├── CDBManager::getInstance() # 获取数据库管理器
│   │   │   ├── GetDBConn("tuchuang_master") # 获取主库连接
│   │   │   ├── CacheManager::getInstance() # 获取缓存管理器
│   │   │   ├── GetCacheConn("ranking_list") # 获取Redis连接
│   │   │   ├── sprintf(fileid, "%s%s")  # 生成文件唯一标识
│   │   │   ├── Redis检查文件是否已分享
│   │   │   │   └── cache_conn->ZsetExit(FILE_PUBLIC_ZSET, fileid)
│   │   │   ├── MySQL检查文件是否已分享
│   │   │   │   ├── sprintf(sql_cmd, "select * from share_file_list...")
│   │   │   │   └── CheckwhetherHaveRecord() # 检查记录是否存在
│   │   │   ├── 更新用户文件共享状态
│   │   │   │   ├── sprintf(sql_cmd, "update user_file_list set shared_status = 1...")
│   │   │   │   └── db_conn->ExecuteUpdate() # 执行更新
│   │   │   ├── 插入分享记录
│   │   │   │   ├── time() & localtime() # 获取当前时间
│   │   │   │   ├── strftime()           # 格式化时间
│   │   │   │   ├── sprintf(sql_cmd, "insert into share_file_list...")
│   │   │   │   └── db_conn->ExecuteCreate() # 执行插入
│   │   │   └── 更新Redis缓存
│   │   │       ├── cache_conn->ZsetAdd(FILE_PUBLIC_ZSET, 0, fileid)
│   │   │       └── cache_conn->Hset(FILE_NAME_HASH, fileid, filename)
│   │   └── encodeDealfileJson()         # 封装分享响应
│   │       ├── root["code"] = ret       # 设置状态码
│   │       └── writer.write(root)       # JSON序列化
│   ├── cmd = "del" → 删除文件
│   │   ├── decodeDealfileJson()         # 解析删除请求JSON
│   │   └── handleDeleteFile()           # 处理文件删除
│   │       ├── CDBManager::getInstance() # 获取数据库管理器
│   │       ├── GetDBConn("tuchuang_master") # 获取主库连接
│   │       ├── CacheManager::getInstance() # 获取缓存管理器
│   │       ├── GetCacheConn("ranking_list") # 获取Redis连接
│   │       ├── 检查文件分享状态
│   │       │   ├── sprintf(sql_cmd, "select shared_status from user_file_list...")
│   │       │   └── GetResultOneStatus() # 获取分享状态
│   │       ├── 如果已分享 → 清理分享数据
│   │       │   ├── sprintf(fileid, "%s%s") # 生成文件标识
│   │       │   ├── cache_conn->ZsetZrem(FILE_PUBLIC_ZSET, fileid) # Redis删除
│   │       │   ├── cache_conn->Hdel(FILE_NAME_HASH, fileid) # Redis删除映射
│   │       │   ├── sprintf(sql_cmd, "delete from share_file_list...")
│   │       │   └── db_conn->ExecuteDrop() # 删除分享记录
│   │       ├── 删除用户文件记录
│   │       │   ├── sprintf(sql_cmd, "delete from user_file_list...")
│   │       │   └── db_conn->ExecuteDrop() # 执行删除
│   │       ├── 更新文件引用计数
│   │       │   ├── sprintf(sql_cmd, "select count from file_info...")
│   │       │   ├── GetResultOneCount()  # 获取当前计数
│   │       │   ├── count -= 1           # 计数减1
│   │       │   ├── sprintf(sql_cmd, "update file_info set count=%d...")
│   │       │   └── db_conn->ExecuteUpdate() # 执行更新
│   │       ├── 如果引用计数为0 → 彻底删除
│   │       │   ├── sprintf(sql_cmd, "select file_id from file_info...")
│   │       │   ├── ExecuteQuery()       # 查询文件ID
│   │       │   │   └── result_set->GetString("file_id")
│   │       │   ├── sprintf(sql_cmd, "delete from file_info...")
│   │       │   ├── db_conn->ExecuteDrop() # 删除文件信息
│   │       │   └── RemoveFileFromFastDfs() # 删除物理文件
│   │       └── 返回删除结果
│   │   └── encodeDealfileJson()         # 封装删除响应
│   └── cmd = "pv" → 下载计数处理
│       ├── decodeDealfileJson()         # 解析PV请求JSON
│       └── handlePvFile()               # 处理下载计数
│           ├── CDBManager::getInstance() # 获取数据库管理器
│           ├── GetDBConn("tuchuang_master") # 获取主库连接
│           ├── 查询当前PV值
│           │   ├── sprintf(sql_cmd, "select pv from user_file_list...")
│           │   ├── ExecuteQuery()       # 执行查询
│           │   │   └── result_set->GetInt("pv")
│           │   └── delete result_set    # 释放结果集
│           ├── 更新PV值
│           │   ├── sprintf(sql_cmd, "update user_file_list set pv = %d...")
│           │   └── db_conn->ExecuteUpdate() # 执行更新
│           └── 返回处理结果
│       └── encodeDealfileJson()         # 封装PV响应
└── 返回处理结果


🌳 api_sharefiles.cc 函数调用树

ApiSharefiles()                          # 共享文件接口主入口
├── QueryParseKeyValue()                 # 解析URL中的cmd参数
├── 根据cmd分发到不同处理逻辑
│   ├── cmd = "count" → 获取共享文件总数
│   │   ├── handleGetSharefilesCount()   # 处理文件总数查询
│   │   │   ├── CDBManager::getInstance() # 获取数据库管理器
│   │   │   ├── GetDBConn("tuchuang_slave") # 获取从库连接
│   │   │   ├── ExecuteQuery()           # 执行SQL查询
│   │   │   │   └── "select count(*) from share_file_list"
│   │   │   ├── result_set->Next()       # 遍历查询结果
│   │   │   ├── GetInt("count(*)")       # 获取总数
│   │   │   └── delete result_set        # 释放结果集
│   │   └── encodeSharefilesJson()       # 封装总数响应
│   │       ├── root["code"] = ret       # 设置状态码
│   │       ├── root["total"] = total    # 设置文件总数
│   │       └── writer.write(root)       # JSON序列化
│   ├── cmd = "normal" → 获取共享文件列表
│   │   ├── decodeShareFileslistJson()   # 解析分页参数
│   │   │   ├── jsonReader.parse()       # JSON解析
│   │   │   ├── root["start"].asInt()    # 提取起始位置
│   │   │   └── root["count"].asInt()    # 提取数量
│   │   └── handleGetShareFilelist()     # 处理文件列表
│   │       ├── handleGetSharefilesCount() # 先获取总数
│   │       ├── FormatString()           # 格式化SQL
│   │       ├── ExecuteQuery()           # 执行联合查询
│   │       │   └── "select share_file_list.*, file_info.url..."
│   │       ├── 遍历查询结果集
│   │       │   ├── result_set->Next()   # 遍历记录
│   │       │   ├── GetString("user")    # 获取用户名
│   │       │   ├── GetString("md5")     # 获取MD5
│   │       │   ├── GetString("file_name") # 获取文件名
│   │       │   ├── GetInt("pv")         # 获取下载量
│   │       │   ├── GetString("create_time") # 获取创建时间
│   │       │   ├── GetString("url")     # 获取文件URL
│   │       │   ├── GetInt("size")       # 获取文件大小
│   │       │   └── GetString("type")    # 获取文件类型
│   │       ├── 构建JSON文件数组
│   │       │   ├── files[file_index] = file # 添加文件对象
│   │       │   └── file_index++         # 索引递增
│   │       ├── root["total"] = total    # 设置总数
│   │       ├── root["count"] = file_index # 设置返回数量
│   │       ├── root["files"] = files    # 设置文件数组
│   │       └── root.toStyledString()    # JSON序列化
│   └── cmd = "pvdesc" → 获取下载排行榜
│       ├── decodeShareFileslistJson()   # 解析分页参数
│       └── handleGetRankingFilelist()   # 处理排行榜
│           ├── handleGetSharefilesCount() # 获取MySQL文件总数
│           ├── cache_conn->ZsetZcard()  # 获取Redis文件总数
│           ├── 检查MySQL和Redis数据一致性
│           │   └── 如果不一致 → 重新同步
│           │       ├── cache_conn->Del() # 清空Redis数据
│           │       ├── ExecuteQuery()   # 查询MySQL数据
│           │       │   └── "select md5, file_name, pv from share_file_list..."
│           │       ├── 遍历MySQL结果集
│           │       │   ├── pCResultSet->Next() # 遍历记录
│           │       │   ├── GetString("md5") # 获取MD5
│           │       │   ├── GetString("file_name") # 获取文件名
│           │       │   └── GetInt("pv") # 获取PV值
│           │       ├── cache_conn->ZsetAdd() # 添加到有序集合
│           │       └── cache_conn->Hset() # 添加到哈希表
│           ├── cache_conn->ZsetZrevrange() # 降序获取排行榜
│           ├── 遍历Redis返回的成员
│           │   ├── cache_conn->Hget()   # 获取文件名
│           │   ├── cache_conn->ZsetGetScore() # 获取PV值
│           │   └── 构建JSON文件对象
│           ├── root["code"] = ret       # 设置状态码
│           ├── root["total"] = sql_num  # 设置总数
│           ├── root["count"] = file_count # 设置返回数量
│           ├── root["files"] = files    # 设置文件数组
│           └── root.toStyledString()    # JSON序列化
└── 返回处理结果

http://www.dtcms.com/a/457792.html

相关文章:

  • 基因组组装:1. Hifiasm 组装参考基因组
  • 网站制作设计专业公司网络营销个人总结
  • 力扣2779. 数组的最大美丽值
  • 深圳做分销网站北京搭建工厂
  • 甘肃省建设厅执业资格注册中心网站通知网站开发三个月能学会吗
  • 石家庄手机网站建设装饰装修网站大全
  • 鼎锋优配股票杠杆交易市场赣锋锂业涨超6%,创两年多新高
  • 网络服务投诉平台商丘seo快速排名
  • 自适应网站欣赏wordpress主题超限
  • TODO 分类任务指标计算和展示 准确率 F1 Recall
  • 网站分辨率做96是否会更好织梦做双语网站
  • 贪心:火烧赤壁
  • 公司网站建设的环境分析城乡建设厅官方网站办事大厅
  • 深度学习基础:从原理到实践——附录A:PyTorch 深度学习框架基础(下)
  • 网站 二级分类品牌创意网站建设徕卡e
  • 做网站设计师庐江网站制作
  • 夫妻分房睡,真的会感情淡吗?分房不是问题,分心才是
  • postgresql_2025Q2单季度财报数据
  • wap网站 html5东莞网站的建设
  • phpmysql网站开发案例企业网址是什么?
  • 机器学习-K-means
  • 如何在网站上做网页链接网页设计基础包括
  • 关联子查询
  • Linux108 shell:.bashrc 正则表达式:. * .* ^ $ ^$ [ ] [^] ^[] ^[^ ] \< \>
  • 怎么在京东做网站上海网站备案查询
  • 关于网站建设的申请报告做网站如何赚流量钱
  • 知识点1-lcd点亮->frame buffer、字库
  • 手机版免费申请微网站赣州新闻联播视频
  • 西安市做网站的公司新东方雅思培训机构官网
  • n8n工作流配置初解