zhaowenxuan
2025-02-15 d9006551fff47c172ea6a0672af7dd21df34f28f
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
package com.ltkj.web.controller.mall;
 
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.utils.JacksonUtil;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.mall.domain.MallCheckLog;
import com.ltkj.mall.mallOrderUtils.OrderHandleOption;
import com.ltkj.mall.mallOrderUtils.OrderUtil;
import com.ltkj.mall.service.IMallCheckLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ltkj.common.annotation.Log;
import com.ltkj.common.core.controller.BaseController;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.enums.BusinessType;
import com.ltkj.mall.domain.MallOrder;
import com.ltkj.mall.service.IMallOrderService;
import com.ltkj.common.utils.poi.ExcelUtil;
import com.ltkj.common.core.page.TableDataInfo;
 
/**
 * 订单Controller
 *
 * @author ltkj_赵佳豪&李格
 * @date 2023-07-12
 */
@RestController
@RequestMapping("/mall/order")
@Api(tags = "mall订单")
public class MallOrderController extends BaseController {
    @Autowired
    private IMallOrderService mallOrderService;
 
    @Autowired
    private IMallCheckLogService mallCheckLogService;
 
    /**
     * 查询订单列表
     */
    @PreAuthorize("@ss.hasPermi('mall:order:list')")
    @GetMapping("/list")
    @ApiOperation(value = "查询订单列表")
    public TableDataInfo list(MallOrder mallOrder) {
        startPage();
        List<MallOrder> list = mallOrderService.selectMallOrderList(mallOrder);
        return getDataTable(list);
    }
 
    /**
     * 导出订单列表
     */
    @PreAuthorize("@ss.hasPermi('mall:order:export')")
    @Log(title = "订单", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, MallOrder mallOrder) {
        List<MallOrder> list = mallOrderService.selectMallOrderList(mallOrder);
        ExcelUtil<MallOrder> util = new ExcelUtil<MallOrder>(MallOrder.class);
        util.exportExcel(response, list, "订单数据");
    }
 
    /**
     * 获取订单详细信息
     */
    @PreAuthorize("@ss.hasPermi('mall:order:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(mallOrderService.selectMallOrderById(id));
    }
 
    /**
     * 新增订单
     */
    @PreAuthorize("@ss.hasPermi('mall:order:add')")
    @Log(title = "订单", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody MallOrder mallOrder) {
        return toAjax(mallOrderService.insertMallOrder(mallOrder));
    }
 
    /**
     * 修改订单
     */
    @PreAuthorize("@ss.hasPermi('mall:order:edit')")
    @Log(title = "订单", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody MallOrder mallOrder) {
        return toAjax(mallOrderService.updateMallOrder(mallOrder));
    }
 
    /**
     * 删除订单
     */
    @PreAuthorize("@ss.hasPermi('mall:order:remove')")
    @Log(title = "订单", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(mallOrderService.deleteMallOrderByIds(ids));
    }
 
 
    /**
     * 管理员强制取消订单接口
     */
    @Log(title = "管理员强制取消订单接口", businessType = BusinessType.UPDATE)
    @GetMapping("/adminCancel")
    public AjaxResult adminCancel(@PathVariable("orderId") Long orderId) {
        if (orderId == null) {
            return AjaxResult.error();
        }
        LambdaQueryWrapper<MallOrder> wq = new LambdaQueryWrapper<>();
        wq.eq(MallOrder::getId, orderId);
        MallOrder order = mallOrderService.getOne(wq);
        if (order == null) {
            return AjaxResult.error();
        }
        // 检测是否能够取消
        OrderHandleOption handleOption = OrderUtil.build(order);
        if (!handleOption.isCancel()) {
            return AjaxResult.error("订单不能取消");
        }
        // 设置订单已取消状态
        order.setOrderStatus(OrderUtil.STATUS_ADMIN_CANCEL.longValue());
        order.setCloseTime(new Date());
        return AjaxResult.success();
    }
}