Helius
2021-06-24 8aa51ba3c004dce7a6bc19cc785135f7deff15d6
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
package com.xzx.gc.shop.service;
 
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.xzx.gc.entity.ScoreExpressInfo;
import com.xzx.gc.entity.ScoreGoodsStyle;
import com.xzx.gc.entity.ScoreOrder;
import com.xzx.gc.entity.ScoreOrderDetails;
import com.xzx.gc.shop.dto.DeliverGoodsDto;
import com.xzx.gc.shop.dto.InsureOrderDto;
import com.xzx.gc.shop.dto.QueryOrderListDto;
import com.xzx.gc.shop.mapper.ScoreExpressInfoMapper;
import com.xzx.gc.shop.mapper.ScoreOrderDetailsMapper;
import com.xzx.gc.shop.mapper.ScoreOrderMapper;
import com.xzx.gc.shop.vo.ExpressInfoVo;
import com.xzx.gc.shop.vo.QueryOrderListVo;
import com.xzx.gc.shop.vo.ViewOrderVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
 
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@Service
@Transactional
@Slf4j
public class OrderService {
 
    @Resource
    ScoreOrderMapper scoreOrderMapper;
 
    @Resource
    ScoreExpressInfoMapper scoreExpressInfoMapper;
 
    @Resource
    ScoreOrderDetailsMapper scoreOrderDetailsMapper;
 
    public Map<String, Object> queryOrderList(QueryOrderListDto model) {
        String name = model.getName();
        String orderNo = model.getOrderNo();
        Integer status = model.getStatus() == null ? 0 : model.getStatus();
        Date createdTimeStart = model.getCreatedTimeStart();
        Date createdTimeEnd = model.getCreatedTimeEnd();
        PageHelper.startPage(model.getPage(), model.getLimit());
        List<QueryOrderListVo> maps = scoreOrderMapper.queryOrderList(name,orderNo,status,createdTimeStart,createdTimeEnd);
        PageInfo pageInfo = new PageInfo(maps);
        int count = Convert.toInt(pageInfo.getTotal());
        Map<String, Object> map = new HashMap<>();
        map.put("data", maps);
        map.put("count", count);
        map.put("code", 0);
        return map;
    }
 
    public ViewOrderVo viewOrder(Long id) {
        ViewOrderVo viewOrderVo = new ViewOrderVo();
        ScoreOrder scoreOrder = scoreOrderMapper.selectByPrimaryKey(id);
        if(ObjectUtil.isNotEmpty(scoreOrder)){
            /**
             * 获取基本信息
             * 获取物流信息
             * 获取商品订单详情
             */
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            viewOrderVo = objectMapper.convertValue(scoreOrder, ViewOrderVo.class);
            //2-待收货3-已收货4-已完成5-已评价,获取物流信息
            Integer status = scoreOrder.getStatus() == null ? 0:scoreOrder.getStatus();
            if(ScoreOrder.STATUS_DOING == status
                    || ScoreOrder.STATUS_DONE == status
                    || ScoreOrder.STATUS_ON == status
                    || ScoreOrder.STATUS_EVALUATE == status){
                Example exampleExpress = new Example(ScoreExpressInfo.class);
                Example.Criteria criteriaExpress = exampleExpress.createCriteria();
                criteriaExpress.andEqualTo("orderId",id);
                ScoreExpressInfo scoreExpressInfo = scoreExpressInfoMapper.selectOneByExample(exampleExpress);
                ExpressInfoVo expressInfoVo = objectMapper.convertValue(scoreExpressInfo, ExpressInfoVo.class);
                viewOrderVo.setExpressInfoVo(expressInfoVo);
            }
            //订单详情
            Example exampleDetails = new Example(ScoreOrderDetails.class);
            Example.Criteria criteriaDetails = exampleDetails.createCriteria();
            criteriaDetails.andEqualTo("orderId",id);
            List<ScoreOrderDetails> scoreOrderDetails = scoreOrderDetailsMapper.selectByExample(exampleDetails);
            if(CollUtil.isNotEmpty(scoreOrderDetails)){
                viewOrderVo.setScoreOrderDetails(scoreOrderDetails);
            }
 
        }
        return viewOrderVo;
    }
 
    public Long deliverGoods(DeliverGoodsDto model) {
        /**
         * 获取物流表的信息
         * 更新物流信息
         * 更新订单状态
         */
        Long id = model.getId();
        Example exampleExpress = new Example(ScoreExpressInfo.class);
        Example.Criteria criteriaExpress = exampleExpress.createCriteria();
        criteriaExpress.andEqualTo("orderId",id);
        ScoreExpressInfo scoreExpressInfo = scoreExpressInfoMapper.selectOneByExample(exampleExpress);
        if(ObjectUtil.isNotEmpty(scoreExpressInfo)){
            scoreExpressInfo.setExpressNo(model.getExpressNo());
            scoreExpressInfo.setExpressCom(model.getExpressCom());
            scoreExpressInfoMapper.updateByPrimaryKeySelective(scoreExpressInfo);
 
            ScoreOrder scoreOrder = new ScoreOrder();
            scoreOrder.setId(id);
            scoreOrder.setStatus(ScoreOrder.STATUS_ON);
            scoreOrderMapper.updateByPrimaryKeySelective(scoreOrder);
        }
        return scoreExpressInfo.getId();
    }
 
    public Long insureOrder(InsureOrderDto model) {
        ScoreOrder scoreOrder = new ScoreOrder();
        scoreOrder.setId(model.getId());
        scoreOrder.setVoucherImg(model.getVoucherImgs().toString());
        scoreOrderMapper.updateByPrimaryKeySelective(scoreOrder);
        return scoreOrder.getId();
    }
}