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.*;
|
import com.xzx.gc.shop.dto.AddGoodsOrderDto;
|
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.*;
|
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.beans.factory.annotation.Autowired;
|
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;
|
|
@Resource
|
private AddressInfoMapper addressInfoMapper;
|
|
@Autowired
|
private AccountInfoMapper accountInfoMapper;
|
|
@Autowired
|
private ScoreGoodsStyleMapper scoreGoodsStyleMapper;
|
|
@Autowired
|
private ScoreGoodsSkuMapper scoreGoodsSkuMapper;
|
|
@Autowired
|
private ScoreGoodsMapper scoreGoodsMapper;
|
|
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();
|
}
|
|
public void addOrder(AddGoodsOrderDto addGoodsOrderDto) {
|
ScoreGoodsStyle style = scoreGoodsStyleMapper.selectByPrimaryKey(addGoodsOrderDto.getStyleId());
|
ScoreGoodsSku sku = scoreGoodsSkuMapper.selectByPrimaryKey(addGoodsOrderDto.getSkuId());
|
ScoreGoods goods = scoreGoodsMapper.selectByPrimaryKey(style.getGoodsId());
|
|
|
AddressInfo addressInfo = addressInfoMapper.selectByPrimaryKey(addGoodsOrderDto.getAddressId());
|
AccountInfo accountInfo = accountInfoMapper.selectAccountInfoByUserId(addGoodsOrderDto.getUserId());
|
}
|
}
|