
一、迭代背景
医药类电商系统对合规性、数据规范性、流程严谨度要求远高于普通商城。元岳科技原有商城框架在医药场景存在多处短板:
• 无独立品牌管理模块,药品品牌杂乱、无法统一管控
• 商品批量导入导出字段不全,药品上架效率极低
• 处方药前端展示逻辑简陋,缺少合规提示、流程说明、用药安全提示
• 营销、分销未区分处方药/甲类OTC/乙类OTC,存在严重合规风险
• 佣金统计为整单统计,无明细、无日志,对账困难、不满足药监台账要求
本次迭代一次性完成后台标准化管理 + 商品批量运维 + 前端处方药合规展示 + 营销&分销合规管控 + 佣金明细日志体系整套能力升级。

二、本次迭代核心功能概述
本次更新包含四大模块:
1. 品牌独立管理模块(新增)
2. 药品商品批量导入导出能力强化
3. 前端处方药详情页、处方详情页合规重构优化
4. 营销分销管控 + 明细级佣金日志合规体系
三、功能详细设计与实现
1. 品牌管理模块(新增)
原有系统无商品品牌字段管理、无法筛选、无法统一维护。本次新增完整品牌后台管理体系。
核心能力:
• 后台独立品牌列表:新增、编辑、禁用、排序
• 商品绑定品牌,前台自动展示品牌信息,药品展示更专业
• 支持按品牌筛选商品、后台按品牌统计库存与销量
• 导入导出同步支持品牌字段,上架标准化
业务价值:解决医药商品品牌杂乱、维护混乱问题,适配药品多品牌。
/**
* 品牌管理控制器
* Class StoreBrand
* @package app\adminapi\controller\v1\product
*/
class StoreBrand extends AuthController
{
public function __construct(App $app, StoreBrandServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 品牌列表
* @return mixed
*/
public function index()
{
$where = $this->request->getMore([
['brand_name', ''],
['is_show', ''],
['page', 1],
['limit', 20],
]);
return app('json')->success($this->services->getList($where));
}
/**
* 品牌详情
* @param $id
* @return mixed
*/
public function read($id)
{
return app('json')->success($this->services->get($id));
}
/**
* 新增品牌
* @return mixed
*/
public function save()
{
$data = $this->request->postMore([
['brand_name', ''],
['sort', 0],
['is_show', 1],
]);
$this->services->create($data);
return app('json')->success('添加成功');
}
/**
* 编辑品牌
* @param $id
* @return mixed
*/
public function update($id)
{
$data = $this->request->postMore([
['brand_name', ''],
['sort', 0],
['is_show', 1],
]);
$this->services->update((int)$id, $data);
return app('json')->success('编辑成功');
}
/**
* 删除品牌
* @param $id
* @return mixed
*/
public function delete($id)
{
$this->services->del((int)$id);
return app('json')->success('删除成功');
}
/**
* 获取已启用的品牌列表(下拉选择用)
* @return mixed
*/
public function getEnableList()
{
$where = $this->request->getMore([
['brand_name', ''],
]);
return app('json')->success($this->services->getEnableList($where));
}
}
2. 药品商品批量导入导出升级
针对医药商品字段多、分类严、合规属性强的特点,重构导入导出逻辑。
优化点:
• 支持药品类型批量识别:处方药/甲类OTC/乙类OTC自动匹配属性
• 导入模板新增:品牌、药品规格、等专属字段
• 导入失败精准提示,避免大批量上架报错
• 导出完整药品台账,可直接用于库存盘点、药监备查
解决痛点:商家上万条药品商品无需手动逐条编辑,大幅降低运维成本。
/**
* 商品批量导入
* @return \think\Response
*/
public function importProduct()
{
$rows = $this->request->post('rows', []);
if (!is_array($rows) || empty($rows)) {
return app('json')->fail('导入数据不能为空');
}
/** @var \app\services\product\product\StoreProductImportServices $importService */
$importService = app()->make(\app\services\product\product\StoreProductImportServices::class);
$result = $importService->importProducts($rows);
return app('json')->success($result);
}
/**
* 下载商品导入模板
* @return \think\Response
*/
public function importTemplate()
{
$header = ['商品名称', '品牌', '商品类型', '商品分类', '售价', '销量', '库存'];
$filename = '商品导入模板_' . date('YmdHis', time());
// 返回模板数据,由前端生成Excel
return app('json')->success(compact('header', 'filename'));
}
3. 前端处方药详情页 + 处方详情页重构优化
原有前端处方药页面和普通商品无区别,缺少合规提示、流程说明,存在展示不合规风险。
页面优化内容:
• 处方药商品页移除购物车、批量加入清单结算能力,仅保留立即问诊
• 页面顶部增加合规警示:处方药需医生问诊开方、不可直接购买
• 展示完整处方流程:提交问诊 - 医生评估 - 药师审方 - 处方生成 - 下单购药
• 处方详情页展示:处方编号、开方医生、审核药师、开方时间、药品配伍说明
• 增加用药安全提示、药品禁忌提示,提升合规性与用户信任感
• 优化UI层级,区分OTC普通商品与处方药专属页面结构
合规核心:处方药全程无直接购买、无批量结算、无营销优惠,完全符合网售药品监管要求。
<template v-else>
<!-- ① 顶部绿色提示横幅(条件1:审核通过 && 订单未支付未取消) -->
<view class="rx-banner" v-if="showPayActions">
<view class="banner-icon">✅</view>
<view class="banner-text">已为您开具处方,请核对无误后再支付</view>
</view>
<!-- ② 处方基础信息 -->
<view class="rx-card top">
<view class="row acea-row row-between-wrapper">
<view>开方时间:{{ rp_info.create_date }}</view>
<view class="font-color status-text">{{ rp_info.rp_msg }}</view>
</view>
<view class="row">
<text class="label">医生:</text>
<text>{{ rp_info.doctor_name }}</text>
</view>
<view class="row">
<text class="label">诊断:</text>
<text>{{ rp_info.diagnose || '暂无' }}</text>
</view>
<view class="row" v-if="rp_info.audit_reason">
<text class="label">拒方原因:</text>
<text>{{ rp_info.audit_reason }}</text>
</view>
<view class="row">
<text class="label">处方号:</text>
<text>{{ rp_info.rp_id }}</text>
</view>
</view>
<!-- 药师审核中提示 -->
<view class="audit-tip" v-if="showAuditTip">
<view class="audit-icon"></view>
<text>药师正在审核处方,请耐心等待</text>
</view>
<!-- ③ 药品清单 -->
<view class="rx-card medical_list">
<view class="medical_top acea-row row-between-wrapper">
<view>药品列表</view>
<view class="num font-color">共{{ rp_info.sale_amount }}件</view>
</view>
<view class="item" v-for="(item, index) in rp_info.drugInfo" :key="index">
<view class="name acea-row row-between-wrapper">
<view>{{ item.drug_name }}</view>
<view>数量:{{ item.sale_amount }}</view>
</view>
<view class="text">规格:<text>{{ item.drug_specification }}</text></view>
</view>
<!-- ④ 查看处方 -->
<view class="prescription acea-row row-between-wrapper">
<view>处方笺</view>
<button @click="checkPrescription" v-if="rp_info.rp_url">查看处方</button>
<view v-else style="color: #969696;font-size: 24rpx;">暂无处方</view>
</view>
</view>
<!-- ⑤ 用药安全温馨提示 -->
<view class="rx-card safe-tip">
<view class="tip-title">温馨提示</view>
<view class="tip-text">1. 请您再次确认用过该药品且无不良反应。如未用过该药品,请停止支付并联系药师咨询。</view>
<view class="tip-text">2. 应严格按原处方和《药品说明书》使用(严格对照用法用量、不良反应、禁忌、注意事项和药物相互作用)。</view>
<view class="tip-text">3. 用药期间如有不适,请立即停药并及时到当地医疗机构就诊。祝您早日康复!</view>
</view>
<view style="height: 150rpx"></view>
<!-- ⑥ 底部吸底支付按钮(条件1) -->
<view class="pay-bar" v-if="showPayActions">
<button class="pay-btn" @click="goPay">我已核对无误,去支付</button>
</view>
</template>
<!-- 处方图片 -->
<view class="poster-pop" v-if="showPrescription">
<image src="/static/images/poster-close.png" class="close" @click="showPrescription = false"></image>
<image :src="rp_info.rp_url"></image>
<!-- #ifndef H5 -->
<view class="save-poster" @click="savePosterPath">保存到手机</view>
<!-- #endif -->
<!-- #ifdef H5 -->
<view class="keep">长按图片可以保存到手机</view>
<!-- #endif -->
</view>
4. 营销&分销合规管控 + 明细佣金日志体系
针对医药行业强监管规则,实现药品类型权限隔离,彻底杜绝违规营销、违规返佣。
管控规则:
• 处方药:禁止一切营销、禁止分销返佣(强制锁死,后台不可改)
• 甲类OTC:默认禁止营销分销,后台可控开关
• 乙类OTC:正常营销、正常分销
佣金明细重构:
• 混合订单(OTC+处方药)自动隔离,处方药零佣金并记录原因
• 完整佣金日志:推广人、商品类型、佣金状态、不计佣原因全部留痕
• 支持台账导出、财务对账、监管核查
<template>
<div>
<el-card :bordered="false" shadow="never" class="ivu-mt">
<div class="marketing-setting-card">
<div class="setting-header">
<span class="setting-title">甲类OTC参与营销活动</span>
<el-switch
v-model="otcEnable"
:active-value="1"
:inactive-value="0"
@change="handleSwitchChange"
style="margin-left: 16px;"
/>
</div>
<div class="setting-warning-box">
<div class="warning-icon">⚠</div>
<div class="warning-text">
开启后,甲类非处方药可参与秒杀、拼团、砍价、抽奖、积分兑换等营销活动。<br/>
依据《药品网络销售监督管理办法》第八条及《处方药网络零售合规指南》(药监综药管函〔2026〕282号),开启后如因活动力度或宣传不当引发监管风险,由本门店自行承担。
</div>
</div>
<div class="setting-record" v-if="lastRecord">
<span class="record-label">最近一次操作:</span>
<span class="record-value">
{{ lastRecord.admin_name }} 于 {{ formatTime(lastRecord.add_time) }}
<el-tag v-if="lastRecord.action === 'enable_otc_a_marketing'" type="success" size="mini">开启</el-tag>
<el-tag v-else type="info" size="mini">关闭</el-tag>
</span>
</div>
<div class="setting-record" v-else>
<span class="record-label">暂无操作记录</span>
</div>
</div>
</el-card>
四、关键技术实现亮点
• 双层校验机制:前端展示限制 + 后端强制拦截,杜绝绕过风险
• 药品类型权限自动继承:新增药品自动识别类型并赋值营销/分销权限
• 明细级佣金架构,解决混合订单合规难题
• 全流程日志留痕:处方、问诊、佣金、操作日志全部可追溯
五、总结
本次迭代完成了医药商城从“普通商城模式”到专业合规医药电商模式的关键升级:
标准化品牌管理、批量商品运维、处方药前端合规展示、营销分销强隔离、佣金明细台账化,全方位满足药监合规、商家运维、财务对账、用户体验四大需求。
整套系统实现:一次部署、终身可用、无年费、无扣点、支持二次定制开发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。