XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

STHApplication

【MAUI】寄当家——安卓端交易管理系统

公开
关注 0 Fork 0 Star 0
README.md

寄当家与寄当家社群

记账与社群是两个独立 Android APP、两个独立 ASP.NET Core 后台。记账仍叫「寄当家」,社群叫「寄当家社群」。社群 3.1.2 免费使用,注册登录无需购买或激活;社群的登录、账户、后台管理和接口已移除支付、卡密、价格、订单、发票及付费授权。记账 3.1.2 保留原收费模式。两款 APP 的账户、数据、协议和更新分别管理。

交付与启动

产品 安装包 Windows x64 后台
寄当家 artifacts/寄当家-独立记账测试版-3.1.2.apk artifacts/寄当家-记账后台-3.1.2.zip
寄当家社群(免费) artifacts/寄当家社群-3.1.2.apk artifacts/寄当家社群-社群后台-3.1.2.zip

3.1.2 将两个 APP 的服务器 IP 更新为 115.159.155.99,端口保持不变。覆盖安装后重新登录;相同账号的本机资料继续保留。详见 服务器地址更新。

社群私信优先保存在本机:服务器消息及语音保留 30 天、图片 7 天、视频 3 天,已下载的手机副本不会随服务器清理。升级时先更新 APP、同步旧记录和附件,再更新后台启用清理,详见 3.1.1 私信存储与保留期。

两份后台各自解压后双击 启动服务器.cmd,默认记账端口 5188、社群端口 5189。窗口会显示实际数据目录及 initial-admin.txt 路径,首次运行才生成数据库和管理员账号;解压目录旁边不会生成 data 文件夹。账号数据库、管理员文件和所有密钥位于各自项目外的数据目录。记账默认 %LOCALAPPDATA%\JiDangJia\AccountingServer;社群默认 %LOCALAPPDATA%\JiDangJia\CommunityServer。不得把密钥或数据放进 artifacts。

原合并数据库必须先停止服务并使用 tools/split-server-data.py 拆成两个新副本,不可直接被两个后台共用。旧用户账号 ID 和用户密码保留,两边管理员密码分别重设,登录会话作废;旧聊天、证件与社群媒体只迁入社群,旧卡密、付费授权、订单和价格仅迁入记账。已有独立社群 3.1.0 后台直接保留原私有目录升级,无需重新迁移或生成账号。详见 独立 APP、后台部署与迁移。

本次记账安装包使用此前测试版包名与签名,可覆盖 com.xfestudio.jidangjia.preview。原正式版签名密钥尚未找回,不能直接覆盖原正式包;迁移前保留原 APP 并导出业务备份。新社群使用独立固定签名,密钥保存在项目外。

APP 连接地址分别为 http://115.159.155.99:5188 和 http://115.159.155.99:5189。2026-10-22 两个新地址的健康检查均返回正常产品响应;仅执行只读检查,没有更改公网数据。源码启动分别使用 tools/start-server.ps1 -Product Accounting / -Product Community。打包使用 tools/package-split-delivery.py,校验清单位于 artifacts/SHA256.json。

本次社群服务与供需共用额度,后台支持单账号特殊额度;发布位置自动获取,私信取消预审,图片支持方向校正与缩放。记账增加可配置的购买/发票二维码和未读铃铛。两个 APP 均增加可维护备案号的关于我们;记账新增可视化打印模板。操作见 3.1.0 使用说明。

保留功能与历史版本记录

以下记录描述历次功能演进,当前以 3.1.0 的两个独立产品和迁移说明为准。

2.6.0 增加 APP 内更新:打开时检查新版本,设置中也可手动检查;管理员可上传签名 APK、填写说明、设置最低可用版本、撤回更新和清理旧安装包。公开社群图文、供需及服务取消发布预审,后台支持单独账号按天数或永久禁言,到期自动恢复。新增六位数字密码键盘、输满自动解锁、指纹自动唤起及失败回退;本次操作内的正常拍照选图返回不重复解锁,后台切换和冷启动仍验证。允许为零的费率等数值留空失焦补 0;手工记账分类网格增加「+ 新增分类」并保留管理入口;新录入入口隐藏钯金,历史记录保留。首次需手动安装 2.6.0 并同步升级服务器,之后可使用 APP 内更新,详见 更新与社群禁言。

