xiaoyong931011
2021-09-24 6037458efde460271214731333f56415976e517c
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
package cc.mrbird.febs.mall.service.impl;
 
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallOrderService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.vo.*;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Slf4j
@Service
@RequiredArgsConstructor
public class AdminMallOrderService extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IAdminMallOrderService {
 
    private final MallOrderInfoMapper mallOrderInfoMapper;
 
    private final MallExpressInfoMapper mallExpressInfoMapper;
 
    private final MallOrderItemMapper mallOrderItemMapper;
 
    private final MallOrderRefundMapper mallOrderRefundMapper;
 
    private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
 
    private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
 
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
 
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
 
    @Override
    public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) {
        Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderInfoVo> adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo);
        return adminMallOrderInfoVos;
    }
 
    @Override
    public AdminMallOrderVo getMallOrderInfoById(long id) {
        return this.baseMapper.getMallOrderInfoById(id);
    }
 
    @Override
    public FebsResponse deliverGoods(DeliverGoodsDto deliverGoodsDto) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId());
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("订单不存在,刷新后重试");
        }
        Integer status = mallOrderInfo.getStatus();
        if(2 != status){
            return new FebsResponse().fail().message("订单不是待发货状态");
        }
        String expressNo = deliverGoodsDto.getExpressNo();
        if(StrUtil.isEmpty(expressNo)){
            return new FebsResponse().fail().message("请输入物流单号");
        }
        String expressCom = deliverGoodsDto.getExpressCom();
        if(StrUtil.isEmpty(expressCom)){
            return new FebsResponse().fail().message("请输入物流公司");
        }
        MallExpressInfo mallExpressInfo = new MallExpressInfo();
        mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
        mallExpressInfo.setOrderId(mallOrderInfo.getId());
        mallExpressInfo.setExpressNo(expressNo);
        mallExpressInfo.setExpressCom(expressCom);
        mallExpressInfoMapper.insert(mallExpressInfo);
 
        mallOrderInfo.setStatus(3);
        mallOrderInfoMapper.updateById(mallOrderInfo);
        return new FebsResponse().success();
    }
 
    @Override
    public AdminOrderDetailVo getMallOrderDetailById(long id) {
        AdminOrderDetailVo adminOrderDetailVo = mallOrderInfoMapper.getMallOrderDetailById(id);
        MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
        if(ObjectUtil.isNotEmpty(mallExpressInfo)){
            adminOrderDetailVo.setExpressNo(mallExpressInfo.getExpressNo());
            adminOrderDetailVo.setExpressCom(mallExpressInfo.getExpressCom());
        }
        List<MallOrderItem> mallOrderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(id);
        if(CollUtil.isNotEmpty(mallOrderItems)){
            StringBuffer orderItems = new StringBuffer();
            for (MallOrderItem item : mallOrderItems){
                StringBuffer orderItem = new StringBuffer();
                orderItems.append(item.getGoodsName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n ");
                orderItems.append(orderItem);
            }
            adminOrderDetailVo.setOrderItems(orderItems.toString());
        }
 
        return adminOrderDetailVo;
    }
 
    @Override
    public IPage<AdminMallOrderRefundVo> getRefundListInPage(MallOrderRefundDto mallOrderRefundDto, QueryRequest request) {
        Page<AdminMallOrderRefundVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundVo> adminMallOrderRefundVos = mallOrderRefundMapper.selectRefundListInPage(page, mallOrderRefundDto);
        return adminMallOrderRefundVos;
    }
 
    @Override
    public IPage<AdminMallOrderRefundOperationVo> seeRefund(QueryRequest request, MallOrderRefund mallOrderRefund) {
        Page<AdminMallOrderRefundOperationVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundOperationVo> adminMallOrderRefundOperationVos = mallOrderRefundOperationMapper.selectRefundOperationInPage(page, mallOrderRefund);
        return adminMallOrderRefundOperationVos;
    }
 
    @Override
    public FebsResponse agreeRefund(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderRefund.setStatus(2);
        mallOrderRefundMapper.updateById(mallOrderRefund);
 
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("已同意退款申请");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
 
        return new FebsResponse().success();
    }
 
    @Override
    public FebsResponse disagreeRefund(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderRefund.setStatus(3);
        mallOrderRefundMapper.updateById(mallOrderRefund);
 
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("不同意退款申请");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
 
        return new FebsResponse().success();
    }
 
    @Override
    public FebsResponse refundConfirm(Long id) {
        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
        if(ObjectUtil.isEmpty(mallOrderRefund)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderRefund.setStatus(5);
        mallOrderRefundMapper.updateById(mallOrderRefund);
 
        MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
        mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
        mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
        mallOrderRefundOperation.setContent("已退款到用户账户");
        mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
 
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return new FebsResponse().fail().message("系统繁忙,请刷新重试");
        }
        mallOrderInfo.setStatus(6);
        mallOrderInfoMapper.updateById(mallOrderInfo);
 
        //用户钱包增加对应的余额
        iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId());
 
        //新增一条资金流水
        MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
        mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId());
        mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo());
        mallMoneyFlow.setType(4);
        mallMoneyFlow.setAmount(mallOrderInfo.getAmount());
        mallMoneyFlowMapper.insert(mallMoneyFlow);
 
        return new FebsResponse().success();
    }
 
    @Override
    public IPage<AdminMallOrderRefundAddressVo> getMallOrderRefundAddressInPage(MallOrderRefundAddressDto mallOrderRefundAddressDto, QueryRequest request) {
        Page<AdminMallOrderRefundAddressVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallOrderRefundAddressVo> adminMallOrderRefundAddressVos = mallOrderRefundAddressMapper.getMallOrderRefundAddressInPage(page, mallOrderRefundAddressDto);
        return adminMallOrderRefundAddressVos;
    }
 
    @Override
    public AdminMallOrderRefundAddressVo getMallOrderRefundAddressInfoById(long id) {
        AdminMallOrderRefundAddressVo AdminMallOrderRefundAddressVo = mallOrderRefundAddressMapper.getMallOrderRefundAddressInfoById(id);
        return AdminMallOrderRefundAddressVo;
    }
 
    @Override
    public FebsResponse addressUpdate(AddressUpdateDto addressUpdateDto) {
        Long id = addressUpdateDto.getId();
        MallOrderRefundAddress mallOrderRefundAddress = mallOrderRefundAddressMapper.selectById(id);
        mallOrderRefundAddress.setName(addressUpdateDto.getName());
        mallOrderRefundAddress.setPhone(addressUpdateDto.getPhone());
        mallOrderRefundAddress.setAddress(addressUpdateDto.getAddress());
        mallOrderRefundAddressMapper.updateById(mallOrderRefundAddress);
        return new FebsResponse().success();
    }
 
    @Override
    public FebsResponse deleteAddress(Long id) {
        mallOrderRefundAddressMapper.deleteById(id);
        return new FebsResponse().success();
    }
 
    @Override
    public FebsResponse addAddress(AddAddressDto addAddressDto) {
        MallOrderRefundAddress mallOrderRefundAddress = new MallOrderRefundAddress();
        mallOrderRefundAddress.setName(addAddressDto.getName());
        mallOrderRefundAddress.setPhone(addAddressDto.getPhone());
        mallOrderRefundAddress.setAddress(addAddressDto.getAddress());
        mallOrderRefundAddressMapper.insert(mallOrderRefundAddress);
        return new FebsResponse().success();
    }
 
 
}