支持 EC(六度人和)与金蝶云星辰之间的双向数据同步:
crmId 作为金蝶客户编码 number,已存在则更新、不存在则新增当用户提到以下需求时触发此 Skill:
确保 .env 文件已配置(技能目录下的 .env),包含 EC 和金蝶的 API 密钥:
EC_APP_ID=900333116588032000
EC_APP_SECRET=9PUNq53k2RzwesWr9eJ
EC_CID=请填写企业唯一标识ID
JDY_APP_KEY=S4aaVJSF
JDY_APP_SECRET=336fdd32c484b0f6d238619862cc0b2e7ad59272
JDY_CLIENT_ID=267904
JDY_CLIENT_SECRET=dcdd1a0348f476f43331c614e754f666
JDY_INSTANCE_ID=293477853998223360
EC → 金蝶(客户+订单):
cd /Users/menghu/.workbuddy/skills/ec-to-jdy-sync && python3 scripts/sync.py
金蝶 → EC(商品分类→产品):
cd /Users/menghu/.workbuddy/skills/ec-to-jdy-sync && python3 scripts/sync_products.py
全量同步:
python3 scripts/sync.py --full # EC→金蝶 全量
python3 scripts/sync_products.py --full # 金蝶→EC 全量
已配置两个 Automation:
ec-to-jdy-sync/
├── SKILL.md # 本文件
├── .env # API 密钥配置
├── state.json # 同步状态(自动生成,含映射表)
└── scripts/
├── sync.py # EC→金蝶 主同步脚本(客户+订单)
├── sync_products.py # 金蝶→EC 商品分类同步脚本
├── ec_client.py # EC API 客户端
├── jdy_client.py # 金蝶 API 客户端
├── state.py # 同步状态管理(含分类→产品映射)
└── config.py # 配置加载
| EC 字段 | 金蝶字段 | 说明 |
|---|---|---|
| --------- | ---------- | ------ |
crmId | number | 客户编码(唯一键,用于去重) |
name / company | name | 客户名称(企业用 company,个人用 name) |
mobile | mobile | 手机号 |
phone | telephone | 座机 |
email | email | 邮箱 |
prefecture | region_name | 地区 |
companyAddress | address | 地址 |
memo | remark | 备注 |
crmType | customer_type | 客户类型(0→person, 1→company) |
| EC 字段 | 金蝶字段 | 说明 |
|---|---|---|
| --------- | ---------- | ------ |
code | billno | 订单编码(加 EC- 前缀) |
crmId | customerid_id | 关联金蝶客户编码 |
money | material_entity[].price | 订单金额 |
productId | material_entity[].materialid_id | 物料编码(关联已有物料) |
createTime / dealDate | billdate | 订单日期 |
productDes + remark | remark | 订单备注 |
| 金蝶字段 | EC 字段 | 说明 |
|---|---|---|
| ---------- | --------- | ------ |
id | 本地映射表记录 | 用于去重判断 |
name | productName | 分类名称 → 产品名称 |
number | 附加信息 | 编码可拼接至产品名 |
| — | productUnit | 默认「个」 |
| — | money | 默认 0.00 |
| — | onOff | 默认 0(上架) |
| — | specs | 默认 0(无规格) |
| — | optUserId | 操作用户 3446438 |
1. 获取金蝶 app-token(HMAC-SHA256 签名认证)
2. 读取上次同步时间(state.json)
3. 从 EC 拉取变更的客户列表(modifyTime >= last_customer_sync)
├── 对每个客户:检查金蝶是否存在(number = crmId)
│ ├── 存在 → 更新
│ └── 不存在 → 新增
4. 从 EC 拉取已结单订单列表(creatTime >= last_order_sync, status=3)
├── 先确保对应客户已同步到金蝶
├── 检查订单是否已存在(billno)
│ └── 不存在 → 新增
5. 更新同步时间到 state.json
6. 输出同步报告
1. 获取金蝶 app-token
2. 读取上次同步时间(state.json)
3. 从金蝶拉取变更的商品分类(modify_start_time >= last_product_sync)
4. 拉取 EC 已有产品列表(用于名称匹配去重)
5. 对每个分类:
├── 查本地映射表,已存在 → 跳过
├── 按 productName 匹配 EC 产品,已存在 → 记录映射、跳过
└── 不存在 → 调用 EC addProduct 创建
6. 更新映射表和同步时间到 state.json
7. 输出同步报告
首次使用请确保安装 requests:
pip install requests
getSales 接口 creatTime 间隔不超过31天,批量同步时需注意--fullproductId 直接作为金蝶物料编码 materialid_id,需确保金蝶中已存在对应物料sync.py 中的 map_ec_customer_to_jdy() 和 map_ec_order_to_jdy() 函数共 2 个版本