2.5.9 给社群新上传的照片和视频添加右上角来源水印:APP 拍摄为「APP现场拍摄 + 日期时间」,相册导入为「用户本地素材 + 日期时间」,水印写入媒体文件。修复合同拍照返回时新建当单丢失,拍摄前保存本账户草稿,在 Android 回收进程后恢复表单与确认照片。续当、赎当增加实际日期,默认当天且可调整,业务记录和财务流水使用所选日期。请同步升级 APP 和服务器,详见 水印、拍照恢复与实际日期。

2.5.8 取消实时语音与视频通话,移除通话入口、来电轮询、WebRTC 页面和 TURN 配置读取。聊天保留文字、图片、按住说话、录制视频与证照互换;旧通话消息仍可查看。升级服务器后旧版通话请求返回功能已取消,详见 取消实时通话。

2.5.7 将手工记账改为「收入 / 支出 + 一个财务分类」,分类可新增、改名、排序和停用,历史流水保留。财务细类按已有账目显示,自定义分类同步进入筛选;「其他」供需只需图文简介和发布位置。修复社群分类条横滑触发整页翻页的问题。请同时升级 APP 和服务器,详见 财务分类与供需修订。

2.5.5 调整配货代购、供需简介与下架名额,增加管理员可调数量及信用标签、推荐图文视频和置顶。安卓通知使用系统提示音,锁屏只显示通用提示;到期前 7 天及当天各提醒一次,私信先使用后台定期检查,暂未配置即时推送。使用、升级及接口说明见 供需与通知。

2.5.6 修复删除及作废单据的财务统计,简化店铺记账分类,增加典当在库、珠宝玉石鉴定及本人卡片批量刷新。社群列表更紧凑,推荐移除无关控件,供需默认全部城市,服务支持省市选择,同城自动定位;聊天增加按住说话与前后摄像头切换。经营工具和关注管理移到工作台。升级及验收见 社群与财务修订。

2.5.4 支持管理员在「管理员后台 → 卡密价格管理」分别编辑一年卡、永久卡的原价和优惠实际价。初始价格为一年 ¥88(原价 ¥168)、永久 ¥198(原价 ¥328),保存后登录页和购买页同步服务器价格,旧订单保留创建时的金额,详见 卡密价格管理。客服购买及发票申请共用抖音二维码。支付宝接口已准备,未配置商户时使用客服购买,详见 支付宝配置与购买说明。

首页采用暖黑、香槟金、古铜金与暖米白。店铺名称居中,设置位于左侧,客服及通知位于右侧且保留独立间距。五项数据横向滑动,顺序为「当月利润、库存金额、活当总额、客户总数、今日新开」。下面依次是轮播广告、融通金行情、客户管理与新建客户、经营工具、近六个月收入、当物分布、到期提醒。

记账底部为工作台、业务、库存、财务;社群七个栏目在独立社群 APP 中。业务默认进入回收,另含典当、寄卖、租赁、销售和其他。选择客户支持姓名、电话和客户编号搜索。回收客户可留空;直接填写姓名或电话时,入库保存会自动建立或关联客户档案。二手回收及绝当库存与新货铺货库存分别显示;新货使用「铺货库存 → 铺货入库」录入。

贵金属统一为一个物品大类,下面选择黄金、白银、铂金或其他材质。克重乘入库单价自动计算金额,支持手动修改和重新计算。选择房产、车辆、名表等类型后,表单切换为对应详细字段。租赁与寄卖保存多件物品的资料,租赁单可填写具体物品编码。

租赁库存独立显示在库、租赁中、逾期滞还和已售。先将物品入库,再按物品编码选择出租;租赁中禁止再次出租和销售。归还后退押金并恢复在库;未归还可保留押金抵作售价,生成销售记录、收取补款和租金。缺少旧租赁成本时须先补录历史成本。其他库存使用「入库」按钮。

财务按日期区间、回收/典当/销售/店铺/其他大类、细类、收支方向和摘要筛选,汇总、流水、条形图及 CSV 使用同一组条件。选择回收等大类后,条形图分别显示黄金、白银、铂金、奢侈品等细类收入和支出。回收物品及其销售归入回收;当单和绝当销售归入典当;新货采购和销售归入销售;门店运营收支归入店铺;租赁、寄卖归入其他。

单据、库存和流水可移入回收站,关联记录退出列表和统计;还原会恢复关联明细与状态。回收站支持多选永久删除和一键清空,永久删除清理关联流水、明细及操作日志。典当增加即将到期、逾期、绝当筛选,逾期用红色边框及淡光晕、绝当用深色边框及淡光晕区分。

