diff --git a/service/repositories/order.go b/service/repositories/order.go index 5e88c40b..325b90b8 100644 --- a/service/repositories/order.go +++ b/service/repositories/order.go @@ -816,7 +816,7 @@ func (d *defaultOrder) CreatePrePaymentByDeposit(ctx context.Context, in *Create var orderAddressByte []byte var statusLinkByte []byte - if in.DeliveryMethod == constants.DELIVERYMETHODDIRECTMAIL { + if in.DeliveryMethod == constants.DELIVERYMETHODDIRECTMAIL && in.DeliveryAddress != nil { orderAddress = &gmodel.OrderAddress{ Name: in.DeliveryAddress.Name, Mobile: in.DeliveryAddress.Mobile, @@ -830,6 +830,16 @@ func (d *defaultOrder) CreatePrePaymentByDeposit(ctx context.Context, in *Create ErrorCode: errorCode, }, err } + } else { + var orderAddress *gmodel.OrderAddress + orderAddressByte, err = json.Marshal(orderAddress) + if err != nil { + logc.Errorf(ctx, "create prePayment deposit failed orderAddressByte, err: %v", err) + errorCode = *basic.CodeServiceErr + return &CreatePrePaymentByDepositRes{ + ErrorCode: errorCode, + }, err + } } // 订单状态--链路 tPlus60Days := ntime.AddDate(0, 0, 60).UTC() @@ -845,12 +855,8 @@ func (d *defaultOrder) CreatePrePaymentByDeposit(ctx context.Context, in *Create // 更新数据库 var table = gmodel.NewAllModels(d.MysqlConn).FsOrder.TableName() - var resUpdate *gorm.DB - if in.DeliveryMethod == constants.DELIVERYMETHODDIRECTMAIL { - resUpdate = d.MysqlConn.Exec(fmt.Sprintf("UPDATE %s SET `delivery_method` = ? , `utime` = ?, `order_address` = JSON_MERGE_PATCH(`order_address`,?), `status_link` = JSON_MERGE_PATCH(`status_link`,?) WHERE `id` = ?", table), in.DeliveryMethod, ntime, orderAddressByte, statusLinkByte, orderInfo.Id) - } else { - resUpdate = d.MysqlConn.Exec(fmt.Sprintf("UPDATE %s SET `delivery_method` = ? , `utime` = ? WHERE `id` = ?", table), in.DeliveryMethod, ntime, orderInfo.Id) - } + var resUpdate = d.MysqlConn.Exec(fmt.Sprintf("UPDATE %s SET `delivery_method` = ? , `utime` = ?, `status_link` = JSON_MERGE_PATCH(`status_link`,?), `order_address` = JSON_MERGE_PATCH(`order_address`,?) WHERE `id` = ?", table), in.DeliveryMethod, ntime, statusLinkByte, orderAddressByte, orderInfo.Id) + err = resUpdate.Error if err != nil { logc.Errorf(ctx, "create prePayment deposit failed update Exec, err: %v", err)