Pu Zhibing
2025-03-18 f615ec5c9239327740948501627545f8e78e2a9e
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package com.ruoyi.order.controller;
 
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.service.ShoppingCartService;
import com.ruoyi.order.util.payment.model.UniPayCallbackResult;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.GoodsShop;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.feignClient.GoodsShopClient;
import com.ruoyi.other.api.feignClient.ShopClient;
import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.order.model.ShoppingCart;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
@RestController
@RequestMapping("/shopping-cart")
@Api(tags = "购物车")
public class ShoppingCartController extends BaseController {
 
    @Resource
    private ShoppingCartService shoppingCartService;
    
    @Resource
    private TokenService tokenService;
    
    @Resource
    private AppUserClient appUserClient;
    
    
    
 
    
    @ResponseBody
    @GetMapping("/getMyShoppingCart/{type}/{shopId}")
    @ApiOperation(value = "获取购物车列表", tags = {"商城-购物车-小程序"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "type", value = "商品类型(1=服务商品,2=单品商品)", required = true, dataType = "int"),
            @ApiImplicitParam(name = "shopId", value = "核销门店id", required = true, dataType = "int")
    })
    public TableDataInfo<MyShoppingCartVo> getMyShoppingCart(@PathVariable("type") Integer type, @PathVariable("shopId") Integer shopId){
        startPage();
        return getDataTable(shoppingCartService.getMyShoppingCart(type, shopId));
    }
 
    @PostMapping("/addGoods")
    @ApiOperation(value = "添加购物车", tags = {"商城-购物车-小程序"})
    public R<Void> addGoods(@RequestBody ShoppingCart shoppingCart) {
        shoppingCartService.addGoods(shoppingCart);
        return R.ok();
    }
    
    
    @ResponseBody
    @PostMapping("/setGoodsNumber")
    @ApiOperation(value = "修改购物车数量", tags = {"商城-购物车-小程序"})
    public R setGoodsNumber(@RequestBody SetGoodsNumber setGoodsNumber){
        return shoppingCartService.setGoodsNumber(setGoodsNumber);
    }
    
    
    
    @ResponseBody
    @DeleteMapping("/delShoppingCart")
    @ApiOperation(value = "删除购物车", tags = {"商城-购物车-小程序"})
    public R delShoppingCart(Long id){
        Long userid = tokenService.getLoginUserApplet().getUserid();
        ShoppingCart shoppingCart = shoppingCartService.getById(id);
        if(!userid.equals(shoppingCart.getAppUserId())){
            return R.fail("权限不足,不允许此操作");
        }
        shoppingCartService.removeById(id);
        return R.ok();
    }
    
    
    
    
    
    @ResponseBody
    @PostMapping("/confirmOrder")
    @ApiOperation(value = "确定购物车订单", tags = {"商城-购物车-小程序"})
    public R<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrder confirmOrder){
        ConfirmOrderVo confirmOrderVo = shoppingCartService.confirmOrder(confirmOrder);
        return R.ok(confirmOrderVo);
    }
    
    
    @ResponseBody
    @PostMapping("/shoppingCartPayment")
    @ApiOperation(value = "购物车订单支付", tags = {"商城-购物车-小程序"})
    public R<String> shoppingCartPayment(@RequestBody ShoppingCartPayment shoppingCartPayment){
        return shoppingCartService.shoppingCartPayment(shoppingCartPayment);
    }
    
    /**
     * 订单支付回调通知
     */
    @ResponseBody
    @GetMapping("/shoppingCartPaymentCallback")
    public void shoppingCartPaymentCallback(UniPayCallbackResult uniPayCallbackResult, HttpServletResponse response){
        String jsonString = JSONObject.toJSONString(uniPayCallbackResult);
        System.out.println("1111111111111111111111");
        System.out.println(jsonString);
        R callback = shoppingCartService.shoppingCartPaymentCallback(uniPayCallbackResult);
        if(callback.getCode() == 200){
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            out.println("success");
            out.flush();
            out.close();
        }
    }
    
    
    /**
     * 快递费支付回调
     * @param uniPayCallbackResult
     * @param response
     */
    @ResponseBody
    @GetMapping("/shoppingCartMaterialFlowPaymentCallback")
    public void shoppingCartMaterialFlowPaymentCallback(UniPayCallbackResult uniPayCallbackResult, HttpServletResponse response){
        R callback = shoppingCartService.shoppingCartMaterialFlowPaymentCallback(uniPayCallbackResult);
        if(callback.getCode() == 200){
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            out.println("success");
            out.flush();
            out.close();
        }
    }
    
    
 
 
 
 
    @GetMapping("/getGoodsPrice")
    public R<Price> getGoodsPrice(Long appUserId, Integer goodsId, Integer shopId){
        AppUser appUser = appUserClient.getAppUserById(appUserId);
        Price price = shoppingCartService.getPrice(appUser, goodsId, 1, shopId);
        return R.ok(price);
    }
    
    
}