寄卖支持客户期望金额区间、百分比或固定服务费、默认零保管费、实际成交金额和自动计算的实收服务费;成交结算生成收款与客户净款支出,手续费和保管费计入利润。租赁只包含租金与押金。回收和铺货库存均支持按大类或金属材质筛选成本;贵金属平均克价使用总成本除以总克重,当前估算价值使用融通金回收报价乘克重,估值收益不计入已实现利润。缺少克重或报价时显示「—」。

全局广告与官方社群链接由「设置 → 管理员工具 → 进入管理后台 → 全局广告与社群管理」发布,普通账户没有修改入口,服务端也拒绝普通账户写入。各门店进入首页后同步,此后每分钟检查更新;断网时保留最近内容。广告支持图片、文字、HTTPS 跳转、排序及启停。2.2.0 需同时升级服务端,保留原数据目录;旧版门店本地广告不再影响首页。

支持多物品开单、照片、类型费率、开当收取及按期结算、续当、赎当、绝当入库、上架、销售、作废销售和入库、财务流水与报表导出、客户黑名单、员工、门店信息、凭证模板、安卓打印及 PDF、回收站、操作日志、管理员发布的社群链接与广告和数据备份。

社群包含「关注、同城、推荐、供需、服务、广场、私信」,默认推荐;支持关注与私有备注、城市地址、管理员官方推荐、图文帖子、供需和服务卡片。发布及聊天需通过认证,公开发布直接展示;实名认证与私信附件审核保留,账号禁言独立控制发言权限。私信支持文字、图片、语音消息、30 秒内录制视频和证照互换。最新规则见 更新与社群禁言,原认证、审核与服务配置见 社群与账户安全。

经营数据按登录账户分别保存在设备 SQLite 数据库。服务器保存登录账户、登录会话、卡密、设备授权、管理日志、全局广告和社群链接,以及帖子、评论、点赞、关注、私有备注、私聊消息和媒体,保留已有历史通话消息;它不上传门店的业务数据库。每日首次启动创建本账户经营数据库快照,社群数据和全局内容随服务器整个数据目录备份,包括 community-media/。

卡密与管理员

登录使用账号、密码和可选卡密。首次使用、授权到期或当前设备未激活时,登录页展开卡密输入框,验证通过后才进入工作台。有效授权期间不必每次填卡密;也可点击「有卡密?点击输入」主动续费。注册成功后等待激活时自动切回登录模式,填写卡密后重试即可。管理员免卡密登录。

该流程已对照原版 APK 的登录代码,详见 原版登录与卡密对照。原版 JM- 卡密与新版自建服务器的 JDJ- 卡密分别由各自服务器验证,不能通用。2.1.1 客户端继续兼容服务端 2.1.0,现有服务器及授权数据无需更换。

管理员可按批次生成 1–1000 张卡密,选择永久、自定义授权天数或指定到期日期,独立设置兑换有效天数,复制卡密或通过系统分享导出 CSV。完整卡密仅在生成时返回;服务端保存卡密哈希和脱敏编号。请保存当次导出的 CSV,以便分发。

卡密一次兑换,绑定账户和设备,同一账户设备重试不会重复增加天数。续费累加到当前有效期。管理员可停用卡密、停用用户、重置用户密码、撤销或恢复设备授权。停用已兑换卡密不撤销原授权;需要撤销时在授权列表操作。

客户端每两分钟联网校验,恢复到前台时重新校验。授权失效后停止业务写入;断网最多使用上次成功校验后的 24 小时,且不超过授权到期时间。初次登录与兑换必须联网。密码哈希使用带随机盐的 PBKDF2,登录会话使用随机令牌;服务端对登录和兑换设置请求频率限制。

行情与旧版迁移

行情来源是用户指定的融通金大盘。通过实时连接接收黄金、白银、铂金报价,黄金 SGE 有源报价时显示。未报价品种显示「—」,断网保留最近报价及时间,恢复联网后重连。行情来自外部服务;休市或停推时不会生成模拟价格。

旧版先在设置中导出 JSON 备份,在新版「设置 → 备份、恢复与旧版迁移」导入。保留旧版 16 张业务表和字段,导入为事务内合并;同编号记录按备份更新,导入前保存快照。新增的铺货、广告和扩展业务也包含在新版备份中。新密码备份使用 AES-GCM;旧 ENC1 解码兼容原算法,若原导出已截断中文,应从旧版重新导出明文 JSON。旧版照片为设备路径引用时,需要同时迁移原图片文件;新版拍照和选图内嵌在备份中。

