feat: 新增地址选择插件及订阅消息等多项功能优化

- 新增地址选择插件,支持地图位置选择并返回地址和经纬度
- 新增微信订阅消息发送功能,支持审核结果、提现通知等场景
- 新增订单支付状态查询、提现收款人姓名保存等接口
- 新增服务区域管理,支持按省市区划分并同步到信息发布
- 新增资金流水和营收报表导出功能
- 新增可用优惠券查询、订单退款拆分处理等功能
- 优化后台角标显示、首页数据统计、UI配置下发等
- 修复订单支付并发问题、地区管理逻辑等
这个提交包含在:
2026-10-22 17:14:56 +08:00
父节点 088a08d43a
当前提交 cb12bf5fc8
共有 180 个文件被更改,包括 9695 次插入 和 1680 次删除

查看文件

@@ -4,6 +4,7 @@ namespace app\admin\controller\general;
use app\common\controller\Backend;
use app\common\library\Email;
use app\common\library\FcConfig;
use app\common\model\Config as ConfigModel;
use think\Cache;
use think\Db;
@@ -75,11 +76,30 @@ class Config extends Backend
}
$siteList[$v['group']]['list'][] = $value;
}
// 把小程序 / 发布 / 分销三组业务配置并入系统配置页(值真源仍是 fa_fc_config)
$fcGroups = FcConfig::groups();
$merged = [];
foreach ($siteList as $k => $v) {
$merged[$k] = $v;
if ($k === 'basic') {
foreach ($fcGroups as $gk => $gv) {
$merged[$gk] = $gv;
}
}
}
if (!isset($merged['fc_miniapp'])) {
foreach ($fcGroups as $gk => $gv) {
$merged[$gk] = $gv;
}
}
$siteList = $merged;
$index = 0;
foreach ($siteList as $k => &$v) {
$v['active'] = !$index ? true : false;
$index++;
}
unset($v);
$this->view->assign('siteList', $siteList);
$this->view->assign('typeList', ConfigModel::getTypeList());
$this->view->assign('ruleList', ConfigModel::getRegexList());
@@ -138,6 +158,13 @@ class Config extends Backend
$this->token();
$row = $this->request->post("row/a", [], 'trim');
if ($row) {
// 小程序 / 发布 / 分销:写入 fc_config(系统配置页的业务分组)
try {
FcConfig::save($row);
} catch (\Exception $e) {
$this->error($e->getMessage());
}
$configList = [];
foreach ($this->model->all() as $v) {
if (isset($row[$v['name']])) {
@@ -152,14 +179,18 @@ class Config extends Backend
}
}
try {
$this->model->allowField(true)->saveAll($configList);
if ($configList) {
$this->model->allowField(true)->saveAll($configList);
}
} catch (Exception $e) {
$this->error($e->getMessage());
}
try {
ConfigModel::refreshFile();
} catch (Exception $e) {
$this->error($e->getMessage());
if ($configList) {
try {
ConfigModel::refreshFile();
} catch (Exception $e) {
$this->error($e->getMessage());
}
}
$this->success();
}