feat: 重构顺运宝规格主链路 (#88)
This commit is contained in:
@@ -23,8 +23,7 @@ import (
|
||||
// ---------- 2. 顺运宝数据 ----------
|
||||
|
||||
// SybList 渲染货运单列表页。
|
||||
// 「匹配状态」是算出来的(shopee_sku_id 是否非空),不是存的字段,
|
||||
// 本工单(#46)不做规格匹配,这里只如实显示"有没有"。
|
||||
// 「匹配状态」是根据 spec_mappings 和当前 PDD 选项算出来的,不是存的字段。
|
||||
func (h *Handler) SybList(c *gin.Context) {
|
||||
h.renderSybList(c, c.Query("order_no"), c.Query("page"), c.Query("msg"))
|
||||
}
|
||||
@@ -560,17 +559,6 @@ func appendSybFormState(params url.Values, c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// SybSelectSKU 保存采购员确认的蝦皮规格。Service 会再次验证 SKU 归属,
|
||||
// 不能靠表单隐藏字段决定商品关系。
|
||||
func (h *Handler) SybSelectSKU(c *gin.Context) {
|
||||
err := service.AssignSybShopeeSKU(h.db, c.PostForm("syb_id"), c.PostForm("shopee_sku_id"))
|
||||
if err != nil {
|
||||
h.sybRedirect(c, "蝦皮规格未保存:"+err.Error())
|
||||
return
|
||||
}
|
||||
h.sybRedirect(c, "蝦皮规格已确认,下一步按处理状态继续。")
|
||||
}
|
||||
|
||||
// SybAssociatePdd 从货运单上下文关联 PDD 商品,实际业务规则与蝦皮详情共用。
|
||||
func (h *Handler) SybAssociatePdd(c *gin.Context) {
|
||||
goodsID, err := service.AssociateSybPdd(h.db, c.PostForm("syb_id"), c.PostForm("pdd_url"),
|
||||
@@ -594,8 +582,8 @@ func (h *Handler) SybCollectPdd(c *gin.Context) {
|
||||
|
||||
// SybMatch 保存规格匹配结果。
|
||||
//
|
||||
// 关键:保存的是**可复用的 SKU 映射**(写 sku_mappings),
|
||||
// 不是这一张订单的临时数据。下次遇到同一个蝦皮 SKU 自动带出,
|
||||
// 关键:保存的是**可复用的商品规格映射**(写 spec_mappings),
|
||||
// 不是这一张订单的临时数据。下次遇到同一个商品和规格原文自动带出,
|
||||
// 操作员只需确认。见 docs/admin/03-data-model.md §5。
|
||||
func (h *Handler) SybMatch(c *gin.Context) {
|
||||
actor := currentUser(c)
|
||||
@@ -607,7 +595,7 @@ func (h *Handler) SybMatch(c *gin.Context) {
|
||||
h.sybRedirect(c, "规格映射未保存:"+err.Error())
|
||||
return
|
||||
}
|
||||
h.sybRedirect(c, "规格映射已保存;相同蝦皮规格和 PDD 商品会自动复用。")
|
||||
h.sybRedirect(c, "规格映射已保存;相同蝦皮商品、顺运宝规格和 PDD 商品会自动复用。")
|
||||
}
|
||||
|
||||
// SybCreateTask 由勾选的货运单创建采购任务。
|
||||
@@ -615,7 +603,7 @@ func (h *Handler) SybMatch(c *gin.Context) {
|
||||
// 六条校验缺一不可,见 docs/admin/01-requirements.md §5:
|
||||
// 1. 已填 PDD 链接
|
||||
// 2. 已采集成功(pdd_data 非空)
|
||||
// 3. 已有 SKU 映射
|
||||
// 3. 已有商品规格映射
|
||||
// 4. 数量 > 0
|
||||
// 5. **价格上限已填且 > 0**(Client 的价格保护,没有它会拒绝执行)
|
||||
// 6. 已选择分配的客户端
|
||||
|
||||
@@ -76,7 +76,6 @@ func Register(r *gin.Engine, db *sql.DB, onlineThreshold time.Duration) {
|
||||
pages.GET("/syb/captcha", h.SybCaptcha) // 登录弹窗里的验证码图片
|
||||
pages.POST("/syb/sync", h.SybSync)
|
||||
pages.POST("/syb/login-and-sync", h.SybLoginAndSync)
|
||||
pages.POST("/syb/select-sku", h.SybSelectSKU)
|
||||
pages.POST("/syb/associate-pdd", h.SybAssociatePdd)
|
||||
pages.POST("/syb/collect-pdd", h.SybCollectPdd)
|
||||
pages.POST("/syb/match", h.SybMatch)
|
||||
|
||||
Reference in New Issue
Block a user