构建与验证

拍照返回后的草稿恢复和凭据存放调整见 拍照草稿与凭据存放。服务器运行数据、签名凭据和测试凭据独立保存在项目外的 %LOCALAPPDATA%\JiDangJia\ 下;Artifacts 只存放构建产物和验收证据。当前原正式签名凭据缺失,正式发布已被脚本阻止,模拟器测试包不能覆盖安装正式版。

2.5.0 增加可选密码 / 指纹解锁、双重密码确认的数据清除、认证前只读社群、人工实名认证及手机号绑定、独立内容审核与图文举报、双方同意的加水印证照互换、服务卡片和永久 / 指定日期卡密。当前按确认使用 HTTP 试用、人工审核,腾讯云短信配置与购买链接留空。配置、清除范围、升级备份和验证见 社群与账户安全。

使用 .NET SDK 10.0.401、MAUI 10.0.20、Android SDK 36、JDK 21。Android 最低版本为 6.0 / API 23,安装包包含 arm64-v8a 和 x86_64。页面显式应用安全区域,避让系统栏和键盘,依据微软安全区域说明配置。

dotnet workload install maui-android
dotnet run --project tests/JiDangJia.Checks -c Release
.\tools\prepare-media-tools.ps1
dotnet publish src/JiDangJia.Server -c Release -r win-x64 --self-contained true -o artifacts/server-win-x64
$env:JDJ_SERVER_BINARY = (Resolve-Path artifacts/server-win-x64/JiDangJia.Server.exe).Path
node tools/check-api.cjs
node tools/check-community-media.cjs
node tools/check-media-watermark.cjs
node tools/check-content.cjs
dotnet run --project tests/JiDangJia.AuthChecks -c Release
dotnet run --project tests/JiDangJia.SafetyChecks -c Release
dotnet run --project tests/JiDangJia.LegalChecks -c Release
node tools/check-community-safety.cjs
node tools/check-community-cards.cjs
node tools/check-moderation-boundary.cjs
node tools/check-quotes.cjs
.\tools\publish-android.ps1

check-api.cjs、check-community-safety.cjs 和 JiDangJia.AuthChecks 使用独立测试服务器及数据库;社群安全和媒体检查建立已认证的虚构账户,可通过 JDJ_SERVER_BINARY 指定已发布的服务端程序。check-community.cjs 和 check-community-revision.cjs 已更新虚构认证资料与审核流程。check-community-cards.cjs 检查新供需、信用、推荐媒体和匿名通知,需要先有 check-community-media.cjs 生成的真实 WebM 测试样本。登录卡密检查直接编译实际客户端 AuthClient,仅替换平台存储 API,使用本机 5197 端口。check-quotes.cjs 使用真实行情连接,需要联网。正式 APK 发布脚本只读取项目外的 %LOCALAPPDATA%\JiDangJia\Signing\ 签名凭据,可用 -SigningDirectory 指定其他项目外专用目录。密钥和密码禁止放入 artifacts 或项目目录;缺少凭据或证书与现有正式版不一致时直接停止发布,不自动生成新密钥。升级同一安装应用时必须继续使用原密钥,并在项目外另行备份。微软 Android 发布说明说明了签名参数。

2.2.0 已通过 129 项业务、备份和授权检查(含旧数据库升级)、24 项登录管理 HTTP 检查、29 项全局内容 HTTP 检查、60 项实际客户端登录卡密检查,以及 202 项聊天与帖子 HTTP 检查。Pixel 7 / API 36 通过 15 项界面检查和 18 项保存数据核验,实时行情连接已收到 4 个品种的源报价。本次 18 张批注截图对应修改和模拟器验证见 界面与业务调整。

2.3.0 的业务、备份和授权检查增加至 231 项;财务筛选、租赁库存、押金抵售价、回收站和典当状态的修改与模拟器证据见 财务与租赁调整。本次客户端兼容服务端 2.2.0,升级已有 2.2.0 服务器时无须更换账户、卡密及授权数据。

