xin
2025-09-04 ea26c842829ef69be20ef86d6a546f45c6c5a258
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.oying.modules.rider.service.impl;
 
import com.oying.domain.BucketStorage;
import com.oying.exception.BadRequestException;
import com.oying.modules.rider.domain.RiderDeliveryPhotos;
import com.oying.modules.rider.domain.vo.OrderDeliveryPhotosVo;
import com.oying.modules.rider.utils.Constants;
import com.oying.modules.sh.domain.vo.OrderResponse;
import com.oying.modules.sh.service.OrderService;
import com.oying.service.BucketStorageService;
import com.oying.utils.FileUtil;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.oying.modules.rider.service.RiderDeliveryPhotosService;
import com.oying.modules.rider.domain.dto.RiderDeliveryPhotosQueryCriteria;
import com.oying.modules.rider.mapper.RiderDeliveryPhotosMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.oying.utils.PageUtil;
 
import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
 
import com.oying.utils.PageResult;
import org.springframework.web.multipart.MultipartFile;
 
/**
 * @author pxb
 * @description 服务实现
 * @date 2025-07-22
 **/
@Service
@RequiredArgsConstructor
public class RiderDeliveryPhotosServiceImpl extends ServiceImpl<RiderDeliveryPhotosMapper, RiderDeliveryPhotos> implements RiderDeliveryPhotosService {
 
    private final RiderDeliveryPhotosMapper riderDeliveryPhotosMapper;
    private final OrderService orderService;
    private final BucketStorageService bucketStorageService;
 
 
    @Override
    public PageResult<RiderDeliveryPhotos> queryAll(RiderDeliveryPhotosQueryCriteria criteria, Page<Object> page) {
        return PageUtil.toPage(riderDeliveryPhotosMapper.findAll(criteria, page));
    }
 
    @Override
    public List<RiderDeliveryPhotos> queryAll(RiderDeliveryPhotosQueryCriteria criteria) {
        return riderDeliveryPhotosMapper.findAll(criteria);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void create(RiderDeliveryPhotos resources) {
        riderDeliveryPhotosMapper.insert(resources);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(RiderDeliveryPhotos resources) {
        RiderDeliveryPhotos riderDeliveryPhotos = getById(resources.getPhotoId());
        riderDeliveryPhotos.copy(resources);
        riderDeliveryPhotosMapper.updateById(riderDeliveryPhotos);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteAll(List<Long> ids) {
        riderDeliveryPhotosMapper.deleteBatchIds(ids);
    }
 
    @Override
    public void download(List<RiderDeliveryPhotos> all, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (RiderDeliveryPhotos riderDeliveryPhotos : all) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("关联的订单ID", riderDeliveryPhotos.getOrderId());
            map.put("关联的订单号", riderDeliveryPhotos.getOrderNum());
            map.put("骑手ID", riderDeliveryPhotos.getRiderId());
            map.put("骑手姓名", riderDeliveryPhotos.getRiderName());
            map.put("骑手手机号", riderDeliveryPhotos.getRiderPhone());
            map.put("照片存储的URL地址", riderDeliveryPhotos.getPhotoUrl());
            map.put("照片存储ID", riderDeliveryPhotos.getUploadId());
            map.put("拍摄地点纬度", riderDeliveryPhotos.getLatitude());
            map.put("拍摄地点经度", riderDeliveryPhotos.getLongitude());
            map.put("照片描述信息", riderDeliveryPhotos.getDescription());
            map.put("是否有效 1-有效 0-无效", riderDeliveryPhotos.getIsValid());
            map.put("用户手机号", riderDeliveryPhotos.getUserPhone());
            map.put("用户id", riderDeliveryPhotos.getUserId());
            map.put("创建人", riderDeliveryPhotos.getCreateBy());
            map.put("修改人", riderDeliveryPhotos.getUpdateBy());
            map.put("创建时间", riderDeliveryPhotos.getCreateTime());
            map.put("修改时间", riderDeliveryPhotos.getUpdateTime());
            list.add(map);
        }
        FileUtil.downloadExcel(list, response);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public RiderDeliveryPhotos riderDeliveryPhotos(OrderDeliveryPhotosVo orderDeliveryPhotosVo) {
        // 限制只上传一张图
        RiderDeliveryPhotos riderDeliveryPhotosIsHave = riderDeliveryPhotosMapper.getRiderDeliveryPhotosByOrderNum(orderDeliveryPhotosVo.getOrderNum());
        if(riderDeliveryPhotosIsHave != null) {
            throw new BadRequestException("只能上传一张图片,图片已上传");
        }
        OrderResponse orderResponse = orderService.getByOrderNum(orderDeliveryPhotosVo.getOrderNum());
        if (orderResponse != null) {
            // 图片信息不能为空
            MultipartFile file = orderDeliveryPhotosVo.getPhotoFile();
            // 判断文件是否为图片
            String suffix = FileUtil.getExtensionName(file.getOriginalFilename());
            FileUtil.checkSize(5, file.getSize());
            if (!FileUtil.IMAGE.equals(FileUtil.getFileType(suffix))) {
                throw new BadRequestException("只能上传图片");
            }
            // 上传照片
            BucketStorage bucketStorage = bucketStorageService.create(null, file);
            // 封装数据
            RiderDeliveryPhotos riderDeliveryPhotos = new RiderDeliveryPhotos();
            riderDeliveryPhotos.setOrderId(orderResponse.getOrder().getOrderId());
            riderDeliveryPhotos.setOrderNum(orderResponse.getOrder().getOrderNum());
            riderDeliveryPhotos.setRiderId(orderResponse.getOrder().getRiderId());
            riderDeliveryPhotos.setRiderName(orderResponse.getOrder().getRiderName());
            riderDeliveryPhotos.setRiderPhone(orderResponse.getOrder().getRiderPhone());
            riderDeliveryPhotos.setPhotoUrl(bucketStorage.getPath());
            riderDeliveryPhotos.setUploadId(bucketStorage.getBucketId());
            riderDeliveryPhotos.setLatitude(orderDeliveryPhotosVo.getUserLatitude());
            riderDeliveryPhotos.setLongitude(orderDeliveryPhotosVo.getUserLongitude());
            riderDeliveryPhotos.setDescription(orderDeliveryPhotosVo.getDescription());
            riderDeliveryPhotos.setIsValid(Constants.IS_VALID_YES);
            riderDeliveryPhotos.setUserPhone(orderResponse.getOrder().getUsername());
            riderDeliveryPhotos.setUserId(orderResponse.getOrder().getUserId());
            riderDeliveryPhotosMapper.insert(riderDeliveryPhotos);
            return riderDeliveryPhotos;
        } else {
            throw new BadRequestException("订单不存在!");
        }
    }
}