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 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 maps = scoreOrderMapper.queryOrderList(name,orderNo,status,createdTimeStart,createdTimeEnd); PageInfo pageInfo = new PageInfo(maps); int count = Convert.toInt(pageInfo.getTotal()); Map 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 = 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(); } }