package com.ai.da.service.impl;

import com.ai.da.mapper.primary.MoodboardPositionMapper;
import com.ai.da.mapper.primary.entity.MoodboardPosition;
import com.ai.da.service.MoodboardPositionService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
public class MoodboardPositionServiceImpl extends ServiceImpl<MoodboardPositionMapper, MoodboardPosition> implements MoodboardPositionService {

    @Override
    public void parseMoodboardPosition(String moodboardPosition, Long collectionIdParam) {
        if (!StringUtils.isEmpty(moodboardPosition)) {
            // 将 JSON 字符串解析为 JSONObject
            JSONObject moodboardPositionJson = JSONObject.parseObject(moodboardPosition);

            // 准备保存的 MoodboardPosition 列表
            List<MoodboardPosition> moodboardPositions = new ArrayList<>();

            // 遍历 JSON 对象的 key（即样式类型）
            for (String key : moodboardPositionJson.keySet()) {
                // 特殊处理 "class" 字段
                if ("class".equals(key)) {
                    // 获取 "class" 字段的值并将其转为 List<String>
                    JSONArray classArray = moodboardPositionJson.getJSONArray(key);
                    if (classArray != null) {

                        for (int j = 0; j < classArray.size(); j++) {
                            // 将 classList 存入 MoodboardPosition（或者其他结构）

                            MoodboardPosition position = new MoodboardPosition()
                                    .setCollectionId(collectionIdParam) // 关联 Collection ID
                                    .setType(key) // 样式类型
                                    .setStyleData(classArray.getString(j)) // 设置 class 字段
                                    .setSequence(j) // 根据索引值设置顺序
                                    .setCreateTime(LocalDateTime.now()) // 创建时间
                                    .setUpdateTime(LocalDateTime.now()); // 更新时间

                            // 添加到列表中
                            moodboardPositions.add(position);
                        }
                    }
                    continue; // 跳过 "class" 字段的常规处理
                }

                JSONArray styleArray = moodboardPositionJson.getJSONArray(key);
                if (styleArray != null) {
                    for (int i = 0; i < styleArray.size(); i++) {
                        // 获取当前样式数据
                        JSONObject styleData = styleArray.getJSONObject(i);

                        // 构建 MoodboardPosition 实例
                        MoodboardPosition position = new MoodboardPosition()
                                .setCollectionId(collectionIdParam) // 关联 Collection ID
                                .setType(key) // 样式类型
                                .setStyleData(styleData.toJSONString()) // 样式数据存为 JSON 字符串
                                .setSequence(i) // 根据索引值设置顺序
                                .setCreateTime(LocalDateTime.now()) // 创建时间
                                .setUpdateTime(LocalDateTime.now()); // 更新时间

                        // 添加到列表中
                        moodboardPositions.add(position);
                    }
                }
            }
            // 如果解析结果非空，保存到数据库
            if (!moodboardPositions.isEmpty()) {
                for (MoodboardPosition position : moodboardPositions) {
                    baseMapper.insert(position);
                }
                log.info("成功解析并保存 {} 条 MoodboardPosition 数据", moodboardPositions.size());
            } else {
                log.warn("未找到可保存的 MoodboardPosition 数据");
            }
        } else {
            log.warn("传入的 moodboardPosition 字段为空");
        }
    }

}
