package com.xiaopeng.operation.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.dto.XpRideGuideDTO;
import com.xiaopeng.operation.mapper.XpRideGuideMapper;
import com.xiaopeng.api.model.operation.XpRideGuide;
import com.xiaopeng.operation.service.XpRideGuideService;
import com.xiaopeng.operation.vo.XpRideGuideNextVo;
import com.xiaopeng.operation.vo.XpRideGuideVo;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.Collections;
import java.util.List;
/**
*
* 乘车指南 服务实现类
*
*
* @author liu
* @since 2026-02-03
*/
@Service
public class XpRideGuideServiceImpl extends ServiceImpl implements XpRideGuideService {
@Resource
private AliOssService aliOssService;
/**
* 获取rideGuide列表
* @return
*/
@Override
public XpRideGuideVo getXpRideGuideList() {
XpRideGuideVo xpRideGuideVo = new XpRideGuideVo();
List list = baseMapper.getXpRideGuideList();
for (XpRideGuideNextVo xpRideGuide : list) {
JSONObject jsonObject = JSON.parseObject(xpRideGuide.getBannerImage());
String downloadUrl = null;
try {
// 1
downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
jsonObject.put("url", downloadUrl);
xpRideGuide.setBannerImage(jsonObject.toJSONString());
}
xpRideGuideVo.setGuides(list);
xpRideGuideVo.setTotal(list.size());
return xpRideGuideVo;
}
/**
* 获取rideGuide列表
* @return
*/
@Override
public List getGideList() {
List list = list();
for (XpRideGuide xpRideGuide : list) {
JSONObject jsonObject = JSON.parseObject(xpRideGuide.getGuideImage());
String downloadUrl = null;
try {
downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
jsonObject.put("url", downloadUrl);
xpRideGuide.setGuideImage(jsonObject.toJSONString());
}
return list;
}
/**
* 保存乘车指南
* @param dto
*/
@Override
@Transactional
@ShardingSphereTransactionType(TransactionType.BASE)
public void saveGuide(XpRideGuideDTO dto) {
//根据类型删除已配置的乘车指南
this.remove(null);
List guideList = dto.getGuideList();
List xpRideGuides = BeanUtil.copyToList(guideList, XpRideGuide.class);
for (XpRideGuide xpRideGuide : xpRideGuides) {
this.save(xpRideGuide);
}
}
}