package com.rj.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 高德周边 POI 中的一条商家记录（与 {@code AllShopCollectorV5} 核心字段一致，并补充 distance 等 POI 字段）。
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class NearbyMerchantItem {

    private String name;
    private String address;
    private String tel;
    private String type;
    /** 经纬度，格式 "lng,lat" */
    private String location;
    /** 高德 POI id */
    private String id;
    /** 距检索中心距离（米），place/around 返回的 distance */
    private String distance;
    private String typecode;
    /** 高德 business_area */
    private String businessArea;
    /** 高德 POI 照片链接（extensions=all 时 photos[].url） */
    private List<String> photoUrls;

    /**
     * 与 {@link com.rj.gaode.AllShopCollectorV5#parseAndPrint} 单条输出格式一致（店名/地址/电话/行业/坐标），并附加扩展行。
     */
    public String toDetailBlock() {
        StringBuilder sb = new StringBuilder();
        sb.append("店名：").append(dashIfEmpty(name));
        sb.append("\n地址：").append(dashIfEmpty(address));
        sb.append("\n电话：").append(dashIfEmpty(tel));
        sb.append("\n行业：").append(dashIfEmpty(type));
        sb.append("\n坐标：").append(dashIfEmpty(location));
        if (isPresent(distance)) {
            sb.append("\n距离(米)：").append(distance);
        }
        if (isPresent(id)) {
            sb.append("\nPOI ID：").append(id);
        }
        if (isPresent(typecode)) {
            sb.append("\n类型编码：").append(typecode);
        }
        if (isPresent(businessArea)) {
            sb.append("\n商圈：").append(businessArea);
        }
        if (photoUrls != null && !photoUrls.isEmpty()) {
            sb.append("\n照片URL：");
            for (int i = 0; i < photoUrls.size(); i++) {
                sb.append("\n  ").append(i + 1).append(". ").append(photoUrls.get(i));
            }
        }
        sb.append("\n---------------------------");
        return sb.toString();
    }

    private static boolean isPresent(String s) {
        return s != null && !s.isEmpty();
    }

    private static String dashIfEmpty(String s) {
        return isPresent(s) ? s : "无";
    }
}