2.4.0 社群改版通过 139 项新增接口、99 项双浏览器媒体,以及 79 项 Pixel 7 原生页面、附件和通话检查,需要同时升级服务端。原有账户、卡密、授权和社群记录自动迁移;保留整个数据目录。文档逐项实现、通话配置与新验收证据见 社群改版。

2.5.0 通过 142 项社群安全接口、37 项短信及账户安全、11 项审核数据隔离、113 项双浏览器媒体和 59 项 Pixel 7 原生界面检查,另通过 231 项经营与备份、60 项实际客户端登录卡密检查。最终安装包与 2.4.0 签名一致。短信签名使用本机模拟响应验证,未发送真实短信;未登记指纹的密码回退已验证,已登记指纹需实体设备验收。升级时同时更换服务器与 APK,保留整个服务器数据目录及私密资料加密密钥,详见 2.5.0 配置与验收。

2.1.0 签名 Release APK 已在 Pixel 7 / Android 16 / API 36 模拟器连接本机 5188 服务器验证发帖、点赞、评论、删除、草稿恢复、私聊收发、回复自动显示、未读及冷启动后的历史保留,见 聊天与帖子。此前登录、卡密、行情与经营功能联调记录见 本地联调测试。拍照、实际打印和其他真机能力仍需按 设备验收步骤 验收。

2.1.1 登录页卡密改动通过 60 项实际客户端与独立服务器 HTTP 检查,以及 9 项 Pixel 7 / API 36 界面检查,结果在 artifacts/verification/login-card-checks.txt 与 login-card-android.txt。模拟器使用独立测试应用连接本机服务器,正式签名包保持上述公网地址;本次测试不访问公网账户。核对报告与截图见 原版登录与卡密对照。

本项目关闭 AndroidEnableMarshalMethods,修复当前 Android 工具链在 Release 启动时出现的 MauiApplication.n_onCreate 链接错误,参见 dotnet/maui #35209。若从旧构建切换此属性,先执行 dotnet clean src/JiDangJia/JiDangJia.csproj -c Release -f net10.0-android 再发布。

2.5.1 调整首页店名居中、客服与通知入口间距,合并旧版黄金与新版贵金属的当物分布。业务、库存和社群使用可跟随手指、首尾循环的原生标签页。供需金条卡片展示实物照片、品类、源头、纯度、克重、浮动报价与交割方式;交易、发布、聊天和证照核验均有相应提示。管理员可统一发布电话、二维码和自定义客服入口;经营工具列出特惠发件、货运保险和其他工具,当前显示待上架。通过 261 项业务检查、53 项真实 HTTP 内容接口检查和 56 项 Pixel 7 原生界面检查;APK 签名保持一致。配置、升级和验证见 2.5.1 界面调整。

2.5.2 在财务增加资金成本,支持银行信贷、个人和其他资方,自填年利率或月利率、本金及起息日期。按实际天数预览,确认结算后生成「店铺 → 资金成本」支出并扣减经营利润,保留已结算区间,支持结清停止计息、回收站和备份恢复。通过 333 项自动检查及 25 项原生检查。计算口径、使用步骤及验证见 资金成本说明。

2.6.1 在注册/登录页面分别提供未预选的用户协议、隐私政策和中国移动认证服务条款,点击文字阅读全文,三项均勾选后才能提交。用户协议与隐私政策草稿位于 docs/legal/;运营主体、隐私联系方式和实际存储环境按用户要求标为待填写。中国移动使用其官方条款入口,当前没有接入或初始化运营商认证 SDK。

管理员在「设置 → 进入管理后台 → 用户协议与隐私政策管理」可编辑或导入 UTF-8 TXT、Markdown、DOCX(最多 2 MB,正文 100–60000 字符),预览后发布。仅提取 Word 正文,不执行宏或嵌入内容;发布按当前版本校验,保留完整历史正文及账户同意记录。用户在「账户登录与卡密授权 → 协议与隐私政策」可查看当前文本和同意版本。新版本要求下次注册、登录或联网恢复登录时重新确认,不打断已登录用户正在填写的订单;已同意用户的现有 24 小时短时离线授权规则继续适用。

此版本须同步升级 APP 和服务端。旧客户端缺少三项勾选及版本数据,升级后服务器会拒绝其新的登录请求;新客户端无法在旧服务端加载协议。升级保留项目外的整个服务器数据目录,协议历史和同意记录存于原 accounts.db,启动只补充缺失的首版,不覆盖已发布内容。运营者应在正式使用前补齐待填写资料并核实部署实际情况。