package com.sinata.shop.modular.mall.controller;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.mapper.Condition;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.google.common.collect.Lists;
|
import com.sinata.common.enums.mall.EnumMallOrderState;
|
import com.sinata.core.base.controller.BaseController;
|
import com.sinata.core.util.DateUtils2;
|
import com.sinata.core.util.ExcelExportUtil;
|
import com.sinata.core.util.ExpressApi;
|
import com.sinata.shop.core.common.annotion.BussinessLog;
|
import com.sinata.shop.core.common.annotion.Permission;
|
import com.sinata.shop.core.common.constant.factory.PageFactory;
|
import com.sinata.shop.core.shiro.ShiroKit;
|
import com.sinata.shop.modular.mall.model.MallGoods;
|
import com.sinata.shop.modular.mall.service.*;
|
import com.sinata.shop.modular.member.model.MemUser;
|
import com.sinata.shop.modular.member.service.IMemUserService;
|
import com.sinata.shop.modular.mall.dto.OrderSearchDto;
|
import com.sinata.shop.modular.mall.model.MallOrder;
|
import com.sinata.shop.modular.mall.model.MallOrderDetail;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 商品订单控制器
|
*
|
* @author goku
|
*/
|
@Controller
|
@RequestMapping("/mallOrder")
|
public class MallOrderController extends BaseController {
|
|
private String PREFIX = "/mall/mallOrder/";
|
|
@Autowired
|
private IMallOrderService mallOrderService;
|
|
@Resource
|
private IMallOrderDetailService mallOrderDetailService;
|
|
@Resource
|
private IMallGoodsService mallGoodsService;
|
|
@Resource
|
private IMemUserService memUserService;
|
|
@Resource
|
private IMallExpressCompanyService mallExpressCompanyService;
|
|
@Resource
|
private ITNoticeMessageService noticeMessageService;
|
|
|
private MallOrder selectById( String orderNo) {
|
return this.mallOrderService.selectOne( new EntityWrapper<MallOrder>()
|
.eq( "order_no", orderNo));
|
}
|
|
/**
|
* 跳转到商品订单首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "mallOrder.html";
|
}
|
|
/**
|
* 跳转到添加商品订单
|
*/
|
@RequestMapping("/mallOrder_add")
|
public String mallOrderAdd() {
|
return PREFIX + "mallOrder_add.html";
|
}
|
|
/**
|
* 跳转到设置运费
|
*/
|
@RequestMapping("/setFreightAuth/{orderNo}")
|
public String mallOrderUpdate(@PathVariable String orderNo, Model model) {
|
model.addAttribute("item", selectById(orderNo));
|
return PREFIX + "setFreightAuth.html";
|
}
|
|
/**
|
* 订单发货页面
|
*/
|
@RequestMapping(value = "/deliverAuth/{orderNo}")
|
public String deliverAuth(@PathVariable String orderNo, Model model) {
|
model.addAttribute("orderNo", orderNo);
|
model.addAttribute("expressCompanyList", this.mallExpressCompanyService.selectList(Condition.empty()));
|
return PREFIX + "deliverAuth.html";
|
}
|
|
/**
|
* 获取商品订单列表
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/list")
|
public Object list(OrderSearchDto dto) {
|
Page<MallOrder> page = new PageFactory().defaultPage();
|
|
Integer merchantId = ShiroKit.getUserId();
|
Wrapper<?> wrapper = new EntityWrapper<MallOrder>()
|
.orderBy("order.create_time", false)
|
.eq("order.merchant_id", merchantId)
|
.ge(StrUtil.isNotBlank(dto.getBeginTime()), "order.create_time", dto.getBeginTime())
|
.le(StrUtil.isNotBlank(dto.getEndTime()), "order.create_time", dto.getEndTime() + " 23:59:59")
|
.eq(StrUtil.isNotBlank(dto.getOrderNo()), "order.order_no", dto.getOrderNo())
|
.eq(StrUtil.isNotBlank(dto.getUserShowId()), "user.show_id", dto.getUserShowId())
|
.eq(StrUtil.isNotBlank(dto.getUserPhone()), "user.phone", dto.getUserPhone())
|
.like(StrUtil.isNotBlank(dto.getUserNickname()), "user.nick_name", dto.getUserNickname());
|
|
if ( null != dto.getState()) {
|
if ( dto.getState().equals( 1)) {
|
wrapper.in( "order.state", Lists.newArrayList(1,2));
|
} else{
|
wrapper.eq("order.state", dto.getState());
|
}
|
}
|
|
page = mallOrderService.findPage(page, wrapper);
|
return super.packForBT(page);
|
}
|
|
/**
|
* 新增商品订单
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "新增商品订单")
|
@RequestMapping(value = "/add")
|
public Object add(MallOrder mallOrder) {
|
mallOrderService.insert(mallOrder);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除/批量删除
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "删除商品订单")
|
@RequestMapping(value = "/delete")
|
public Object delete(@RequestParam String orderNo) {
|
// 逻辑删除
|
mallOrderService.updateForSet("cms_delete = 1", new EntityWrapper<MallOrder>().in("order_no", orderNo));
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改商品订单
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "修改商品订单")
|
@RequestMapping(value = "/update")
|
public Object update(MallOrder mallOrder) {
|
mallOrderService.updateById(mallOrder);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改商品订单状态
|
*/
|
@ResponseBody
|
@BussinessLog(value = "修改商品订单状态")
|
@RequestMapping(value = "/updateState")
|
public Object updateState(Integer mallOrderId, Integer state) {
|
mallOrderService.updateForSet("state = " + state, new EntityWrapper<MallOrder>().eq("id", mallOrderId));
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 跳转物流详情
|
*/
|
@RequestMapping(value = "/logisticsAuth/{orderNo}")
|
public Object logisticsAuth(@PathVariable("orderNo")String orderNo, Model model) {
|
model.addAttribute("item", this.mallOrderService.selectById(orderNo));
|
return PREFIX + "mallOrder_express.html";
|
}
|
|
/**
|
* 物流信息
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/express")
|
public Object express(String expressNo) {
|
return ExpressApi.query(expressNo, null);
|
}
|
|
|
/**
|
* 跳转商品订单详情
|
*/
|
@RequestMapping(value = "/detail/{orderNo}")
|
public Object detail(@PathVariable("orderNo") String orderNo, Model model) {
|
Page<MallOrder> page = new PageFactory().defaultPage(1,0);
|
Wrapper<?> wrapper = new EntityWrapper<MallOrder>()
|
.eq("order.order_no", orderNo);
|
MallOrder mallOrder = mallOrderService.findPage(page, wrapper).getRecords().get(0);
|
|
// 订单详情
|
List<MallOrderDetail> orderDetailList = this.mallOrderDetailService.selectList(new EntityWrapper<MallOrderDetail>().eq("order_no", orderNo));
|
|
// 订单详情-商品信息
|
List<Integer> goodsIdList = orderDetailList.stream().map(MallOrderDetail::getGoodsId).collect(Collectors.toList());
|
List<MallGoods> goodsList = mallGoodsService.selectList(new EntityWrapper<MallGoods>().in("id", goodsIdList));
|
|
// 封装商品信息
|
mallOrder.setOrderDetails(
|
orderDetailList.stream().map(o -> {
|
String goodsNo = "";
|
for (MallGoods g : goodsList) {
|
if (g.getId().equals(o.getGoodsId())) {
|
goodsNo = g.getGoodsNo();
|
o.setGoodsName(g.getGoodsName());
|
}
|
}
|
o.setGoodsNo(goodsNo);
|
return o;
|
}).collect(Collectors.toList())
|
);
|
|
MemUser memUser = this.memUserService.selectById(mallOrder.getUserId());
|
if (memUser != null) {
|
mallOrder.setUserShowId(memUser.getShowId());
|
mallOrder.setUserPhone(memUser.getPhone());
|
mallOrder.setUserNickname(memUser.getNickName());
|
}
|
mallOrder.setUseList(mallOrderDetailService.getUseList(mallOrder.getOrderNo()));
|
model.addAttribute("item", mallOrder);
|
return PREFIX + "mallOrder_detail.html";
|
}
|
/**
|
* 跳转商品订单详情
|
*/
|
@RequestMapping(value = "/goodsDetails/{orderNo}")
|
public Object goodsDetails(@PathVariable("orderNo") String orderNo, Model model) {
|
MallOrder mallOrder = mallOrderService.selectById(orderNo);
|
mallOrder.setOrderDetails(this.mallOrderDetailService.selectList(new EntityWrapper<MallOrderDetail>()
|
.eq("order_no", orderNo)));
|
MemUser memUser = this.memUserService.selectById(mallOrder.getUserId());
|
if (memUser != null) {
|
mallOrder.setUserShowId(memUser.getShowId());
|
mallOrder.setUserPhone(memUser.getPhone());
|
mallOrder.setUserNickname(memUser.getNickName());
|
}
|
|
model.addAttribute("item", mallOrder);
|
return PREFIX + "mallOrder_goods.html";
|
}
|
|
/**
|
* 获取订单商品
|
*
|
* @param orderNo
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/getOrderGoods")
|
public Object updateState(Integer orderNo) {
|
return this.mallOrderDetailService.selectList(new EntityWrapper<MallOrderDetail>()
|
.eq("order_no", orderNo));
|
}
|
|
|
@ResponseBody
|
@RequestMapping(value = "/export")
|
public void exportOrder(OrderSearchDto dto, HttpServletResponse response) throws IOException {
|
Integer merchantId = ShiroKit.getUserId();
|
Wrapper<?> wrapper = new EntityWrapper<MallOrder>()
|
.orderBy("order.create_time", false)
|
.eq("order.merchant_id", merchantId)
|
.ge(StrUtil.isNotBlank(dto.getBeginTime()), "order.create_time", dto.getBeginTime())
|
.le(StrUtil.isNotBlank(dto.getEndTime()), "order.create_time", dto.getEndTime() + " 23:59:59")
|
.eq(StrUtil.isNotBlank(dto.getOrderNo()), "order.order_no", dto.getOrderNo())
|
.eq(dto.getState() != null, "order.state", dto.getState())
|
.eq(StrUtil.isNotBlank(dto.getUserShowId()), "user.show_id", dto.getUserShowId())
|
.eq(StrUtil.isNotBlank(dto.getUserPhone()), "user.phone", dto.getUserPhone())
|
.like(StrUtil.isNotBlank(dto.getUserNickname()), "user.nick_name", dto.getUserNickname());
|
List<MallOrder> orders = this.mallOrderService.findList(wrapper);
|
|
List<List<Object>> dataList = new ArrayList<>();
|
List<Object> titles = CollUtil.newArrayList("下单时间", "订单编号", "下单用户", "所购商品数", "购买数量", "商品金额", "分享者红包", "配送方式", "收货信息", "状态");
|
dataList.add(titles);
|
|
for (MallOrder order : orders) {
|
dataList.add(CollUtil.newArrayList(DateUtils2.format(order.getCreateTime(), "YYYY-MM-dd HH:mm"),
|
order.getOrderNo(),
|
order.getUserShowId() + "\n" + order.getUserPhone() + "\n" + order.getUserNickname(),
|
order.getGoodsNum(),
|
order.getNumber(),
|
order.getGoodsMoney(),
|
"",
|
"快递",
|
order.getTakeName() + "\n" + order.getPhone() + "\n" + order.getAddress(),
|
EnumMallOrderState.getMarkByIndex(order.getState())));
|
}
|
ExcelExportUtil.easySheet("导出数据" + DateUtils2.formatDate(new Date(), "YYYYMMddHHmmSS"), "导出数据", dataList, response);
|
}
|
|
/**
|
* 取消订单
|
*
|
* @param orderNo
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/cancelOrder")
|
public Object cancelOrder(String orderNo) {
|
this.mallOrderService.cancelOrder(orderNo);
|
return SUCCESS_TIP;
|
}
|
}
|